diff --git a/.travis.yml b/.travis.yml index 0b8d2f328..e768c530c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -51,7 +51,8 @@ matrix: env: ANALYZE=ON - os: linux compiler: gcc - env: DISABLE_EXPORTERS=YES ENABLE_COVERALLS=ON +# env: DISABLE_EXPORTERS=YES ENABLE_COVERALLS=ON + env: ENABLE_COVERALLS=ON - os: linux compiler: gcc env: SHARED_BUILD=ON diff --git a/AssimpConfig.cmake.in b/AssimpConfig.cmake.in deleted file mode 100644 index 5bb705a41..000000000 --- a/AssimpConfig.cmake.in +++ /dev/null @@ -1,21 +0,0 @@ -# - Config file for the FooBar package -# It defines the following variables -# FOOBAR_INCLUDE_DIRS - include directories for FooBar -# FOOBAR_LIBRARIES - libraries to link against -# FOOBAR_EXECUTABLE - the bar executable - -# Compute paths -get_filename_component(FOOBAR_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) -if(EXISTS "${FOOBAR_CMAKE_DIR}/CMakeCache.txt") - # In build tree - include("${FOOBAR_CMAKE_DIR}/FooBarBuildTreeSettings.cmake") -else() - set(FOOBAR_INCLUDE_DIRS "${FOOBAR_CMAKE_DIR}/@CONF_REL_INCLUDE_DIR@") -endif() - -# Our library dependencies (contains definitions for IMPORTED targets) -include("${FOOBAR_CMAKE_DIR}/FooBarLibraryDepends.cmake") - -# These are IMPORTED targets created by FooBarLibraryDepends.cmake -set(FOOBAR_LIBRARIES foo) -set(FOOBAR_EXECUTABLE bar) diff --git a/Build.md b/Build.md new file mode 100644 index 000000000..d5b443a79 --- /dev/null +++ b/Build.md @@ -0,0 +1,58 @@ +# Install CMake +Asset-Importer-Lib can be build for a lot of different platforms. We are using cmake to generate the build environment for these via cmake. So you have to make sure that you have a working cmake-installation on your system. You can download it at https://cmake.org/ or for linux install it via +``` +sudo apt-get install cmake +``` + +# Get the source +Make sure you have a working git-installation. Open a command prompt and clone the Asset-Importer-Lib via: +``` +git clone https://github.com/assimp/assimp.git +``` + +# Build instructions for Windows with Visual-Studio + +First you have to install Visual-Studio on your windows-system. You can get the Community-Version for free here: https://visualstudio.microsoft.com/de/downloads/ +To generate the build environment for your IDE open a command prompt, navigate to your repo and type: +``` +> cmake CMakeLists.txt +``` +This will generate the project files for the visual studio. All dependencies used to build Asset-IMporter-Lib shall be part of the repo. If you want to use you own zlib.installation this is possible as well. Check the options for it. + +# Build instructions for Windows with UWP +See https://stackoverflow.com/questions/40803170/cmake-uwp-using-cmake-to-build-universal-windows-app + + +# Build instrcutions for Linux / Unix +Open a terminal and got to your repository. You can generate the makefiles and build the library via: + +``` +cmake CMakeLists.txt +make -j4 +``` +The option -j descripes the number of parallel processes for the build. In this case make will try to use 4 cores for the build. + +If you want to use a IDE for linux you can try QTCreator for instance. + +# CMake build options +The cmake-build-environment provides options to configure the build. The following options can be used: +- **BUILD_SHARED_LIBS ( default ON )**: Generation of shared libs ( dll for windows, so for Linux ). Set this to OFF to get a static lib. +- **BUILD_FRAMEWORK ( default OFF, MacOnly)**: Build package as Mac OS X Framework bundle +- **ASSIMP_DOUBLE_PRECISION( default OFF )**: All data will be stored as double values. +- **ASSIMP_OPT_BUILD_PACKAGES ( default OFF)**: Set to ON to generate CPack configuration files and packaging targets +- **ASSIMP_ANDROID_JNIIOSYSTEM ( default OFF )**: Android JNI IOSystem support is active +- **ASSIMP_NO_EXPORT ( default OFF )**: Disable Assimp's export functionality +- **ASSIMP_BUILD_ZLIB ( default OFF )**: Build your own zlib +- **ASSIMP_BUILD_ASSIMP_TOOLS ( default ON )**: If the supplementary tools for Assimp are built in addition to the library. +- **ASSIMP_BUILD_SAMPLES ( default OFF )**: If the official samples are built as well (needs Glut). +- **ASSIMP_BUILD_TESTS ( default ON )**: If the test suite for Assimp is built in addition to the library. +- **ASSIMP_COVERALLS ( default OFF )**: Enable this to measure test coverage. +- **ASSIMP_WERROR( default OFF )**: Treat warnings as errors. +- **ASSIMP_ASAN ( default OFF )**: Enable AddressSanitizer. +- **ASSIMP_UBSAN ( default OFF )**: Enable Undefined Behavior sanitizer. +- **SYSTEM_IRRXML ( default OFF )**: Use system installed Irrlicht/IrrXML library. +- **BUILD_DOCS ( default OFF )**: Build documentation using Doxygen. +- **INJECT_DEBUG_POSTFIX( default ON )**: Inject debug postfix in .a/.so lib names +- **IGNORE_GIT_HASH ( default OFF )**: Don't call git to get the hash. +- **ASSIMP_INSTALL_PDB ( default ON )**: Install MSVC debug files. + diff --git a/CMakeLists.txt b/CMakeLists.txt index 1fb717419..645d92689 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -110,10 +110,15 @@ OPTION( INJECT_DEBUG_POSTFIX ON ) +OPTION ( IGNORE_GIT_HASH + "Don't call git to get the hash." + OFF +) + IF (IOS) - IF (NOT CMAKE_BUILD_TYPE) - SET(CMAKE_BUILD_TYPE "Release") - ENDIF (NOT CMAKE_BUILD_TYPE) + IF (NOT CMAKE_BUILD_TYPE) + SET(CMAKE_BUILD_TYPE "Release") + ENDIF (NOT CMAKE_BUILD_TYPE) ENDIF (IOS) # Use subset of Windows.h @@ -153,23 +158,25 @@ SET( ASSIMP_PACKAGE_VERSION "0" CACHE STRING "the package-specific version used # Enable C++1 globally set_property( GLOBAL PROPERTY CXX_STANDARD 11 ) -# Get the current working branch -EXECUTE_PROCESS( - COMMAND git rev-parse --abbrev-ref HEAD - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - OUTPUT_VARIABLE GIT_BRANCH - OUTPUT_STRIP_TRAILING_WHITESPACE - ERROR_QUIET -) +IF(NOT IGNORE_GIT_HASH) + # Get the current working branch + EXECUTE_PROCESS( + COMMAND git rev-parse --abbrev-ref HEAD + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + OUTPUT_VARIABLE GIT_BRANCH + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_QUIET + ) -# Get the latest abbreviated commit hash of the working branch -EXECUTE_PROCESS( - COMMAND git log -1 --format=%h --no-show-signature - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - OUTPUT_VARIABLE GIT_COMMIT_HASH - OUTPUT_STRIP_TRAILING_WHITESPACE - ERROR_QUIET -) + # Get the latest abbreviated commit hash of the working branch + EXECUTE_PROCESS( + COMMAND git rev-parse --short=8 HEAD + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + OUTPUT_VARIABLE GIT_COMMIT_HASH + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_QUIET + ) +ENDIF() IF(NOT GIT_COMMIT_HASH) SET(GIT_COMMIT_HASH 0) @@ -210,25 +217,23 @@ ENDIF( UNIX ) # Grouped compiler settings IF ((CMAKE_C_COMPILER_ID MATCHES "GNU") AND NOT CMAKE_COMPILER_IS_MINGW) # hide all not-exported symbols - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -fvisibility=hidden -fPIC -Wall -std=c++0x") - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC") + SET(CMAKE_CXX_FLAGS "-g -fvisibility=hidden -fPIC -fno-strict-aliasing -Wall -std=c++0x ${CMAKE_CXX_FLAGS}") + SET(CMAKE_C_FLAGS "-fPIC -fno-strict-aliasing ${CMAKE_C_FLAGS}") SET(LIBSTDC++_LIBRARIES -lstdc++) ELSEIF(MSVC) # enable multi-core compilation with MSVC ADD_COMPILE_OPTIONS(/MP) - if(CMAKE_SIZEOF_VOID_P EQUAL 8) - ADD_COMPILE_OPTIONS( /bigobj ) - ENDIF() + ADD_COMPILE_OPTIONS( /bigobj ) # disable "elements of array '' will be default initialized" warning on MSVC2013 IF(MSVC12) ADD_COMPILE_OPTIONS(/wd4351) ENDIF() ELSEIF ( "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" ) - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -fvisibility=hidden -fPIC -Wall -Wno-long-long -std=c++11" ) - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC") + SET(CMAKE_CXX_FLAGS "-g -fvisibility=hidden -fPIC -fno-strict-aliasing -Wall -Wno-long-long -std=c++11 ${CMAKE_CXX_FLAGS}" ) + SET(CMAKE_C_FLAGS "-fPIC -fno-strict-aliasing ${CMAKE_C_FLAGS}") ELSEIF( CMAKE_COMPILER_IS_MINGW ) - SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden -Wall -Wno-long-long -std=c++11 -Wa,-mbig-obj" ) - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC ") + SET( CMAKE_CXX_FLAGS "-fvisibility=hidden -fno-strict-aliasing -Wall -Wno-long-long -std=c++11 -Wa,-mbig-obj ${CMAKE_CXX_FLAGS}" ) + SET(CMAKE_C_FLAGS "-fPIC -fno-strict-aliasing ${CMAKE_C_FLAGS} ") ADD_DEFINITIONS( -U__STRICT_ANSI__ ) ENDIF() @@ -309,8 +314,18 @@ ENDIF() # cmake configuration files CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/assimp-config.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/assimp-config.cmake" @ONLY IMMEDIATE) +CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/assimpTargets.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/assimpTargets.cmake" @ONLY IMMEDIATE) +CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/assimpTargets-debug.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/assimpTargets-debug.cmake" @ONLY IMMEDIATE) +CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/assimpTargets-release.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/assimpTargets-release.cmake" @ONLY IMMEDIATE) CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/assimp-config-version.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/assimp-config-version.cmake" @ONLY IMMEDIATE) -INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}/assimp-config.cmake" "${CMAKE_CURRENT_BINARY_DIR}/assimp-config-version.cmake" DESTINATION "${ASSIMP_LIB_INSTALL_DIR}/cmake/assimp-${ASSIMP_VERSION_MAJOR}.${ASSIMP_VERSION_MINOR}" COMPONENT ${LIBASSIMP-DEV_COMPONENT}) +#we should generated these scripts after CMake VERSION 3.0.2 using export(EXPORT ...) and write_basic_package_version_file(...) +INSTALL(FILES + "${CMAKE_CURRENT_BINARY_DIR}/assimp-config.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/assimp-config-version.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/assimpTargets.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/assimpTargets-debug.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/assimpTargets-release.cmake" + DESTINATION "${ASSIMP_LIB_INSTALL_DIR}/cmake/assimp-${ASSIMP_VERSION_MAJOR}.${ASSIMP_VERSION_MINOR}" COMPONENT ${LIBASSIMP-DEV_COMPONENT}) FIND_PACKAGE( DirectX ) diff --git a/Readme.md b/Readme.md index ac71a29db..1ba026d5a 100644 --- a/Readme.md +++ b/Readme.md @@ -115,7 +115,7 @@ __Exporters__: - FBX ( experimental ) ### Building ### -Take a look into the `INSTALL` file. Our build system is CMake, if you used CMake before there is a good chance you know what to do. +Take a look into the https://github.com/assimp/assimp/blob/master/Build.md file. Our build system is CMake, if you used CMake before there is a good chance you know what to do. ### Ports ### * [Android](port/AndroidJNI/README.md) diff --git a/assimp-config.cmake.in b/assimp-config.cmake.in index 1710cac5d..0ab9fd071 100644 --- a/assimp-config.cmake.in +++ b/assimp-config.cmake.in @@ -1,59 +1 @@ -# - Find Assimp Installation -# -# Users can set the following variables before calling the module: -# ASSIMP_DIR - The preferred installation prefix for searching for ASSIMP. Set by the user. -# -# ASSIMP_ROOT_DIR - the root directory where the installation can be found -# ASSIMP_CXX_FLAGS - extra flags for compilation -# ASSIMP_LINK_FLAGS - extra flags for linking -# ASSIMP_INCLUDE_DIRS - include directories -# ASSIMP_LIBRARY_DIRS - link directories -# ASSIMP_LIBRARIES - libraries to link plugins with -# ASSIMP_Boost_VERSION - the boost version assimp was compiled with -get_filename_component(ASSIMP_ROOT_DIR "@CMAKE_INSTALL_PREFIX@" REALPATH) - -if( MSVC ) - # in order to prevent DLL hell, each of the DLLs have to be suffixed with the major version and msvc prefix - if( MSVC70 OR MSVC71 ) - set(MSVC_PREFIX "vc70") - elseif( MSVC80 ) - set(MSVC_PREFIX "vc80") - elseif( MSVC90 ) - set(MSVC_PREFIX "vc90") - elseif( MSVC10 ) - set(MSVC_PREFIX "vc100") - elseif( MSVC11 ) - set(MSVC_PREFIX "vc110") - elseif( MSVC12 ) - set(MSVC_PREFIX "vc120") - elseif( MSVC14 ) - set(MSVC_PREFIX "vc140") - else() - set(MSVC_PREFIX "vc150") - endif() - set(ASSIMP_LIBRARY_SUFFIX "@ASSIMP_LIBRARY_SUFFIX@-${MSVC_PREFIX}-mt" CACHE STRING "the suffix for the assimp windows library" ) -else() - set(ASSIMP_LIBRARY_SUFFIX "@ASSIMP_LIBRARY_SUFFIX@" CACHE STRING "the suffix for the openrave libraries" ) -endif() - -set( ASSIMP_CXX_FLAGS ) # dynamically linked library -set( ASSIMP_LINK_FLAGS "" ) -set( ASSIMP_LIBRARY_DIRS "${ASSIMP_ROOT_DIR}/@ASSIMP_LIB_INSTALL_DIR@") -set( ASSIMP_INCLUDE_DIRS "${ASSIMP_ROOT_DIR}/@ASSIMP_INCLUDE_INSTALL_DIR@") -set( ASSIMP_LIBRARIES assimp${ASSIMP_LIBRARY_SUFFIX}) -set( ASSIMP_LIBRARIES ${ASSIMP_LIBRARIES}@CMAKE_DEBUG_POSTFIX@) - -# for compatibility with pkg-config -set(ASSIMP_CFLAGS_OTHER "${ASSIMP_CXX_FLAGS}") -set(ASSIMP_LDFLAGS_OTHER "${ASSIMP_LINK_FLAGS}") - -MARK_AS_ADVANCED( - ASSIMP_ROOT_DIR - ASSIMP_CXX_FLAGS - ASSIMP_LINK_FLAGS - ASSIMP_INCLUDE_DIRS - ASSIMP_LIBRARIES - ASSIMP_CFLAGS_OTHER - ASSIMP_LDFLAGS_OTHER - ASSIMP_LIBRARY_SUFFIX -) +include(${CMAKE_CURRENT_LIST_DIR}/assimpTargets.cmake) diff --git a/assimpTargets-debug.cmake.in b/assimpTargets-debug.cmake.in new file mode 100644 index 000000000..a83e6c22d --- /dev/null +++ b/assimpTargets-debug.cmake.in @@ -0,0 +1,78 @@ +#---------------------------------------------------------------- +# Generated CMake target import file for configuration "Debug". +#---------------------------------------------------------------- + +# Commands may need to know the format version. +set(CMAKE_IMPORT_FILE_VERSION 1) + +if(MSVC) + if( MSVC70 OR MSVC71 ) + set(MSVC_PREFIX "vc70") + elseif( MSVC80 ) + set(MSVC_PREFIX "vc80") + elseif( MSVC90 ) + set(MSVC_PREFIX "vc90") + elseif( MSVC10 ) + set(MSVC_PREFIX "vc100") + elseif( MSVC11 ) + set(MSVC_PREFIX "vc110") + elseif( MSVC12 ) + set(MSVC_PREFIX "vc120") + elseif( MSVC14 ) + set(MSVC_PREFIX "vc140") + else() + set(MSVC_PREFIX "vc150") + endif() + set(ASSIMP_LIBRARY_SUFFIX "@ASSIMP_LIBRARY_SUFFIX@-${MSVC_PREFIX}-mt" CACHE STRING "the suffix for the assimp windows library" ) + + set(sharedLibraryName "assimp${ASSIMP_LIBRARY_SUFFIX}@CMAKE_DEBUG_POSTFIX@@CMAKE_SHARED_LIBRARY_SUFFIX@") + set(importLibraryName "assimp${ASSIMP_LIBRARY_SUFFIX}@CMAKE_DEBUG_POSTFIX@@CMAKE_IMPORT_LIBRARY_SUFFIX@") + + # Import target "assimp::assimp" for configuration "Debug" + set_property(TARGET assimp::assimp APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG) + set_target_properties(assimp::assimp PROPERTIES + IMPORTED_IMPLIB_DEBUG "${_IMPORT_PREFIX}/lib/${importLibraryName}" + IMPORTED_LOCATION_DEBUG "${_IMPORT_PREFIX}/bin/${sharedLibraryName}" + ) + list(APPEND _IMPORT_CHECK_TARGETS assimp::assimp ) + list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp "${_IMPORT_PREFIX}/lib/${importLibraryName}") + list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp "${_IMPORT_PREFIX}/bin/${sharedLibraryName}" ) + +else() + set(ASSIMP_LIBRARY_SUFFIX "@ASSIMP_LIBRARY_SUFFIX@" CACHE STRING "the suffix for the openrave libraries" ) + set(sharedLibraryName "libassimp${ASSIMP_LIBRARY_SUFFIX}@CMAKE_DEBUG_POSTFIX@@CMAKE_SHARED_LIBRARY_SUFFIX@.@ASSIMP_VERSION_MAJOR@") + set_target_properties(assimp::assimp PROPERTIES + IMPORTED_SONAME_DEBUG "${sharedLibraryName}" + IMPORTED_LOCATION_DEBUG "${_IMPORT_PREFIX}/lib/${sharedLibraryName}" + ) + list(APPEND _IMPORT_CHECK_TARGETS assimp::assimp ) + list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp "${_IMPORT_PREFIX}/lib/${sharedLibraryName}" ) +endif() + + + + +# Commands beyond this point should not need to know the version. +set(CMAKE_IMPORT_FILE_VERSION) + +get_filename_component(ASSIMP_ROOT_DIR "@CMAKE_INSTALL_PREFIX@" REALPATH) +set( ASSIMP_CXX_FLAGS ) # dynamically linked library +set( ASSIMP_LINK_FLAGS "" ) +set( ASSIMP_LIBRARY_DIRS "${ASSIMP_ROOT_DIR}/@ASSIMP_LIB_INSTALL_DIR@") +set( ASSIMP_INCLUDE_DIRS "${ASSIMP_ROOT_DIR}/@ASSIMP_INCLUDE_INSTALL_DIR@") +set( ASSIMP_LIBRARIES ${sharedLibraryName}) + +# for compatibility with pkg-config +set(ASSIMP_CFLAGS_OTHER "${ASSIMP_CXX_FLAGS}") +set(ASSIMP_LDFLAGS_OTHER "${ASSIMP_LINK_FLAGS}") + +MARK_AS_ADVANCED( + ASSIMP_ROOT_DIR + ASSIMP_CXX_FLAGS + ASSIMP_LINK_FLAGS + ASSIMP_INCLUDE_DIRS + ASSIMP_LIBRARIES + ASSIMP_CFLAGS_OTHER + ASSIMP_LDFLAGS_OTHER + ASSIMP_LIBRARY_SUFFIX +) diff --git a/assimpTargets-release.cmake.in b/assimpTargets-release.cmake.in new file mode 100644 index 000000000..0b38e4e92 --- /dev/null +++ b/assimpTargets-release.cmake.in @@ -0,0 +1,75 @@ +#---------------------------------------------------------------- +# Generated CMake target import file for configuration "Release". +#---------------------------------------------------------------- + +# Commands may need to know the format version. +set(CMAKE_IMPORT_FILE_VERSION 1) + +if(MSVC) + if( MSVC70 OR MSVC71 ) + set(MSVC_PREFIX "vc70") + elseif( MSVC80 ) + set(MSVC_PREFIX "vc80") + elseif( MSVC90 ) + set(MSVC_PREFIX "vc90") + elseif( MSVC10 ) + set(MSVC_PREFIX "vc100") + elseif( MSVC11 ) + set(MSVC_PREFIX "vc110") + elseif( MSVC12 ) + set(MSVC_PREFIX "vc120") + elseif( MSVC14 ) + set(MSVC_PREFIX "vc140") + else() + set(MSVC_PREFIX "vc150") + endif() + set(ASSIMP_LIBRARY_SUFFIX "@ASSIMP_LIBRARY_SUFFIX@-${MSVC_PREFIX}-mt" CACHE STRING "the suffix for the assimp windows library" ) + + set(sharedLibraryName "assimp${ASSIMP_LIBRARY_SUFFIX}@CMAKE_SHARED_LIBRARY_SUFFIX@") + set(importLibraryName "assimp${ASSIMP_LIBRARY_SUFFIX}@CMAKE_IMPORT_LIBRARY_SUFFIX@") + + # Import target "assimp::assimp" for configuration "Release" + set_property(TARGET assimp::assimp APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) + set_target_properties(assimp::assimp PROPERTIES + IMPORTED_IMPLIB_RELEASE "${_IMPORT_PREFIX}/lib/${importLibraryName}" + IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/bin/${sharedLibraryName}" + ) + list(APPEND _IMPORT_CHECK_TARGETS assimp::assimp ) + list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp "${_IMPORT_PREFIX}/lib/${importLibraryName}") + list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp "${_IMPORT_PREFIX}/bin/${sharedLibraryName}" ) + +else() + set(ASSIMP_LIBRARY_SUFFIX "@ASSIMP_LIBRARY_SUFFIX@" CACHE STRING "the suffix for the openrave libraries" ) + set(sharedLibraryName "libassimp${ASSIMP_LIBRARY_SUFFIX}@CMAKE_SHARED_LIBRARY_SUFFIX@.@ASSIMP_VERSION_MAJOR@") + set_target_properties(assimp::assimp PROPERTIES + IMPORTED_SONAME_RELEASE "${sharedLibraryName}" + IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/${sharedLibraryName}" + ) + list(APPEND _IMPORT_CHECK_TARGETS assimp::assimp ) + list(APPEND _IMPORT_CHECK_FILES_FOR_assimp::assimp "${_IMPORT_PREFIX}/lib/${sharedLibraryName}" ) +endif() + +# Commands beyond this point should not need to know the version. +set(CMAKE_IMPORT_FILE_VERSION) + +get_filename_component(ASSIMP_ROOT_DIR "@CMAKE_INSTALL_PREFIX@" REALPATH) +set( ASSIMP_CXX_FLAGS ) # dynamically linked library +set( ASSIMP_LINK_FLAGS "" ) +set( ASSIMP_LIBRARY_DIRS "${ASSIMP_ROOT_DIR}/@ASSIMP_LIB_INSTALL_DIR@") +set( ASSIMP_INCLUDE_DIRS "${ASSIMP_ROOT_DIR}/@ASSIMP_INCLUDE_INSTALL_DIR@") +set( ASSIMP_LIBRARIES ${sharedLibraryName}) + +# for compatibility with pkg-config +set(ASSIMP_CFLAGS_OTHER "${ASSIMP_CXX_FLAGS}") +set(ASSIMP_LDFLAGS_OTHER "${ASSIMP_LINK_FLAGS}") + +MARK_AS_ADVANCED( + ASSIMP_ROOT_DIR + ASSIMP_CXX_FLAGS + ASSIMP_LINK_FLAGS + ASSIMP_INCLUDE_DIRS + ASSIMP_LIBRARIES + ASSIMP_CFLAGS_OTHER + ASSIMP_LDFLAGS_OTHER + ASSIMP_LIBRARY_SUFFIX +) diff --git a/assimpTargets.cmake.in b/assimpTargets.cmake.in new file mode 100644 index 000000000..68e2c0dec --- /dev/null +++ b/assimpTargets.cmake.in @@ -0,0 +1,101 @@ +# Generated by CMake + +if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5) + message(FATAL_ERROR "CMake >= 2.6.0 required") +endif() +cmake_policy(PUSH) +cmake_policy(VERSION 2.6) +#---------------------------------------------------------------- +# Generated CMake target import file. +#---------------------------------------------------------------- + +# Commands may need to know the format version. +set(CMAKE_IMPORT_FILE_VERSION 1) + +# Protect against multiple inclusion, which would fail when already imported targets are added once more. +set(_targetsDefined) +set(_targetsNotDefined) +set(_expectedTargets) +foreach(_expectedTarget assimp::assimp) + list(APPEND _expectedTargets ${_expectedTarget}) + if(NOT TARGET ${_expectedTarget}) + list(APPEND _targetsNotDefined ${_expectedTarget}) + endif() + if(TARGET ${_expectedTarget}) + list(APPEND _targetsDefined ${_expectedTarget}) + endif() +endforeach() +if("${_targetsDefined}" STREQUAL "${_expectedTargets}") + unset(_targetsDefined) + unset(_targetsNotDefined) + unset(_expectedTargets) + set(CMAKE_IMPORT_FILE_VERSION) + cmake_policy(POP) + return() +endif() +if(NOT "${_targetsDefined}" STREQUAL "") + message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n") +endif() +unset(_targetsDefined) +unset(_targetsNotDefined) +unset(_expectedTargets) + + +# Compute the installation prefix relative to this file. +get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +if(_IMPORT_PREFIX STREQUAL "/") + set(_IMPORT_PREFIX "") +endif() + +# Create imported target assimp::assimp +add_library(assimp::assimp SHARED IMPORTED) + +set_target_properties(assimp::assimp PROPERTIES + COMPATIBLE_INTERFACE_STRING "assimp_MAJOR_VERSION" + INTERFACE_assimp_MAJOR_VERSION "1" + INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include;${_IMPORT_PREFIX}/include" + #INTERFACE_LINK_LIBRARIES "TxtUtils::TxtUtils;MealyMachine::MealyMachine" +) + +if(CMAKE_VERSION VERSION_LESS 2.8.12) + message(FATAL_ERROR "This file relies on consumers using CMake 2.8.12 or greater.") +endif() + +# Load information for each installed configuration. +get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) +file(GLOB CONFIG_FILES "${_DIR}/assimpTargets-*.cmake") +foreach(f ${CONFIG_FILES}) + include(${f}) +endforeach() + +# Cleanup temporary variables. +set(_IMPORT_PREFIX) + +# Loop over all imported files and verify that they actually exist +foreach(target ${_IMPORT_CHECK_TARGETS} ) + foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} ) + if(NOT EXISTS "${file}" ) + message(FATAL_ERROR "The imported target \"${target}\" references the file + \"${file}\" +but this file does not exist. Possible reasons include: +* The file was deleted, renamed, or moved to another location. +* An install or uninstall procedure did not complete successfully. +* The installation package was faulty and contained + \"${CMAKE_CURRENT_LIST_FILE}\" +but not all the files it references. +") + endif() + endforeach() + unset(_IMPORT_CHECK_FILES_FOR_${target}) +endforeach() +unset(_IMPORT_CHECK_TARGETS) + +# This file does not depend on other imported targets which have +# been exported from the same project but in a separate export set. + +# Commands beyond this point should not need to know the version. +set(CMAKE_IMPORT_FILE_VERSION) +cmake_policy(POP) diff --git a/code/3DSHelper.h b/code/3DSHelper.h index 7476438bd..d67a7c14c 100644 --- a/code/3DSHelper.h +++ b/code/3DSHelper.h @@ -58,7 +58,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. namespace Assimp { namespace D3DS { -#include "./../include/assimp/Compiler/pushpack1.h" +#include // --------------------------------------------------------------------------- /** Discreet3DS class: Helper class for loading 3ds files. Defines chunks @@ -66,7 +66,7 @@ namespace D3DS { */ class Discreet3DS { private: - Discreet3DS() { + Discreet3DS() AI_NO_EXCEPT { // empty } @@ -328,19 +328,17 @@ struct Face : public FaceWithSmoothingGroup // --------------------------------------------------------------------------- /** Helper structure representing a texture */ -struct Texture -{ +struct Texture { //! Default constructor - Texture() - : mOffsetU (0.0) - , mOffsetV (0.0) - , mScaleU (1.0) - , mScaleV (1.0) - , mRotation (0.0) - , mMapMode (aiTextureMapMode_Wrap) - , bPrivate() - , iUVSrc (0) - { + Texture() AI_NO_EXCEPT + : mOffsetU (0.0) + , mOffsetV (0.0) + , mScaleU (1.0) + , mScaleV (1.0) + , mRotation (0.0) + , mMapMode (aiTextureMapMode_Wrap) + , bPrivate() + , iUVSrc (0) { mTextureBlend = get_qnan(); } @@ -365,7 +363,7 @@ struct Texture int iUVSrc; }; -#include "./../include/assimp/Compiler/poppack1.h" +#include // --------------------------------------------------------------------------- /** Helper structure representing a 3ds material */ @@ -394,7 +392,7 @@ struct Material //! Move constructor. This is explicitly written because MSVC doesn't support defaulting it - Material(Material &&other) + Material(Material &&other) AI_NO_EXCEPT : mName(std::move(other.mName)) , mDiffuse(std::move(other.mDiffuse)) , mSpecularExponent(std::move(other.mSpecularExponent)) @@ -418,7 +416,7 @@ struct Material } - Material &operator=(Material &&other) { + Material &operator=(Material &&other) AI_NO_EXCEPT { if (this == &other) { return *this; } @@ -447,7 +445,7 @@ struct Material } - ~Material() {} + virtual ~Material() {} //! Name of the material diff --git a/code/3DSLoader.cpp b/code/3DSLoader.cpp index cd79b0a6d..34066e44b 100644 --- a/code/3DSLoader.cpp +++ b/code/3DSLoader.cpp @@ -161,19 +161,21 @@ void Discreet3DSImporter::InternReadFile( const std::string& pFile, aiScene* pScene, IOSystem* pIOHandler) { StreamReaderLE stream(pIOHandler->Open(pFile,"rb")); - this->stream = &stream; // We should have at least one chunk if (stream.GetRemainingSize() < 16) { throw DeadlyImportError("3DS file is either empty or corrupt: " + pFile); } + this->stream = &stream; // Allocate our temporary 3DS representation - mScene = new D3DS::Scene(); + D3DS::Scene _scene; + mScene = &_scene; // Initialize members + D3DS::Node _rootNode("UNNAMED"); mLastNodeIndex = -1; - mCurrentNode = new D3DS::Node("UNNAMED"); + mCurrentNode = &_rootNode; mRootNode = mCurrentNode; mRootNode->mHierarchyPos = -1; mRootNode->mHierarchyIndex = -1; @@ -193,7 +195,6 @@ void Discreet3DSImporter::InternReadFile( const std::string& pFile, // file. for (auto &mesh : mScene->mMeshes) { if (mesh.mFaces.size() > 0 && mesh.mPositions.size() == 0) { - delete mScene; throw DeadlyImportError("3DS file contains faces but no vertices: " + pFile); } CheckIndices(mesh); @@ -201,7 +202,7 @@ void Discreet3DSImporter::InternReadFile( const std::string& pFile, ComputeNormalsWithSmoothingsGroups(mesh); } - // Replace all occurrences of the default material with a + // Replace all occurences of the default material with a // valid material. Generate it if no material containing // DEFAULT in its name has been found in the file ReplaceDefaultMaterial(); @@ -218,10 +219,8 @@ void Discreet3DSImporter::InternReadFile( const std::string& pFile, // Now apply the master scaling factor to the scene ApplyMasterScale(pScene); - // Delete our internal scene representation and the root - // node, so the whole hierarchy will follow - delete mRootNode; - delete mScene; + // Our internal scene representation and the root + // node will be automatically deleted, so the whole hierarchy will follow AI_DEBUG_INVALIDATE_PTR(mRootNode); AI_DEBUG_INVALIDATE_PTR(mScene); diff --git a/code/AMFImporter.hpp b/code/AMFImporter.hpp index 3c60caeab..b7e58362c 100644 --- a/code/AMFImporter.hpp +++ b/code/AMFImporter.hpp @@ -63,8 +63,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // Header files, stdlib. #include -namespace Assimp -{ +namespace Assimp { + /// \class AMFImporter /// Class that holding scene graph which include: geometry, metadata, materials etc. /// @@ -99,100 +99,49 @@ namespace Assimp /// new - and children , , , , , /// old - and children , , , , , /// -class AMFImporter : public BaseImporter -{ - /***********************************************/ - /******************** Types ********************/ - /***********************************************/ - +class AMFImporter : public BaseImporter { private: + struct SPP_Material;// forward declaration - struct SPP_Material;// forward declaration + /// \struct SPP_Composite + /// Data type for post-processing step. More suitable container for part of material's composition. + struct SPP_Composite { + SPP_Material* Material;///< Pointer to material - part of composition. + std::string Formula;///< Formula for calculating ratio of \ref Material. + }; - /// \struct SPP_Composite - /// Data type for postprocessing step. More suitable container for part of material's composition. - struct SPP_Composite - { - SPP_Material* Material;///< Pointer to material - part of composition. - std::string Formula;///< Formula for calculating ratio of \ref Material. - }; + /// \struct SPP_Material + /// Data type for post-processing step. More suitable container for material. + struct SPP_Material { + std::string ID;///< Material ID. + std::list Metadata;///< Metadata of material. + CAMFImporter_NodeElement_Color* Color;///< Color of material. + std::list Composition;///< List of child materials if current material is composition of few another. - /// \struct SPP_Material - /// Data type for postprocessing step. More suitable container for material. - struct SPP_Material - { - std::string ID;///< Material ID. - std::list Metadata;///< Metadata of material. - CAMFImporter_NodeElement_Color* Color;///< Color of material. - std::list Composition;///< List of child materials if current material is composition of few another. + /// Return color calculated for specified coordinate. + /// \param [in] pX - "x" coordinate. + /// \param [in] pY - "y" coordinate. + /// \param [in] pZ - "z" coordinate. + /// \return calculated color. + aiColor4D GetColor(const float pX, const float pY, const float pZ) const; + }; - /// \fn aiColor4D GetColor(const float pX, const float pY, const float pZ) const - /// Return color calculated for specified coordinate. - /// \param [in] pX - "x" coordinate. - /// \param [in] pY - "y" coordinate. - /// \param [in] pZ - "z" coordinate. - /// \return calculated color. - aiColor4D GetColor(const float pX, const float pY, const float pZ) const; - }; + /// Data type for post-processing step. More suitable container for texture. + struct SPP_Texture { + std::string ID; + size_t Width, Height, Depth; + bool Tiled; + char FormatHint[9];// 8 for string + 1 for terminator. + uint8_t *Data; + }; - /// \struct SPP_Texture - /// Data type for post-processing step. More suitable container for texture. - struct SPP_Texture - { - std::string ID; - size_t Width, Height, Depth; - bool Tiled; - char FormatHint[ 9 ];// 8 for string + 1 for terminator. - uint8_t *Data; - }; + /// Data type for post-processing step. Contain face data. + struct SComplexFace { + aiFace Face;///< Face vertices. + const CAMFImporter_NodeElement_Color* Color;///< Face color. Equal to nullptr if color is not set for the face. + const CAMFImporter_NodeElement_TexMap* TexMap;///< Face texture mapping data. Equal to nullptr if texture mapping is not set for the face. + }; - /// \struct SComplexFace - /// Data type for post-processing step. Contain face data. - struct SComplexFace - { - aiFace Face;///< Face vertices. - const CAMFImporter_NodeElement_Color* Color;///< Face color. Equal to nullptr if color is not set for the face. - const CAMFImporter_NodeElement_TexMap* TexMap;///< Face texture mapping data. Equal to nullptr if texture mapping is not set for the face. - }; - - - - /***********************************************/ - /****************** Constants ******************/ - /***********************************************/ - -private: - - static const aiImporterDesc Description; - - /***********************************************/ - /****************** Variables ******************/ - /***********************************************/ - -private: - - CAMFImporter_NodeElement* mNodeElement_Cur;///< Current element. - std::list mNodeElement_List;///< All elements of scene graph. - irr::io::IrrXMLReader* mReader;///< Pointer to XML-reader object - std::string mUnit; - std::list mMaterial_Converted;///< List of converted materials for postprocessing step. - std::list mTexture_Converted;///< List of converted textures for postprocessing step. - - /***********************************************/ - /****************** Functions ******************/ - /***********************************************/ - -private: - - /// \fn AMFImporter(const AMFImporter& pScene) - /// Disabled copy constructor. - AMFImporter(const AMFImporter& pScene); - - /// \fn AMFImporter& operator=(const AMFImporter& pScene) - /// Disabled assign operator. - AMFImporter& operator=(const AMFImporter& pScene); - - /// \fn void Clear() /// Clear all temporary data. void Clear(); @@ -200,7 +149,6 @@ private: /************* Functions: find set *************/ /***********************************************/ - /// \fn bool Find_NodeElement(const std::string& pID, const CAMFImporter_NodeElement::EType pType, aiNode** pNode) const /// Find specified node element in node elements list ( \ref mNodeElement_List). /// \param [in] pID - ID(name) of requested node element. /// \param [in] pType - type of node element. @@ -208,7 +156,6 @@ private: /// \return true - if the node element is found, else - false. bool Find_NodeElement(const std::string& pID, const CAMFImporter_NodeElement::EType pType, CAMFImporter_NodeElement** pNodeElement) const; - /// \fn bool Find_ConvertedNode(const std::string& pID, std::list& pNodeList, aiNode** pNode) const /// Find requested aiNode in node list. /// \param [in] pID - ID(name) of requested node. /// \param [in] pNodeList - list of nodes where to find the node. @@ -216,15 +163,13 @@ private: /// \return true - if the node is found, else - false. bool Find_ConvertedNode(const std::string& pID, std::list& pNodeList, aiNode** pNode) const; - /// \fn bool Find_ConvertedMaterial(const std::string& pID, const SPP_Material** pConvertedMaterial) const /// Find material in list for converted materials. Use at postprocessing step. /// \param [in] pID - material ID. /// \param [out] pConvertedMaterial - pointer to found converted material (\ref SPP_Material). /// \return true - if the material is found, else - false. bool Find_ConvertedMaterial(const std::string& pID, const SPP_Material** pConvertedMaterial) const; - /// \fn bool Find_ConvertedTexture(const std::string& pID_R, const std::string& pID_G, const std::string& pID_B, const std::string& pID_A, uint32_t* pConvertedTextureIndex = nullptr) const - /// Find texture in list of converted textures. Use at postprocessing step, + /// Find texture in list of converted textures. Use at postprocessing step, /// \param [in] pID_R - ID of source "red" texture. /// \param [in] pID_G - ID of source "green" texture. /// \param [in] pID_B - ID of source "blue" texture. @@ -235,11 +180,7 @@ private: bool Find_ConvertedTexture(const std::string& pID_R, const std::string& pID_G, const std::string& pID_B, const std::string& pID_A, uint32_t* pConvertedTextureIndex = nullptr) const; - /***********************************************/ - /********* Functions: postprocess set **********/ - /***********************************************/ - /// \fn void PostprocessHelper_CreateMeshDataArray(const CAMFImporter_NodeElement_Mesh& pNodeElement, std::vector& pVertexCoordinateArray, std::vector& pVertexColorArray) const /// Get data stored in and place it to arrays. /// \param [in] pNodeElement - reference to node element which kept data. /// \param [in] pVertexCoordinateArray - reference to vertices coordinates kept in . @@ -248,7 +189,6 @@ private: void PostprocessHelper_CreateMeshDataArray(const CAMFImporter_NodeElement_Mesh& pNodeElement, std::vector& pVertexCoordinateArray, std::vector& pVertexColorArray) const; - /// \fn size_t PostprocessHelper_GetTextureID_Or_Create(const std::string& pID_R, const std::string& pID_G, const std::string& pID_B, const std::string& pID_A) /// Return converted texture ID which related to specified source textures ID's. If converted texture does not exist then it will be created and ID on new /// converted texture will be returned. Conversion: set of textures from \ref CAMFImporter_NodeElement_Texture to one \ref SPP_Texture and place it /// to converted textures list. @@ -260,27 +200,23 @@ private: /// \return index of the texture in array of the converted textures. size_t PostprocessHelper_GetTextureID_Or_Create(const std::string& pID_R, const std::string& pID_G, const std::string& pID_B, const std::string& pID_A); - /// \fn void PostprocessHelper_SplitFacesByTextureID(std::list& pInputList, std::list > pOutputList_Separated) /// Separate input list by texture IDs. This step is needed because aiMesh can contain mesh which is use only one texture (or set: diffuse, bump etc). /// \param [in] pInputList - input list with faces. Some of them can contain color or texture mapping, or both of them, or nothing. Will be cleared after /// processing. /// \param [out] pOutputList_Separated - output list of the faces lists. Separated faces list by used texture IDs. Will be cleared before processing. void PostprocessHelper_SplitFacesByTextureID(std::list& pInputList, std::list >& pOutputList_Separated); - /// \fn void Postprocess_AddMetadata(const std::list& pMetadataList, aiNode& pSceneNode) const /// Check if child elements of node element is metadata and add it to scene node. /// \param [in] pMetadataList - reference to list with collected metadata. /// \param [out] pSceneNode - scene node in which metadata will be added. void Postprocess_AddMetadata(const std::list& pMetadataList, aiNode& pSceneNode) const; - /// \fn void Postprocess_BuildNodeAndObject(const CAMFImporter_NodeElement_Object& pNodeElement, std::list& pMeshList, aiNode** pSceneNode) /// To create aiMesh and aiNode for it from . /// \param [in] pNodeElement - reference to node element which kept data. /// \param [out] pMeshList - reference to a list with all aiMesh of the scene. /// \param [out] pSceneNode - pointer to place where new aiNode will be created. void Postprocess_BuildNodeAndObject(const CAMFImporter_NodeElement_Object& pNodeElement, std::list& pMeshList, aiNode** pSceneNode); - /// \fn void Postprocess_BuildMeshSet(const CAMFImporter_NodeElement_Mesh& pNodeElement, const std::vector& pVertexCoordinateArray, const std::vector& pVertexColorArray, const CAMFImporter_NodeElement_Color* pObjectColor, std::list& pMeshList, aiNode& pSceneNode) /// Create mesh for every in . /// \param [in] pNodeElement - reference to node element which kept data. /// \param [in] pVertexCoordinateArray - reference to vertices coordinates for all 's. @@ -294,27 +230,20 @@ private: const std::vector& pVertexColorArray, const CAMFImporter_NodeElement_Color* pObjectColor, std::list& pMeshList, aiNode& pSceneNode); - /// \fn void Postprocess_BuildMaterial(const CAMFImporter_NodeElement_Material& pMaterial) /// Convert material from \ref CAMFImporter_NodeElement_Material to \ref SPP_Material. /// \param [in] pMaterial - source CAMFImporter_NodeElement_Material. void Postprocess_BuildMaterial(const CAMFImporter_NodeElement_Material& pMaterial); - /// \fn void Postprocess_BuildConstellation(CAMFImporter_NodeElement_Constellation& pConstellation, std::list& pNodeList) const /// Create and add to aiNode's list new part of scene graph defined by . /// \param [in] pConstellation - reference to node. /// \param [out] pNodeList - reference to aiNode's list. void Postprocess_BuildConstellation(CAMFImporter_NodeElement_Constellation& pConstellation, std::list& pNodeList) const; - /// \fn void Postprocess_BuildScene() /// Build Assimp scene graph in aiScene from collected data. /// \param [out] pScene - pointer to aiScene where tree will be built. void Postprocess_BuildScene(aiScene* pScene); - /***********************************************/ - /************* Functions: throw set ************/ - /***********************************************/ - /// \fn void Throw_CloseNotFound(const std::string& pNode) /// Call that function when close tag of node not found and exception must be raised. /// E.g.: /// @@ -324,19 +253,16 @@ private: /// \param [in] pNode - node name in which exception happened. void Throw_CloseNotFound(const std::string& pNode); - /// \fn void Throw_IncorrectAttr(const std::string& pAttrName) /// Call that function when attribute name is incorrect and exception must be raised. /// \param [in] pAttrName - attribute name. /// \throw DeadlyImportError. void Throw_IncorrectAttr(const std::string& pAttrName); - /// \fn void Throw_IncorrectAttrValue(const std::string& pAttrName) /// Call that function when attribute value is incorrect and exception must be raised. /// \param [in] pAttrName - attribute name. /// \throw DeadlyImportError. void Throw_IncorrectAttrValue(const std::string& pAttrName); - /// \fn void Throw_MoreThanOnceDefined(const std::string& pNode, const std::string& pDescription) /// Call that function when some type of nodes are defined twice or more when must be used only once and exception must be raised. /// E.g.: /// @@ -348,204 +274,158 @@ private: /// \param [in] pDescription - message about error. E.g. what the node defined while exception raised. void Throw_MoreThanOnceDefined(const std::string& pNodeType, const std::string& pDescription); - /// \fn void Throw_ID_NotFound(const std::string& pID) const /// Call that function when referenced element ID are not found in graph and exception must be raised. /// \param [in] pID - ID of of element which not found. /// \throw DeadlyImportError. void Throw_ID_NotFound(const std::string& pID) const; - /***********************************************/ - /************** Functions: LOG set *************/ - /***********************************************/ - - /***********************************************/ - /************** Functions: XML set *************/ - /***********************************************/ - - /// \fn void XML_CheckNode_MustHaveChildren() /// Check if current node have children: .... If not then exception will throwed. void XML_CheckNode_MustHaveChildren(); - /// \fn bool XML_CheckNode_NameEqual(const std::string& pNodeName) /// Check if current node name is equal to pNodeName. /// \param [in] pNodeName - name for checking. /// return true if current node name is equal to pNodeName, else - false. bool XML_CheckNode_NameEqual(const std::string& pNodeName) { return mReader->getNodeName() == pNodeName; } - /// \fn void XML_CheckNode_SkipUnsupported(const std::string& pParentNodeName) /// Skip unsupported node and report about that. Depend on node name can be skipped begin tag of node all whole node. /// \param [in] pParentNodeName - parent node name. Used for reporting. void XML_CheckNode_SkipUnsupported(const std::string& pParentNodeName); - /// \fn bool XML_SearchNode(const std::string& pNodeName) /// Search for specified node in file. XML file read pointer(mReader) will point to found node or file end after search is end. /// \param [in] pNodeName - requested node name. /// return true - if node is found, else - false. bool XML_SearchNode(const std::string& pNodeName); - /// \fn bool XML_ReadNode_GetAttrVal_AsBool(const int pAttrIdx) /// Read attribute value. /// \param [in] pAttrIdx - attribute index (\ref mReader->getAttribute* set). /// \return read data. bool XML_ReadNode_GetAttrVal_AsBool(const int pAttrIdx); - /// \fn float XML_ReadNode_GetAttrVal_AsFloat(const int pAttrIdx) /// Read attribute value. /// \param [in] pAttrIdx - attribute index (\ref mReader->getAttribute* set). /// \return read data. float XML_ReadNode_GetAttrVal_AsFloat(const int pAttrIdx); - /// \fn uint32_t XML_ReadNode_GetAttrVal_AsU32(const int pAttrIdx) /// Read attribute value. /// \param [in] pAttrIdx - attribute index (\ref mReader->getAttribute* set). /// \return read data. uint32_t XML_ReadNode_GetAttrVal_AsU32(const int pAttrIdx); - /// \fn float XML_ReadNode_GetVal_AsFloat() /// Read node value. /// \return read data. float XML_ReadNode_GetVal_AsFloat(); - /// \fn uint32_t XML_ReadNode_GetVal_AsU32() /// Read node value. /// \return read data. uint32_t XML_ReadNode_GetVal_AsU32(); - /// \fn void XML_ReadNode_GetVal_AsString(std::string& pValue) /// Read node value. /// \return read data. void XML_ReadNode_GetVal_AsString(std::string& pValue); - /***********************************************/ - /******** Functions: parse set private *********/ - /***********************************************/ - - /// \fn void ParseHelper_Node_Enter(CAMFImporter_NodeElement* pNode) /// Make pNode as current and enter deeper for parsing child nodes. At end \ref ParseHelper_Node_Exit must be called. /// \param [in] pNode - new current node. void ParseHelper_Node_Enter(CAMFImporter_NodeElement* pNode); - /// \fn void ParseHelper_Group_End() /// This function must be called when exiting from grouping node. \ref ParseHelper_Group_Begin. void ParseHelper_Node_Exit(); - /// \fn void ParseHelper_FixTruncatedFloatString(const char* pInStr, std::string& pOutString) /// Attribute values of floating point types can take form ".x"(without leading zero). irrXMLReader can not read this form of values and it /// must be converted to right form - "0.xxx". /// \param [in] pInStr - pointer to input string which can contain incorrect form of values. /// \param [out[ pOutString - output string with right form of values. void ParseHelper_FixTruncatedFloatString(const char* pInStr, std::string& pOutString); - /// \fn void ParseHelper_Decode_Base64(const std::string& pInputBase64, std::vector& pOutputData) const /// Decode Base64-encoded data. /// \param [in] pInputBase64 - reference to input Base64-encoded string. /// \param [out] pOutputData - reference to output array for decoded data. void ParseHelper_Decode_Base64(const std::string& pInputBase64, std::vector& pOutputData) const; - /// \fn void ParseNode_Root() /// Parse node of the file. void ParseNode_Root(); - /******** Functions: top nodes *********/ - - /// \fn void ParseNode_Constellation() /// Parse node of the file. void ParseNode_Constellation(); - /// \fn void ParseNode_Constellation() /// Parse node of the file. void ParseNode_Instance(); - /// \fn void ParseNode_Material() /// Parse node of the file. void ParseNode_Material(); - /// \fn void ParseNode_Metadata() /// Parse node. void ParseNode_Metadata(); - /// \fn void ParseNode_Object() /// Parse node of the file. void ParseNode_Object(); - /// \fn void ParseNode_Texture() /// Parse node of the file. void ParseNode_Texture(); - /******** Functions: geometry nodes *********/ - - /// \fn void ParseNode_Coordinates() /// Parse node of the file. void ParseNode_Coordinates(); - /// \fn void ParseNode_Edge() /// Parse node of the file. void ParseNode_Edge(); - /// \fn void ParseNode_Mesh() /// Parse node of the file. void ParseNode_Mesh(); - /// \fn void ParseNode_Triangle() /// Parse node of the file. void ParseNode_Triangle(); - /// \fn void ParseNode_Vertex() /// Parse node of the file. void ParseNode_Vertex(); - /// \fn void ParseNode_Vertices() /// Parse node of the file. void ParseNode_Vertices(); - /// \fn void ParseNode_Volume() /// Parse node of the file. void ParseNode_Volume(); - /******** Functions: material nodes *********/ - - /// \fn void ParseNode_Color() /// Parse node of the file. void ParseNode_Color(); - /// \fn void ParseNode_TexMap(const bool pUseOldName = false) /// Parse of node of the file. /// \param [in] pUseOldName - if true then use old name of node(and children) - , instead of new name - . void ParseNode_TexMap(const bool pUseOldName = false); public: - - /// \fn AMFImporter() /// Default constructor. - AMFImporter() - : mNodeElement_Cur(nullptr), mReader(nullptr) - {} + AMFImporter() AI_NO_EXCEPT + : mNodeElement_Cur(nullptr) + , mReader(nullptr) { + // empty + } - /// \fn ~AMFImporter() /// Default destructor. ~AMFImporter(); - /***********************************************/ - /******** Functions: parse set, public *********/ - /***********************************************/ - - /// \fn void ParseFile(const std::string& pFile, IOSystem* pIOHandler) /// Parse AMF file and fill scene graph. The function has no return value. Result can be found by analyzing the generated graph. - /// Also exception can be throwed if trouble will found. + /// Also exception can be thrown if trouble will found. /// \param [in] pFile - name of file to be parsed. /// \param [in] pIOHandler - pointer to IO helper object. void ParseFile(const std::string& pFile, IOSystem* pIOHandler); - /***********************************************/ - /********* Functions: BaseImporter set *********/ - /***********************************************/ - bool CanRead(const std::string& pFile, IOSystem* pIOHandler, bool pCheckSig) const; void GetExtensionList(std::set& pExtensionList); void InternReadFile(const std::string& pFile, aiScene* pScene, IOSystem* pIOHandler); const aiImporterDesc* GetInfo ()const; -};// class AMFImporter + AMFImporter(const AMFImporter& pScene) = delete; + AMFImporter& operator=(const AMFImporter& pScene) = delete; + +private: + static const aiImporterDesc Description; + + CAMFImporter_NodeElement* mNodeElement_Cur;///< Current element. + std::list mNodeElement_List;///< All elements of scene graph. + irr::io::IrrXMLReader* mReader;///< Pointer to XML-reader object + std::string mUnit; + std::list mMaterial_Converted;///< List of converted materials for postprocessing step. + std::list mTexture_Converted;///< List of converted textures for postprocessing step. + +}; }// namespace Assimp diff --git a/code/AMFImporter_Material.cpp b/code/AMFImporter_Material.cpp index 2f65ad833..c9190bb92 100644 --- a/code/AMFImporter_Material.cpp +++ b/code/AMFImporter_Material.cpp @@ -68,10 +68,9 @@ namespace Assimp // Multi elements - No. // Red, Greed, Blue and Alpha (transparency) component of a color in sRGB space, values ranging from 0 to 1. The // values can be specified as constants, or as a formula depending on the coordinates. -void AMFImporter::ParseNode_Color() -{ -std::string profile; -CAMFImporter_NodeElement* ne; +void AMFImporter::ParseNode_Color() { + std::string profile; + CAMFImporter_NodeElement* ne; // Read attributes for node . MACRO_ATTRREAD_LOOPBEG; @@ -98,15 +97,19 @@ CAMFImporter_NodeElement* ne; MACRO_NODECHECK_LOOPEND("color"); ParseHelper_Node_Exit(); // check that all components was defined - if(!(read_flag[0] && read_flag[1] && read_flag[2])) throw DeadlyImportError("Not all color components are defined."); - // check if is absent. Then manually add "a == 1". - if(!read_flag[3]) als.Color.a = 1; + if (!(read_flag[0] && read_flag[1] && read_flag[2])) { + throw DeadlyImportError("Not all color components are defined."); + } - }// if(!mReader->isEmptyElement()) + // check if is absent. Then manually add "a == 1". + if (!read_flag[3]) { + als.Color.a = 1; + } + } else { mNodeElement_Cur->Child.push_back(ne);// Add element to child list of current element - }// if(!mReader->isEmptyElement()) else + } als.Composed = false; mNodeElement_List.push_back(ne);// and to node element list because its a new object in graph. @@ -119,10 +122,9 @@ CAMFImporter_NodeElement* ne; // An available material. // Multi elements - Yes. // Parent element - . -void AMFImporter::ParseNode_Material() -{ -std::string id; -CAMFImporter_NodeElement* ne; +void AMFImporter::ParseNode_Material() { + std::string id; + CAMFImporter_NodeElement* ne; // Read attributes for node . MACRO_ATTRREAD_LOOPBEG; @@ -131,9 +133,11 @@ CAMFImporter_NodeElement* ne; // create new object. ne = new CAMFImporter_NodeElement_Material(mNodeElement_Cur); - // and assign read data + + // and assign read data ((CAMFImporter_NodeElement_Material*)ne)->ID = id; - // Check for child nodes + + // Check for child nodes if(!mReader->isEmptyElement()) { bool col_read = false; @@ -154,11 +158,11 @@ CAMFImporter_NodeElement* ne; if(XML_CheckNode_NameEqual("metadata")) { ParseNode_Metadata(); continue; } MACRO_NODECHECK_LOOPEND("material"); ParseHelper_Node_Exit(); - }// if(!mReader->isEmptyElement()) + } else { mNodeElement_Cur->Child.push_back(ne);// Add element to child list of current element - }// if(!mReader->isEmptyElement()) else + } mNodeElement_List.push_back(ne);// and to node element list because its a new object in graph. } @@ -181,14 +185,13 @@ CAMFImporter_NodeElement* ne; // Parent element - . void AMFImporter::ParseNode_Texture() { -std::string id; -uint32_t width = 0; -uint32_t height = 0; -uint32_t depth = 1; -std::string type; -bool tiled = false; -std::string enc64_data; -CAMFImporter_NodeElement* ne; + std::string id; + uint32_t width = 0; + uint32_t height = 0; + uint32_t depth = 1; + std::string type; + bool tiled = false; + std::string enc64_data; // Read attributes for node . MACRO_ATTRREAD_LOOPBEG; @@ -201,20 +204,34 @@ CAMFImporter_NodeElement* ne; MACRO_ATTRREAD_LOOPEND; // create new texture object. - ne = new CAMFImporter_NodeElement_Texture(mNodeElement_Cur); + CAMFImporter_NodeElement *ne = new CAMFImporter_NodeElement_Texture(mNodeElement_Cur); CAMFImporter_NodeElement_Texture& als = *((CAMFImporter_NodeElement_Texture*)ne);// alias for convenience // Check for child nodes - if(!mReader->isEmptyElement()) XML_ReadNode_GetVal_AsString(enc64_data); + if (!mReader->isEmptyElement()) { + XML_ReadNode_GetVal_AsString(enc64_data); + } // check that all components was defined - if(id.empty()) throw DeadlyImportError("ID for texture must be defined."); - if(width < 1) Throw_IncorrectAttrValue("width"); - if(height < 1) Throw_IncorrectAttrValue("height"); - if(depth < 1) Throw_IncorrectAttrValue("depth"); - if(type != "grayscale") Throw_IncorrectAttrValue("type"); - if(enc64_data.empty()) throw DeadlyImportError("Texture data not defined."); + if (id.empty()) { + throw DeadlyImportError("ID for texture must be defined."); + } + if (width < 1) { + Throw_IncorrectAttrValue("width"); + } + if (height < 1) { + Throw_IncorrectAttrValue("height"); + } + if (depth < 1) { + Throw_IncorrectAttrValue("depth"); + } + if (type != "grayscale") { + Throw_IncorrectAttrValue("type"); + } + if (enc64_data.empty()) { + throw DeadlyImportError("Texture data not defined."); + } // copy data als.ID = id; als.Width = width; @@ -222,8 +239,11 @@ CAMFImporter_NodeElement* ne; als.Depth = depth; als.Tiled = tiled; ParseHelper_Decode_Base64(enc64_data, als.Data); - // check data size - if((width * height * depth) != als.Data.size()) throw DeadlyImportError("Texture has incorrect data size."); + + // check data size + if ((width * height * depth) != als.Data.size()) { + throw DeadlyImportError("Texture has incorrect data size."); + } mNodeElement_Cur->Child.push_back(ne);// Add element to child list of current element mNodeElement_List.push_back(ne);// and to node element list because its a new object in graph. @@ -243,10 +263,8 @@ CAMFImporter_NodeElement* ne; // , , , , , . Old name: , , , , , . // Multi elements - No. // Texture coordinates for every vertex of triangle. -void AMFImporter::ParseNode_TexMap(const bool pUseOldName) -{ -std::string rtexid, gtexid, btexid, atexid; -CAMFImporter_NodeElement* ne; +void AMFImporter::ParseNode_TexMap(const bool pUseOldName) { + std::string rtexid, gtexid, btexid, atexid; // Read attributes for node . MACRO_ATTRREAD_LOOPBEG; @@ -257,7 +275,7 @@ CAMFImporter_NodeElement* ne; MACRO_ATTRREAD_LOOPEND; // create new texture coordinates object. - ne = new CAMFImporter_NodeElement_TexMap(mNodeElement_Cur); + CAMFImporter_NodeElement *ne = new CAMFImporter_NodeElement_TexMap(mNodeElement_Cur); CAMFImporter_NodeElement_TexMap& als = *((CAMFImporter_NodeElement_TexMap*)ne);// alias for convenience // check data diff --git a/code/AMFImporter_Node.hpp b/code/AMFImporter_Node.hpp index cdbedf2c7..22b8f58cb 100644 --- a/code/AMFImporter_Node.hpp +++ b/code/AMFImporter_Node.hpp @@ -62,7 +62,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /// \class CAMFImporter_NodeElement /// Base class for elements of nodes. class CAMFImporter_NodeElement { - public: /// Define what data type contain node element. enum EType { @@ -96,15 +95,11 @@ public: /// Destructor, virtual.. // empty } -private: - /// Disabled copy constructor. - CAMFImporter_NodeElement(const CAMFImporter_NodeElement& pNodeElement); - - /// Disabled assign operator. - CAMFImporter_NodeElement& operator=(const CAMFImporter_NodeElement& pNodeElement); - - /// Disabled default constructor. - CAMFImporter_NodeElement(); + /// Disabled copy constructor and co. + CAMFImporter_NodeElement(const CAMFImporter_NodeElement& pNodeElement) = delete; + CAMFImporter_NodeElement(CAMFImporter_NodeElement&&) = delete; + CAMFImporter_NodeElement& operator=(const CAMFImporter_NodeElement& pNodeElement) = delete; + CAMFImporter_NodeElement() = delete; protected: /// In constructor inheritor must set element type. @@ -121,9 +116,7 @@ protected: /// \struct CAMFImporter_NodeElement_Constellation /// A collection of objects or constellations with specific relative locations. -struct CAMFImporter_NodeElement_Constellation : public CAMFImporter_NodeElement -{ - /// \fn CAMFImporter_NodeElement_Constellation(CAMFImporter_NodeElement* pParent) +struct CAMFImporter_NodeElement_Constellation : public CAMFImporter_NodeElement { /// Constructor. /// \param [in] pParent - pointer to parent node. CAMFImporter_NodeElement_Constellation(CAMFImporter_NodeElement* pParent) @@ -134,9 +127,7 @@ struct CAMFImporter_NodeElement_Constellation : public CAMFImporter_NodeElement /// \struct CAMFImporter_NodeElement_Instance /// Part of constellation. -struct CAMFImporter_NodeElement_Instance : public CAMFImporter_NodeElement -{ - /****************** Variables ******************/ +struct CAMFImporter_NodeElement_Instance : public CAMFImporter_NodeElement { std::string ObjectID;///< ID of object for instantiation. /// \var Delta - The distance of translation in the x, y, or z direction, respectively, in the referenced object's coordinate system, to @@ -147,237 +138,185 @@ struct CAMFImporter_NodeElement_Instance : public CAMFImporter_NodeElement /// instance of the object in the current constellation. Rotations shall be executed in order of x first, then y, then z. aiVector3D Rotation; - /****************** Functions ******************/ - - /// \fn CAMFImporter_NodeElement_Instance(CAMFImporter_NodeElement* pParent) /// Constructor. /// \param [in] pParent - pointer to parent node. CAMFImporter_NodeElement_Instance(CAMFImporter_NodeElement* pParent) : CAMFImporter_NodeElement(ENET_Instance, pParent) {} - -};// struct CAMFImporter_NodeElement_Instance +}; /// \struct CAMFImporter_NodeElement_Metadata /// Structure that define metadata node. -struct CAMFImporter_NodeElement_Metadata : public CAMFImporter_NodeElement -{ - /****************** Variables ******************/ +struct CAMFImporter_NodeElement_Metadata : public CAMFImporter_NodeElement { - std::string Type;///< Type of "Value". + std::string Type;///< Type of "Value". std::string Value;///< Value. - /****************** Functions ******************/ - - /// \fn CAMFImporter_NodeElement_Metadata(CAMFImporter_NodeElement* pParent) /// Constructor. /// \param [in] pParent - pointer to parent node. CAMFImporter_NodeElement_Metadata(CAMFImporter_NodeElement* pParent) : CAMFImporter_NodeElement(ENET_Metadata, pParent) {} - -};// struct CAMFImporter_NodeElement_Metadata +}; /// \struct CAMFImporter_NodeElement_Root /// Structure that define root node. -struct CAMFImporter_NodeElement_Root : public CAMFImporter_NodeElement -{ - /****************** Variables ******************/ +struct CAMFImporter_NodeElement_Root : public CAMFImporter_NodeElement { std::string Unit;///< The units to be used. May be "inch", "millimeter", "meter", "feet", or "micron". std::string Version;///< Version of format. - /****************** Functions ******************/ - - /// \fn CAMFImporter_NodeElement_Root(CAMFImporter_NodeElement* pParent) /// Constructor. /// \param [in] pParent - pointer to parent node. CAMFImporter_NodeElement_Root(CAMFImporter_NodeElement* pParent) : CAMFImporter_NodeElement(ENET_Root, pParent) {} - -};// struct CAMFImporter_NodeElement_Root +}; /// \struct CAMFImporter_NodeElement_Color /// Structure that define object node. -struct CAMFImporter_NodeElement_Color : public CAMFImporter_NodeElement -{ - /****************** Variables ******************/ +struct CAMFImporter_NodeElement_Color : public CAMFImporter_NodeElement { + bool Composed; ///< Type of color stored: if true then look for formula in \ref Color_Composed[4], else - in \ref Color. + std::string Color_Composed[4]; ///< By components formulas of composed color. [0..3] - RGBA. + aiColor4D Color; ///< Constant color. + std::string Profile; ///< The ICC color space used to interpret the three color channels r, g and b.. - bool Composed;///< Type of color stored: if true then look for formula in \ref Color_Composed[4], else - in \ref Color. - std::string Color_Composed[4];///< By components formulas of composed color. [0..3] => RGBA. - aiColor4D Color;///< Constant color. - std::string Profile;///< The ICC color space used to interpret the three color channels , and .. - - /****************** Functions ******************/ - - /// \fn CAMFImporter_NodeElement_Color(CAMFImporter_NodeElement* pParent) - /// Constructor. - /// \param [in] pParent - pointer to parent node. + /// @brief Constructor. + /// @param [in] pParent - pointer to parent node. CAMFImporter_NodeElement_Color(CAMFImporter_NodeElement* pParent) - : CAMFImporter_NodeElement(ENET_Color, pParent) - {} - -};// struct CAMFImporter_NodeElement_Color + : CAMFImporter_NodeElement(ENET_Color, pParent) + , Composed( false ) + , Color() + , Profile() { + // empty + } +}; /// \struct CAMFImporter_NodeElement_Material /// Structure that define material node. -struct CAMFImporter_NodeElement_Material : public CAMFImporter_NodeElement -{ - /// \fn CAMFImporter_NodeElement_Material(CAMFImporter_NodeElement* pParent) +struct CAMFImporter_NodeElement_Material : public CAMFImporter_NodeElement { + /// Constructor. /// \param [in] pParent - pointer to parent node. CAMFImporter_NodeElement_Material(CAMFImporter_NodeElement* pParent) : CAMFImporter_NodeElement(ENET_Material, pParent) {} -};// struct CAMFImporter_NodeElement_Material +}; /// \struct CAMFImporter_NodeElement_Object /// Structure that define object node. -struct CAMFImporter_NodeElement_Object : public CAMFImporter_NodeElement -{ - /// \fn CAMFImporter_NodeElement_Object(CAMFImporter_NodeElement* pParent) - /// Constructor. +struct CAMFImporter_NodeElement_Object : public CAMFImporter_NodeElement { + + /// Constructor. /// \param [in] pParent - pointer to parent node. CAMFImporter_NodeElement_Object(CAMFImporter_NodeElement* pParent) : CAMFImporter_NodeElement(ENET_Object, pParent) {} - -};// struct CAMFImporter_NodeElement_Object +}; /// \struct CAMFImporter_NodeElement_Mesh /// Structure that define mesh node. -struct CAMFImporter_NodeElement_Mesh : public CAMFImporter_NodeElement -{ - /// \fn CAMFImporter_NodeElement_Mesh(CAMFImporter_NodeElement* pParent) +struct CAMFImporter_NodeElement_Mesh : public CAMFImporter_NodeElement { /// Constructor. /// \param [in] pParent - pointer to parent node. CAMFImporter_NodeElement_Mesh(CAMFImporter_NodeElement* pParent) : CAMFImporter_NodeElement(ENET_Mesh, pParent) {} - -};// struct CAMFImporter_NodeElement_Mesh +}; /// \struct CAMFImporter_NodeElement_Vertex /// Structure that define vertex node. -struct CAMFImporter_NodeElement_Vertex : public CAMFImporter_NodeElement -{ - /// \fn CAMFImporter_NodeElement_Vertex(CAMFImporter_NodeElement* pParent) +struct CAMFImporter_NodeElement_Vertex : public CAMFImporter_NodeElement { /// Constructor. /// \param [in] pParent - pointer to parent node. CAMFImporter_NodeElement_Vertex(CAMFImporter_NodeElement* pParent) : CAMFImporter_NodeElement(ENET_Vertex, pParent) {} - -};// struct CAMFImporter_NodeElement_Vertex +}; /// \struct CAMFImporter_NodeElement_Edge /// Structure that define edge node. -struct CAMFImporter_NodeElement_Edge : public CAMFImporter_NodeElement -{ - /// \fn CAMFImporter_NodeElement_Edge(CAMFImporter_NodeElement* pParent) +struct CAMFImporter_NodeElement_Edge : public CAMFImporter_NodeElement { /// Constructor. /// \param [in] pParent - pointer to parent node. CAMFImporter_NodeElement_Edge(CAMFImporter_NodeElement* pParent) : CAMFImporter_NodeElement(ENET_Edge, pParent) {} -};// struct CAMFImporter_NodeElement_Vertex +}; /// \struct CAMFImporter_NodeElement_Vertices /// Structure that define vertices node. -struct CAMFImporter_NodeElement_Vertices : public CAMFImporter_NodeElement -{ - /// \fn CAMFImporter_NodeElement_Vertices(CAMFImporter_NodeElement* pParent) +struct CAMFImporter_NodeElement_Vertices : public CAMFImporter_NodeElement { /// Constructor. /// \param [in] pParent - pointer to parent node. CAMFImporter_NodeElement_Vertices(CAMFImporter_NodeElement* pParent) : CAMFImporter_NodeElement(ENET_Vertices, pParent) {} - -};// struct CAMFImporter_NodeElement_Vertices +}; /// \struct CAMFImporter_NodeElement_Volume /// Structure that define volume node. -struct CAMFImporter_NodeElement_Volume : public CAMFImporter_NodeElement -{ - /****************** Variables ******************/ - +struct CAMFImporter_NodeElement_Volume : public CAMFImporter_NodeElement { std::string MaterialID;///< Which material to use. std::string Type;///< What this volume describes can be “region” or “support”. If none specified, “object” is assumed. - /****************** Functions ******************/ - - /// \fn CAMFImporter_NodeElement_Volume(CAMFImporter_NodeElement* pParent) /// Constructor. /// \param [in] pParent - pointer to parent node. CAMFImporter_NodeElement_Volume(CAMFImporter_NodeElement* pParent) : CAMFImporter_NodeElement(ENET_Volume, pParent) {} - -};// struct CAMFImporter_NodeElement_Volume +}; /// \struct CAMFImporter_NodeElement_Coordinates /// Structure that define coordinates node. struct CAMFImporter_NodeElement_Coordinates : public CAMFImporter_NodeElement { - /****************** Variables ******************/ - aiVector3D Coordinate;///< Coordinate. - /****************** Functions ******************/ - - /// \fn CAMFImporter_NodeElement_Coordinates(CAMFImporter_NodeElement* pParent) /// Constructor. /// \param [in] pParent - pointer to parent node. CAMFImporter_NodeElement_Coordinates(CAMFImporter_NodeElement* pParent) : CAMFImporter_NodeElement(ENET_Coordinates, pParent) {} -};// struct CAMFImporter_NodeElement_Coordinates +}; /// \struct CAMFImporter_NodeElement_TexMap /// Structure that define texture coordinates node. -struct CAMFImporter_NodeElement_TexMap : public CAMFImporter_NodeElement -{ - /****************** Variables ******************/ - +struct CAMFImporter_NodeElement_TexMap : public CAMFImporter_NodeElement { aiVector3D TextureCoordinate[3];///< Texture coordinates. std::string TextureID_R;///< Texture ID for red color component. std::string TextureID_G;///< Texture ID for green color component. std::string TextureID_B;///< Texture ID for blue color component. std::string TextureID_A;///< Texture ID for alpha color component. - /****************** Functions ******************/ - - /// \fn CAMFImporter_NodeElement_TexMap(CAMFImporter_NodeElement* pParent) /// Constructor. /// \param [in] pParent - pointer to parent node. CAMFImporter_NodeElement_TexMap(CAMFImporter_NodeElement* pParent) - : CAMFImporter_NodeElement(ENET_TexMap, pParent) - {} - -};// struct CAMFImporter_NodeElement_TexMap + : CAMFImporter_NodeElement(ENET_TexMap, pParent) + , TextureCoordinate{} + , TextureID_R() + , TextureID_G() + , TextureID_B() + , TextureID_A() { + // empty + } +}; /// \struct CAMFImporter_NodeElement_Triangle /// Structure that define triangle node. -struct CAMFImporter_NodeElement_Triangle : public CAMFImporter_NodeElement -{ - /****************** Variables ******************/ - +struct CAMFImporter_NodeElement_Triangle : public CAMFImporter_NodeElement { size_t V[3];///< Triangle vertices. - /****************** Functions ******************/ - - /// \fn CAMFImporter_NodeElement_Triangle(CAMFImporter_NodeElement* pParent) /// Constructor. /// \param [in] pParent - pointer to parent node. CAMFImporter_NodeElement_Triangle(CAMFImporter_NodeElement* pParent) - : CAMFImporter_NodeElement(ENET_Triangle, pParent) - {} - -};// struct CAMFImporter_NodeElement_Triangle + : CAMFImporter_NodeElement(ENET_Triangle, pParent) { + // empty + } +}; /// Structure that define texture node. struct CAMFImporter_NodeElement_Texture : public CAMFImporter_NodeElement { @@ -396,6 +335,6 @@ struct CAMFImporter_NodeElement_Texture : public CAMFImporter_NodeElement { , Tiled( false ){ // empty } -};// struct CAMFImporter_NodeElement_Texture +}; #endif // INCLUDED_AI_AMF_IMPORTER_NODE_H diff --git a/code/ASEParser.h b/code/ASEParser.h index 70eb3de66..305a3f3d6 100644 --- a/code/ASEParser.h +++ b/code/ASEParser.h @@ -71,21 +71,20 @@ struct Material : public D3DS::Material //! Default constructor has been deleted Material() = delete; - //! Constructor with explicit name explicit Material(const std::string &name) : D3DS::Material(name) , pcInstance(NULL) - , bNeed (false) - {} - + , bNeed (false) { + // empty + } Material(const Material &other) = default; Material &operator=(const Material &other) = default; //! Move constructor. This is explicitly written because MSVC doesn't support defaulting it - Material(Material &&other) + Material(Material &&other) AI_NO_EXCEPT : D3DS::Material(std::move(other)) , avSubMaterials(std::move(other.avSubMaterials)) , pcInstance(std::move(other.pcInstance)) @@ -95,7 +94,7 @@ struct Material : public D3DS::Material } - Material &operator=(Material &&other) { + Material &operator=(Material &&other) AI_NO_EXCEPT { if (this == &other) { return *this; } @@ -127,19 +126,12 @@ struct Material : public D3DS::Material // --------------------------------------------------------------------------- /** Helper structure to represent an ASE file face */ -struct Face : public FaceWithSmoothingGroup -{ +struct Face : public FaceWithSmoothingGroup { //! Default constructor. Initializes everything with 0 - Face() - { - mColorIndices[0] = mColorIndices[1] = mColorIndices[2] = 0; - for (unsigned int i = 0; i < AI_MAX_NUMBER_OF_TEXTURECOORDS;++i) - { - amUVIndices[i][0] = amUVIndices[i][1] = amUVIndices[i][2] = 0; - } - - iMaterial = DEFAULT_MATINDEX; - iFace = 0; + Face() AI_NO_EXCEPT + : iMaterial(DEFAULT_MATINDEX) + , iFace(0) { + // empty } //! special value to indicate that no material index has @@ -147,8 +139,6 @@ struct Face : public FaceWithSmoothingGroup //! will replace this value later. static const unsigned int DEFAULT_MATINDEX = 0xFFFFFFFF; - - //! Indices into each list of texture coordinates unsigned int amUVIndices[AI_MAX_NUMBER_OF_TEXTURECOORDS][3]; @@ -166,15 +156,15 @@ struct Face : public FaceWithSmoothingGroup // --------------------------------------------------------------------------- /** Helper structure to represent an ASE file bone */ -struct Bone -{ +struct Bone { //! Constructor Bone() = delete; //! Construction from an existing name explicit Bone( const std::string& name) - : mName (name) - {} + : mName(name) { + // empty + } //! Name of the bone std::string mName; @@ -182,29 +172,22 @@ struct Bone // --------------------------------------------------------------------------- /** Helper structure to represent an ASE file bone vertex */ -struct BoneVertex -{ +struct BoneVertex { //! Bone and corresponding vertex weight. //! -1 for unrequired bones .... std::vector > mBoneWeights; - - //! Position of the bone vertex. - //! MUST be identical to the vertex position - //aiVector3D mPosition; }; // --------------------------------------------------------------------------- /** Helper structure to represent an ASE file animation */ -struct Animation -{ - enum Type - { +struct Animation { + enum Type { TRACK = 0x0, BEZIER = 0x1, TCB = 0x2 } mRotationType, mScalingType, mPositionType; - Animation() + Animation() AI_NO_EXCEPT : mRotationType (TRACK) , mScalingType (TRACK) , mPositionType (TRACK) @@ -218,19 +201,16 @@ struct Animation //! List of track scaling keyframes std::vector< aiVectorKey > akeyScaling; - }; // --------------------------------------------------------------------------- /** Helper structure to represent the inheritance information of an ASE node */ -struct InheritanceInfo -{ +struct InheritanceInfo { //! Default constructor - InheritanceInfo() - { - // set the inheritance flag for all axes by default to true - for (unsigned int i = 0; i < 3;++i) + InheritanceInfo() AI_NO_EXCEPT { + for ( size_t i=0; i<3; ++i ) { abInheritPosition[i] = abInheritRotation[i] = abInheritScaling[i] = true; + } } //! Inherit the parent's position?, axis order is x,y,z @@ -245,17 +225,19 @@ struct InheritanceInfo // --------------------------------------------------------------------------- /** Represents an ASE file node. Base class for mesh, light and cameras */ -struct BaseNode -{ - enum Type {Light, Camera, Mesh, Dummy} mType; - +struct BaseNode { + enum Type { + Light, + Camera, + Mesh, + Dummy + } mType; //! Construction from an existing name BaseNode(Type _mType, const std::string &name) : mType (_mType) , mName (name) - , mProcessed (false) - { + , mProcessed (false) { // Set mTargetPosition to qnan const ai_real qnan = get_qnan(); mTargetPosition.x = qnan; @@ -291,24 +273,23 @@ struct BaseNode // --------------------------------------------------------------------------- /** Helper structure to represent an ASE file mesh */ -struct Mesh : public MeshWithSmoothingGroups, public BaseNode -{ +struct Mesh : public MeshWithSmoothingGroups, public BaseNode { //! Default constructor has been deleted Mesh() = delete; - //! Construction from an existing name explicit Mesh(const std::string &name) - : BaseNode (BaseNode::Mesh, name) + : BaseNode( BaseNode::Mesh, name ) + , mVertexColors() + , mBoneVertices() + , mBones() , iMaterialIndex(Face::DEFAULT_MATINDEX) - , bSkip (false) - { - // use 2 texture vertex components by default - for (unsigned int c = 0; c < AI_MAX_NUMBER_OF_TEXTURECOORDS;++c) + , bSkip (false) { + for (unsigned int c = 0; c < AI_MAX_NUMBER_OF_TEXTURECOORDS;++c) { this->mNumUVComponents[c] = 2; + } } - //! List of all texture coordinate sets std::vector amTexCoords[AI_MAX_NUMBER_OF_TEXTURECOORDS]; @@ -396,12 +377,11 @@ struct Camera : public BaseNode // --------------------------------------------------------------------------- /** Helper structure to represent an ASE helper object (dummy) */ -struct Dummy : public BaseNode -{ +struct Dummy : public BaseNode { //! Constructor - Dummy() - : BaseNode (BaseNode::Dummy, "DUMMY") - { + Dummy() AI_NO_EXCEPT + : BaseNode (BaseNode::Dummy, "DUMMY") { + // empty } }; @@ -416,12 +396,11 @@ struct Dummy : public BaseNode // ------------------------------------------------------------------------------- /** \brief Class to parse ASE files */ -class Parser -{ - +class Parser { private: - - Parser() {} + Parser() AI_NO_EXCEPT { + // empty + } public: diff --git a/code/AssbinExporter.cpp b/code/AssbinExporter.cpp index cc404396b..f49389f78 100644 --- a/code/AssbinExporter.cpp +++ b/code/AssbinExporter.cpp @@ -62,148 +62,154 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include -using namespace Assimp; - -namespace Assimp { +namespace Assimp { template -size_t Write(IOStream * stream, const T& v) -{ +size_t Write(IOStream * stream, const T& v) { return stream->Write( &v, sizeof(T), 1 ); } - // ----------------------------------------------------------------------------------- // Serialize an aiString template <> -inline size_t Write(IOStream * stream, const aiString& s) -{ +inline +size_t Write(IOStream * stream, const aiString& s) { const size_t s2 = (uint32_t)s.length; stream->Write(&s,4,1); stream->Write(s.data,s2,1); + return s2+4; } // ----------------------------------------------------------------------------------- // Serialize an unsigned int as uint32_t template <> -inline size_t Write(IOStream * stream, const unsigned int& w) -{ +inline +size_t Write(IOStream * stream, const unsigned int& w) { const uint32_t t = (uint32_t)w; if (w > t) { // this shouldn't happen, integers in Assimp data structures never exceed 2^32 - throw new DeadlyExportError("loss of data due to 64 -> 32 bit integer conversion"); + throw DeadlyExportError("loss of data due to 64 -> 32 bit integer conversion"); } stream->Write(&t,4,1); + return 4; } // ----------------------------------------------------------------------------------- // Serialize an unsigned int as uint16_t template <> -inline size_t Write(IOStream * stream, const uint16_t& w) -{ +inline +size_t Write(IOStream * stream, const uint16_t& w) { static_assert(sizeof(uint16_t)==2, "sizeof(uint16_t)==2"); stream->Write(&w,2,1); + return 2; } // ----------------------------------------------------------------------------------- // Serialize a float template <> -inline size_t Write(IOStream * stream, const float& f) -{ +inline +size_t Write(IOStream * stream, const float& f) { static_assert(sizeof(float)==4, "sizeof(float)==4"); stream->Write(&f,4,1); + return 4; } // ----------------------------------------------------------------------------------- // Serialize a double template <> -inline size_t Write(IOStream * stream, const double& f) -{ +inline +size_t Write(IOStream * stream, const double& f) { static_assert(sizeof(double)==8, "sizeof(double)==8"); stream->Write(&f,8,1); + return 8; } // ----------------------------------------------------------------------------------- // Serialize a vec3 template <> -inline size_t Write(IOStream * stream, const aiVector3D& v) -{ +inline +size_t Write(IOStream * stream, const aiVector3D& v) { size_t t = Write(stream,v.x); t += Write(stream,v.y); t += Write(stream,v.z); + return t; } // ----------------------------------------------------------------------------------- // Serialize a color value template <> -inline size_t Write(IOStream * stream, const aiColor3D& v) -{ +inline +size_t Write(IOStream * stream, const aiColor3D& v) { size_t t = Write(stream,v.r); t += Write(stream,v.g); t += Write(stream,v.b); + return t; } // ----------------------------------------------------------------------------------- // Serialize a color value template <> -inline size_t Write(IOStream * stream, const aiColor4D& v) -{ +inline +size_t Write(IOStream * stream, const aiColor4D& v) { size_t t = Write(stream,v.r); t += Write(stream,v.g); t += Write(stream,v.b); t += Write(stream,v.a); + return t; } // ----------------------------------------------------------------------------------- // Serialize a quaternion template <> -inline size_t Write(IOStream * stream, const aiQuaternion& v) -{ +inline +size_t Write(IOStream * stream, const aiQuaternion& v) { size_t t = Write(stream,v.w); t += Write(stream,v.x); t += Write(stream,v.y); t += Write(stream,v.z); ai_assert(t == 16); + return 16; } - // ----------------------------------------------------------------------------------- // Serialize a vertex weight template <> -inline size_t Write(IOStream * stream, const aiVertexWeight& v) -{ +inline +size_t Write(IOStream * stream, const aiVertexWeight& v) { size_t t = Write(stream,v.mVertexId); + return t+Write(stream,v.mWeight); } // ----------------------------------------------------------------------------------- // Serialize a mat4x4 template <> -inline size_t Write(IOStream * stream, const aiMatrix4x4& m) -{ +inline +size_t Write(IOStream * stream, const aiMatrix4x4& m) { for (unsigned int i = 0; i < 4;++i) { for (unsigned int i2 = 0; i2 < 4;++i2) { Write(stream,m[i][i2]); } } + return 64; } // ----------------------------------------------------------------------------------- // Serialize an aiVectorKey template <> -inline size_t Write(IOStream * stream, const aiVectorKey& v) -{ +inline +size_t Write(IOStream * stream, const aiVectorKey& v) { const size_t t = Write(stream,v.mTime); return t + Write(stream,v.mValue); } @@ -211,16 +217,16 @@ inline size_t Write(IOStream * stream, const aiVectorKey& v) // ----------------------------------------------------------------------------------- // Serialize an aiQuatKey template <> -inline size_t Write(IOStream * stream, const aiQuatKey& v) -{ +inline +size_t Write(IOStream * stream, const aiQuatKey& v) { const size_t t = Write(stream,v.mTime); return t + Write(stream,v.mValue); } template -inline size_t WriteBounds(IOStream * stream, const T* in, unsigned int size) -{ - T minc,maxc; +inline +size_t WriteBounds(IOStream * stream, const T* in, unsigned int size) { + T minc, maxc; ArrayBounds(in,size,minc,maxc); const size_t t = Write(stream,minc); @@ -230,590 +236,601 @@ inline size_t WriteBounds(IOStream * stream, const T* in, unsigned int size) // We use this to write out non-byte arrays so that we write using the specializations. // This way we avoid writing out extra bytes that potentially come from struct alignment. template -inline size_t WriteArray(IOStream * stream, const T* in, unsigned int size) -{ +inline +size_t WriteArray(IOStream * stream, const T* in, unsigned int size) { size_t n = 0; for (unsigned int i=0; i(stream,in[i]); + return n; } - // ---------------------------------------------------------------------------------- - /** @class AssbinChunkWriter - * @brief Chunk writer mechanism for the .assbin file structure - * - * This is a standard in-memory IOStream (most of the code is based on BlobIOStream), - * the difference being that this takes another IOStream as a "container" in the - * constructor, and when it is destroyed, it appends the magic number, the chunk size, - * and the chunk contents to the container stream. This allows relatively easy chunk - * chunk construction, even recursively. - */ - class AssbinChunkWriter : public IOStream - { - private: - - uint8_t* buffer; - uint32_t magic; - IOStream * container; - size_t cur_size, cursor, initial; - - private: - // ------------------------------------------------------------------- - void Grow(size_t need = 0) - { - size_t new_size = std::max(initial, std::max( need, cur_size+(cur_size>>1) )); - - const uint8_t* const old = buffer; - buffer = new uint8_t[new_size]; - - if (old) { - memcpy(buffer,old,cur_size); - delete[] old; - } - - cur_size = new_size; - } - - public: - - AssbinChunkWriter( IOStream * container, uint32_t magic, size_t initial = 4096) - : buffer(NULL), magic(magic), container(container), cur_size(0), cursor(0), initial(initial) - { - } - - virtual ~AssbinChunkWriter() - { - if (container) { - container->Write( &magic, sizeof(uint32_t), 1 ); - container->Write( &cursor, sizeof(uint32_t), 1 ); - container->Write( buffer, 1, cursor ); - } - if (buffer) delete[] buffer; - } - - void * GetBufferPointer() { return buffer; } - - // ------------------------------------------------------------------- - virtual size_t Read(void* /*pvBuffer*/, size_t /*pSize*/, size_t /*pCount*/) { return 0; } - virtual aiReturn Seek(size_t /*pOffset*/, aiOrigin /*pOrigin*/) { return aiReturn_FAILURE; } - virtual size_t Tell() const { return cursor; } - virtual void Flush() { } - - virtual size_t FileSize() const - { - return cursor; - } - - // ------------------------------------------------------------------- - virtual size_t Write(const void* pvBuffer, size_t pSize, size_t pCount) - { - pSize *= pCount; - if (cursor + pSize > cur_size) { - Grow(cursor + pSize); - } - - memcpy(buffer+cursor, pvBuffer, pSize); - cursor += pSize; - - return pCount; - } - - }; - - // ---------------------------------------------------------------------------------- - /** @class AssbinExport - * @brief Assbin exporter class - * - * This class performs the .assbin exporting, and is responsible for the file layout. - */ - class AssbinExport - { - private: - bool shortened; - bool compressed; - - protected: - - // ----------------------------------------------------------------------------------- - void WriteBinaryNode( IOStream * container, const aiNode* node) - { - AssbinChunkWriter chunk( container, ASSBIN_CHUNK_AINODE ); - - unsigned int nb_metadata = (node->mMetaData != NULL ? node->mMetaData->mNumProperties : 0); - - Write(&chunk,node->mName); - Write(&chunk,node->mTransformation); - Write(&chunk,node->mNumChildren); - Write(&chunk,node->mNumMeshes); - Write(&chunk,nb_metadata); - - for (unsigned int i = 0; i < node->mNumMeshes;++i) { - Write(&chunk,node->mMeshes[i]); - } - - for (unsigned int i = 0; i < node->mNumChildren;++i) { - WriteBinaryNode( &chunk, node->mChildren[i] ); - } - - for (unsigned int i = 0; i < nb_metadata; ++i) { - const aiString& key = node->mMetaData->mKeys[i]; - aiMetadataType type = node->mMetaData->mValues[i].mType; - void* value = node->mMetaData->mValues[i].mData; - - Write(&chunk, key); - Write(&chunk, type); - - switch (type) { - case AI_BOOL: - Write(&chunk, *((bool*) value)); - break; - case AI_INT32: - Write(&chunk, *((int32_t*) value)); - break; - case AI_UINT64: - Write(&chunk, *((uint64_t*) value)); - break; - case AI_FLOAT: - Write(&chunk, *((float*) value)); - break; - case AI_DOUBLE: - Write(&chunk, *((double*) value)); - break; - case AI_AISTRING: - Write(&chunk, *((aiString*) value)); - break; - case AI_AIVECTOR3D: - Write(&chunk, *((aiVector3D*) value)); - break; -#ifdef SWIG - case FORCE_32BIT: -#endif // SWIG - default: - break; - } - } - } - - // ----------------------------------------------------------------------------------- - void WriteBinaryTexture(IOStream * container, const aiTexture* tex) - { - AssbinChunkWriter chunk( container, ASSBIN_CHUNK_AITEXTURE ); - - Write(&chunk,tex->mWidth); - Write(&chunk,tex->mHeight); - chunk.Write( tex->achFormatHint, sizeof(char), 4 ); - - if(!shortened) { - if (!tex->mHeight) { - chunk.Write(tex->pcData,1,tex->mWidth); - } - else { - chunk.Write(tex->pcData,1,tex->mWidth*tex->mHeight*4); - } - } - - } - - // ----------------------------------------------------------------------------------- - void WriteBinaryBone(IOStream * container, const aiBone* b) - { - AssbinChunkWriter chunk( container, ASSBIN_CHUNK_AIBONE ); - - Write(&chunk,b->mName); - Write(&chunk,b->mNumWeights); - Write(&chunk,b->mOffsetMatrix); - - // for the moment we write dumb min/max values for the bones, too. - // maybe I'll add a better, hash-like solution later - if (shortened) { - WriteBounds(&chunk,b->mWeights,b->mNumWeights); - } // else write as usual - else WriteArray(&chunk,b->mWeights,b->mNumWeights); - } - - // ----------------------------------------------------------------------------------- - void WriteBinaryMesh(IOStream * container, const aiMesh* mesh) - { - AssbinChunkWriter chunk( container, ASSBIN_CHUNK_AIMESH ); - - Write(&chunk,mesh->mPrimitiveTypes); - Write(&chunk,mesh->mNumVertices); - Write(&chunk,mesh->mNumFaces); - Write(&chunk,mesh->mNumBones); - Write(&chunk,mesh->mMaterialIndex); - - // first of all, write bits for all existent vertex components - unsigned int c = 0; - if (mesh->mVertices) { - c |= ASSBIN_MESH_HAS_POSITIONS; - } - if (mesh->mNormals) { - c |= ASSBIN_MESH_HAS_NORMALS; - } - if (mesh->mTangents && mesh->mBitangents) { - c |= ASSBIN_MESH_HAS_TANGENTS_AND_BITANGENTS; - } - for (unsigned int n = 0; n < AI_MAX_NUMBER_OF_TEXTURECOORDS;++n) { - if (!mesh->mTextureCoords[n]) { - break; - } - c |= ASSBIN_MESH_HAS_TEXCOORD(n); - } - for (unsigned int n = 0; n < AI_MAX_NUMBER_OF_COLOR_SETS;++n) { - if (!mesh->mColors[n]) { - break; - } - c |= ASSBIN_MESH_HAS_COLOR(n); - } - Write(&chunk,c); - - aiVector3D minVec, maxVec; - if (mesh->mVertices) { - if (shortened) { - WriteBounds(&chunk,mesh->mVertices,mesh->mNumVertices); - } // else write as usual - else WriteArray(&chunk,mesh->mVertices,mesh->mNumVertices); - } - if (mesh->mNormals) { - if (shortened) { - WriteBounds(&chunk,mesh->mNormals,mesh->mNumVertices); - } // else write as usual - else WriteArray(&chunk,mesh->mNormals,mesh->mNumVertices); - } - if (mesh->mTangents && mesh->mBitangents) { - if (shortened) { - WriteBounds(&chunk,mesh->mTangents,mesh->mNumVertices); - WriteBounds(&chunk,mesh->mBitangents,mesh->mNumVertices); - } // else write as usual - else { - WriteArray(&chunk,mesh->mTangents,mesh->mNumVertices); - WriteArray(&chunk,mesh->mBitangents,mesh->mNumVertices); - } - } - for (unsigned int n = 0; n < AI_MAX_NUMBER_OF_COLOR_SETS;++n) { - if (!mesh->mColors[n]) - break; - - if (shortened) { - WriteBounds(&chunk,mesh->mColors[n],mesh->mNumVertices); - } // else write as usual - else WriteArray(&chunk,mesh->mColors[n],mesh->mNumVertices); - } - for (unsigned int n = 0; n < AI_MAX_NUMBER_OF_TEXTURECOORDS;++n) { - if (!mesh->mTextureCoords[n]) - break; - - // write number of UV components - Write(&chunk,mesh->mNumUVComponents[n]); - - if (shortened) { - WriteBounds(&chunk,mesh->mTextureCoords[n],mesh->mNumVertices); - } // else write as usual - else WriteArray(&chunk,mesh->mTextureCoords[n],mesh->mNumVertices); - } - - // write faces. There are no floating-point calculations involved - // in these, so we can write a simple hash over the face data - // to the dump file. We generate a single 32 Bit hash for 512 faces - // using Assimp's standard hashing function. - if (shortened) { - unsigned int processed = 0; - for (unsigned int job;(job = std::min(mesh->mNumFaces-processed,512u));processed += job) { - - uint32_t hash = 0; - for (unsigned int a = 0; a < job;++a) { - - const aiFace& f = mesh->mFaces[processed+a]; - uint32_t tmp = f.mNumIndices; - hash = SuperFastHash(reinterpret_cast(&tmp),sizeof tmp,hash); - for (unsigned int i = 0; i < f.mNumIndices; ++i) { - static_assert(AI_MAX_VERTICES <= 0xffffffff, "AI_MAX_VERTICES <= 0xffffffff"); - tmp = static_cast( f.mIndices[i] ); - hash = SuperFastHash(reinterpret_cast(&tmp),sizeof tmp,hash); - } - } - Write(&chunk,hash); - } - } - else // else write as usual - { - // if there are less than 2^16 vertices, we can simply use 16 bit integers ... - for (unsigned int i = 0; i < mesh->mNumFaces;++i) { - const aiFace& f = mesh->mFaces[i]; - - static_assert(AI_MAX_FACE_INDICES <= 0xffff, "AI_MAX_FACE_INDICES <= 0xffff"); - Write(&chunk,f.mNumIndices); - - for (unsigned int a = 0; a < f.mNumIndices;++a) { - if (mesh->mNumVertices < (1u<<16)) { - Write(&chunk,f.mIndices[a]); - } - else Write(&chunk,f.mIndices[a]); - } - } - } - - // write bones - if (mesh->mNumBones) { - for (unsigned int a = 0; a < mesh->mNumBones;++a) { - const aiBone* b = mesh->mBones[a]; - WriteBinaryBone(&chunk,b); - } - } - } - - // ----------------------------------------------------------------------------------- - void WriteBinaryMaterialProperty(IOStream * container, const aiMaterialProperty* prop) - { - AssbinChunkWriter chunk( container, ASSBIN_CHUNK_AIMATERIALPROPERTY ); - - Write(&chunk,prop->mKey); - Write(&chunk,prop->mSemantic); - Write(&chunk,prop->mIndex); - - Write(&chunk,prop->mDataLength); - Write(&chunk,(unsigned int)prop->mType); - chunk.Write(prop->mData,1,prop->mDataLength); - } - - // ----------------------------------------------------------------------------------- - void WriteBinaryMaterial(IOStream * container, const aiMaterial* mat) - { - AssbinChunkWriter chunk( container, ASSBIN_CHUNK_AIMATERIAL); - - Write(&chunk,mat->mNumProperties); - for (unsigned int i = 0; i < mat->mNumProperties;++i) { - WriteBinaryMaterialProperty( &chunk, mat->mProperties[i]); - } - } - - // ----------------------------------------------------------------------------------- - void WriteBinaryNodeAnim(IOStream * container, const aiNodeAnim* nd) - { - AssbinChunkWriter chunk( container, ASSBIN_CHUNK_AINODEANIM ); - - Write(&chunk,nd->mNodeName); - Write(&chunk,nd->mNumPositionKeys); - Write(&chunk,nd->mNumRotationKeys); - Write(&chunk,nd->mNumScalingKeys); - Write(&chunk,nd->mPreState); - Write(&chunk,nd->mPostState); - - if (nd->mPositionKeys) { - if (shortened) { - WriteBounds(&chunk,nd->mPositionKeys,nd->mNumPositionKeys); - - } // else write as usual - else WriteArray(&chunk,nd->mPositionKeys,nd->mNumPositionKeys); - } - if (nd->mRotationKeys) { - if (shortened) { - WriteBounds(&chunk,nd->mRotationKeys,nd->mNumRotationKeys); - - } // else write as usual - else WriteArray(&chunk,nd->mRotationKeys,nd->mNumRotationKeys); - } - if (nd->mScalingKeys) { - if (shortened) { - WriteBounds(&chunk,nd->mScalingKeys,nd->mNumScalingKeys); - - } // else write as usual - else WriteArray(&chunk,nd->mScalingKeys,nd->mNumScalingKeys); - } - } - - - // ----------------------------------------------------------------------------------- - void WriteBinaryAnim( IOStream * container, const aiAnimation* anim ) - { - AssbinChunkWriter chunk( container, ASSBIN_CHUNK_AIANIMATION ); - - Write(&chunk,anim->mName); - Write(&chunk,anim->mDuration); - Write(&chunk,anim->mTicksPerSecond); - Write(&chunk,anim->mNumChannels); - - for (unsigned int a = 0; a < anim->mNumChannels;++a) { - const aiNodeAnim* nd = anim->mChannels[a]; - WriteBinaryNodeAnim(&chunk,nd); - } - } - - // ----------------------------------------------------------------------------------- - void WriteBinaryLight( IOStream * container, const aiLight* l ) - { - AssbinChunkWriter chunk( container, ASSBIN_CHUNK_AILIGHT ); - - Write(&chunk,l->mName); - Write(&chunk,l->mType); - - if (l->mType != aiLightSource_DIRECTIONAL) { - Write(&chunk,l->mAttenuationConstant); - Write(&chunk,l->mAttenuationLinear); - Write(&chunk,l->mAttenuationQuadratic); - } - - Write(&chunk,l->mColorDiffuse); - Write(&chunk,l->mColorSpecular); - Write(&chunk,l->mColorAmbient); - - if (l->mType == aiLightSource_SPOT) { - Write(&chunk,l->mAngleInnerCone); - Write(&chunk,l->mAngleOuterCone); - } - - } - - // ----------------------------------------------------------------------------------- - void WriteBinaryCamera( IOStream * container, const aiCamera* cam ) - { - AssbinChunkWriter chunk( container, ASSBIN_CHUNK_AICAMERA ); - - Write(&chunk,cam->mName); - Write(&chunk,cam->mPosition); - Write(&chunk,cam->mLookAt); - Write(&chunk,cam->mUp); - Write(&chunk,cam->mHorizontalFOV); - Write(&chunk,cam->mClipPlaneNear); - Write(&chunk,cam->mClipPlaneFar); - Write(&chunk,cam->mAspect); - } - - // ----------------------------------------------------------------------------------- - void WriteBinaryScene( IOStream * container, const aiScene* scene) - { - AssbinChunkWriter chunk( container, ASSBIN_CHUNK_AISCENE ); - - // basic scene information - Write(&chunk,scene->mFlags); - Write(&chunk,scene->mNumMeshes); - Write(&chunk,scene->mNumMaterials); - Write(&chunk,scene->mNumAnimations); - Write(&chunk,scene->mNumTextures); - Write(&chunk,scene->mNumLights); - Write(&chunk,scene->mNumCameras); - - // write node graph - WriteBinaryNode( &chunk, scene->mRootNode ); - - // write all meshes - for (unsigned int i = 0; i < scene->mNumMeshes;++i) { - const aiMesh* mesh = scene->mMeshes[i]; - WriteBinaryMesh( &chunk,mesh); - } - - // write materials - for (unsigned int i = 0; i< scene->mNumMaterials; ++i) { - const aiMaterial* mat = scene->mMaterials[i]; - WriteBinaryMaterial(&chunk,mat); - } - - // write all animations - for (unsigned int i = 0; i < scene->mNumAnimations;++i) { - const aiAnimation* anim = scene->mAnimations[i]; - WriteBinaryAnim(&chunk,anim); - } - - - // write all textures - for (unsigned int i = 0; i < scene->mNumTextures;++i) { - const aiTexture* mesh = scene->mTextures[i]; - WriteBinaryTexture(&chunk,mesh); - } - - // write lights - for (unsigned int i = 0; i < scene->mNumLights;++i) { - const aiLight* l = scene->mLights[i]; - WriteBinaryLight(&chunk,l); - } - - // write cameras - for (unsigned int i = 0; i < scene->mNumCameras;++i) { - const aiCamera* cam = scene->mCameras[i]; - WriteBinaryCamera(&chunk,cam); - } - - } - - public: - AssbinExport() - : shortened(false), compressed(false) // temporary settings until properties are introduced for exporters - { - } - - // ----------------------------------------------------------------------------------- - // Write a binary model dump - void WriteBinaryDump(const char* pFile, IOSystem* pIOSystem, const aiScene* pScene) - { - IOStream * out = pIOSystem->Open( pFile, "wb" ); - if (!out) return; - - time_t tt = time(NULL); - tm* p = gmtime(&tt); - - // header - char s[64]; - memset( s, 0, 64 ); -#if _MSC_VER >= 1400 - sprintf_s(s,"ASSIMP.binary-dump.%s",asctime(p)); -#else - ai_snprintf(s,64,"ASSIMP.binary-dump.%s",asctime(p)); -#endif - out->Write( s, 44, 1 ); - // == 44 bytes - - Write( out, ASSBIN_VERSION_MAJOR ); - Write( out, ASSBIN_VERSION_MINOR ); - Write( out, aiGetVersionRevision() ); - Write( out, aiGetCompileFlags() ); - Write( out, shortened ); - Write( out, compressed ); - // == 20 bytes - - char buff[256]; - strncpy(buff,pFile,256); - out->Write(buff,sizeof(char),256); - - char cmd[] = "\0"; - strncpy(buff,cmd,128); - out->Write(buff,sizeof(char),128); - - // leave 64 bytes free for future extensions - memset(buff,0xcd,64); - out->Write(buff,sizeof(char),64); - // == 435 bytes - - // ==== total header size: 512 bytes - ai_assert( out->Tell() == ASSBIN_HEADER_LENGTH ); - - // Up to here the data is uncompressed. For compressed files, the rest - // is compressed using standard DEFLATE from zlib. - if (compressed) - { - AssbinChunkWriter uncompressedStream( NULL, 0 ); - WriteBinaryScene( &uncompressedStream, pScene ); - - uLongf uncompressedSize = static_cast(uncompressedStream.Tell()); - uLongf compressedSize = (uLongf)(uncompressedStream.Tell() * 1.001 + 12.); - uint8_t* compressedBuffer = new uint8_t[ compressedSize ]; - - compress2( compressedBuffer, &compressedSize, (const Bytef*)uncompressedStream.GetBufferPointer(), uncompressedSize, 9 ); - - out->Write( &uncompressedSize, sizeof(uint32_t), 1 ); - out->Write( compressedBuffer, sizeof(char), compressedSize ); - - delete[] compressedBuffer; - } - else - { - WriteBinaryScene( out, pScene ); - } - - pIOSystem->Close( out ); - } - }; - -void ExportSceneAssbin(const char* pFile, IOSystem* pIOSystem, const aiScene* pScene, const ExportProperties* /*pProperties*/) +// ---------------------------------------------------------------------------------- +/** @class AssbinChunkWriter + * @brief Chunk writer mechanism for the .assbin file structure + * + * This is a standard in-memory IOStream (most of the code is based on BlobIOStream), + * the difference being that this takes another IOStream as a "container" in the + * constructor, and when it is destroyed, it appends the magic number, the chunk size, + * and the chunk contents to the container stream. This allows relatively easy chunk + * chunk construction, even recursively. + */ +class AssbinChunkWriter : public IOStream { +private: + + uint8_t* buffer; + uint32_t magic; + IOStream * container; + size_t cur_size, cursor, initial; + +private: + // ------------------------------------------------------------------- + void Grow(size_t need = 0) + { + size_t new_size = std::max(initial, std::max( need, cur_size+(cur_size>>1) )); + + const uint8_t* const old = buffer; + buffer = new uint8_t[new_size]; + + if (old) { + memcpy(buffer,old,cur_size); + delete[] old; + } + + cur_size = new_size; + } + +public: + + AssbinChunkWriter( IOStream * container, uint32_t magic, size_t initial = 4096) + : buffer(NULL), magic(magic), container(container), cur_size(0), cursor(0), initial(initial) + { + } + + virtual ~AssbinChunkWriter() + { + if (container) { + container->Write( &magic, sizeof(uint32_t), 1 ); + container->Write( &cursor, sizeof(uint32_t), 1 ); + container->Write( buffer, 1, cursor ); + } + if (buffer) delete[] buffer; + } + + void * GetBufferPointer() { return buffer; } + + // ------------------------------------------------------------------- + virtual size_t Read(void* /*pvBuffer*/, size_t /*pSize*/, size_t /*pCount*/) { + return 0; + } + virtual aiReturn Seek(size_t /*pOffset*/, aiOrigin /*pOrigin*/) { + return aiReturn_FAILURE; + } + virtual size_t Tell() const { + return cursor; + } + virtual void Flush() { + // not implemented + } + + virtual size_t FileSize() const { + return cursor; + } + + // ------------------------------------------------------------------- + virtual size_t Write(const void* pvBuffer, size_t pSize, size_t pCount) { + pSize *= pCount; + if (cursor + pSize > cur_size) { + Grow(cursor + pSize); + } + + memcpy(buffer+cursor, pvBuffer, pSize); + cursor += pSize; + + return pCount; + } + +}; + +// ---------------------------------------------------------------------------------- +/** @class AssbinExport + * @brief Assbin exporter class + * + * This class performs the .assbin exporting, and is responsible for the file layout. + */ +class AssbinExport +{ +private: + bool shortened; + bool compressed; + +protected: + // ----------------------------------------------------------------------------------- + void WriteBinaryNode( IOStream * container, const aiNode* node) + { + AssbinChunkWriter chunk( container, ASSBIN_CHUNK_AINODE ); + + unsigned int nb_metadata = (node->mMetaData != NULL ? node->mMetaData->mNumProperties : 0); + + Write(&chunk,node->mName); + Write(&chunk,node->mTransformation); + Write(&chunk,node->mNumChildren); + Write(&chunk,node->mNumMeshes); + Write(&chunk,nb_metadata); + + for (unsigned int i = 0; i < node->mNumMeshes;++i) { + Write(&chunk,node->mMeshes[i]); + } + + for (unsigned int i = 0; i < node->mNumChildren;++i) { + WriteBinaryNode( &chunk, node->mChildren[i] ); + } + + for (unsigned int i = 0; i < nb_metadata; ++i) { + const aiString& key = node->mMetaData->mKeys[i]; + aiMetadataType type = node->mMetaData->mValues[i].mType; + void* value = node->mMetaData->mValues[i].mData; + + Write(&chunk, key); + Write(&chunk, type); + + switch (type) { + case AI_BOOL: + Write(&chunk, *((bool*) value)); + break; + case AI_INT32: + Write(&chunk, *((int32_t*) value)); + break; + case AI_UINT64: + Write(&chunk, *((uint64_t*) value)); + break; + case AI_FLOAT: + Write(&chunk, *((float*) value)); + break; + case AI_DOUBLE: + Write(&chunk, *((double*) value)); + break; + case AI_AISTRING: + Write(&chunk, *((aiString*) value)); + break; + case AI_AIVECTOR3D: + Write(&chunk, *((aiVector3D*) value)); + break; +#ifdef SWIG + case FORCE_32BIT: +#endif // SWIG + default: + break; + } + } + } + + // ----------------------------------------------------------------------------------- + void WriteBinaryTexture(IOStream * container, const aiTexture* tex) + { + AssbinChunkWriter chunk( container, ASSBIN_CHUNK_AITEXTURE ); + + Write(&chunk,tex->mWidth); + Write(&chunk,tex->mHeight); + chunk.Write( tex->achFormatHint, sizeof(char), 4 ); + + if(!shortened) { + if (!tex->mHeight) { + chunk.Write(tex->pcData,1,tex->mWidth); + } + else { + chunk.Write(tex->pcData,1,tex->mWidth*tex->mHeight*4); + } + } + + } + + // ----------------------------------------------------------------------------------- + void WriteBinaryBone(IOStream * container, const aiBone* b) + { + AssbinChunkWriter chunk( container, ASSBIN_CHUNK_AIBONE ); + + Write(&chunk,b->mName); + Write(&chunk,b->mNumWeights); + Write(&chunk,b->mOffsetMatrix); + + // for the moment we write dumb min/max values for the bones, too. + // maybe I'll add a better, hash-like solution later + if (shortened) { + WriteBounds(&chunk,b->mWeights,b->mNumWeights); + } // else write as usual + else WriteArray(&chunk,b->mWeights,b->mNumWeights); + } + + // ----------------------------------------------------------------------------------- + void WriteBinaryMesh(IOStream * container, const aiMesh* mesh) + { + AssbinChunkWriter chunk( container, ASSBIN_CHUNK_AIMESH ); + + Write(&chunk,mesh->mPrimitiveTypes); + Write(&chunk,mesh->mNumVertices); + Write(&chunk,mesh->mNumFaces); + Write(&chunk,mesh->mNumBones); + Write(&chunk,mesh->mMaterialIndex); + + // first of all, write bits for all existent vertex components + unsigned int c = 0; + if (mesh->mVertices) { + c |= ASSBIN_MESH_HAS_POSITIONS; + } + if (mesh->mNormals) { + c |= ASSBIN_MESH_HAS_NORMALS; + } + if (mesh->mTangents && mesh->mBitangents) { + c |= ASSBIN_MESH_HAS_TANGENTS_AND_BITANGENTS; + } + for (unsigned int n = 0; n < AI_MAX_NUMBER_OF_TEXTURECOORDS;++n) { + if (!mesh->mTextureCoords[n]) { + break; + } + c |= ASSBIN_MESH_HAS_TEXCOORD(n); + } + for (unsigned int n = 0; n < AI_MAX_NUMBER_OF_COLOR_SETS;++n) { + if (!mesh->mColors[n]) { + break; + } + c |= ASSBIN_MESH_HAS_COLOR(n); + } + Write(&chunk,c); + + aiVector3D minVec, maxVec; + if (mesh->mVertices) { + if (shortened) { + WriteBounds(&chunk,mesh->mVertices,mesh->mNumVertices); + } // else write as usual + else WriteArray(&chunk,mesh->mVertices,mesh->mNumVertices); + } + if (mesh->mNormals) { + if (shortened) { + WriteBounds(&chunk,mesh->mNormals,mesh->mNumVertices); + } // else write as usual + else WriteArray(&chunk,mesh->mNormals,mesh->mNumVertices); + } + if (mesh->mTangents && mesh->mBitangents) { + if (shortened) { + WriteBounds(&chunk,mesh->mTangents,mesh->mNumVertices); + WriteBounds(&chunk,mesh->mBitangents,mesh->mNumVertices); + } // else write as usual + else { + WriteArray(&chunk,mesh->mTangents,mesh->mNumVertices); + WriteArray(&chunk,mesh->mBitangents,mesh->mNumVertices); + } + } + for (unsigned int n = 0; n < AI_MAX_NUMBER_OF_COLOR_SETS;++n) { + if (!mesh->mColors[n]) + break; + + if (shortened) { + WriteBounds(&chunk,mesh->mColors[n],mesh->mNumVertices); + } // else write as usual + else WriteArray(&chunk,mesh->mColors[n],mesh->mNumVertices); + } + for (unsigned int n = 0; n < AI_MAX_NUMBER_OF_TEXTURECOORDS;++n) { + if (!mesh->mTextureCoords[n]) + break; + + // write number of UV components + Write(&chunk,mesh->mNumUVComponents[n]); + + if (shortened) { + WriteBounds(&chunk,mesh->mTextureCoords[n],mesh->mNumVertices); + } // else write as usual + else WriteArray(&chunk,mesh->mTextureCoords[n],mesh->mNumVertices); + } + + // write faces. There are no floating-point calculations involved + // in these, so we can write a simple hash over the face data + // to the dump file. We generate a single 32 Bit hash for 512 faces + // using Assimp's standard hashing function. + if (shortened) { + unsigned int processed = 0; + for (unsigned int job;(job = std::min(mesh->mNumFaces-processed,512u));processed += job) { + + uint32_t hash = 0; + for (unsigned int a = 0; a < job;++a) { + + const aiFace& f = mesh->mFaces[processed+a]; + uint32_t tmp = f.mNumIndices; + hash = SuperFastHash(reinterpret_cast(&tmp),sizeof tmp,hash); + for (unsigned int i = 0; i < f.mNumIndices; ++i) { + static_assert(AI_MAX_VERTICES <= 0xffffffff, "AI_MAX_VERTICES <= 0xffffffff"); + tmp = static_cast( f.mIndices[i] ); + hash = SuperFastHash(reinterpret_cast(&tmp),sizeof tmp,hash); + } + } + Write(&chunk,hash); + } + } + else // else write as usual + { + // if there are less than 2^16 vertices, we can simply use 16 bit integers ... + for (unsigned int i = 0; i < mesh->mNumFaces;++i) { + const aiFace& f = mesh->mFaces[i]; + + static_assert(AI_MAX_FACE_INDICES <= 0xffff, "AI_MAX_FACE_INDICES <= 0xffff"); + Write(&chunk,f.mNumIndices); + + for (unsigned int a = 0; a < f.mNumIndices;++a) { + if (mesh->mNumVertices < (1u<<16)) { + Write(&chunk,f.mIndices[a]); + } + else Write(&chunk,f.mIndices[a]); + } + } + } + + // write bones + if (mesh->mNumBones) { + for (unsigned int a = 0; a < mesh->mNumBones;++a) { + const aiBone* b = mesh->mBones[a]; + WriteBinaryBone(&chunk,b); + } + } + } + + // ----------------------------------------------------------------------------------- + void WriteBinaryMaterialProperty(IOStream * container, const aiMaterialProperty* prop) + { + AssbinChunkWriter chunk( container, ASSBIN_CHUNK_AIMATERIALPROPERTY ); + + Write(&chunk,prop->mKey); + Write(&chunk,prop->mSemantic); + Write(&chunk,prop->mIndex); + + Write(&chunk,prop->mDataLength); + Write(&chunk,(unsigned int)prop->mType); + chunk.Write(prop->mData,1,prop->mDataLength); + } + + // ----------------------------------------------------------------------------------- + void WriteBinaryMaterial(IOStream * container, const aiMaterial* mat) + { + AssbinChunkWriter chunk( container, ASSBIN_CHUNK_AIMATERIAL); + + Write(&chunk,mat->mNumProperties); + for (unsigned int i = 0; i < mat->mNumProperties;++i) { + WriteBinaryMaterialProperty( &chunk, mat->mProperties[i]); + } + } + + // ----------------------------------------------------------------------------------- + void WriteBinaryNodeAnim(IOStream * container, const aiNodeAnim* nd) + { + AssbinChunkWriter chunk( container, ASSBIN_CHUNK_AINODEANIM ); + + Write(&chunk,nd->mNodeName); + Write(&chunk,nd->mNumPositionKeys); + Write(&chunk,nd->mNumRotationKeys); + Write(&chunk,nd->mNumScalingKeys); + Write(&chunk,nd->mPreState); + Write(&chunk,nd->mPostState); + + if (nd->mPositionKeys) { + if (shortened) { + WriteBounds(&chunk,nd->mPositionKeys,nd->mNumPositionKeys); + + } // else write as usual + else WriteArray(&chunk,nd->mPositionKeys,nd->mNumPositionKeys); + } + if (nd->mRotationKeys) { + if (shortened) { + WriteBounds(&chunk,nd->mRotationKeys,nd->mNumRotationKeys); + + } // else write as usual + else WriteArray(&chunk,nd->mRotationKeys,nd->mNumRotationKeys); + } + if (nd->mScalingKeys) { + if (shortened) { + WriteBounds(&chunk,nd->mScalingKeys,nd->mNumScalingKeys); + + } // else write as usual + else WriteArray(&chunk,nd->mScalingKeys,nd->mNumScalingKeys); + } + } + + + // ----------------------------------------------------------------------------------- + void WriteBinaryAnim( IOStream * container, const aiAnimation* anim ) + { + AssbinChunkWriter chunk( container, ASSBIN_CHUNK_AIANIMATION ); + + Write(&chunk,anim->mName); + Write(&chunk,anim->mDuration); + Write(&chunk,anim->mTicksPerSecond); + Write(&chunk,anim->mNumChannels); + + for (unsigned int a = 0; a < anim->mNumChannels;++a) { + const aiNodeAnim* nd = anim->mChannels[a]; + WriteBinaryNodeAnim(&chunk,nd); + } + } + + // ----------------------------------------------------------------------------------- + void WriteBinaryLight( IOStream * container, const aiLight* l ) + { + AssbinChunkWriter chunk( container, ASSBIN_CHUNK_AILIGHT ); + + Write(&chunk,l->mName); + Write(&chunk,l->mType); + + if (l->mType != aiLightSource_DIRECTIONAL) { + Write(&chunk,l->mAttenuationConstant); + Write(&chunk,l->mAttenuationLinear); + Write(&chunk,l->mAttenuationQuadratic); + } + + Write(&chunk,l->mColorDiffuse); + Write(&chunk,l->mColorSpecular); + Write(&chunk,l->mColorAmbient); + + if (l->mType == aiLightSource_SPOT) { + Write(&chunk,l->mAngleInnerCone); + Write(&chunk,l->mAngleOuterCone); + } + + } + + // ----------------------------------------------------------------------------------- + void WriteBinaryCamera( IOStream * container, const aiCamera* cam ) + { + AssbinChunkWriter chunk( container, ASSBIN_CHUNK_AICAMERA ); + + Write(&chunk,cam->mName); + Write(&chunk,cam->mPosition); + Write(&chunk,cam->mLookAt); + Write(&chunk,cam->mUp); + Write(&chunk,cam->mHorizontalFOV); + Write(&chunk,cam->mClipPlaneNear); + Write(&chunk,cam->mClipPlaneFar); + Write(&chunk,cam->mAspect); + } + + // ----------------------------------------------------------------------------------- + void WriteBinaryScene( IOStream * container, const aiScene* scene) + { + AssbinChunkWriter chunk( container, ASSBIN_CHUNK_AISCENE ); + + // basic scene information + Write(&chunk,scene->mFlags); + Write(&chunk,scene->mNumMeshes); + Write(&chunk,scene->mNumMaterials); + Write(&chunk,scene->mNumAnimations); + Write(&chunk,scene->mNumTextures); + Write(&chunk,scene->mNumLights); + Write(&chunk,scene->mNumCameras); + + // write node graph + WriteBinaryNode( &chunk, scene->mRootNode ); + + // write all meshes + for (unsigned int i = 0; i < scene->mNumMeshes;++i) { + const aiMesh* mesh = scene->mMeshes[i]; + WriteBinaryMesh( &chunk,mesh); + } + + // write materials + for (unsigned int i = 0; i< scene->mNumMaterials; ++i) { + const aiMaterial* mat = scene->mMaterials[i]; + WriteBinaryMaterial(&chunk,mat); + } + + // write all animations + for (unsigned int i = 0; i < scene->mNumAnimations;++i) { + const aiAnimation* anim = scene->mAnimations[i]; + WriteBinaryAnim(&chunk,anim); + } + + + // write all textures + for (unsigned int i = 0; i < scene->mNumTextures;++i) { + const aiTexture* mesh = scene->mTextures[i]; + WriteBinaryTexture(&chunk,mesh); + } + + // write lights + for (unsigned int i = 0; i < scene->mNumLights;++i) { + const aiLight* l = scene->mLights[i]; + WriteBinaryLight(&chunk,l); + } + + // write cameras + for (unsigned int i = 0; i < scene->mNumCameras;++i) { + const aiCamera* cam = scene->mCameras[i]; + WriteBinaryCamera(&chunk,cam); + } + + } + +public: + AssbinExport() + : shortened(false), compressed(false) // temporary settings until properties are introduced for exporters + { + } + + // ----------------------------------------------------------------------------------- + // Write a binary model dump + void WriteBinaryDump(const char* pFile, IOSystem* pIOSystem, const aiScene* pScene) + { + IOStream * out = pIOSystem->Open( pFile, "wb" ); + if (!out) return; + + time_t tt = time(NULL); + tm* p = gmtime(&tt); + + // header + char s[64]; + memset( s, 0, 64 ); +#if _MSC_VER >= 1400 + sprintf_s(s,"ASSIMP.binary-dump.%s",asctime(p)); +#else + ai_snprintf(s,64,"ASSIMP.binary-dump.%s",asctime(p)); +#endif + out->Write( s, 44, 1 ); + // == 44 bytes + + Write( out, ASSBIN_VERSION_MAJOR ); + Write( out, ASSBIN_VERSION_MINOR ); + Write( out, aiGetVersionRevision() ); + Write( out, aiGetCompileFlags() ); + Write( out, shortened ); + Write( out, compressed ); + // == 20 bytes + + char buff[256]; + strncpy(buff,pFile,256); + out->Write(buff,sizeof(char),256); + + char cmd[] = "\0"; + strncpy(buff,cmd,128); + out->Write(buff,sizeof(char),128); + + // leave 64 bytes free for future extensions + memset(buff,0xcd,64); + out->Write(buff,sizeof(char),64); + // == 435 bytes + + // ==== total header size: 512 bytes + ai_assert( out->Tell() == ASSBIN_HEADER_LENGTH ); + + // Up to here the data is uncompressed. For compressed files, the rest + // is compressed using standard DEFLATE from zlib. + if (compressed) + { + AssbinChunkWriter uncompressedStream( NULL, 0 ); + WriteBinaryScene( &uncompressedStream, pScene ); + + uLongf uncompressedSize = static_cast(uncompressedStream.Tell()); + uLongf compressedSize = (uLongf)compressBound(uncompressedSize); + uint8_t* compressedBuffer = new uint8_t[ compressedSize ]; + + int res = compress2( compressedBuffer, &compressedSize, (const Bytef*)uncompressedStream.GetBufferPointer(), uncompressedSize, 9 ); + if(res != Z_OK) + { + delete [] compressedBuffer; + pIOSystem->Close(out); + throw DeadlyExportError("Compression failed."); + } + + out->Write( &uncompressedSize, sizeof(uint32_t), 1 ); + out->Write( compressedBuffer, sizeof(char), compressedSize ); + + delete[] compressedBuffer; + } + else + { + WriteBinaryScene( out, pScene ); + } + + pIOSystem->Close( out ); + } +}; + +void ExportSceneAssbin(const char* pFile, IOSystem* pIOSystem, const aiScene* pScene, const ExportProperties* /*pProperties*/) { AssbinExport exporter; exporter.WriteBinaryDump( pFile, pIOSystem, pScene ); } diff --git a/code/AssbinExporter.h b/code/AssbinExporter.h index 2539984c3..ee70d78b6 100644 --- a/code/AssbinExporter.h +++ b/code/AssbinExporter.h @@ -46,6 +46,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef AI_ASSBINEXPORTER_H_INC #define AI_ASSBINEXPORTER_H_INC -// nothing really needed here - reserved for future use like properties +#include -#endif +// nothing really needed here - reserved for future use like properties +namespace Assimp { + +void ASSIMP_API ExportSceneAssbin(const char* pFile, IOSystem* pIOSystem, const aiScene* pScene, const ExportProperties* /*pProperties*/); + +} + +#endif // AI_ASSBINEXPORTER_H_INC diff --git a/code/AssbinLoader.cpp b/code/AssbinLoader.cpp index 65b29b737..321a0cfec 100644 --- a/code/AssbinLoader.cpp +++ b/code/AssbinLoader.cpp @@ -57,6 +57,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include #ifdef ASSIMP_BUILD_NO_OWN_ZLIB # include @@ -79,16 +80,17 @@ static const aiImporterDesc desc = { "assbin" }; -const aiImporterDesc* AssbinImporter::GetInfo() const -{ +// ----------------------------------------------------------------------------------- +const aiImporterDesc* AssbinImporter::GetInfo() const { return &desc; } -bool AssbinImporter::CanRead( const std::string& pFile, IOSystem* pIOHandler, bool /*checkSig*/ ) const -{ +// ----------------------------------------------------------------------------------- +bool AssbinImporter::CanRead( const std::string& pFile, IOSystem* pIOHandler, bool /*checkSig*/ ) const { IOStream * in = pIOHandler->Open(pFile); - if (!in) + if (nullptr == in) { return false; + } char s[32]; in->Read( s, sizeof(char), 32 ); @@ -98,17 +100,19 @@ bool AssbinImporter::CanRead( const std::string& pFile, IOSystem* pIOHandler, bo return strncmp( s, "ASSIMP.binary-dump.", 19 ) == 0; } +// ----------------------------------------------------------------------------------- template -T Read(IOStream * stream) -{ +T Read(IOStream * stream) { T t; - stream->Read( &t, sizeof(T), 1 ); + size_t res = stream->Read( &t, sizeof(T), 1 ); + if(res != 1) + throw DeadlyImportError("Unexpected EOF"); return t; } +// ----------------------------------------------------------------------------------- template <> -aiVector3D Read(IOStream * stream) -{ +aiVector3D Read(IOStream * stream) { aiVector3D v; v.x = Read(stream); v.y = Read(stream); @@ -116,9 +120,9 @@ aiVector3D Read(IOStream * stream) return v; } +// ----------------------------------------------------------------------------------- template <> -aiColor4D Read(IOStream * stream) -{ +aiColor4D Read(IOStream * stream) { aiColor4D c; c.r = Read(stream); c.g = Read(stream); @@ -127,9 +131,9 @@ aiColor4D Read(IOStream * stream) return c; } +// ----------------------------------------------------------------------------------- template <> -aiQuaternion Read(IOStream * stream) -{ +aiQuaternion Read(IOStream * stream) { aiQuaternion v; v.w = Read(stream); v.x = Read(stream); @@ -138,28 +142,29 @@ aiQuaternion Read(IOStream * stream) return v; } +// ----------------------------------------------------------------------------------- template <> -aiString Read(IOStream * stream) -{ +aiString Read(IOStream * stream) { aiString s; stream->Read(&s.length,4,1); - stream->Read(s.data,s.length,1); + if(s.length) + stream->Read(s.data,s.length,1); s.data[s.length] = 0; return s; } +// ----------------------------------------------------------------------------------- template <> -aiVertexWeight Read(IOStream * stream) -{ +aiVertexWeight Read(IOStream * stream) { aiVertexWeight w; w.mVertexId = Read(stream); w.mWeight = Read(stream); return w; } +// ----------------------------------------------------------------------------------- template <> -aiMatrix4x4 Read(IOStream * stream) -{ +aiMatrix4x4 Read(IOStream * stream) { aiMatrix4x4 m; for (unsigned int i = 0; i < 4;++i) { for (unsigned int i2 = 0; i2 < 4;++i2) { @@ -169,76 +174,85 @@ aiMatrix4x4 Read(IOStream * stream) return m; } +// ----------------------------------------------------------------------------------- template <> -aiVectorKey Read(IOStream * stream) -{ +aiVectorKey Read(IOStream * stream) { aiVectorKey v; v.mTime = Read(stream); v.mValue = Read(stream); return v; } +// ----------------------------------------------------------------------------------- template <> -aiQuatKey Read(IOStream * stream) -{ +aiQuatKey Read(IOStream * stream) { aiQuatKey v; v.mTime = Read(stream); v.mValue = Read(stream); return v; } +// ----------------------------------------------------------------------------------- template -void ReadArray(IOStream * stream, T * out, unsigned int size) -{ - for (unsigned int i=0; i(stream); +void ReadArray( IOStream *stream, T * out, unsigned int size) { + ai_assert( nullptr != stream ); + ai_assert( nullptr != out ); + + for (unsigned int i=0; i(stream); + } } -template void ReadBounds( IOStream * stream, T* /*p*/, unsigned int n ) -{ +// ----------------------------------------------------------------------------------- +template +void ReadBounds( IOStream * stream, T* /*p*/, unsigned int n ) { // not sure what to do here, the data isn't really useful. stream->Seek( sizeof(T) * n, aiOrigin_CUR ); } -void AssbinImporter::ReadBinaryNode( IOStream * stream, aiNode** node, aiNode* parent ) { - uint32_t chunkID = Read(stream); - (void)(chunkID); - ai_assert(chunkID == ASSBIN_CHUNK_AINODE); +// ----------------------------------------------------------------------------------- +void AssbinImporter::ReadBinaryNode( IOStream * stream, aiNode** onode, aiNode* parent ) { + if(Read(stream) != ASSBIN_CHUNK_AINODE) + throw DeadlyImportError("Magic chunk identifiers are wrong!"); /*uint32_t size =*/ Read(stream); - *node = new aiNode(); + std::unique_ptr node(new aiNode()); - (*node)->mName = Read(stream); - (*node)->mTransformation = Read(stream); - (*node)->mNumChildren = Read(stream); - (*node)->mNumMeshes = Read(stream); + node->mName = Read(stream); + node->mTransformation = Read(stream); + unsigned numChildren = Read(stream); + unsigned numMeshes = Read(stream); unsigned int nb_metadata = Read(stream); if(parent) { - (*node)->mParent = parent; + node->mParent = parent; } - if ((*node)->mNumMeshes) { - (*node)->mMeshes = new unsigned int[(*node)->mNumMeshes]; - for (unsigned int i = 0; i < (*node)->mNumMeshes; ++i) { - (*node)->mMeshes[i] = Read(stream); + if (numMeshes) + { + node->mMeshes = new unsigned int[numMeshes]; + for (unsigned int i = 0; i < numMeshes; ++i) { + node->mMeshes[i] = Read(stream); + node->mNumMeshes++; } } - if ((*node)->mNumChildren) { - (*node)->mChildren = new aiNode*[(*node)->mNumChildren]; - for (unsigned int i = 0; i < (*node)->mNumChildren; ++i) { - ReadBinaryNode( stream, &(*node)->mChildren[i], *node ); + if (numChildren) { + node->mChildren = new aiNode*[numChildren]; + for (unsigned int i = 0; i < numChildren; ++i) { + ReadBinaryNode( stream, &node->mChildren[i], node.get() ); + node->mNumChildren++; } } if ( nb_metadata > 0 ) { - (*node)->mMetaData = aiMetadata::Alloc(nb_metadata); + node->mMetaData = aiMetadata::Alloc(nb_metadata); for (unsigned int i = 0; i < nb_metadata; ++i) { - (*node)->mMetaData->mKeys[i] = Read(stream); - (*node)->mMetaData->mValues[i].mType = (aiMetadataType) Read(stream); - void* data( nullptr ); + node->mMetaData->mKeys[i] = Read(stream); + node->mMetaData->mValues[i].mType = (aiMetadataType) Read(stream); + void* data = nullptr; - switch ((*node)->mMetaData->mValues[i].mType) { + switch (node->mMetaData->mValues[i].mType) { case AI_BOOL: data = new bool(Read(stream)); break; @@ -267,17 +281,16 @@ void AssbinImporter::ReadBinaryNode( IOStream * stream, aiNode** node, aiNode* p break; } - (*node)->mMetaData->mValues[i].mData = data; + node->mMetaData->mValues[i].mData = data; } } + *onode = node.release(); } // ----------------------------------------------------------------------------------- -void AssbinImporter::ReadBinaryBone( IOStream * stream, aiBone* b ) -{ - uint32_t chunkID = Read(stream); - (void)(chunkID); - ai_assert(chunkID == ASSBIN_CHUNK_AIBONE); +void AssbinImporter::ReadBinaryBone( IOStream * stream, aiBone* b ) { + if(Read(stream) != ASSBIN_CHUNK_AIBONE) + throw DeadlyImportError("Magic chunk identifiers are wrong!"); /*uint32_t size =*/ Read(stream); b->mName = Read(stream); @@ -286,23 +299,23 @@ void AssbinImporter::ReadBinaryBone( IOStream * stream, aiBone* b ) // for the moment we write dumb min/max values for the bones, too. // maybe I'll add a better, hash-like solution later - if (shortened) - { + if (shortened) { ReadBounds(stream,b->mWeights,b->mNumWeights); - } // else write as usual - else - { + } else { + // else write as usual b->mWeights = new aiVertexWeight[b->mNumWeights]; ReadArray(stream,b->mWeights,b->mNumWeights); } } - -void AssbinImporter::ReadBinaryMesh( IOStream * stream, aiMesh* mesh ) -{ - uint32_t chunkID = Read(stream); - (void)(chunkID); - ai_assert(chunkID == ASSBIN_CHUNK_AIMESH); +// ----------------------------------------------------------------------------------- +static bool fitsIntoUI16(unsigned int mNumVertices) { + return ( mNumVertices < (1u<<16) ); +} +// ----------------------------------------------------------------------------------- +void AssbinImporter::ReadBinaryMesh( IOStream * stream, aiMesh* mesh ) { + if(Read(stream) != ASSBIN_CHUNK_AIMESH) + throw DeadlyImportError("Magic chunk identifiers are wrong!"); /*uint32_t size =*/ Read(stream); mesh->mPrimitiveTypes = Read(stream); @@ -314,70 +327,61 @@ void AssbinImporter::ReadBinaryMesh( IOStream * stream, aiMesh* mesh ) // first of all, write bits for all existent vertex components unsigned int c = Read(stream); - if (c & ASSBIN_MESH_HAS_POSITIONS) - { + if (c & ASSBIN_MESH_HAS_POSITIONS) { if (shortened) { ReadBounds(stream,mesh->mVertices,mesh->mNumVertices); - } // else write as usual - else - { + } else { + // else write as usual mesh->mVertices = new aiVector3D[mesh->mNumVertices]; ReadArray(stream,mesh->mVertices,mesh->mNumVertices); } } - if (c & ASSBIN_MESH_HAS_NORMALS) - { + if (c & ASSBIN_MESH_HAS_NORMALS) { if (shortened) { ReadBounds(stream,mesh->mNormals,mesh->mNumVertices); - } // else write as usual - else - { + } else { + // else write as usual mesh->mNormals = new aiVector3D[mesh->mNumVertices]; ReadArray(stream,mesh->mNormals,mesh->mNumVertices); } } - if (c & ASSBIN_MESH_HAS_TANGENTS_AND_BITANGENTS) - { + if (c & ASSBIN_MESH_HAS_TANGENTS_AND_BITANGENTS) { if (shortened) { ReadBounds(stream,mesh->mTangents,mesh->mNumVertices); ReadBounds(stream,mesh->mBitangents,mesh->mNumVertices); - } // else write as usual - else - { + } else { + // else write as usual mesh->mTangents = new aiVector3D[mesh->mNumVertices]; ReadArray(stream,mesh->mTangents,mesh->mNumVertices); mesh->mBitangents = new aiVector3D[mesh->mNumVertices]; ReadArray(stream,mesh->mBitangents,mesh->mNumVertices); } } - for (unsigned int n = 0; n < AI_MAX_NUMBER_OF_COLOR_SETS;++n) - { - if (!(c & ASSBIN_MESH_HAS_COLOR(n))) + for (unsigned int n = 0; n < AI_MAX_NUMBER_OF_COLOR_SETS;++n) { + if (!(c & ASSBIN_MESH_HAS_COLOR(n))) { break; + } - if (shortened) - { + if (shortened) { ReadBounds(stream,mesh->mColors[n],mesh->mNumVertices); - } // else write as usual - else - { + } else { + // else write as usual mesh->mColors[n] = new aiColor4D[mesh->mNumVertices]; ReadArray(stream,mesh->mColors[n],mesh->mNumVertices); } } - for (unsigned int n = 0; n < AI_MAX_NUMBER_OF_TEXTURECOORDS;++n) - { - if (!(c & ASSBIN_MESH_HAS_TEXCOORD(n))) + for (unsigned int n = 0; n < AI_MAX_NUMBER_OF_TEXTURECOORDS;++n) { + if (!(c & ASSBIN_MESH_HAS_TEXCOORD(n))) { break; + } // write number of UV components mesh->mNumUVComponents[n] = Read(stream); if (shortened) { ReadBounds(stream,mesh->mTextureCoords[n],mesh->mNumVertices); - } // else write as usual - else - { + } else { + // else write as usual mesh->mTextureCoords[n] = new aiVector3D[mesh->mNumVertices]; ReadArray(stream,mesh->mTextureCoords[n],mesh->mNumVertices); } @@ -389,9 +393,8 @@ void AssbinImporter::ReadBinaryMesh( IOStream * stream, aiMesh* mesh ) // using Assimp's standard hashing function. if (shortened) { Read(stream); - } - else // else write as usual - { + } else { + // else write as usual // if there are less than 2^16 vertices, we can simply use 16 bit integers ... mesh->mFaces = new aiFace[mesh->mNumFaces]; for (unsigned int i = 0; i < mesh->mNumFaces;++i) { @@ -402,12 +405,10 @@ void AssbinImporter::ReadBinaryMesh( IOStream * stream, aiMesh* mesh ) f.mIndices = new unsigned int[f.mNumIndices]; for (unsigned int a = 0; a < f.mNumIndices;++a) { - if (mesh->mNumVertices < (1u<<16)) - { + // Check if unsigned short ( 16 bit ) are big enought for the indices + if ( fitsIntoUI16( mesh->mNumVertices ) ) { f.mIndices[a] = Read(stream); - } - else - { + } else { f.mIndices[a] = Read(stream); } } @@ -424,11 +425,10 @@ void AssbinImporter::ReadBinaryMesh( IOStream * stream, aiMesh* mesh ) } } -void AssbinImporter::ReadBinaryMaterialProperty(IOStream * stream, aiMaterialProperty* prop) -{ - uint32_t chunkID = Read(stream); - (void)(chunkID); - ai_assert(chunkID == ASSBIN_CHUNK_AIMATERIALPROPERTY); +// ----------------------------------------------------------------------------------- +void AssbinImporter::ReadBinaryMaterialProperty(IOStream * stream, aiMaterialProperty* prop) { + if(Read(stream) != ASSBIN_CHUNK_AIMATERIALPROPERTY) + throw DeadlyImportError("Magic chunk identifiers are wrong!"); /*uint32_t size =*/ Read(stream); prop->mKey = Read(stream); @@ -442,11 +442,9 @@ void AssbinImporter::ReadBinaryMaterialProperty(IOStream * stream, aiMaterialPro } // ----------------------------------------------------------------------------------- -void AssbinImporter::ReadBinaryMaterial(IOStream * stream, aiMaterial* mat) -{ - uint32_t chunkID = Read(stream); - (void)(chunkID); - ai_assert(chunkID == ASSBIN_CHUNK_AIMATERIAL); +void AssbinImporter::ReadBinaryMaterial(IOStream * stream, aiMaterial* mat) { + if(Read(stream) != ASSBIN_CHUNK_AIMATERIAL) + throw DeadlyImportError("Magic chunk identifiers are wrong!"); /*uint32_t size =*/ Read(stream); mat->mNumAllocated = mat->mNumProperties = Read(stream); @@ -465,11 +463,9 @@ void AssbinImporter::ReadBinaryMaterial(IOStream * stream, aiMaterial* mat) } // ----------------------------------------------------------------------------------- -void AssbinImporter::ReadBinaryNodeAnim(IOStream * stream, aiNodeAnim* nd) -{ - uint32_t chunkID = Read(stream); - (void)(chunkID); - ai_assert(chunkID == ASSBIN_CHUNK_AINODEANIM); +void AssbinImporter::ReadBinaryNodeAnim(IOStream * stream, aiNodeAnim* nd) { + if(Read(stream) != ASSBIN_CHUNK_AINODEANIM) + throw DeadlyImportError("Magic chunk identifiers are wrong!"); /*uint32_t size =*/ Read(stream); nd->mNodeName = Read(stream); @@ -493,9 +489,8 @@ void AssbinImporter::ReadBinaryNodeAnim(IOStream * stream, aiNodeAnim* nd) if (shortened) { ReadBounds(stream,nd->mRotationKeys,nd->mNumRotationKeys); - } // else write as usual - else - { + } else { + // else write as usual nd->mRotationKeys = new aiQuatKey[nd->mNumRotationKeys]; ReadArray(stream,nd->mRotationKeys,nd->mNumRotationKeys); } @@ -504,22 +499,18 @@ void AssbinImporter::ReadBinaryNodeAnim(IOStream * stream, aiNodeAnim* nd) if (shortened) { ReadBounds(stream,nd->mScalingKeys,nd->mNumScalingKeys); - } // else write as usual - else - { + } else { + // else write as usual nd->mScalingKeys = new aiVectorKey[nd->mNumScalingKeys]; ReadArray(stream,nd->mScalingKeys,nd->mNumScalingKeys); } } } - // ----------------------------------------------------------------------------------- -void AssbinImporter::ReadBinaryAnim( IOStream * stream, aiAnimation* anim ) -{ - uint32_t chunkID = Read(stream); - (void)(chunkID); - ai_assert(chunkID == ASSBIN_CHUNK_AIANIMATION); +void AssbinImporter::ReadBinaryAnim( IOStream * stream, aiAnimation* anim ) { + if(Read(stream) != ASSBIN_CHUNK_AIANIMATION) + throw DeadlyImportError("Magic chunk identifiers are wrong!"); /*uint32_t size =*/ Read(stream); anim->mName = Read (stream); @@ -527,8 +518,7 @@ void AssbinImporter::ReadBinaryAnim( IOStream * stream, aiAnimation* anim ) anim->mTicksPerSecond = Read (stream); anim->mNumChannels = Read(stream); - if (anim->mNumChannels) - { + if (anim->mNumChannels) { anim->mChannels = new aiNodeAnim*[ anim->mNumChannels ]; for (unsigned int a = 0; a < anim->mNumChannels;++a) { anim->mChannels[a] = new aiNodeAnim(); @@ -537,11 +527,10 @@ void AssbinImporter::ReadBinaryAnim( IOStream * stream, aiAnimation* anim ) } } -void AssbinImporter::ReadBinaryTexture(IOStream * stream, aiTexture* tex) -{ - uint32_t chunkID = Read(stream); - (void)(chunkID); - ai_assert(chunkID == ASSBIN_CHUNK_AITEXTURE); +// ----------------------------------------------------------------------------------- +void AssbinImporter::ReadBinaryTexture(IOStream * stream, aiTexture* tex) { + if(Read(stream) != ASSBIN_CHUNK_AITEXTURE) + throw DeadlyImportError("Magic chunk identifiers are wrong!"); /*uint32_t size =*/ Read(stream); tex->mWidth = Read(stream); @@ -552,21 +541,17 @@ void AssbinImporter::ReadBinaryTexture(IOStream * stream, aiTexture* tex) if (!tex->mHeight) { tex->pcData = new aiTexel[ tex->mWidth ]; stream->Read(tex->pcData,1,tex->mWidth); - } - else { + } else { tex->pcData = new aiTexel[ tex->mWidth*tex->mHeight ]; stream->Read(tex->pcData,1,tex->mWidth*tex->mHeight*4); } } - } // ----------------------------------------------------------------------------------- -void AssbinImporter::ReadBinaryLight( IOStream * stream, aiLight* l ) -{ - uint32_t chunkID = Read(stream); - (void)(chunkID); - ai_assert(chunkID == ASSBIN_CHUNK_AILIGHT); +void AssbinImporter::ReadBinaryLight( IOStream * stream, aiLight* l ) { + if(Read(stream) != ASSBIN_CHUNK_AILIGHT) + throw DeadlyImportError("Magic chunk identifiers are wrong!"); /*uint32_t size =*/ Read(stream); l->mName = Read(stream); @@ -586,15 +571,12 @@ void AssbinImporter::ReadBinaryLight( IOStream * stream, aiLight* l ) l->mAngleInnerCone = Read(stream); l->mAngleOuterCone = Read(stream); } - } // ----------------------------------------------------------------------------------- -void AssbinImporter::ReadBinaryCamera( IOStream * stream, aiCamera* cam ) -{ - uint32_t chunkID = Read(stream); - (void)(chunkID); - ai_assert(chunkID == ASSBIN_CHUNK_AICAMERA); +void AssbinImporter::ReadBinaryCamera( IOStream * stream, aiCamera* cam ) { + if(Read(stream) != ASSBIN_CHUNK_AICAMERA) + throw DeadlyImportError("Magic chunk identifiers are wrong!"); /*uint32_t size =*/ Read(stream); cam->mName = Read(stream); @@ -607,11 +589,10 @@ void AssbinImporter::ReadBinaryCamera( IOStream * stream, aiCamera* cam ) cam->mAspect = Read(stream); } -void AssbinImporter::ReadBinaryScene( IOStream * stream, aiScene* scene ) -{ - uint32_t chunkID = Read(stream); - (void)(chunkID); - ai_assert(chunkID == ASSBIN_CHUNK_AISCENE); +// ----------------------------------------------------------------------------------- +void AssbinImporter::ReadBinaryScene( IOStream * stream, aiScene* scene ) { + if(Read(stream) != ASSBIN_CHUNK_AISCENE) + throw DeadlyImportError("Magic chunk identifiers are wrong!"); /*uint32_t size =*/ Read(stream); scene->mFlags = Read(stream); @@ -623,13 +604,13 @@ void AssbinImporter::ReadBinaryScene( IOStream * stream, aiScene* scene ) scene->mNumCameras = Read(stream); // Read node graph - scene->mRootNode = new aiNode[1]; + //scene->mRootNode = new aiNode[1]; ReadBinaryNode( stream, &scene->mRootNode, (aiNode*)NULL ); // Read all meshes - if (scene->mNumMeshes) - { + if (scene->mNumMeshes) { scene->mMeshes = new aiMesh*[scene->mNumMeshes]; + memset(scene->mMeshes, 0, scene->mNumMeshes*sizeof(aiMesh*)); for (unsigned int i = 0; i < scene->mNumMeshes;++i) { scene->mMeshes[i] = new aiMesh(); ReadBinaryMesh( stream,scene->mMeshes[i]); @@ -637,9 +618,9 @@ void AssbinImporter::ReadBinaryScene( IOStream * stream, aiScene* scene ) } // Read materials - if (scene->mNumMaterials) - { + if (scene->mNumMaterials) { scene->mMaterials = new aiMaterial*[scene->mNumMaterials]; + memset(scene->mMaterials, 0, scene->mNumMaterials*sizeof(aiMaterial*)); for (unsigned int i = 0; i< scene->mNumMaterials; ++i) { scene->mMaterials[i] = new aiMaterial(); ReadBinaryMaterial(stream,scene->mMaterials[i]); @@ -647,9 +628,9 @@ void AssbinImporter::ReadBinaryScene( IOStream * stream, aiScene* scene ) } // Read all animations - if (scene->mNumAnimations) - { + if (scene->mNumAnimations) { scene->mAnimations = new aiAnimation*[scene->mNumAnimations]; + memset(scene->mAnimations, 0, scene->mNumAnimations*sizeof(aiAnimation*)); for (unsigned int i = 0; i < scene->mNumAnimations;++i) { scene->mAnimations[i] = new aiAnimation(); ReadBinaryAnim(stream,scene->mAnimations[i]); @@ -657,9 +638,9 @@ void AssbinImporter::ReadBinaryScene( IOStream * stream, aiScene* scene ) } // Read all textures - if (scene->mNumTextures) - { + if (scene->mNumTextures) { scene->mTextures = new aiTexture*[scene->mNumTextures]; + memset(scene->mTextures, 0, scene->mNumTextures*sizeof(aiTexture*)); for (unsigned int i = 0; i < scene->mNumTextures;++i) { scene->mTextures[i] = new aiTexture(); ReadBinaryTexture(stream,scene->mTextures[i]); @@ -667,9 +648,9 @@ void AssbinImporter::ReadBinaryScene( IOStream * stream, aiScene* scene ) } // Read lights - if (scene->mNumLights) - { + if (scene->mNumLights) { scene->mLights = new aiLight*[scene->mNumLights]; + memset(scene->mLights, 0, scene->mNumLights*sizeof(aiLight*)); for (unsigned int i = 0; i < scene->mNumLights;++i) { scene->mLights[i] = new aiLight(); ReadBinaryLight(stream,scene->mLights[i]); @@ -677,9 +658,9 @@ void AssbinImporter::ReadBinaryScene( IOStream * stream, aiScene* scene ) } // Read cameras - if (scene->mNumCameras) - { + if (scene->mNumCameras) { scene->mCameras = new aiCamera*[scene->mNumCameras]; + memset(scene->mCameras, 0, scene->mNumCameras*sizeof(aiCamera*)); for (unsigned int i = 0; i < scene->mNumCameras;++i) { scene->mCameras[i] = new aiCamera(); ReadBinaryCamera(stream,scene->mCameras[i]); @@ -688,16 +669,22 @@ void AssbinImporter::ReadBinaryScene( IOStream * stream, aiScene* scene ) } -void AssbinImporter::InternReadFile( const std::string& pFile, aiScene* pScene, IOSystem* pIOHandler ) -{ +// ----------------------------------------------------------------------------------- +void AssbinImporter::InternReadFile( const std::string& pFile, aiScene* pScene, IOSystem* pIOHandler ) { IOStream * stream = pIOHandler->Open(pFile,"rb"); - if (!stream) + if (nullptr == stream) { return; + } - stream->Seek( 44, aiOrigin_CUR ); // signature + // signature + stream->Seek( 44, aiOrigin_CUR ); + + unsigned int versionMajor = Read(stream); + unsigned int versionMinor = Read(stream); + if (versionMinor != ASSBIN_VERSION_MINOR || versionMajor != ASSBIN_VERSION_MAJOR) { + throw DeadlyImportError( "Invalid version, data format not compatible!" ); + } - /*unsigned int versionMajor =*/ Read(stream); - /*unsigned int versionMinor =*/ Read(stream); /*unsigned int versionRevision =*/ Read(stream); /*unsigned int compileFlags =*/ Read(stream); @@ -711,17 +698,24 @@ void AssbinImporter::InternReadFile( const std::string& pFile, aiScene* pScene, stream->Seek( 128, aiOrigin_CUR ); // options stream->Seek( 64, aiOrigin_CUR ); // padding - if (compressed) - { + if (compressed) { uLongf uncompressedSize = Read(stream); uLongf compressedSize = static_cast(stream->FileSize() - stream->Tell()); unsigned char * compressedData = new unsigned char[ compressedSize ]; - stream->Read( compressedData, 1, compressedSize ); + size_t len = stream->Read( compressedData, 1, compressedSize ); + ai_assert(len == compressedSize); unsigned char * uncompressedData = new unsigned char[ uncompressedSize ]; - uncompress( uncompressedData, &uncompressedSize, compressedData, compressedSize ); + int res = uncompress( uncompressedData, &uncompressedSize, compressedData, len ); + if(res != Z_OK) + { + delete [] uncompressedData; + delete [] compressedData; + pIOHandler->Close(stream); + throw DeadlyImportError("Zlib decompression failed."); + } MemoryIOStream io( uncompressedData, uncompressedSize ); @@ -729,9 +723,7 @@ void AssbinImporter::InternReadFile( const std::string& pFile, aiScene* pScene, delete[] uncompressedData; delete[] compressedData; - } - else - { + } else { ReadBinaryScene(stream,pScene); } diff --git a/code/AssbinLoader.h b/code/AssbinLoader.h index 9ffd84a16..37799a2c8 100644 --- a/code/AssbinLoader.h +++ b/code/AssbinLoader.h @@ -70,32 +70,33 @@ namespace Assimp { class AssbinImporter : public BaseImporter { private: - bool shortened; - bool compressed; + bool shortened; + bool compressed; public: - virtual bool CanRead( - const std::string& pFile, - IOSystem* pIOHandler, - bool checkSig + virtual bool CanRead( + const std::string& pFile, + IOSystem* pIOHandler, + bool checkSig ) const; - virtual const aiImporterDesc* GetInfo() const; - virtual void InternReadFile( + virtual const aiImporterDesc* GetInfo() const; + virtual void InternReadFile( const std::string& pFile, - aiScene* pScene, - IOSystem* pIOHandler + aiScene* pScene, + IOSystem* pIOHandler ); - void ReadBinaryScene( IOStream * stream, aiScene* pScene ); - void ReadBinaryNode( IOStream * stream, aiNode** mRootNode, aiNode* parent ); - void ReadBinaryMesh( IOStream * stream, aiMesh* mesh ); - void ReadBinaryBone( IOStream * stream, aiBone* bone ); - void ReadBinaryMaterial(IOStream * stream, aiMaterial* mat); - void ReadBinaryMaterialProperty(IOStream * stream, aiMaterialProperty* prop); - void ReadBinaryNodeAnim(IOStream * stream, aiNodeAnim* nd); - void ReadBinaryAnim( IOStream * stream, aiAnimation* anim ); - void ReadBinaryTexture(IOStream * stream, aiTexture* tex); - void ReadBinaryLight( IOStream * stream, aiLight* l ); - void ReadBinaryCamera( IOStream * stream, aiCamera* cam ); + void ReadHeader(); + void ReadBinaryScene( IOStream * stream, aiScene* pScene ); + void ReadBinaryNode( IOStream * stream, aiNode** mRootNode, aiNode* parent ); + void ReadBinaryMesh( IOStream * stream, aiMesh* mesh ); + void ReadBinaryBone( IOStream * stream, aiBone* bone ); + void ReadBinaryMaterial(IOStream * stream, aiMaterial* mat); + void ReadBinaryMaterialProperty(IOStream * stream, aiMaterialProperty* prop); + void ReadBinaryNodeAnim(IOStream * stream, aiNodeAnim* nd); + void ReadBinaryAnim( IOStream * stream, aiAnimation* anim ); + void ReadBinaryTexture(IOStream * stream, aiTexture* tex); + void ReadBinaryLight( IOStream * stream, aiLight* l ); + void ReadBinaryCamera( IOStream * stream, aiCamera* cam ); }; } // end of namespace Assimp diff --git a/code/Assimp.cpp b/code/Assimp.cpp index 2a9b896e7..87f436602 100644 --- a/code/Assimp.cpp +++ b/code/Assimp.cpp @@ -50,13 +50,14 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include - #include +#include +#include + #include "CInterfaceIOWrapper.h" #include "Importer.h" -#include #include "ScenePrivate.h" -#include + #include // ------------------------------------------------------------------------------------------------ @@ -107,7 +108,6 @@ namespace Assimp { static std::mutex gLogStreamMutex; #endif - // ------------------------------------------------------------------------------------------------ // Custom LogStream implementation for the C-API class LogToCallbackRedirector : public LogStream { @@ -272,8 +272,6 @@ void aiReleaseImport( const aiScene* pScene) ASSIMP_BEGIN_EXCEPTION_REGION(); - aiReleaseDefaultMaterial(); - // find the importer associated with this data const ScenePrivateData* priv = ScenePriv(pScene); if( !priv || !priv->mOrigImporter) { diff --git a/code/BaseImporter.cpp b/code/BaseImporter.cpp index 26c5ca14f..f03db189f 100644 --- a/code/BaseImporter.cpp +++ b/code/BaseImporter.cpp @@ -65,7 +65,7 @@ using namespace Assimp; // ------------------------------------------------------------------------------------------------ // Constructor to be privately used by Importer -BaseImporter::BaseImporter() +BaseImporter::BaseImporter() AI_NO_EXCEPT : m_progress() { // nothing to do here } diff --git a/code/BaseProcess.cpp b/code/BaseProcess.cpp index ba968a819..154b586d2 100644 --- a/code/BaseProcess.cpp +++ b/code/BaseProcess.cpp @@ -53,7 +53,7 @@ using namespace Assimp; // ------------------------------------------------------------------------------------------------ // Constructor to be privately used by Importer -BaseProcess::BaseProcess() +BaseProcess::BaseProcess() AI_NO_EXCEPT : shared() , progress() { diff --git a/code/BaseProcess.h b/code/BaseProcess.h index d9323fbef..b09fc732e 100644 --- a/code/BaseProcess.h +++ b/code/BaseProcess.h @@ -211,20 +211,16 @@ private: * should be executed. If the function returns true, the class' Execute() * function is called subsequently. */ -class ASSIMP_API_WINONLY BaseProcess -{ +class ASSIMP_API_WINONLY BaseProcess { friend class Importer; public: - /** Constructor to be privately used by Importer */ - BaseProcess(); + BaseProcess() AI_NO_EXCEPT; /** Destructor, private as well */ virtual ~BaseProcess(); -public: - // ------------------------------------------------------------------- /** Returns whether the processing step is present in the given flag. * @param pFlags The processing flags the importer was called with. A diff --git a/code/BlenderDNA.inl b/code/BlenderDNA.inl index 5065aa118..89c94e7bf 100644 --- a/code/BlenderDNA.inl +++ b/code/BlenderDNA.inl @@ -405,7 +405,7 @@ bool Structure::ReadFieldPtrVector(vector>&out, const char* name, const ++db.stats().fields_read; #endif - return false; + return true; } diff --git a/code/BlenderLoader.cpp b/code/BlenderLoader.cpp index d24fad180..b0d273a5f 100644 --- a/code/BlenderLoader.cpp +++ b/code/BlenderLoader.cpp @@ -1206,7 +1206,7 @@ aiCamera* BlenderImporter::ConvertCamera(const Scene& /*in*/, const Object* obj, out->mUp = aiVector3D(0.f, 1.f, 0.f); out->mLookAt = aiVector3D(0.f, 0.f, -1.f); if (cam->sensor_x && cam->lens) { - out->mHorizontalFOV = std::atan2(cam->sensor_x, 2.f * cam->lens); + out->mHorizontalFOV = 2.f * std::atan2(cam->sensor_x, 2.f * cam->lens); } out->mClipPlaneNear = cam->clipsta; out->mClipPlaneFar = cam->clipend; diff --git a/code/BlenderScene.cpp b/code/BlenderScene.cpp index ad2d6fbba..4fc353b15 100644 --- a/code/BlenderScene.cpp +++ b/code/BlenderScene.cpp @@ -203,7 +203,7 @@ template <> void Structure :: Convert ( int temp = 0; ReadField(temp,"type",db); dest.type = static_cast(temp); - ReadField(dest.flags,"flags",db); + ReadField(dest.flags,"flag",db); ReadField(dest.colormodel,"colormodel",db); ReadField(dest.totex,"totex",db); ReadField(dest.r,"r",db); diff --git a/code/CMakeLists.txt b/code/CMakeLists.txt index c238c7c4a..6b8d3d322 100644 --- a/code/CMakeLists.txt +++ b/code/CMakeLists.txt @@ -191,6 +191,14 @@ SET( Common_SRCS ) SOURCE_GROUP(Common FILES ${Common_SRCS}) +SET( STEPParser_SRCS + Importer/STEPParser/STEPFileReader.h + Importer/STEPParser/STEPFileReader.cpp + Importer/STEPParser/STEPFileEncoding.cpp + Importer/STEPParser/STEPFileEncoding.h +) +SOURCE_GROUP(STEPParser FILES ${STEPParser_SRCS}) + IF ( ASSIMP_BUILD_NONFREE_C4D_IMPORTER ) SET( C4D_SRCS C4DImporter.cpp @@ -487,11 +495,8 @@ ADD_ASSIMP_IMPORTER( IFC Importer/IFC/IFCCurve.cpp Importer/IFC/IFCBoolean.cpp Importer/IFC/IFCOpenings.cpp - Importer/IFC/STEPFileReader.h - Importer/IFC/STEPFileReader.cpp - Importer/IFC/STEPFileEncoding.cpp - Importer/IFC/STEPFileEncoding.h ) + if (ASSIMP_BUILD_IFC_IMPORTER) if (MSVC) set_source_files_properties(Importer/IFC/IFCReaderGen1_2x3.cpp Importer/IFC/IFCReaderGen2_2x3.cpp PROPERTIES COMPILE_FLAGS "/bigobj") @@ -505,7 +510,6 @@ ADD_ASSIMP_IMPORTER( XGL XGLLoader.h ) - ADD_ASSIMP_IMPORTER( FBX FBXImporter.cpp FBXCompileConfig.h @@ -558,6 +562,8 @@ SET( PostProcessing_SRCS FindInvalidDataProcess.h FixNormalsStep.cpp FixNormalsStep.h + DropFaceNormalsProcess.cpp + DropFaceNormalsProcess.h GenFaceNormalsProcess.cpp GenFaceNormalsProcess.h GenVertexNormalsProcess.cpp @@ -722,9 +728,15 @@ ADD_ASSIMP_IMPORTER( MMD ) SET( Step_SRCS - STEPFile.h - StepExporter.h - StepExporter.cpp + STEPFile.h + Importer/StepFile/StepFileImporter.h + Importer/StepFile/StepFileImporter.cpp + Importer/StepFile/StepFileGen1.cpp + Importer/StepFile/StepFileGen2.cpp + Importer/StepFile/StepFileGen3.cpp + Importer/StepFile/StepReaderGen.h + StepExporter.h + StepExporter.cpp ) SOURCE_GROUP( Step FILES ${Step_SRCS}) @@ -878,6 +890,7 @@ SET( assimp_src ${Exporter_SRCS} ${PostProcessing_SRCS} ${MaterialSystem_SRCS} + ${STEPParser_SRCS} ${Step_SRCS} # Model Support @@ -910,6 +923,7 @@ IF (ASSIMP_BUILD_NONFREE_C4D_IMPORTER) ENDIF (ASSIMP_BUILD_NONFREE_C4D_IMPORTER) ADD_LIBRARY( assimp ${assimp_src} ) +ADD_LIBRARY(assimp::assimp ALIAS assimp) TARGET_INCLUDE_DIRECTORIES ( assimp PUBLIC $ diff --git a/code/COBLoader.cpp b/code/COBLoader.cpp index a9784fbec..a8e41dbbc 100644 --- a/code/COBLoader.cpp +++ b/code/COBLoader.cpp @@ -137,9 +137,7 @@ void COBImporter::SetupProperties(const Importer* /*pImp*/) // ------------------------------------------------------------------------------------------------ // Imports the given file into the given scene structure. -void COBImporter::InternReadFile( const std::string& pFile, - aiScene* pScene, IOSystem* pIOHandler) -{ +void COBImporter::InternReadFile( const std::string& pFile, aiScene* pScene, IOSystem* pIOHandler) { COB::Scene scene; std::unique_ptr stream(new StreamReaderLE( pIOHandler->Open(pFile,"rb")) ); diff --git a/code/ColladaExporter.cpp b/code/ColladaExporter.cpp index 96421a532..0d5bdd46d 100644 --- a/code/ColladaExporter.cpp +++ b/code/ColladaExporter.cpp @@ -1533,7 +1533,23 @@ void ColladaExporter::WriteNode( const aiScene* pScene, aiNode* pNode) // write transformation - we can directly put the matrix there // TODO: (thom) decompose into scale - rot - quad to allow addressing it by animations afterwards - const aiMatrix4x4& mat = pNode->mTransformation; + aiMatrix4x4 mat = pNode->mTransformation; + + // If this node is a Camera node, the camera coordinate system needs to be multiplied in. + // When importing from Collada, the mLookAt is set to 0, 0, -1, and the node transform is unchanged. + // When importing from a different format, mLookAt is set to 0, 0, 1. Therefore, the local camera + // coordinate system must be changed to matche the Collada specification. + for (size_t i = 0; imNumCameras; i++){ + if (mScene->mCameras[i]->mName == pNode->mName){ + aiMatrix4x4 sourceView; + mScene->mCameras[i]->GetCameraMatrix(sourceView); + + aiMatrix4x4 colladaView; + colladaView.a1 = colladaView.c3 = -1; // move into -z space. + mat *= (sourceView * colladaView); + break; + } + } // customized, sid should be 'matrix' to match with loader code. //mOutput << startstr << ""; diff --git a/code/D3MFImporter.cpp b/code/D3MFImporter.cpp index e02c5f41d..de5708149 100644 --- a/code/D3MFImporter.cpp +++ b/code/D3MFImporter.cpp @@ -297,8 +297,9 @@ private: return false; } + //format of the color string: #RRGGBBAA or #RRGGBB (3MF Core chapter 5.1.1) const size_t len( strlen( color ) ); - if ( 9 != len ) { + if ( 9 != len && 7 != len) { return false; } @@ -313,26 +314,28 @@ private: ++buf; comp[ 1 ] = *buf; ++buf; - diffuse.r = static_cast( strtol( comp, NULL, 16 ) ); + diffuse.r = static_cast( strtol( comp, NULL, 16 ) ) / ai_real(255.0); comp[ 0 ] = *buf; ++buf; comp[ 1 ] = *buf; ++buf; - diffuse.g = static_cast< ai_real >( strtol( comp, NULL, 16 ) ); + diffuse.g = static_cast< ai_real >( strtol( comp, NULL, 16 ) ) / ai_real(255.0); comp[ 0 ] = *buf; ++buf; comp[ 1 ] = *buf; ++buf; - diffuse.b = static_cast< ai_real >( strtol( comp, NULL, 16 ) ); + diffuse.b = static_cast< ai_real >( strtol( comp, NULL, 16 ) ) / ai_real(255.0); + if(7 == len) + return true; comp[ 0 ] = *buf; ++buf; comp[ 1 ] = *buf; ++buf; - diffuse.a = static_cast< ai_real >( strtol( comp, NULL, 16 ) ); + diffuse.a = static_cast< ai_real >( strtol( comp, NULL, 16 ) ) / ai_real(255.0); return true; } @@ -416,8 +419,6 @@ private: } //namespace D3MF -static const std::string Extension = "3mf"; - static const aiImporterDesc desc = { "3mf Importer", "", @@ -428,7 +429,7 @@ static const aiImporterDesc desc = { 0, 0, 0, - Extension.c_str() + "3mf" }; D3MFImporter::D3MFImporter() @@ -442,7 +443,7 @@ D3MFImporter::~D3MFImporter() { bool D3MFImporter::CanRead(const std::string &filename, IOSystem *pIOHandler, bool checkSig) const { const std::string extension( GetExtension( filename ) ); - if(extension == Extension ) { + if(extension == desc.mFileExtensions ) { return true; } else if ( !extension.length() || checkSig ) { if ( nullptr == pIOHandler ) { diff --git a/code/DXFHelper.h b/code/DXFHelper.h index 00e66a0db..daf2f97e2 100644 --- a/code/DXFHelper.h +++ b/code/DXFHelper.h @@ -55,28 +55,21 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include namespace Assimp { - namespace DXF { - +namespace DXF { // read pairs of lines, parse group code and value and provide utilities // to convert the data to the target data type. -class LineReader -{ - +// do NOT skip empty lines. In DXF files, they count as valid data. +class LineReader { public: - LineReader(StreamReaderLE& reader) - // do NOT skip empty lines. In DXF files, they count as valid data. - : splitter(reader,false,true) - , groupcode( 0 ) - , value() - , end() - { + : splitter(reader,false,true) + , groupcode( 0 ) + , value() + , end() { + // empty } -public: - - // ----------------------------------------- bool Is(int gc, const char* what) const { return groupcode == gc && !strcmp(what,value.c_str()); @@ -102,8 +95,6 @@ public: return !((bool)*this); } -public: - // ----------------------------------------- unsigned int ValueAsUnsignedInt() const { return strtoul10(value.c_str()); @@ -119,8 +110,6 @@ public: return fast_atof(value.c_str()); } -public: - // ----------------------------------------- /** pseudo-iterator increment to advance to the next (groupcode/value) pair */ LineReader& operator++() { @@ -175,14 +164,12 @@ private: int end; }; - - // represents a POLYLINE or a LWPOLYLINE. or even a 3DFACE The data is converted as needed. -struct PolyLine -{ +struct PolyLine { PolyLine() - : flags() - {} + : flags() { + // empty + } std::vector positions; std::vector colors; @@ -194,14 +181,15 @@ struct PolyLine std::string desc; }; - // reference to a BLOCK. Specifies its own coordinate system. -struct InsertBlock -{ +struct InsertBlock { InsertBlock() - : scale(1.f,1.f,1.f) - , angle() - {} + : pos() + , scale(1.f,1.f,1.f) + , angle() + , name() { + // empty + } aiVector3D pos; aiVector3D scale; @@ -228,9 +216,7 @@ struct FileData std::vector blocks; }; +} +} // Namespace Assimp - - - -}} #endif diff --git a/code/DXFLoader.cpp b/code/DXFLoader.cpp index d317382dc..6710597df 100644 --- a/code/DXFLoader.cpp +++ b/code/DXFLoader.cpp @@ -63,16 +63,15 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. using namespace Assimp; // AutoCAD Binary DXF -#define AI_DXF_BINARY_IDENT ("AutoCAD Binary DXF\r\n\x1a\0") -#define AI_DXF_BINARY_IDENT_LEN (24) +const std::string AI_DXF_BINARY_IDENT = std::string("AutoCAD Binary DXF\r\n\x1a\0"); +const size_t AI_DXF_BINARY_IDENT_LEN = 24u; // default vertex color that all uncolored vertices will receive -#define AI_DXF_DEFAULT_COLOR aiColor4D(0.6f,0.6f,0.6f,0.6f) +const aiColor4D AI_DXF_DEFAULT_COLOR(aiColor4D(0.6f, 0.6f, 0.6f, 0.6f)); // color indices for DXF - 16 are supported, the table is // taken directly from the DXF spec. -static aiColor4D g_aclrDxfIndexColors[] = -{ +static aiColor4D g_aclrDxfIndexColors[] = { aiColor4D (0.6f, 0.6f, 0.6f, 1.0f), aiColor4D (1.0f, 0.0f, 0.0f, 1.0f), // red aiColor4D (0.0f, 1.0f, 0.0f, 1.0f), // green @@ -93,6 +92,10 @@ static aiColor4D g_aclrDxfIndexColors[] = #define AI_DXF_NUM_INDEX_COLORS (sizeof(g_aclrDxfIndexColors)/sizeof(g_aclrDxfIndexColors[0])) #define AI_DXF_ENTITIES_MAGIC_BLOCK "$ASSIMP_ENTITIES_MAGIC" +static const int GroupCode_Name = 2; +static const int GroupCode_XComp = 10; +static const int GroupCode_YComp = 20; +static const int GroupCode_ZComp = 30; static const aiImporterDesc desc = { "Drawing Interchange Format (DXF) Importer", @@ -110,24 +113,27 @@ static const aiImporterDesc desc = { // ------------------------------------------------------------------------------------------------ // Constructor to be privately used by Importer DXFImporter::DXFImporter() -{} +: BaseImporter() { + // empty +} // ------------------------------------------------------------------------------------------------ // Destructor, private as well -DXFImporter::~DXFImporter() -{} +DXFImporter::~DXFImporter() { + // empty +} // ------------------------------------------------------------------------------------------------ // Returns whether the class can handle the format of the given file. -bool DXFImporter::CanRead( const std::string& pFile, IOSystem* pIOHandler, bool checkSig ) const { - const std::string& extension = GetExtension( pFile ); - if ( extension == "dxf" ) { +bool DXFImporter::CanRead( const std::string& filename, IOSystem* pIOHandler, bool checkSig ) const { + const std::string& extension = GetExtension( filename ); + if ( extension == desc.mFileExtensions ) { return true; } if ( extension.empty() || checkSig ) { - static const char *pTokens[] = { "SECTION", "HEADER", "ENDSEC", "BLOCKS" }; - return BaseImporter::SearchFileHeaderForToken(pIOHandler, pFile, pTokens, 4, 32 ); + const char *pTokens[] = { "SECTION", "HEADER", "ENDSEC", "BLOCKS" }; + return BaseImporter::SearchFileHeaderForToken(pIOHandler, filename, pTokens, 4, 32 ); } return false; @@ -135,29 +141,25 @@ bool DXFImporter::CanRead( const std::string& pFile, IOSystem* pIOHandler, bool // ------------------------------------------------------------------------------------------------ // Get a list of all supported file extensions -const aiImporterDesc* DXFImporter::GetInfo () const -{ +const aiImporterDesc* DXFImporter::GetInfo () const { return &desc; } // ------------------------------------------------------------------------------------------------ // Imports the given file into the given scene structure. -void DXFImporter::InternReadFile( const std::string& pFile, - aiScene* pScene, - IOSystem* pIOHandler) -{ - std::shared_ptr file = std::shared_ptr( pIOHandler->Open( pFile) ); +void DXFImporter::InternReadFile( const std::string& filename, aiScene* pScene, IOSystem* pIOHandler) { + std::shared_ptr file = std::shared_ptr( pIOHandler->Open( filename) ); // Check whether we can read the file - if( file.get() == NULL) { - throw DeadlyImportError( "Failed to open DXF file " + pFile + ""); + if( file.get() == nullptr ) { + throw DeadlyImportError( "Failed to open DXF file " + filename + ""); } - // check whether this is a binaray DXF file - we can't read binary DXF files :-( + // Check whether this is a binary DXF file - we can't read binary DXF files :-( char buff[AI_DXF_BINARY_IDENT_LEN+1] = {0}; file->Read(buff,AI_DXF_BINARY_IDENT_LEN,1); - if (!strncmp(AI_DXF_BINARY_IDENT,buff,AI_DXF_BINARY_IDENT_LEN)) { + if (0 == strncmp(AI_DXF_BINARY_IDENT.c_str(),buff,AI_DXF_BINARY_IDENT_LEN)) { throw DeadlyImportError("DXF: Binary files are not supported at the moment"); } @@ -226,13 +228,11 @@ void DXFImporter::InternReadFile( const std::string& pFile, } // ------------------------------------------------------------------------------------------------ -void DXFImporter::ConvertMeshes(aiScene* pScene, DXF::FileData& output) -{ +void DXFImporter::ConvertMeshes(aiScene* pScene, DXF::FileData& output) { // the process of resolving all the INSERT statements can grow the // poly-count excessively, so log the original number. // XXX Option to import blocks as separate nodes? if (!DefaultLogger::isNullLogger()) { - unsigned int vcount = 0, icount = 0; for (const DXF::Block& bl : output.blocks) { for (std::shared_ptr pl : bl.lines) { @@ -293,7 +293,7 @@ void DXFImporter::ConvertMeshes(aiScene* pScene, DXF::FileData& output) } } - if (!pScene->mNumMeshes) { + if ( 0 == pScene->mNumMeshes) { throw DeadlyImportError("DXF: this file contains no 3d data"); } @@ -366,8 +366,7 @@ void DXFImporter::ConvertMeshes(aiScene* pScene, DXF::FileData& output) // ------------------------------------------------------------------------------------------------ -void DXFImporter::ExpandBlockReferences(DXF::Block& bl,const DXF::BlockMap& blocks_by_name) -{ +void DXFImporter::ExpandBlockReferences(DXF::Block& bl,const DXF::BlockMap& blocks_by_name) { for (const DXF::InsertBlock& insert : bl.insertions) { // first check if the referenced blocks exists ... @@ -407,8 +406,7 @@ void DXFImporter::ExpandBlockReferences(DXF::Block& bl,const DXF::BlockMap& bloc } // ------------------------------------------------------------------------------------------------ -void DXFImporter::GenerateMaterials(aiScene* pScene, DXF::FileData& /*output*/) -{ +void DXFImporter::GenerateMaterials(aiScene* pScene, DXF::FileData& /*output*/) { // generate an almost-white default material. Reason: // the default vertex color is GREY, so we are // already at Assimp's usual default color. @@ -433,8 +431,7 @@ void DXFImporter::GenerateMaterials(aiScene* pScene, DXF::FileData& /*output*/) } // ------------------------------------------------------------------------------------------------ -void DXFImporter::GenerateHierarchy(aiScene* pScene, DXF::FileData& /*output*/) -{ +void DXFImporter::GenerateHierarchy(aiScene* pScene, DXF::FileData& /*output*/) { // generate the output scene graph, which is just the root node with a single child for each layer. pScene->mRootNode = new aiNode(); pScene->mRootNode->mName.Set(""); @@ -488,17 +485,17 @@ void DXFImporter::ParseBlock(DXF::LineReader& reader, DXF::FileData& output) { while( !reader.End() && !reader.Is(0,"ENDBLK")) { switch(reader.GroupCode()) { - case 2: + case GroupCode_Name: block.name = reader.Value(); break; - case 10: + case GroupCode_XComp: block.base.x = reader.ValueAsFloat(); break; - case 20: + case GroupCode_YComp: block.base.y = reader.ValueAsFloat(); break; - case 30: + case GroupCode_ZComp: block.base.z = reader.ValueAsFloat(); break; } @@ -525,9 +522,8 @@ void DXFImporter::ParseBlock(DXF::LineReader& reader, DXF::FileData& output) { } // ------------------------------------------------------------------------------------------------ -void DXFImporter::ParseEntities(DXF::LineReader& reader, DXF::FileData& output) -{ - // push a new block onto the stack. +void DXFImporter::ParseEntities(DXF::LineReader& reader, DXF::FileData& output) { + // Push a new block onto the stack. output.blocks.push_back( DXF::Block() ); DXF::Block& block = output.blocks.back(); @@ -557,27 +553,25 @@ void DXFImporter::ParseEntities(DXF::LineReader& reader, DXF::FileData& output) " inserted blocks in ENTITIES" ); } -void DXFImporter::ParseInsertion(DXF::LineReader& reader, DXF::FileData& output) -{ +void DXFImporter::ParseInsertion(DXF::LineReader& reader, DXF::FileData& output) { output.blocks.back().insertions.push_back( DXF::InsertBlock() ); DXF::InsertBlock& bl = output.blocks.back().insertions.back(); while( !reader.End() && !reader.Is(0)) { - switch(reader.GroupCode()) - { + switch(reader.GroupCode()) { // name of referenced block - case 2: + case GroupCode_Name: bl.name = reader.Value(); break; // translation - case 10: + case GroupCode_XComp: bl.pos.x = reader.ValueAsFloat(); break; - case 20: + case GroupCode_YComp: bl.pos.y = reader.ValueAsFloat(); break; - case 30: + case GroupCode_ZComp: bl.pos.z = reader.ValueAsFloat(); break; @@ -704,8 +698,7 @@ void DXFImporter::ParsePolyLine(DXF::LineReader& reader, DXF::FileData& output) #define DXF_VERTEX_FLAG_HAS_POSITIONS 0x40 // ------------------------------------------------------------------------------------------------ -void DXFImporter::ParsePolyLineVertex(DXF::LineReader& reader, DXF::PolyLine& line) -{ +void DXFImporter::ParsePolyLineVertex(DXF::LineReader& reader, DXF::PolyLine& line) { unsigned int cnti = 0, flags = 0; unsigned int indices[4]; @@ -718,8 +711,7 @@ void DXFImporter::ParsePolyLineVertex(DXF::LineReader& reader, DXF::PolyLine& li break; } - switch (reader.GroupCode()) - { + switch (reader.GroupCode()) { case 8: // layer to which the vertex belongs to - assume that // this is always the layer the top-level poly-line @@ -734,9 +726,17 @@ void DXFImporter::ParsePolyLineVertex(DXF::LineReader& reader, DXF::PolyLine& li break; // VERTEX COORDINATES - case 10: out.x = reader.ValueAsFloat();break; - case 20: out.y = reader.ValueAsFloat();break; - case 30: out.z = reader.ValueAsFloat();break; + case GroupCode_XComp: + out.x = reader.ValueAsFloat(); + break; + + case GroupCode_YComp: + out.y = reader.ValueAsFloat(); + break; + + case GroupCode_ZComp: + out.z = reader.ValueAsFloat(); + break; // POLYFACE vertex indices case 71: @@ -770,6 +770,10 @@ void DXFImporter::ParsePolyLineVertex(DXF::LineReader& reader, DXF::PolyLine& li if (indices[i] == 0) { ASSIMP_LOG_WARN("DXF: invalid vertex index, indices are one-based."); --line.counts.back(); + // Workaround to fix issue 2229 + if (line.counts.back() == 0) { + line.counts.pop_back(); + } continue; } line.indices.push_back(indices[i]-1); @@ -808,62 +812,74 @@ void DXFImporter::Parse3DFace(DXF::LineReader& reader, DXF::FileData& output) break; // x position of the first corner - case 10: vip[0].x = reader.ValueAsFloat(); + case 10: + vip[0].x = reader.ValueAsFloat(); b[2] = true; break; // y position of the first corner - case 20: vip[0].y = reader.ValueAsFloat(); + case 20: + vip[0].y = reader.ValueAsFloat(); b[2] = true; break; // z position of the first corner - case 30: vip[0].z = reader.ValueAsFloat(); + case 30: + vip[0].z = reader.ValueAsFloat(); b[2] = true; break; // x position of the second corner - case 11: vip[1].x = reader.ValueAsFloat(); + case 11: + vip[1].x = reader.ValueAsFloat(); b[3] = true; break; // y position of the second corner - case 21: vip[1].y = reader.ValueAsFloat(); + case 21: + vip[1].y = reader.ValueAsFloat(); b[3] = true; break; // z position of the second corner - case 31: vip[1].z = reader.ValueAsFloat(); + case 31: + vip[1].z = reader.ValueAsFloat(); b[3] = true; break; // x position of the third corner - case 12: vip[2].x = reader.ValueAsFloat(); + case 12: + vip[2].x = reader.ValueAsFloat(); b[0] = true; break; // y position of the third corner - case 22: vip[2].y = reader.ValueAsFloat(); + case 22: + vip[2].y = reader.ValueAsFloat(); b[0] = true; break; // z position of the third corner - case 32: vip[2].z = reader.ValueAsFloat(); + case 32: + vip[2].z = reader.ValueAsFloat(); b[0] = true; break; // x position of the fourth corner - case 13: vip[3].x = reader.ValueAsFloat(); + case 13: + vip[3].x = reader.ValueAsFloat(); b[1] = true; break; // y position of the fourth corner - case 23: vip[3].y = reader.ValueAsFloat(); + case 23: + vip[3].y = reader.ValueAsFloat(); b[1] = true; break; // z position of the fourth corner - case 33: vip[3].z = reader.ValueAsFloat(); + case 33: + vip[3].z = reader.ValueAsFloat(); b[1] = true; break; diff --git a/code/DXFLoader.h b/code/DXFLoader.h index 487bb99f8..e7f534e98 100644 --- a/code/DXFLoader.h +++ b/code/DXFLoader.h @@ -50,32 +50,27 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include namespace Assimp { - namespace DXF { - class LineReader; - struct FileData; - struct PolyLine; - struct Block; - struct InsertBlock; - - typedef std::map BlockMap; - } +// Forward declarations +namespace DXF { + class LineReader; + struct FileData; + struct PolyLine; + struct Block; + struct InsertBlock; + typedef std::map BlockMap; +} // --------------------------------------------------------------------------- -/** DXF importer implementation. - * -*/ -class DXFImporter : public BaseImporter -{ +/** + * @brief DXF importer implementation. + */ +class DXFImporter : public BaseImporter { public: DXFImporter(); ~DXFImporter(); - - -public: - // ------------------------------------------------------------------- /** Returns whether the class can handle the format of the given file. * See BaseImporter::CanRead() for details. */ @@ -83,7 +78,6 @@ public: bool checkSig) const; protected: - // ------------------------------------------------------------------- /** Return importer meta information. * See #BaseImporter::GetInfo for the details*/ diff --git a/code/DefaultProgressHandler.h b/code/DefaultProgressHandler.h index a40501fe5..851c17be6 100644 --- a/code/DefaultProgressHandler.h +++ b/code/DefaultProgressHandler.h @@ -52,9 +52,7 @@ namespace Assimp { // ------------------------------------------------------------------------------------ /** @brief Internal default implementation of the #ProgressHandler interface. */ -class DefaultProgressHandler - : public ProgressHandler { - +class DefaultProgressHandler : public ProgressHandler { virtual bool Update(float /*percentage*/) { return false; diff --git a/code/DropFaceNormalsProcess.cpp b/code/DropFaceNormalsProcess.cpp new file mode 100644 index 000000000..57e8b972b --- /dev/null +++ b/code/DropFaceNormalsProcess.cpp @@ -0,0 +1,109 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2018, assimp team + + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ + +/** @file Implementation of the post processing step to drop face +* normals for all imported faces. +*/ + + +#include "DropFaceNormalsProcess.h" +#include +#include +#include +#include + +using namespace Assimp; + +// ------------------------------------------------------------------------------------------------ +// Constructor to be privately used by Importer +DropFaceNormalsProcess::DropFaceNormalsProcess() +{ + // nothing to do here +} + +// ------------------------------------------------------------------------------------------------ +// Destructor, private as well +DropFaceNormalsProcess::~DropFaceNormalsProcess() +{ + // nothing to do here +} + +// ------------------------------------------------------------------------------------------------ +// Returns whether the processing step is present in the given flag field. +bool DropFaceNormalsProcess::IsActive( unsigned int pFlags) const { + return (pFlags & aiProcess_DropNormals) != 0; +} + +// ------------------------------------------------------------------------------------------------ +// Executes the post processing step on the given imported data. +void DropFaceNormalsProcess::Execute( aiScene* pScene) { + ASSIMP_LOG_DEBUG("DropFaceNormalsProcess begin"); + + if (pScene->mFlags & AI_SCENE_FLAGS_NON_VERBOSE_FORMAT) { + throw DeadlyImportError("Post-processing order mismatch: expecting pseudo-indexed (\"verbose\") vertices here"); + } + + bool bHas = false; + for( unsigned int a = 0; a < pScene->mNumMeshes; a++) { + bHas |= this->DropMeshFaceNormals( pScene->mMeshes[a]); + } + if (bHas) { + ASSIMP_LOG_INFO("DropFaceNormalsProcess finished. " + "Face normals have been removed"); + } else { + ASSIMP_LOG_DEBUG("DropFaceNormalsProcess finished. " + "No normals were present"); + } +} + +// ------------------------------------------------------------------------------------------------ +// Executes the post processing step on the given imported data. +bool DropFaceNormalsProcess::DropMeshFaceNormals (aiMesh* pMesh) { + if (NULL == pMesh->mNormals) { + return false; + } + + delete[] pMesh->mNormals; + pMesh->mNormals = nullptr; + return true; +} diff --git a/code/DropFaceNormalsProcess.h b/code/DropFaceNormalsProcess.h new file mode 100644 index 000000000..6dbfe0397 --- /dev/null +++ b/code/DropFaceNormalsProcess.h @@ -0,0 +1,86 @@ +/* +Open Asset Import Library (assimp) +---------------------------------------------------------------------- + +Copyright (c) 2006-2018, assimp team + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +/** @file Defines a post processing step to compute face normals for all loaded faces*/ +#ifndef AI_DROPFACENORMALPROCESS_H_INC +#define AI_DROPFACENORMALPROCESS_H_INC + +#include "BaseProcess.h" +#include + +namespace Assimp +{ + +// --------------------------------------------------------------------------- +/** The DropFaceNormalsProcess computes face normals for all faces of all meshes +*/ +class ASSIMP_API_WINONLY DropFaceNormalsProcess : public BaseProcess +{ +public: + + DropFaceNormalsProcess(); + ~DropFaceNormalsProcess(); + +public: + // ------------------------------------------------------------------- + /** Returns whether the processing step is present in the given flag field. + * @param pFlags The processing flags the importer was called with. A bitwise + * combination of #aiPostProcessSteps. + * @return true if the process is present in this flag fields, false if not. + */ + bool IsActive( unsigned int pFlags) const; + + // ------------------------------------------------------------------- + /** Executes the post processing step on the given imported data. + * At the moment a process is not supposed to fail. + * @param pScene The imported data to work at. + */ + void Execute( aiScene* pScene); + + +private: + bool DropMeshFaceNormals(aiMesh* pcMesh); +}; + +} // end of namespace Assimp + +#endif // !!AI_DROPFACENORMALPROCESS_H_INC diff --git a/code/EmbedTexturesProcess.cpp b/code/EmbedTexturesProcess.cpp index 2fafc2de7..ebe7a0897 100644 --- a/code/EmbedTexturesProcess.cpp +++ b/code/EmbedTexturesProcess.cpp @@ -119,7 +119,7 @@ bool EmbedTexturesProcess::addTexture(aiScene* pScene, std::string path) const { } } - aiTexel* imageContent = new aiTexel[1u + imageSize / sizeof(aiTexel)]; + aiTexel* imageContent = new aiTexel[ 1ul + static_cast( imageSize ) / sizeof(aiTexel)]; file.seekg(0, std::ios::beg); file.read(reinterpret_cast(imageContent), imageSize); diff --git a/code/Exporter.cpp b/code/Exporter.cpp index 725d7bf5a..0acde75bf 100644 --- a/code/Exporter.cpp +++ b/code/Exporter.cpp @@ -56,22 +56,22 @@ Here we implement only the C++ interface (Assimp::Exporter). #include #include -#include "BaseProcess.h" -#include "Importer.h" // need this for GetPostProcessingStepInstanceList() +#include +#include +#include +#include +#include +#include "DefaultProgressHandler.h" +#include "BaseProcess.h" #include "JoinVerticesProcess.h" #include "MakeVerboseFormat.h" #include "ConvertToLHProcess.h" #include "PretransformVertices.h" #include #include "ScenePrivate.h" -#include -#include -#include -#include -#include -#include +#include namespace Assimp { @@ -188,10 +188,14 @@ Exporter::ExportFormatEntry gExporters[] = class ExporterPimpl { public: ExporterPimpl() - : blob() - , mIOSystem(new Assimp::DefaultIOSystem()) - , mIsDefaultIOHandler(true) - { + : blob() + , mIOSystem(new Assimp::DefaultIOSystem()) + , mIsDefaultIOHandler(true) + , mProgressHandler( nullptr ) + , mIsDefaultProgressHandler( true ) + , mPostProcessingSteps() + , mError() + , mExporters() { GetPostProcessingStepInstanceList(mPostProcessingSteps); // grab all built-in exporters @@ -201,14 +205,14 @@ public: } } - ~ExporterPimpl() - { + ~ExporterPimpl() { delete blob; // Delete all post-processing plug-ins for( unsigned int a = 0; a < mPostProcessingSteps.size(); a++) { delete mPostProcessingSteps[a]; } + delete mProgressHandler; } public: @@ -216,6 +220,10 @@ public: std::shared_ptr< Assimp::IOSystem > mIOSystem; bool mIsDefaultIOHandler; + /** The progress handler */ + ProgressHandler *mProgressHandler; + bool mIsDefaultProgressHandler; + /** Post processing steps we can apply at the imported data. */ std::vector< BaseProcess* > mPostProcessingSteps; @@ -233,13 +241,12 @@ using namespace Assimp; // ------------------------------------------------------------------------------------------------ Exporter :: Exporter() : pimpl(new ExporterPimpl()) { - // empty + pimpl->mProgressHandler = new DefaultProgressHandler(); } // ------------------------------------------------------------------------------------------------ Exporter::~Exporter() { FreeBlob(); - delete pimpl; } @@ -259,12 +266,32 @@ bool Exporter::IsDefaultIOHandler() const { return pimpl->mIsDefaultIOHandler; } +// ------------------------------------------------------------------------------------------------ +void Exporter::SetProgressHandler(ProgressHandler* pHandler) { + ai_assert(nullptr != pimpl); + + if ( nullptr == pHandler) { + // Release pointer in the possession of the caller + pimpl->mProgressHandler = new DefaultProgressHandler(); + pimpl->mIsDefaultProgressHandler = true; + return; + } + + if (pimpl->mProgressHandler == pHandler) { + return; + } + + delete pimpl->mProgressHandler; + pimpl->mProgressHandler = pHandler; + pimpl->mIsDefaultProgressHandler = false; +} + // ------------------------------------------------------------------------------------------------ const aiExportDataBlob* Exporter::ExportToBlob( const aiScene* pScene, const char* pFormatId, unsigned int, const ExportProperties* /*pProperties*/ ) { if (pimpl->blob) { delete pimpl->blob; - pimpl->blob = NULL; + pimpl->blob = nullptr; } std::shared_ptr old = pimpl->mIOSystem; @@ -273,7 +300,7 @@ const aiExportDataBlob* Exporter::ExportToBlob( const aiScene* pScene, const cha if (AI_SUCCESS != Export(pScene,pFormatId,blobio->GetMagicFileName())) { pimpl->mIOSystem = old; - return NULL; + return nullptr; } pimpl->blob = blobio->GetBlobChain(); @@ -295,6 +322,7 @@ bool IsVerboseFormat(const aiMesh* mesh) { } } } + return true; } @@ -305,6 +333,7 @@ bool IsVerboseFormat(const aiScene* pScene) { return false; } } + return true; } @@ -319,6 +348,8 @@ aiReturn Exporter::Export( const aiScene* pScene, const char* pFormatId, const c // meshes upfront. const bool is_verbose_format = !(pScene->mFlags & AI_SCENE_FLAGS_NON_VERBOSE_FORMAT) || IsVerboseFormat(pScene); + pimpl->mProgressHandler->UpdateFileWrite(0, 4); + pimpl->mError = ""; for (size_t i = 0; i < pimpl->mExporters.size(); ++i) { const Exporter::ExportFormatEntry& exp = pimpl->mExporters[i]; @@ -326,9 +357,11 @@ aiReturn Exporter::Export( const aiScene* pScene, const char* pFormatId, const c try { // Always create a full copy of the scene. We might optimize this one day, // but for now it is the most pragmatic way. - aiScene* scenecopy_tmp = NULL; + aiScene* scenecopy_tmp = nullptr; SceneCombiner::CopyScene(&scenecopy_tmp,pScene); + pimpl->mProgressHandler->UpdateFileWrite(1, 4); + std::unique_ptr scenecopy(scenecopy_tmp); const ScenePrivateData* const priv = ScenePriv(pScene); @@ -375,6 +408,8 @@ aiReturn Exporter::Export( const aiScene* pScene, const char* pFormatId, const c } } + pimpl->mProgressHandler->UpdateFileWrite(2, 4); + if (pp) { // the three 'conversion' steps need to be executed first because all other steps rely on the standard data layout { @@ -418,11 +453,13 @@ aiReturn Exporter::Export( const aiScene* pScene, const char* pFormatId, const c } } ScenePrivateData* const privOut = ScenePriv(scenecopy.get()); - ai_assert(privOut); + ai_assert(nullptr != privOut); privOut->mPPStepsApplied |= pp; } + pimpl->mProgressHandler->UpdateFileWrite(3, 4); + if(must_join_again) { JoinVerticesProcess proc; proc.Execute(scenecopy.get()); @@ -430,6 +467,8 @@ aiReturn Exporter::Export( const aiScene* pScene, const char* pFormatId, const c ExportProperties emptyProperties; // Never pass NULL ExportProperties so Exporters don't have to worry. exp.mExportFunction(pPath,pimpl->mIOSystem.get(),scenecopy.get(), pProperties ? pProperties : &emptyProperties); + + pimpl->mProgressHandler->UpdateFileWrite(4, 4); } catch (DeadlyExportError& err) { pimpl->mError = err.what(); return AI_FAILURE; @@ -452,7 +491,7 @@ const char* Exporter::GetErrorString() const { // ------------------------------------------------------------------------------------------------ void Exporter::FreeBlob() { delete pimpl->blob; - pimpl->blob = NULL; + pimpl->blob = nullptr; pimpl->mError = ""; } @@ -465,7 +504,7 @@ const aiExportDataBlob* Exporter::GetBlob() const { // ------------------------------------------------------------------------------------------------ const aiExportDataBlob* Exporter::GetOrphanedBlob() const { const aiExportDataBlob* tmp = pimpl->blob; - pimpl->blob = NULL; + pimpl->blob = nullptr; return tmp; } @@ -545,75 +584,63 @@ bool ExportProperties::SetPropertyString(const char* szName, const std::string& // ------------------------------------------------------------------------------------------------ // Set a configuration property -bool ExportProperties :: SetPropertyMatrix(const char* szName, const aiMatrix4x4& value) -{ +bool ExportProperties::SetPropertyMatrix(const char* szName, const aiMatrix4x4& value) { return SetGenericProperty(mMatrixProperties, szName,value); } // ------------------------------------------------------------------------------------------------ // Get a configuration property -int ExportProperties :: GetPropertyInteger(const char* szName, - int iErrorReturn /*= 0xffffffff*/) const -{ +int ExportProperties::GetPropertyInteger(const char* szName, int iErrorReturn /*= 0xffffffff*/) const { return GetGenericProperty(mIntProperties,szName,iErrorReturn); } // ------------------------------------------------------------------------------------------------ // Get a configuration property -ai_real ExportProperties :: GetPropertyFloat(const char* szName, - ai_real iErrorReturn /*= 10e10*/) const -{ +ai_real ExportProperties::GetPropertyFloat(const char* szName, ai_real iErrorReturn /*= 10e10*/) const { return GetGenericProperty(mFloatProperties,szName,iErrorReturn); } // ------------------------------------------------------------------------------------------------ // Get a configuration property -const std::string ExportProperties :: GetPropertyString(const char* szName, - const std::string& iErrorReturn /*= ""*/) const -{ +const std::string ExportProperties::GetPropertyString(const char* szName, + const std::string& iErrorReturn /*= ""*/) const { return GetGenericProperty(mStringProperties,szName,iErrorReturn); } // ------------------------------------------------------------------------------------------------ // Has a configuration property -const aiMatrix4x4 ExportProperties :: GetPropertyMatrix(const char* szName, - const aiMatrix4x4& iErrorReturn /*= aiMatrix4x4()*/) const -{ +const aiMatrix4x4 ExportProperties::GetPropertyMatrix(const char* szName, + const aiMatrix4x4& iErrorReturn /*= aiMatrix4x4()*/) const { return GetGenericProperty(mMatrixProperties,szName,iErrorReturn); } // ------------------------------------------------------------------------------------------------ // Has a configuration property -bool ExportProperties :: HasPropertyInteger(const char* szName) const -{ +bool ExportProperties::HasPropertyInteger(const char* szName) const { return HasGenericProperty(mIntProperties, szName); } // ------------------------------------------------------------------------------------------------ // Has a configuration property -bool ExportProperties :: HasPropertyBool(const char* szName) const -{ +bool ExportProperties::HasPropertyBool(const char* szName) const { return HasGenericProperty(mIntProperties, szName); } // ------------------------------------------------------------------------------------------------ // Has a configuration property -bool ExportProperties :: HasPropertyFloat(const char* szName) const -{ +bool ExportProperties::HasPropertyFloat(const char* szName) const { return HasGenericProperty(mFloatProperties, szName); } // ------------------------------------------------------------------------------------------------ // Has a configuration property -bool ExportProperties :: HasPropertyString(const char* szName) const -{ +bool ExportProperties::HasPropertyString(const char* szName) const { return HasGenericProperty(mStringProperties, szName); } // ------------------------------------------------------------------------------------------------ // Has a configuration property -bool ExportProperties :: HasPropertyMatrix(const char* szName) const -{ +bool ExportProperties::HasPropertyMatrix(const char* szName) const { return HasGenericProperty(mMatrixProperties, szName); } diff --git a/code/FBXConverter.cpp b/code/FBXConverter.cpp index b088b22e0..0cbe04d8f 100644 --- a/code/FBXConverter.cpp +++ b/code/FBXConverter.cpp @@ -185,12 +185,8 @@ void FBXConverter::ConvertNodes( uint64_t id, aiNode& parent, const aiMatrix4x4& } if ( !name_carrier ) { - NodeNameCache::const_iterator it = mNodeNames.find(original_name); - if ( it != mNodeNames.end() ) { - original_name = original_name + std::string( "001" ); - } - - mNodeNames.insert( original_name ); + std::string old_original_name = original_name; + GetUniqueName(old_original_name, original_name); nodes_chain.push_back( new aiNode( original_name ) ); } else { original_name = nodes_chain.back()->mName.C_Str(); diff --git a/code/FBXDocumentUtil.h b/code/FBXDocumentUtil.h index acc8c4a5c..c0435a663 100644 --- a/code/FBXDocumentUtil.h +++ b/code/FBXDocumentUtil.h @@ -44,7 +44,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef INCLUDED_AI_FBX_DOCUMENT_UTIL_H #define INCLUDED_AI_FBX_DOCUMENT_UTIL_H -#include "../include/assimp/defs.h" +#include #include #include #include "FBXDocument.h" diff --git a/code/FBXMeshGeometry.cpp b/code/FBXMeshGeometry.cpp index 8bfd60570..aa794d4df 100644 --- a/code/FBXMeshGeometry.cpp +++ b/code/FBXMeshGeometry.cpp @@ -437,7 +437,7 @@ void ResolveVertexDataArray(std::vector& data_out, const Scope& source, // deal with this more elegantly and with less redundancy, but right // now it seems unavoidable. if (MappingInformationType == "ByVertice" && isDirect) { - if (!HasElement(source, indexDataElementName)) { + if (!HasElement(source, dataElementName)) { return; } std::vector tempData; diff --git a/code/FindDegenerates.cpp b/code/FindDegenerates.cpp index a3e9e0406..c0c0de08b 100644 --- a/code/FindDegenerates.cpp +++ b/code/FindDegenerates.cpp @@ -91,8 +91,10 @@ void FindDegeneratesProcess::SetupProperties(const Importer* pImp) { // Executes the post processing step on the given imported data. void FindDegeneratesProcess::Execute( aiScene* pScene) { ASSIMP_LOG_DEBUG("FindDegeneratesProcess begin"); - for (unsigned int i = 0; i < pScene->mNumMeshes;++i){ - if (ExecuteOnMesh(pScene->mMeshes[i])) { + for (unsigned int i = 0; i < pScene->mNumMeshes;++i) + { + //Do not process point cloud, ExecuteOnMesh works only with faces data + if ((pScene->mMeshes[i]->mPrimitiveTypes != aiPrimitiveType::aiPrimitiveType_POINT) && ExecuteOnMesh(pScene->mMeshes[i])) { removeMesh(pScene, i); --i; //the current i is removed, do not skip the next one } diff --git a/code/HMPFileData.h b/code/HMPFileData.h index a8ad2deb0..962f2f9c7 100644 --- a/code/HMPFileData.h +++ b/code/HMPFileData.h @@ -46,7 +46,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. namespace Assimp { namespace HMP { -#include "./../include/assimp/Compiler/pushpack1.h" +#include #include // to make it easier for us, we test the magic word against both "endianesses" @@ -131,7 +131,7 @@ struct Vertex_HMP7 int8_t normal_x,normal_y; } PACK_STRUCT; -#include "./../include/assimp/Compiler/poppack1.h" +#include } //! namespace HMP } //! namespace Assimp diff --git a/code/HalfLifeFileData.h b/code/HalfLifeFileData.h index 930980c80..7c55657d4 100644 --- a/code/HalfLifeFileData.h +++ b/code/HalfLifeFileData.h @@ -51,7 +51,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef AI_MDLFILEHELPER2_H_INC #define AI_MDLFILEHELPER2_H_INC -#include "./../include/assimp/Compiler/pushpack1.h" +#include namespace Assimp { namespace MDL { @@ -141,7 +141,7 @@ struct Header_HL2 { int32_t transitionindex; } /* PACK_STRUCT */; -#include "./../include/assimp/Compiler/poppack1.h" +#include } } // end namespaces diff --git a/code/Importer.cpp b/code/Importer.cpp index 7aabe0a5f..fe6df187c 100644 --- a/code/Importer.cpp +++ b/code/Importer.cpp @@ -178,7 +178,6 @@ Importer::~Importer() { // Delete all import plugins DeleteImporterInstanceList(pimpl->mImporter); - aiReleaseDefaultMaterial(); // Delete all post-processing plug-ins for( unsigned int a = 0; a < pimpl->mPostProcessingSteps.size(); a++) @@ -316,22 +315,19 @@ void Importer::SetIOHandler( IOSystem* pIOHandler) // ------------------------------------------------------------------------------------------------ // Get the currently set IO handler -IOSystem* Importer::GetIOHandler() const -{ +IOSystem* Importer::GetIOHandler() const { return pimpl->mIOHandler; } // ------------------------------------------------------------------------------------------------ // Check whether a custom IO handler is currently set -bool Importer::IsDefaultIOHandler() const -{ +bool Importer::IsDefaultIOHandler() const { return pimpl->mIsDefaultHandler; } // ------------------------------------------------------------------------------------------------ // Supplies a custom progress handler to get regular callbacks during importing -void Importer::SetProgressHandler ( ProgressHandler* pHandler ) -{ +void Importer::SetProgressHandler ( ProgressHandler* pHandler ) { ASSIMP_BEGIN_EXCEPTION_REGION(); // If the new handler is zero, allocate a default implementation. if (!pHandler) @@ -352,15 +348,13 @@ void Importer::SetProgressHandler ( ProgressHandler* pHandler ) // ------------------------------------------------------------------------------------------------ // Get the currently set progress handler -ProgressHandler* Importer::GetProgressHandler() const -{ +ProgressHandler* Importer::GetProgressHandler() const { return pimpl->mProgressHandler; } // ------------------------------------------------------------------------------------------------ // Check whether a custom progress handler is currently set -bool Importer::IsDefaultProgressHandler() const -{ +bool Importer::IsDefaultProgressHandler() const { return pimpl->mIsDefaultProgressHandler; } @@ -385,7 +379,6 @@ void Importer::FreeScene( ) { ASSIMP_BEGIN_EXCEPTION_REGION(); - aiReleaseDefaultMaterial(); delete pimpl->mScene; pimpl->mScene = NULL; diff --git a/code/Importer.h b/code/Importer.h index 870638631..c6628c428 100644 --- a/code/Importer.h +++ b/code/Importer.h @@ -120,11 +120,11 @@ public: SharedPostProcessInfo* mPPShared; /// The default class constructor. - ImporterPimpl(); + ImporterPimpl() AI_NO_EXCEPT; }; inline -ImporterPimpl::ImporterPimpl() +ImporterPimpl::ImporterPimpl() AI_NO_EXCEPT : mIOHandler( nullptr ) , mIsDefaultHandler( false ) , mProgressHandler( nullptr ) diff --git a/code/Importer/IFC/IFCLoader.cpp b/code/Importer/IFC/IFCLoader.cpp index a40eedc1d..473355538 100644 --- a/code/Importer/IFC/IFCLoader.cpp +++ b/code/Importer/IFC/IFCLoader.cpp @@ -56,7 +56,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #endif #include "IFCLoader.h" -#include "STEPFileReader.h" +#include "../STEPParser/STEPFileReader.h" #include "IFCUtil.h" @@ -134,7 +134,7 @@ IFCImporter::~IFCImporter() bool IFCImporter::CanRead( const std::string& pFile, IOSystem* pIOHandler, bool checkSig) const { const std::string& extension = GetExtension(pFile); - if (extension == "ifc" || extension == "ifczip" || extension == "stp" ) { + if (extension == "ifc" || extension == "ifczip" ) { return true; } else if ((!extension.length() || checkSig) && pIOHandler) { // note: this is the common identification for STEP-encoded files, so diff --git a/code/Importer/IFC/IFCReaderGen_4.cpp b/code/Importer/IFC/IFCReaderGen_4.cpp index 7a312e691..fdefedb18 100644 --- a/code/Importer/IFC/IFCReaderGen_4.cpp +++ b/code/Importer/IFC/IFCReaderGen_4.cpp @@ -43,7 +43,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef ASSIMP_BUILD_NO_IFC_IMPORTER #include "AssimpPCH.h" -#include "IFCReaderGen4.h" +#include "IFCReaderGen_4.h" namespace Assimp { using namespace IFC; diff --git a/code/Importer/IFC/STEPFileEncoding.cpp b/code/Importer/STEPParser/STEPFileEncoding.cpp similarity index 100% rename from code/Importer/IFC/STEPFileEncoding.cpp rename to code/Importer/STEPParser/STEPFileEncoding.cpp diff --git a/code/Importer/IFC/STEPFileEncoding.h b/code/Importer/STEPParser/STEPFileEncoding.h similarity index 100% rename from code/Importer/IFC/STEPFileEncoding.h rename to code/Importer/STEPParser/STEPFileEncoding.h diff --git a/code/Importer/IFC/STEPFileReader.cpp b/code/Importer/STEPParser/STEPFileReader.cpp similarity index 98% rename from code/Importer/IFC/STEPFileReader.cpp rename to code/Importer/STEPParser/STEPFileReader.cpp index b1390b9de..c7cad05ae 100644 --- a/code/Importer/IFC/STEPFileReader.cpp +++ b/code/Importer/STEPParser/STEPFileReader.cpp @@ -85,16 +85,16 @@ STEP::TypeError::TypeError (const std::string& s,uint64_t entity /* = ENTITY_NOT } - +static const char *ISO_Token = "ISO-10303-21;"; +static const char *FILE_SCHEMA_Token = "FILE_SCHEMA"; // ------------------------------------------------------------------------------------------------ -STEP::DB* STEP::ReadFileHeader(std::shared_ptr stream) -{ +STEP::DB* STEP::ReadFileHeader(std::shared_ptr stream) { std::shared_ptr reader = std::shared_ptr(new StreamReaderLE(stream)); std::unique_ptr db = std::unique_ptr(new STEP::DB(reader)); - LineSplitter& splitter = db->GetSplitter(); - if (!splitter || *splitter != "ISO-10303-21;") { - throw STEP::SyntaxError("expected magic token: ISO-10303-21",1); + LineSplitter &splitter = db->GetSplitter(); + if (!splitter || *splitter != ISO_Token ) { + throw STEP::SyntaxError("expected magic token: " + std::string( ISO_Token ), 1); } HeaderInfo& head = db->GetHeader(); @@ -109,7 +109,7 @@ STEP::DB* STEP::ReadFileHeader(std::shared_ptr stream) // want one-based line numbers for human readers, so +1 const uint64_t line = splitter.get_index()+1; - if (s.substr(0,11) == "FILE_SCHEMA") { + if (s.substr(0,11) == FILE_SCHEMA_Token) { const char* sz = s.c_str()+11; SkipSpaces(sz,&sz); std::shared_ptr< const EXPRESS::DataType > schema = EXPRESS::DataType::Parse(sz); @@ -549,4 +549,3 @@ void STEP::LazyObject::LazyInit() const // store the original id in the object instance obj->SetID(id); } - diff --git a/code/Importer/IFC/STEPFileReader.h b/code/Importer/STEPParser/STEPFileReader.h similarity index 67% rename from code/Importer/IFC/STEPFileReader.h rename to code/Importer/STEPParser/STEPFileReader.h index b9dcf8948..667d28bfd 100644 --- a/code/Importer/IFC/STEPFileReader.h +++ b/code/Importer/STEPParser/STEPFileReader.h @@ -48,18 +48,23 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. namespace Assimp { namespace STEP { - // ### Parsing a STEP file is a twofold procedure ### - // -------------------------------------------------------------------------- - // 1) read file header and return to caller, who checks if the - // file is of a supported schema .. - DB* ReadFileHeader(std::shared_ptr stream); - // -------------------------------------------------------------------------- - // 2) read the actual file contents using a user-supplied set of - // conversion functions to interpret the data. - void ReadFile(DB& db,const EXPRESS::ConversionSchema& scheme, const char* const* types_to_track, size_t len, const char* const* inverse_indices_to_track, size_t len2); - template inline void ReadFile(DB& db,const EXPRESS::ConversionSchema& scheme, const char* const (&arr)[N], const char* const (&arr2)[N2]) { - return ReadFile(db,scheme,arr,N,arr2,N2); - } +// -------------------------------------------------------------------------- +/// @brief Parsing a STEP file is a twofold procedure. +/// 1) read file header and return to caller, who checks if the +/// file is of a supported schema .. +DB* ReadFileHeader(std::shared_ptr stream); + +/// 2) read the actual file contents using a user-supplied set of +/// conversion functions to interpret the data. +void ReadFile(DB& db,const EXPRESS::ConversionSchema& scheme, const char* const* types_to_track, size_t len, const char* const* inverse_indices_to_track, size_t len2); + +/// @brief Helper to read a file. +template +inline +void ReadFile(DB& db,const EXPRESS::ConversionSchema& scheme, const char* const (&arr)[N], const char* const (&arr2)[N2]) { + return ReadFile(db,scheme,arr,N,arr2,N2); +} + } // ! STEP } // ! Assimp diff --git a/code/Importer/StepFile/StepFileGen1.cpp b/code/Importer/StepFile/StepFileGen1.cpp new file mode 100644 index 000000000..32df66c17 --- /dev/null +++ b/code/Importer/StepFile/StepFileGen1.cpp @@ -0,0 +1,2195 @@ +/* +Open Asset Import Library (ASSIMP) +---------------------------------------------------------------------- + +Copyright (c) 2006-2018, ASSIMP Development Team +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the ASSIMP team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the ASSIMP Development Team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +/** MACHINE-GENERATED by scripts/ICFImporter/CppGenerator.py */ + +#ifndef ASSIMP_BUILD_NO_STEPFILE_IMPORTER + +#include "code/Importer/StepFile/StepReaderGen.h" + +namespace Assimp { +using namespace StepFile; + +namespace { + + typedef EXPRESS::ConversionSchema::SchemaEntry SchemaEntry; + + const SchemaEntry schema_raw[] = { + SchemaEntry("absorbed_dose_measure",NULL ) +, SchemaEntry("acceleration_measure",NULL ) +, SchemaEntry("action_items",NULL ) +, SchemaEntry("action_method_items",NULL ) +, SchemaEntry("action_request_item",NULL ) +, SchemaEntry("ahead_or_behind",NULL ) +, SchemaEntry("amount_of_substance_measure",NULL ) +, SchemaEntry("angle_direction_reference_select",NULL ) +, SchemaEntry("angle_direction_reference_with_a2p3d_select",NULL ) +, SchemaEntry("angle_relator",NULL ) +, SchemaEntry("annotation_plane_element",NULL ) +, SchemaEntry("annotation_representation_select",NULL ) +, SchemaEntry("annotation_symbol_occurrence_item",NULL ) +, SchemaEntry("annotation_text_occurrence_item",NULL ) +, SchemaEntry("approval_item",NULL ) +, SchemaEntry("approved_item",NULL ) +, SchemaEntry("area_measure",NULL ) +, SchemaEntry("area_or_view",NULL ) +, SchemaEntry("attribute_classification_item",NULL ) +, SchemaEntry("attribute_language_item",NULL ) +, SchemaEntry("attribute_type",NULL ) +, SchemaEntry("axis2_placement",NULL ) +, SchemaEntry("b_spline_curve_form",NULL ) +, SchemaEntry("b_spline_surface_form",NULL ) +, SchemaEntry("base_solid_select",NULL ) +, SchemaEntry("blend_end_condition_select",NULL ) +, SchemaEntry("blend_radius_variation_type",NULL ) +, SchemaEntry("boolean_operand",NULL ) +, SchemaEntry("boolean_operator",NULL ) +, SchemaEntry("box_characteristic_select",NULL ) +, SchemaEntry("box_height",NULL ) +, SchemaEntry("box_rotate_angle",NULL ) +, SchemaEntry("box_slant_angle",NULL ) +, SchemaEntry("box_width",NULL ) +, SchemaEntry("camera_model_d3_multi_clipping_interection_select",NULL ) +, SchemaEntry("camera_model_d3_multi_clipping_union_select",NULL ) +, SchemaEntry("capacitance_measure",NULL ) +, SchemaEntry("category_usage_item",NULL ) +, SchemaEntry("cc_classified_item",NULL ) +, SchemaEntry("cc_person_organization_item",NULL ) +, SchemaEntry("cc_specified_item",NULL ) +, SchemaEntry("celsius_temperature_measure",NULL ) +, SchemaEntry("central_or_parallel",NULL ) +, SchemaEntry("certification_item",NULL ) +, SchemaEntry("certified_item",NULL ) +, SchemaEntry("change_request_item",NULL ) +, SchemaEntry("character_spacing_select",NULL ) +, SchemaEntry("character_style_select",NULL ) +, SchemaEntry("characterized_action_definition",NULL ) +, SchemaEntry("characterized_definition",NULL ) +, SchemaEntry("characterized_material_property",NULL ) +, SchemaEntry("characterized_product_composition_value",NULL ) +, SchemaEntry("characterized_product_definition",NULL ) +, SchemaEntry("class_usage_effectivity_context_item",NULL ) +, SchemaEntry("classification_item",NULL ) +, SchemaEntry("classified_item",NULL ) +, SchemaEntry("compound_item_definition",NULL ) +, SchemaEntry("conductance_measure",NULL ) +, SchemaEntry("configuration_design_item",NULL ) +, SchemaEntry("configured_effectivity_context_item",NULL ) +, SchemaEntry("configured_effectivity_item",NULL ) +, SchemaEntry("constructive_geometry_representation_or_shape_represenation",NULL ) +, SchemaEntry("context_dependent_measure",NULL ) +, SchemaEntry("contract_item",NULL ) +, SchemaEntry("contracted_item",NULL ) +, SchemaEntry("count_measure",NULL ) +, SchemaEntry("csg_primitive",NULL ) +, SchemaEntry("csg_select",NULL ) +, SchemaEntry("curve_font_or_scaled_curve_font_select",NULL ) +, SchemaEntry("curve_on_surface",NULL ) +, SchemaEntry("curve_or_annotation_curve_occurrence",NULL ) +, SchemaEntry("curve_or_render",NULL ) +, SchemaEntry("curve_style_font_select",NULL ) +, SchemaEntry("date_and_time_item",NULL ) +, SchemaEntry("date_item",NULL ) +, SchemaEntry("date_time_item",NULL ) +, SchemaEntry("date_time_or_event_occurrence",NULL ) +, SchemaEntry("date_time_select",NULL ) +, SchemaEntry("day_in_month_number",NULL ) +, SchemaEntry("day_in_week_number",NULL ) +, SchemaEntry("day_in_year_number",NULL ) +, SchemaEntry("defined_symbol_select",NULL ) +, SchemaEntry("derived_property_select",NULL ) +, SchemaEntry("description_attribute_select",NULL ) +, SchemaEntry("descriptive_measure",NULL ) +, SchemaEntry("dimension_count",NULL ) +, SchemaEntry("dimension_extent_usage",NULL ) +, SchemaEntry("dimensional_characteristic",NULL ) +, SchemaEntry("direction_count_select",NULL ) +, SchemaEntry("document_identifier_assigned_item",NULL ) +, SchemaEntry("document_reference_item",NULL ) +, SchemaEntry("dose_equivalent_measure",NULL ) +, SchemaEntry("draughting_callout_element",NULL ) +, SchemaEntry("draughting_model_item_association_select",NULL ) +, SchemaEntry("draughting_model_item_select",NULL ) +, SchemaEntry("draughting_titled_item",NULL ) +, SchemaEntry("effectivity_item",NULL ) +, SchemaEntry("electric_charge_measure",NULL ) +, SchemaEntry("electric_current_measure",NULL ) +, SchemaEntry("electric_potential_measure",NULL ) +, SchemaEntry("energy_measure",NULL ) +, SchemaEntry("event_occurrence_item",NULL ) +, SchemaEntry("external_identification_item",NULL ) +, SchemaEntry("fill_area_style_tile_shape_select",NULL ) +, SchemaEntry("fill_style_select",NULL ) +, SchemaEntry("font_select",NULL ) +, SchemaEntry("force_measure",NULL ) +, SchemaEntry("founded_item_select",NULL ) +, SchemaEntry("frequency_measure",NULL ) +, SchemaEntry("generalized_surface_select",NULL ) +, SchemaEntry("geometric_item_specific_usage_select",NULL ) +, SchemaEntry("geometric_set_select",NULL ) +, SchemaEntry("groupable_item",NULL ) +, SchemaEntry("hour_in_day",NULL ) +, SchemaEntry("id_attribute_select",NULL ) +, SchemaEntry("identification_item",NULL ) +, SchemaEntry("identifier",NULL ) +, SchemaEntry("illuminance_measure",NULL ) +, SchemaEntry("inductance_measure",NULL ) +, SchemaEntry("instance_usage_context_select",NULL ) +, SchemaEntry("invisibility_context",NULL ) +, SchemaEntry("invisible_item",NULL ) +, SchemaEntry("ir_usage_item",NULL ) +, SchemaEntry("knot_type",NULL ) +, SchemaEntry("label",NULL ) +, SchemaEntry("layered_item",NULL ) +, SchemaEntry("length_measure",NULL ) +, SchemaEntry("limit_condition",NULL ) +, SchemaEntry("list_of_reversible_topology_item",NULL ) +, SchemaEntry("list_representation_item",NULL ) +, SchemaEntry("luminous_flux_measure",NULL ) +, SchemaEntry("luminous_intensity_measure",NULL ) +, SchemaEntry("magnetic_flux_density_measure",NULL ) +, SchemaEntry("magnetic_flux_measure",NULL ) +, SchemaEntry("marker_select",NULL ) +, SchemaEntry("marker_type",NULL ) +, SchemaEntry("mass_measure",NULL ) +, SchemaEntry("measure_value",NULL ) +, SchemaEntry("mechanical_design_and_draughting_relationship_select",NULL ) +, SchemaEntry("mechanical_design_geometric_presentation_area_items",NULL ) +, SchemaEntry("mechanical_design_geometric_presentation_representation_items",NULL ) +, SchemaEntry("message",NULL ) +, SchemaEntry("minute_in_hour",NULL ) +, SchemaEntry("month_in_year_number",NULL ) +, SchemaEntry("multi_language_attribute_item",NULL ) +, SchemaEntry("name_attribute_select",NULL ) +, SchemaEntry("name_item",NULL ) +, SchemaEntry("non_negative_length_measure",NULL ) +, SchemaEntry("nonnegative_integer",NULL ) +, SchemaEntry("null_style",NULL ) +, SchemaEntry("numeric_measure",NULL ) +, SchemaEntry("organization_item",NULL ) +, SchemaEntry("orientation_basis_select",NULL ) +, SchemaEntry("parameter_value",NULL ) +, SchemaEntry("pcurve_or_surface",NULL ) +, SchemaEntry("person_and_organization_item",NULL ) +, SchemaEntry("person_organization_select",NULL ) +, SchemaEntry("picture_representation_item_select",NULL ) +, SchemaEntry("plane_angle_measure",NULL ) +, SchemaEntry("plane_or_planar_box",NULL ) +, SchemaEntry("point_and_vector_member",NULL ) +, SchemaEntry("point_and_vector_members",NULL ) +, SchemaEntry("point_path_members",NULL ) +, SchemaEntry("positive_integer",NULL ) +, SchemaEntry("positive_length_measure",NULL ) +, SchemaEntry("positive_plane_angle_measure",NULL ) +, SchemaEntry("positive_ratio_measure",NULL ) +, SchemaEntry("power_measure",NULL ) +, SchemaEntry("preferred_surface_curve_representation",NULL ) +, SchemaEntry("presentable_text",NULL ) +, SchemaEntry("presentation_representation_select",NULL ) +, SchemaEntry("presentation_size_assignment_select",NULL ) +, SchemaEntry("presentation_style_select",NULL ) +, SchemaEntry("presented_item_select",NULL ) +, SchemaEntry("pressure_measure",NULL ) +, SchemaEntry("product_definition_or_assembly_relationship",NULL ) +, SchemaEntry("product_definition_or_breakdown_element_usage",NULL ) +, SchemaEntry("product_definition_or_product_definition_relationship",NULL ) +, SchemaEntry("product_or_formation_or_definition",NULL ) +, SchemaEntry("project_item",NULL ) +, SchemaEntry("radioactivity_measure",NULL ) +, SchemaEntry("ratio_measure",NULL ) +, SchemaEntry("rendering_properties_select",NULL ) +, SchemaEntry("represented_definition",NULL ) +, SchemaEntry("requirement_assigned_item",NULL ) +, SchemaEntry("requirement_satisfaction_item",NULL ) +, SchemaEntry("requirement_source_item",NULL ) +, SchemaEntry("resistance_measure",NULL ) +, SchemaEntry("reversible_topology",NULL ) +, SchemaEntry("reversible_topology_item",NULL ) +, SchemaEntry("role_select",NULL ) +, SchemaEntry("rule_superseded_item",NULL ) +, SchemaEntry("second_in_minute",NULL ) +, SchemaEntry("security_classification_item",NULL ) +, SchemaEntry("set_of_reversible_topology_item",NULL ) +, SchemaEntry("set_representation_item",NULL ) +, SchemaEntry("shading_curve_method",NULL ) +, SchemaEntry("shading_surface_method",NULL ) +, SchemaEntry("shape_definition",NULL ) +, SchemaEntry("shell",NULL ) +, SchemaEntry("si_prefix",NULL ) +, SchemaEntry("si_unit_name",NULL ) +, SchemaEntry("size_select",NULL ) +, SchemaEntry("sketch_basis_select",NULL ) +, SchemaEntry("solid_angle_measure",NULL ) +, SchemaEntry("source",NULL ) +, SchemaEntry("source_item",NULL ) +, SchemaEntry("start_request_item",NULL ) +, SchemaEntry("string_representation_item_select",NULL ) +, SchemaEntry("style_context_select",NULL ) +, SchemaEntry("surface_side",NULL ) +, SchemaEntry("surface_side_style_select",NULL ) +, SchemaEntry("surface_style_element_select",NULL ) +, SchemaEntry("symbol_style_select",NULL ) +, SchemaEntry("text",NULL ) +, SchemaEntry("text_alignment",NULL ) +, SchemaEntry("text_delineation",NULL ) +, SchemaEntry("text_or_character",NULL ) +, SchemaEntry("text_path",NULL ) +, SchemaEntry("text_string_representation_item",NULL ) +, SchemaEntry("thermodynamic_temperature_measure",NULL ) +, SchemaEntry("time_interval_item",NULL ) +, SchemaEntry("time_measure",NULL ) +, SchemaEntry("tolerance_method_definition",NULL ) +, SchemaEntry("transformation",NULL ) +, SchemaEntry("transition_code",NULL ) +, SchemaEntry("trim_condition_select",NULL ) +, SchemaEntry("trim_intent",NULL ) +, SchemaEntry("trimming_preference",NULL ) +, SchemaEntry("trimming_select",NULL ) +, SchemaEntry("u_direction_count",NULL ) +, SchemaEntry("unit",NULL ) +, SchemaEntry("v_direction_count",NULL ) +, SchemaEntry("value_qualifier",NULL ) +, SchemaEntry("vector_or_direction",NULL ) +, SchemaEntry("velocity_measure",NULL ) +, SchemaEntry("volume_measure",NULL ) +, SchemaEntry("week_in_year_number",NULL ) +, SchemaEntry("work_item",NULL ) +, SchemaEntry("year_number",NULL ) +, SchemaEntry("measure_with_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("absorbed_dose_measure_with_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("derived_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("absorbed_dose_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("abstract_variable",&STEP::ObjectHelper::Construct ) +, SchemaEntry("acceleration_measure_with_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("acceleration_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("action",&STEP::ObjectHelper::Construct ) +, SchemaEntry("action_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("action_directive",&STEP::ObjectHelper::Construct ) +, SchemaEntry("action_method",&STEP::ObjectHelper::Construct ) +, SchemaEntry("action_method_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("action_method_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("action_method_role",&STEP::ObjectHelper::Construct ) +, SchemaEntry("action_property",&STEP::ObjectHelper::Construct ) +, SchemaEntry("action_property_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("action_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("action_request_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("action_request_solution",&STEP::ObjectHelper::Construct ) +, SchemaEntry("action_request_status",&STEP::ObjectHelper::Construct ) +, SchemaEntry("action_status",&STEP::ObjectHelper::Construct ) +, SchemaEntry("address",&STEP::ObjectHelper::Construct ) +, SchemaEntry("representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("shape_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("advanced_brep_shape_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("face_surface",&STEP::ObjectHelper::Construct ) +, SchemaEntry("advanced_face",&STEP::ObjectHelper::Construct ) +, SchemaEntry("alternate_product_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("amount_of_substance_measure_with_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("named_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("amount_of_substance_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("angle_direction_reference",&STEP::ObjectHelper::Construct ) +, SchemaEntry("representation_item",&STEP::ObjectHelper::Construct ) +, SchemaEntry("geometric_representation_item",&STEP::ObjectHelper::Construct ) +, SchemaEntry("draughting_callout",&STEP::ObjectHelper::Construct ) +, SchemaEntry("dimension_curve_directed_callout",&STEP::ObjectHelper::Construct ) +, SchemaEntry("angular_dimension",&STEP::ObjectHelper::Construct ) +, SchemaEntry("shape_aspect_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("dimensional_location",&STEP::ObjectHelper::Construct ) +, SchemaEntry("angular_location",&STEP::ObjectHelper::Construct ) +, SchemaEntry("dimensional_size",&STEP::ObjectHelper::Construct ) +, SchemaEntry("angular_size",&STEP::ObjectHelper::Construct ) +, SchemaEntry("geometric_tolerance",&STEP::ObjectHelper::Construct ) +, SchemaEntry("geometric_tolerance_with_datum_reference",&STEP::ObjectHelper::Construct ) +, SchemaEntry("angularity_tolerance",&STEP::ObjectHelper::Construct ) +, SchemaEntry("styled_item",&STEP::ObjectHelper::Construct ) +, SchemaEntry("annotation_occurrence",&STEP::ObjectHelper::Construct ) +, SchemaEntry("annotation_curve_occurrence",&STEP::ObjectHelper::Construct ) +, SchemaEntry("annotation_fill_area",&STEP::ObjectHelper::Construct ) +, SchemaEntry("annotation_fill_area_occurrence",&STEP::ObjectHelper::Construct ) +, SchemaEntry("annotation_occurrence_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("annotation_occurrence_associativity",&STEP::ObjectHelper::Construct ) +, SchemaEntry("annotation_plane",&STEP::ObjectHelper::Construct ) +, SchemaEntry("annotation_symbol_occurrence",&STEP::ObjectHelper::Construct ) +, SchemaEntry("annotation_subfigure_occurrence",&STEP::ObjectHelper::Construct ) +, SchemaEntry("mapped_item",&STEP::ObjectHelper::Construct ) +, SchemaEntry("annotation_symbol",&STEP::ObjectHelper::Construct ) +, SchemaEntry("annotation_text",&STEP::ObjectHelper::Construct ) +, SchemaEntry("annotation_text_character",&STEP::ObjectHelper::Construct ) +, SchemaEntry("annotation_text_occurrence",&STEP::ObjectHelper::Construct ) +, SchemaEntry("shape_aspect",&STEP::ObjectHelper::Construct ) +, SchemaEntry("derived_shape_aspect",&STEP::ObjectHelper::Construct ) +, SchemaEntry("apex",&STEP::ObjectHelper::Construct ) +, SchemaEntry("application_context",&STEP::ObjectHelper::Construct ) +, SchemaEntry("application_context_element",&STEP::ObjectHelper::Construct ) +, SchemaEntry("application_protocol_definition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("applied_action_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("applied_action_method_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("applied_action_request_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("approval_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("applied_approval_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("attribute_classification_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("applied_attribute_classification_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("certification_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("applied_certification_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("classification_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("applied_classification_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("contract_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("applied_contract_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("date_and_time_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("applied_date_and_time_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("date_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("applied_date_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("document_reference",&STEP::ObjectHelper::Construct ) +, SchemaEntry("applied_document_reference",&STEP::ObjectHelper::Construct ) +, SchemaEntry("document_usage_constraint_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("applied_document_usage_constraint_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("effectivity_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("applied_effectivity_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("event_occurrence_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("applied_event_occurrence_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("identification_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("external_identification_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("applied_external_identification_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("group_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("applied_group_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("applied_identification_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("name_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("applied_name_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("organization_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("applied_organization_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("organizational_project_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("applied_organizational_project_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("person_and_organization_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("applied_person_and_organization_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("presented_item",&STEP::ObjectHelper::Construct ) +, SchemaEntry("applied_presented_item",&STEP::ObjectHelper::Construct ) +, SchemaEntry("security_classification_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("applied_security_classification_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("time_interval_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("applied_time_interval_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("applied_usage_right",&STEP::ObjectHelper::Construct ) +, SchemaEntry("approval",&STEP::ObjectHelper::Construct ) +, SchemaEntry("approval_date_time",&STEP::ObjectHelper::Construct ) +, SchemaEntry("approval_person_organization",&STEP::ObjectHelper::Construct ) +, SchemaEntry("approval_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("approval_role",&STEP::ObjectHelper::Construct ) +, SchemaEntry("approval_status",&STEP::ObjectHelper::Construct ) +, SchemaEntry("area_in_set",&STEP::ObjectHelper::Construct ) +, SchemaEntry("area_measure_with_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("area_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("product_definition_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("product_definition_usage",&STEP::ObjectHelper::Construct ) +, SchemaEntry("assembly_component_usage",&STEP::ObjectHelper::Construct ) +, SchemaEntry("assembly_component_usage_substitute",&STEP::ObjectHelper::Construct ) +, SchemaEntry("assigned_requirement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("compound_representation_item",&STEP::ObjectHelper::Construct ) +, SchemaEntry("atomic_formula",&STEP::ObjectHelper::Construct ) +, SchemaEntry("attribute_assertion",&STEP::ObjectHelper::Construct ) +, SchemaEntry("attribute_language_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("attribute_value_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("attribute_value_role",&STEP::ObjectHelper::Construct ) +, SchemaEntry("auxiliary_geometric_representation_item",&STEP::ObjectHelper::Construct ) +, SchemaEntry("placement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("axis1_placement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("axis2_placement_2d",&STEP::ObjectHelper::Construct ) +, SchemaEntry("axis2_placement_3d",&STEP::ObjectHelper::Construct ) +, SchemaEntry("curve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("bounded_curve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("b_spline_curve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("b_spline_curve_with_knots",&STEP::ObjectHelper::Construct ) +, SchemaEntry("surface",&STEP::ObjectHelper::Construct ) +, SchemaEntry("bounded_surface",&STEP::ObjectHelper::Construct ) +, SchemaEntry("b_spline_surface",&STEP::ObjectHelper::Construct ) +, SchemaEntry("b_spline_surface_with_knots",&STEP::ObjectHelper::Construct ) +, SchemaEntry("product_definition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("rule_software_definition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("rule_definition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("back_chaining_rule",&STEP::ObjectHelper::Construct ) +, SchemaEntry("back_chaining_rule_body",&STEP::ObjectHelper::Construct ) +, SchemaEntry("colour",&STEP::ObjectHelper::Construct ) +, SchemaEntry("background_colour",&STEP::ObjectHelper::Construct ) +, SchemaEntry("beveled_sheet_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("bezier_curve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("bezier_surface",&STEP::ObjectHelper::Construct ) +, SchemaEntry("generic_expression",&STEP::ObjectHelper::Construct ) +, SchemaEntry("binary_generic_expression",&STEP::ObjectHelper::Construct ) +, SchemaEntry("binary_numeric_expression",&STEP::ObjectHelper::Construct ) +, SchemaEntry("binary_representation_item",&STEP::ObjectHelper::Construct ) +, SchemaEntry("block",&STEP::ObjectHelper::Construct ) +, SchemaEntry("expression",&STEP::ObjectHelper::Construct ) +, SchemaEntry("boolean_expression",&STEP::ObjectHelper::Construct ) +, SchemaEntry("boolean_literal",&STEP::ObjectHelper::Construct ) +, SchemaEntry("boolean_representation_item",&STEP::ObjectHelper::Construct ) +, SchemaEntry("boolean_result",&STEP::ObjectHelper::Construct ) +, SchemaEntry("composite_curve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("composite_curve_on_surface",&STEP::ObjectHelper::Construct ) +, SchemaEntry("boundary_curve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("bounded_pcurve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("bounded_surface_curve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("founded_item",&STEP::ObjectHelper::Construct ) +, SchemaEntry("box_domain",&STEP::ObjectHelper::Construct ) +, SchemaEntry("half_space_solid",&STEP::ObjectHelper::Construct ) +, SchemaEntry("boxed_half_space",&STEP::ObjectHelper::Construct ) +, SchemaEntry("breakdown_context",&STEP::ObjectHelper::Construct ) +, SchemaEntry("breakdown_element_group_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("breakdown_element_realization",&STEP::ObjectHelper::Construct ) +, SchemaEntry("breakdown_element_usage",&STEP::ObjectHelper::Construct ) +, SchemaEntry("breakdown_of",&STEP::ObjectHelper::Construct ) +, SchemaEntry("solid_model",&STEP::ObjectHelper::Construct ) +, SchemaEntry("manifold_solid_brep",&STEP::ObjectHelper::Construct ) +, SchemaEntry("brep_with_voids",&STEP::ObjectHelper::Construct ) +, SchemaEntry("bytes_representation_item",&STEP::ObjectHelper::Construct ) +, SchemaEntry("date",&STEP::ObjectHelper::Construct ) +, SchemaEntry("calendar_date",&STEP::ObjectHelper::Construct ) +, SchemaEntry("camera_image",&STEP::ObjectHelper::Construct ) +, SchemaEntry("camera_image_3d_with_scale",&STEP::ObjectHelper::Construct ) +, SchemaEntry("camera_model",&STEP::ObjectHelper::Construct ) +, SchemaEntry("camera_model_d3",&STEP::ObjectHelper::Construct ) +, SchemaEntry("camera_model_d3_multi_clipping",&STEP::ObjectHelper::Construct ) +, SchemaEntry("camera_model_d3_multi_clipping_intersection",&STEP::ObjectHelper::Construct ) +, SchemaEntry("camera_model_d3_multi_clipping_union",&STEP::ObjectHelper::Construct ) +, SchemaEntry("camera_model_d3_with_hlhsr",&STEP::ObjectHelper::Construct ) +, SchemaEntry("camera_model_with_light_sources",&STEP::ObjectHelper::Construct ) +, SchemaEntry("representation_map",&STEP::ObjectHelper::Construct ) +, SchemaEntry("camera_usage",&STEP::ObjectHelper::Construct ) +, SchemaEntry("capacitance_measure_with_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("capacitance_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("point",&STEP::ObjectHelper::Construct ) +, SchemaEntry("cartesian_point",&STEP::ObjectHelper::Construct ) +, SchemaEntry("cartesian_transformation_operator",&STEP::ObjectHelper::Construct ) +, SchemaEntry("cartesian_transformation_operator_2d",&STEP::ObjectHelper::Construct ) +, SchemaEntry("cartesian_transformation_operator_3d",&STEP::ObjectHelper::Construct ) +, SchemaEntry("cc_design_approval",&STEP::ObjectHelper::Construct ) +, SchemaEntry("cc_design_certification",&STEP::ObjectHelper::Construct ) +, SchemaEntry("cc_design_contract",&STEP::ObjectHelper::Construct ) +, SchemaEntry("cc_design_date_and_time_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("cc_design_person_and_organization_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("cc_design_security_classification",&STEP::ObjectHelper::Construct ) +, SchemaEntry("cc_design_specification_reference",&STEP::ObjectHelper::Construct ) +, SchemaEntry("celsius_temperature_measure_with_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("centre_of_symmetry",&STEP::ObjectHelper::Construct ) +, SchemaEntry("certification",&STEP::ObjectHelper::Construct ) +, SchemaEntry("certification_type",&STEP::ObjectHelper::Construct ) +, SchemaEntry("change",&STEP::ObjectHelper::Construct ) +, SchemaEntry("change_request",&STEP::ObjectHelper::Construct ) +, SchemaEntry("character_glyph_font_usage",&STEP::ObjectHelper::Construct ) +, SchemaEntry("character_glyph_style_outline",&STEP::ObjectHelper::Construct ) +, SchemaEntry("character_glyph_style_stroke",&STEP::ObjectHelper::Construct ) +, SchemaEntry("symbol_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("generic_character_glyph_symbol",&STEP::ObjectHelper::Construct ) +, SchemaEntry("character_glyph_symbol",&STEP::ObjectHelper::Construct ) +, SchemaEntry("character_glyph_symbol_outline",&STEP::ObjectHelper::Construct ) +, SchemaEntry("character_glyph_symbol_stroke",&STEP::ObjectHelper::Construct ) +, SchemaEntry("general_property",&STEP::ObjectHelper::Construct ) +, SchemaEntry("characteristic_data_column_header",&STEP::ObjectHelper::Construct ) +, SchemaEntry("general_property_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("characteristic_data_column_header_link",&STEP::ObjectHelper::Construct ) +, SchemaEntry("characteristic_data_table_header",&STEP::ObjectHelper::Construct ) +, SchemaEntry("characteristic_data_table_header_decomposition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("group",&STEP::ObjectHelper::Construct ) +, SchemaEntry("characteristic_type",&STEP::ObjectHelper::Construct ) +, SchemaEntry("characterized_class",&STEP::ObjectHelper::Construct ) +, SchemaEntry("characterized_object",&STEP::ObjectHelper::Construct ) +, SchemaEntry("conic",&STEP::ObjectHelper::Construct ) +, SchemaEntry("circle",&STEP::ObjectHelper::Construct ) +, SchemaEntry("circular_runout_tolerance",&STEP::ObjectHelper::Construct ) +, SchemaEntry("class_t",&STEP::ObjectHelper::Construct ) +, SchemaEntry("class_by_extension",&STEP::ObjectHelper::Construct ) +, SchemaEntry("class_by_intension",&STEP::ObjectHelper::Construct ) +, SchemaEntry("class_system",&STEP::ObjectHelper::Construct ) +, SchemaEntry("effectivity_context_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("class_usage_effectivity_context_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("classification_role",&STEP::ObjectHelper::Construct ) +, SchemaEntry("topological_representation_item",&STEP::ObjectHelper::Construct ) +, SchemaEntry("connected_face_set",&STEP::ObjectHelper::Construct ) +, SchemaEntry("closed_shell",&STEP::ObjectHelper::Construct ) +, SchemaEntry("coaxiality_tolerance",&STEP::ObjectHelper::Construct ) +, SchemaEntry("colour_specification",&STEP::ObjectHelper::Construct ) +, SchemaEntry("colour_rgb",&STEP::ObjectHelper::Construct ) +, SchemaEntry("common_datum",&STEP::ObjectHelper::Construct ) +, SchemaEntry("comparison_expression",&STEP::ObjectHelper::Construct ) +, SchemaEntry("complex_clause",&STEP::ObjectHelper::Construct ) +, SchemaEntry("complex_conjunctive_clause",&STEP::ObjectHelper::Construct ) +, SchemaEntry("complex_disjunctive_clause",&STEP::ObjectHelper::Construct ) +, SchemaEntry("modified_solid",&STEP::ObjectHelper::Construct ) +, SchemaEntry("shelled_solid",&STEP::ObjectHelper::Construct ) +, SchemaEntry("complex_shelled_solid",&STEP::ObjectHelper::Construct ) +, SchemaEntry("composite_assembly_definition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("composite_assembly_sequence_definition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("laminate_table",&STEP::ObjectHelper::Construct ) +, SchemaEntry("part_laminate_table",&STEP::ObjectHelper::Construct ) +, SchemaEntry("composite_assembly_table",&STEP::ObjectHelper::Construct ) +, SchemaEntry("composite_curve_segment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("material_designation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("composite_material_designation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("composite_shape_aspect",&STEP::ObjectHelper::Construct ) +, SchemaEntry("composite_sheet_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("composite_text",&STEP::ObjectHelper::Construct ) +, SchemaEntry("composite_text_with_associated_curves",&STEP::ObjectHelper::Construct ) +, SchemaEntry("composite_text_with_blanking_box",&STEP::ObjectHelper::Construct ) +, SchemaEntry("composite_text_with_delineation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("composite_text_with_extent",&STEP::ObjectHelper::Construct ) +, SchemaEntry("compound_shape_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("concentricity_tolerance",&STEP::ObjectHelper::Construct ) +, SchemaEntry("concept_feature_operator",&STEP::ObjectHelper::Construct ) +, SchemaEntry("concept_feature_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("concept_feature_relationship_with_condition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("product_concept_feature",&STEP::ObjectHelper::Construct ) +, SchemaEntry("conditional_concept_feature",&STEP::ObjectHelper::Construct ) +, SchemaEntry("conductance_measure_with_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("conductance_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("configuration_item",&STEP::ObjectHelper::Construct ) +, SchemaEntry("configurable_item",&STEP::ObjectHelper::Construct ) +, SchemaEntry("configuration_design",&STEP::ObjectHelper::Construct ) +, SchemaEntry("effectivity",&STEP::ObjectHelper::Construct ) +, SchemaEntry("product_definition_effectivity",&STEP::ObjectHelper::Construct ) +, SchemaEntry("configuration_effectivity",&STEP::ObjectHelper::Construct ) +, SchemaEntry("configuration_item_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("configuration_item_hierarchical_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("configuration_item_revision_sequence",&STEP::ObjectHelper::Construct ) +, SchemaEntry("configured_effectivity_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("configured_effectivity_context_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("conical_stepped_hole_transition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("elementary_surface",&STEP::ObjectHelper::Construct ) +, SchemaEntry("conical_surface",&STEP::ObjectHelper::Construct ) +, SchemaEntry("connected_edge_set",&STEP::ObjectHelper::Construct ) +, SchemaEntry("connected_face_sub_set",&STEP::ObjectHelper::Construct ) +, SchemaEntry("constructive_geometry_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("representation_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("constructive_geometry_representation_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("contact_ratio_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("invisibility",&STEP::ObjectHelper::Construct ) +, SchemaEntry("context_dependent_invisibility",&STEP::ObjectHelper::Construct ) +, SchemaEntry("over_riding_styled_item",&STEP::ObjectHelper::Construct ) +, SchemaEntry("context_dependent_over_riding_styled_item",&STEP::ObjectHelper::Construct ) +, SchemaEntry("context_dependent_shape_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("context_dependent_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("contract",&STEP::ObjectHelper::Construct ) +, SchemaEntry("contract_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("contract_type",&STEP::ObjectHelper::Construct ) +, SchemaEntry("conversion_based_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("coordinated_universal_time_offset",&STEP::ObjectHelper::Construct ) +, SchemaEntry("csg_shape_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("csg_solid",&STEP::ObjectHelper::Construct ) +, SchemaEntry("currency",&STEP::ObjectHelper::Construct ) +, SchemaEntry("currency_measure_with_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("curve_bounded_surface",&STEP::ObjectHelper::Construct ) +, SchemaEntry("curve_dimension",&STEP::ObjectHelper::Construct ) +, SchemaEntry("curve_replica",&STEP::ObjectHelper::Construct ) +, SchemaEntry("curve_style",&STEP::ObjectHelper::Construct ) +, SchemaEntry("curve_style_font",&STEP::ObjectHelper::Construct ) +, SchemaEntry("curve_style_font_and_scaling",&STEP::ObjectHelper::Construct ) +, SchemaEntry("curve_style_font_pattern",&STEP::ObjectHelper::Construct ) +, SchemaEntry("curve_style_rendering",&STEP::ObjectHelper::Construct ) +, SchemaEntry("curve_swept_solid_shape_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("cylindrical_surface",&STEP::ObjectHelper::Construct ) +, SchemaEntry("cylindricity_tolerance",&STEP::ObjectHelper::Construct ) +, SchemaEntry("data_environment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("date_and_time",&STEP::ObjectHelper::Construct ) +, SchemaEntry("date_representation_item",&STEP::ObjectHelper::Construct ) +, SchemaEntry("date_role",&STEP::ObjectHelper::Construct ) +, SchemaEntry("date_time_representation_item",&STEP::ObjectHelper::Construct ) +, SchemaEntry("date_time_role",&STEP::ObjectHelper::Construct ) +, SchemaEntry("dated_effectivity",&STEP::ObjectHelper::Construct ) +, SchemaEntry("datum",&STEP::ObjectHelper::Construct ) +, SchemaEntry("datum_feature",&STEP::ObjectHelper::Construct ) +, SchemaEntry("datum_feature_callout",&STEP::ObjectHelper::Construct ) +, SchemaEntry("datum_reference",&STEP::ObjectHelper::Construct ) +, SchemaEntry("datum_target",&STEP::ObjectHelper::Construct ) +, SchemaEntry("datum_target_callout",&STEP::ObjectHelper::Construct ) +, SchemaEntry("default_tolerance_table",&STEP::ObjectHelper::Construct ) +, SchemaEntry("default_tolerance_table_cell",&STEP::ObjectHelper::Construct ) +, SchemaEntry("defined_symbol",&STEP::ObjectHelper::Construct ) +, SchemaEntry("definitional_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("definitional_representation_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("definitional_representation_relationship_with_same_context",&STEP::ObjectHelper::Construct ) +, SchemaEntry("degenerate_pcurve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("toroidal_surface",&STEP::ObjectHelper::Construct ) +, SchemaEntry("degenerate_toroidal_surface",&STEP::ObjectHelper::Construct ) +, SchemaEntry("derived_unit_element",&STEP::ObjectHelper::Construct ) +, SchemaEntry("description_attribute",&STEP::ObjectHelper::Construct ) +, SchemaEntry("descriptive_representation_item",&STEP::ObjectHelper::Construct ) +, SchemaEntry("product_definition_context",&STEP::ObjectHelper::Construct ) +, SchemaEntry("design_context",&STEP::ObjectHelper::Construct ) +, SchemaEntry("design_make_from_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("diameter_dimension",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ratio_measure_with_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("dielectric_constant_measure_with_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("dimension_callout",&STEP::ObjectHelper::Construct ) +, SchemaEntry("draughting_callout_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("dimension_callout_component_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("dimension_callout_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("dimension_curve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("terminator_symbol",&STEP::ObjectHelper::Construct ) +, SchemaEntry("dimension_curve_terminator",&STEP::ObjectHelper::Construct ) +, SchemaEntry("dimension_curve_terminator_to_projection_curve_associativity",&STEP::ObjectHelper::Construct ) +, SchemaEntry("dimension_pair",&STEP::ObjectHelper::Construct ) +, SchemaEntry("dimension_related_tolerance_zone_element",&STEP::ObjectHelper::Construct ) +, SchemaEntry("dimension_text_associativity",&STEP::ObjectHelper::Construct ) +, SchemaEntry("dimensional_characteristic_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("dimensional_exponents",&STEP::ObjectHelper::Construct ) +, SchemaEntry("dimensional_location_with_path",&STEP::ObjectHelper::Construct ) +, SchemaEntry("dimensional_size_with_path",&STEP::ObjectHelper::Construct ) +, SchemaEntry("executed_action",&STEP::ObjectHelper::Construct ) +, SchemaEntry("directed_action",&STEP::ObjectHelper::Construct ) +, SchemaEntry("directed_dimensional_location",&STEP::ObjectHelper::Construct ) +, SchemaEntry("direction",&STEP::ObjectHelper::Construct ) +, SchemaEntry("document",&STEP::ObjectHelper::Construct ) +, SchemaEntry("document_file",&STEP::ObjectHelper::Construct ) +, SchemaEntry("document_identifier",&STEP::ObjectHelper::Construct ) +, SchemaEntry("document_identifier_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("document_product_association",&STEP::ObjectHelper::Construct ) +, SchemaEntry("document_product_equivalence",&STEP::ObjectHelper::Construct ) +, SchemaEntry("document_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("document_representation_type",&STEP::ObjectHelper::Construct ) +, SchemaEntry("document_type",&STEP::ObjectHelper::Construct ) +, SchemaEntry("document_usage_constraint",&STEP::ObjectHelper::Construct ) +, SchemaEntry("document_usage_role",&STEP::ObjectHelper::Construct ) +, SchemaEntry("dose_equivalent_measure_with_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("dose_equivalent_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("double_offset_shelled_solid",&STEP::ObjectHelper::Construct ) +, SchemaEntry("item_defined_transformation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("transformation_with_derived_angle",&STEP::ObjectHelper::Construct ) +, SchemaEntry("draped_defined_transformation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("draughting_annotation_occurrence",&STEP::ObjectHelper::Construct ) +, SchemaEntry("draughting_elements",&STEP::ObjectHelper::Construct ) +, SchemaEntry("draughting_model",&STEP::ObjectHelper::Construct ) +, SchemaEntry("item_identified_representation_usage",&STEP::ObjectHelper::Construct ) +, SchemaEntry("draughting_model_item_association",&STEP::ObjectHelper::Construct ) +, SchemaEntry("pre_defined_colour",&STEP::ObjectHelper::Construct ) +, SchemaEntry("draughting_pre_defined_colour",&STEP::ObjectHelper::Construct ) +, SchemaEntry("pre_defined_item",&STEP::ObjectHelper::Construct ) +, SchemaEntry("pre_defined_curve_font",&STEP::ObjectHelper::Construct ) +, SchemaEntry("draughting_pre_defined_curve_font",&STEP::ObjectHelper::Construct ) +, SchemaEntry("pre_defined_text_font",&STEP::ObjectHelper::Construct ) +, SchemaEntry("draughting_pre_defined_text_font",&STEP::ObjectHelper::Construct ) +, SchemaEntry("draughting_subfigure_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("draughting_symbol_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("text_literal",&STEP::ObjectHelper::Construct ) +, SchemaEntry("text_literal_with_delineation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("draughting_text_literal_with_delineation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("draughting_title",&STEP::ObjectHelper::Construct ) +, SchemaEntry("drawing_definition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("presentation_set",&STEP::ObjectHelper::Construct ) +, SchemaEntry("drawing_revision",&STEP::ObjectHelper::Construct ) +, SchemaEntry("drawing_revision_sequence",&STEP::ObjectHelper::Construct ) +, SchemaEntry("presentation_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("presentation_area",&STEP::ObjectHelper::Construct ) +, SchemaEntry("drawing_sheet_revision",&STEP::ObjectHelper::Construct ) +, SchemaEntry("drawing_sheet_revision_sequence",&STEP::ObjectHelper::Construct ) +, SchemaEntry("drawing_sheet_revision_usage",&STEP::ObjectHelper::Construct ) +, SchemaEntry("edge",&STEP::ObjectHelper::Construct ) +, SchemaEntry("edge_based_wireframe_model",&STEP::ObjectHelper::Construct ) +, SchemaEntry("edge_based_wireframe_shape_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("edge_blended_solid",&STEP::ObjectHelper::Construct ) +, SchemaEntry("edge_curve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("edge_loop",&STEP::ObjectHelper::Construct ) +, SchemaEntry("effectivity_context_role",&STEP::ObjectHelper::Construct ) +, SchemaEntry("effectivity_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("electric_charge_measure_with_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("electric_charge_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("electric_current_measure_with_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("electric_current_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("electric_potential_measure_with_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("electric_potential_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("elementary_brep_shape_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ellipse",&STEP::ObjectHelper::Construct ) +, SchemaEntry("energy_measure_with_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("energy_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("property_definition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("fact_type",&STEP::ObjectHelper::Construct ) +, SchemaEntry("entity_assertion",&STEP::ObjectHelper::Construct ) +, SchemaEntry("enum_reference_prefix",&STEP::ObjectHelper::Construct ) +, SchemaEntry("environment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("evaluated_characteristic",&STEP::ObjectHelper::Construct ) +, SchemaEntry("evaluated_degenerate_pcurve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("evaluation_product_definition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("event_occurrence",&STEP::ObjectHelper::Construct ) +, SchemaEntry("event_occurrence_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("event_occurrence_role",&STEP::ObjectHelper::Construct ) +, SchemaEntry("product_concept_feature_category",&STEP::ObjectHelper::Construct ) +, SchemaEntry("exclusive_product_concept_feature_category",&STEP::ObjectHelper::Construct ) +, SchemaEntry("uncertainty_qualifier",&STEP::ObjectHelper::Construct ) +, SchemaEntry("standard_uncertainty",&STEP::ObjectHelper::Construct ) +, SchemaEntry("expanded_uncertainty",&STEP::ObjectHelper::Construct ) +, SchemaEntry("representation_item_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("explicit_procedural_representation_item_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("explicit_procedural_geometric_representation_item_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("explicit_procedural_representation_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("explicit_procedural_shape_representation_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("expression_conversion_based_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("extension",&STEP::ObjectHelper::Construct ) +, SchemaEntry("extent",&STEP::ObjectHelper::Construct ) +, SchemaEntry("external_source",&STEP::ObjectHelper::Construct ) +, SchemaEntry("external_class_library",&STEP::ObjectHelper::Construct ) +, SchemaEntry("external_source_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("externally_defined_class",&STEP::ObjectHelper::Construct ) +, SchemaEntry("externally_defined_colour",&STEP::ObjectHelper::Construct ) +, SchemaEntry("externally_defined_context_dependent_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("externally_defined_conversion_based_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("externally_defined_currency",&STEP::ObjectHelper::Construct ) +, SchemaEntry("externally_defined_item",&STEP::ObjectHelper::Construct ) +, SchemaEntry("externally_defined_curve_font",&STEP::ObjectHelper::Construct ) +, SchemaEntry("externally_defined_dimension_definition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("externally_defined_general_property",&STEP::ObjectHelper::Construct ) +, SchemaEntry("externally_defined_hatch_style",&STEP::ObjectHelper::Construct ) +, SchemaEntry("externally_defined_item_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("externally_defined_marker",&STEP::ObjectHelper::Construct ) +, SchemaEntry("picture_representation_item",&STEP::ObjectHelper::Construct ) +, SchemaEntry("externally_defined_picture_representation_item",&STEP::ObjectHelper::Construct ) +, SchemaEntry("externally_defined_representation_item",&STEP::ObjectHelper::Construct ) +, SchemaEntry("externally_defined_string",&STEP::ObjectHelper::Construct ) +, SchemaEntry("externally_defined_symbol",&STEP::ObjectHelper::Construct ) +, SchemaEntry("externally_defined_terminator_symbol",&STEP::ObjectHelper::Construct ) +, SchemaEntry("externally_defined_text_font",&STEP::ObjectHelper::Construct ) +, SchemaEntry("externally_defined_tile",&STEP::ObjectHelper::Construct ) +, SchemaEntry("externally_defined_tile_style",&STEP::ObjectHelper::Construct ) +, SchemaEntry("swept_area_solid",&STEP::ObjectHelper::Construct ) +, SchemaEntry("extruded_area_solid",&STEP::ObjectHelper::Construct ) +, SchemaEntry("swept_face_solid",&STEP::ObjectHelper::Construct ) +, SchemaEntry("extruded_face_solid",&STEP::ObjectHelper::Construct ) +, SchemaEntry("extruded_face_solid_with_trim_conditions",&STEP::ObjectHelper::Construct ) +, SchemaEntry("extruded_face_solid_with_draft_angle",&STEP::ObjectHelper::Construct ) +, SchemaEntry("extruded_face_solid_with_multiple_draft_angles",&STEP::ObjectHelper::Construct ) +, SchemaEntry("face",&STEP::ObjectHelper::Construct ) +, SchemaEntry("face_based_surface_model",&STEP::ObjectHelper::Construct ) +, SchemaEntry("face_bound",&STEP::ObjectHelper::Construct ) +, SchemaEntry("face_outer_bound",&STEP::ObjectHelper::Construct ) +, SchemaEntry("faceted_brep",&STEP::ObjectHelper::Construct ) +, SchemaEntry("faceted_brep_shape_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("fill_area_style",&STEP::ObjectHelper::Construct ) +, SchemaEntry("fill_area_style_colour",&STEP::ObjectHelper::Construct ) +, SchemaEntry("fill_area_style_hatching",&STEP::ObjectHelper::Construct ) +, SchemaEntry("fill_area_style_tile_coloured_region",&STEP::ObjectHelper::Construct ) +, SchemaEntry("fill_area_style_tile_curve_with_style",&STEP::ObjectHelper::Construct ) +, SchemaEntry("fill_area_style_tile_symbol_with_style",&STEP::ObjectHelper::Construct ) +, SchemaEntry("fill_area_style_tiles",&STEP::ObjectHelper::Construct ) +, SchemaEntry("shape_representation_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("flat_pattern_ply_representation_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("flatness_tolerance",&STEP::ObjectHelper::Construct ) +, SchemaEntry("force_measure_with_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("force_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("forward_chaining_rule",&STEP::ObjectHelper::Construct ) +, SchemaEntry("forward_chaining_rule_premise",&STEP::ObjectHelper::Construct ) +, SchemaEntry("frequency_measure_with_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("frequency_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("func",&STEP::ObjectHelper::Construct ) +, SchemaEntry("functional_breakdown_context",&STEP::ObjectHelper::Construct ) +, SchemaEntry("functional_element_usage",&STEP::ObjectHelper::Construct ) +, SchemaEntry("functionally_defined_transformation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("general_material_property",&STEP::ObjectHelper::Construct ) +, SchemaEntry("general_property_association",&STEP::ObjectHelper::Construct ) +, SchemaEntry("simple_generic_expression",&STEP::ObjectHelper::Construct ) +, SchemaEntry("generic_literal",&STEP::ObjectHelper::Construct ) +, SchemaEntry("generic_variable",&STEP::ObjectHelper::Construct ) +, SchemaEntry("geometric_alignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("geometric_set",&STEP::ObjectHelper::Construct ) +, SchemaEntry("geometric_curve_set",&STEP::ObjectHelper::Construct ) +, SchemaEntry("geometric_intersection",&STEP::ObjectHelper::Construct ) +, SchemaEntry("geometric_item_specific_usage",&STEP::ObjectHelper::Construct ) +, SchemaEntry("geometric_model_element_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("representation_context",&STEP::ObjectHelper::Construct ) +, SchemaEntry("geometric_representation_context",&STEP::ObjectHelper::Construct ) +, SchemaEntry("geometric_tolerance_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("geometric_tolerance_with_defined_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("geometrical_tolerance_callout",&STEP::ObjectHelper::Construct ) +, SchemaEntry("geometrically_bounded_2d_wireframe_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("geometrically_bounded_surface_shape_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("geometrically_bounded_wireframe_shape_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("global_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("global_uncertainty_assigned_context",&STEP::ObjectHelper::Construct ) +, SchemaEntry("global_unit_assigned_context",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ground_fact",&STEP::ObjectHelper::Construct ) +, SchemaEntry("group_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("hardness_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("hidden_element_over_riding_styled_item",&STEP::ObjectHelper::Construct ) +, SchemaEntry("hyperbola",&STEP::ObjectHelper::Construct ) +, SchemaEntry("id_attribute",&STEP::ObjectHelper::Construct ) +, SchemaEntry("identification_role",&STEP::ObjectHelper::Construct ) +, SchemaEntry("illuminance_measure_with_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("illuminance_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("included_text_block",&STEP::ObjectHelper::Construct ) +, SchemaEntry("inclusion_product_concept_feature",&STEP::ObjectHelper::Construct ) +, SchemaEntry("user_selected_elements",&STEP::ObjectHelper::Construct ) +, SchemaEntry("indirectly_selected_elements",&STEP::ObjectHelper::Construct ) +, SchemaEntry("indirectly_selected_shape_elements",&STEP::ObjectHelper::Construct ) +, SchemaEntry("inductance_measure_with_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("inductance_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("information_right",&STEP::ObjectHelper::Construct ) +, SchemaEntry("information_usage_right",&STEP::ObjectHelper::Construct ) +, SchemaEntry("instance_usage_context_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("instanced_feature",&STEP::ObjectHelper::Construct ) +, SchemaEntry("literal_number",&STEP::ObjectHelper::Construct ) +, SchemaEntry("int_literal",&STEP::ObjectHelper::Construct ) +, SchemaEntry("integer_representation_item",&STEP::ObjectHelper::Construct ) +, SchemaEntry("surface_curve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("intersection_curve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("interval_expression",&STEP::ObjectHelper::Construct ) +, SchemaEntry("iso4217_currency",&STEP::ObjectHelper::Construct ) +, SchemaEntry("known_source",&STEP::ObjectHelper::Construct ) +, SchemaEntry("laid_defined_transformation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("language",&STEP::ObjectHelper::Construct ) +, SchemaEntry("leader_curve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("leader_directed_callout",&STEP::ObjectHelper::Construct ) +, SchemaEntry("leader_directed_dimension",&STEP::ObjectHelper::Construct ) +, SchemaEntry("leader_terminator",&STEP::ObjectHelper::Construct ) +, SchemaEntry("length_measure_with_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("length_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("light_source",&STEP::ObjectHelper::Construct ) +, SchemaEntry("light_source_ambient",&STEP::ObjectHelper::Construct ) +, SchemaEntry("light_source_directional",&STEP::ObjectHelper::Construct ) +, SchemaEntry("light_source_positional",&STEP::ObjectHelper::Construct ) +, SchemaEntry("light_source_spot",&STEP::ObjectHelper::Construct ) +, SchemaEntry("limits_and_fits",&STEP::ObjectHelper::Construct ) +, SchemaEntry("line",&STEP::ObjectHelper::Construct ) +, SchemaEntry("line_profile_tolerance",&STEP::ObjectHelper::Construct ) +, SchemaEntry("linear_dimension",&STEP::ObjectHelper::Construct ) +, SchemaEntry("simple_clause",&STEP::ObjectHelper::Construct ) +, SchemaEntry("literal_conjunction",&STEP::ObjectHelper::Construct ) +, SchemaEntry("literal_disjunction",&STEP::ObjectHelper::Construct ) +, SchemaEntry("local_time",&STEP::ObjectHelper::Construct ) +, SchemaEntry("logical_literal",&STEP::ObjectHelper::Construct ) +, SchemaEntry("logical_representation_item",&STEP::ObjectHelper::Construct ) +, SchemaEntry("loop",&STEP::ObjectHelper::Construct ) +, SchemaEntry("loss_tangent_measure_with_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("lot_effectivity",&STEP::ObjectHelper::Construct ) +, SchemaEntry("luminous_flux_measure_with_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("luminous_flux_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("luminous_intensity_measure_with_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("luminous_intensity_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("magnetic_flux_density_measure_with_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("magnetic_flux_density_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("magnetic_flux_measure_with_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("magnetic_flux_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("make_from_usage_option",&STEP::ObjectHelper::Construct ) +, SchemaEntry("manifold_subsurface_shape_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("manifold_surface_shape_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("mass_measure_with_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("mass_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("material_designation_characterization",&STEP::ObjectHelper::Construct ) +, SchemaEntry("material_property",&STEP::ObjectHelper::Construct ) +, SchemaEntry("property_definition_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("material_property_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("measure_qualification",&STEP::ObjectHelper::Construct ) +, SchemaEntry("measure_representation_item",&STEP::ObjectHelper::Construct ) +, SchemaEntry("product_context",&STEP::ObjectHelper::Construct ) +, SchemaEntry("mechanical_context",&STEP::ObjectHelper::Construct ) +, SchemaEntry("mechanical_design_and_draughting_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("mechanical_design_geometric_presentation_area",&STEP::ObjectHelper::Construct ) +, SchemaEntry("mechanical_design_geometric_presentation_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("mechanical_design_presentation_representation_with_draughting",&STEP::ObjectHelper::Construct ) +, SchemaEntry("mechanical_design_shaded_presentation_area",&STEP::ObjectHelper::Construct ) +, SchemaEntry("mechanical_design_shaded_presentation_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("min_and_major_ply_orientation_basis",&STEP::ObjectHelper::Construct ) +, SchemaEntry("modified_geometric_tolerance",&STEP::ObjectHelper::Construct ) +, SchemaEntry("modified_solid_with_placed_configuration",&STEP::ObjectHelper::Construct ) +, SchemaEntry("moments_of_inertia_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("multi_language_attribute_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("multiple_arity_boolean_expression",&STEP::ObjectHelper::Construct ) +, SchemaEntry("multiple_arity_generic_expression",&STEP::ObjectHelper::Construct ) +, SchemaEntry("multiple_arity_numeric_expression",&STEP::ObjectHelper::Construct ) +, SchemaEntry("name_attribute",&STEP::ObjectHelper::Construct ) +, SchemaEntry("next_assembly_usage_occurrence",&STEP::ObjectHelper::Construct ) +, SchemaEntry("non_manifold_surface_shape_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("null_representation_item",&STEP::ObjectHelper::Construct ) +, SchemaEntry("numeric_expression",&STEP::ObjectHelper::Construct ) +, SchemaEntry("object_role",&STEP::ObjectHelper::Construct ) +, SchemaEntry("offset_curve_2d",&STEP::ObjectHelper::Construct ) +, SchemaEntry("offset_curve_3d",&STEP::ObjectHelper::Construct ) +, SchemaEntry("offset_surface",&STEP::ObjectHelper::Construct ) +, SchemaEntry("one_direction_repeat_factor",&STEP::ObjectHelper::Construct ) +, SchemaEntry("open_shell",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ordinal_date",&STEP::ObjectHelper::Construct ) +, SchemaEntry("projection_directed_callout",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ordinate_dimension",&STEP::ObjectHelper::Construct ) +, SchemaEntry("organization",&STEP::ObjectHelper::Construct ) +, SchemaEntry("organization_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("organization_role",&STEP::ObjectHelper::Construct ) +, SchemaEntry("organizational_address",&STEP::ObjectHelper::Construct ) +, SchemaEntry("organizational_project",&STEP::ObjectHelper::Construct ) +, SchemaEntry("organizational_project_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("organizational_project_role",&STEP::ObjectHelper::Construct ) +, SchemaEntry("oriented_closed_shell",&STEP::ObjectHelper::Construct ) +, SchemaEntry("oriented_edge",&STEP::ObjectHelper::Construct ) +, SchemaEntry("oriented_face",&STEP::ObjectHelper::Construct ) +, SchemaEntry("oriented_open_shell",&STEP::ObjectHelper::Construct ) +, SchemaEntry("path",&STEP::ObjectHelper::Construct ) +, SchemaEntry("oriented_path",&STEP::ObjectHelper::Construct ) +, SchemaEntry("oriented_surface",&STEP::ObjectHelper::Construct ) +, SchemaEntry("outer_boundary_curve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("package_product_concept_feature",&STEP::ObjectHelper::Construct ) +, SchemaEntry("parabola",&STEP::ObjectHelper::Construct ) +, SchemaEntry("parallel_offset",&STEP::ObjectHelper::Construct ) +, SchemaEntry("parallelism_tolerance",&STEP::ObjectHelper::Construct ) +, SchemaEntry("parametric_representation_context",&STEP::ObjectHelper::Construct ) +, SchemaEntry("partial_document_with_structured_text_representation_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("pcurve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("percentage_laminate_definition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("zone_structural_makeup",&STEP::ObjectHelper::Construct ) +, SchemaEntry("percentage_laminate_table",&STEP::ObjectHelper::Construct ) +, SchemaEntry("percentage_ply_definition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("perpendicular_to",&STEP::ObjectHelper::Construct ) +, SchemaEntry("perpendicularity_tolerance",&STEP::ObjectHelper::Construct ) +, SchemaEntry("person",&STEP::ObjectHelper::Construct ) +, SchemaEntry("person_and_organization",&STEP::ObjectHelper::Construct ) +, SchemaEntry("person_and_organization_address",&STEP::ObjectHelper::Construct ) +, SchemaEntry("person_and_organization_role",&STEP::ObjectHelper::Construct ) +, SchemaEntry("personal_address",&STEP::ObjectHelper::Construct ) +, SchemaEntry("physical_breakdown_context",&STEP::ObjectHelper::Construct ) +, SchemaEntry("physical_element_usage",&STEP::ObjectHelper::Construct ) +, SchemaEntry("presentation_view",&STEP::ObjectHelper::Construct ) +, SchemaEntry("picture_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("placed_datum_target_feature",&STEP::ObjectHelper::Construct ) +, SchemaEntry("placed_feature",&STEP::ObjectHelper::Construct ) +, SchemaEntry("planar_extent",&STEP::ObjectHelper::Construct ) +, SchemaEntry("planar_box",&STEP::ObjectHelper::Construct ) +, SchemaEntry("plane",&STEP::ObjectHelper::Construct ) +, SchemaEntry("plane_angle_measure_with_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("plane_angle_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("plus_minus_tolerance",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ply_laminate_definition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ply_laminate_sequence_definition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ply_laminate_table",&STEP::ObjectHelper::Construct ) +, SchemaEntry("point_and_vector",&STEP::ObjectHelper::Construct ) +, SchemaEntry("point_on_curve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("point_on_surface",&STEP::ObjectHelper::Construct ) +, SchemaEntry("point_path",&STEP::ObjectHelper::Construct ) +, SchemaEntry("point_replica",&STEP::ObjectHelper::Construct ) +, SchemaEntry("point_style",&STEP::ObjectHelper::Construct ) +, SchemaEntry("polar_complex_number_literal",&STEP::ObjectHelper::Construct ) +, SchemaEntry("poly_loop",&STEP::ObjectHelper::Construct ) +, SchemaEntry("polyline",&STEP::ObjectHelper::Construct ) +, SchemaEntry("position_tolerance",&STEP::ObjectHelper::Construct ) +, SchemaEntry("positioned_sketch",&STEP::ObjectHelper::Construct ) +, SchemaEntry("power_measure_with_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("power_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("pre_defined_symbol",&STEP::ObjectHelper::Construct ) +, SchemaEntry("pre_defined_dimension_symbol",&STEP::ObjectHelper::Construct ) +, SchemaEntry("pre_defined_geometrical_tolerance_symbol",&STEP::ObjectHelper::Construct ) +, SchemaEntry("pre_defined_marker",&STEP::ObjectHelper::Construct ) +, SchemaEntry("pre_defined_point_marker_symbol",&STEP::ObjectHelper::Construct ) +, SchemaEntry("pre_defined_surface_condition_symbol",&STEP::ObjectHelper::Construct ) +, SchemaEntry("pre_defined_surface_side_style",&STEP::ObjectHelper::Construct ) +, SchemaEntry("pre_defined_terminator_symbol",&STEP::ObjectHelper::Construct ) +, SchemaEntry("pre_defined_tile",&STEP::ObjectHelper::Construct ) +, SchemaEntry("precision_qualifier",&STEP::ObjectHelper::Construct ) +, SchemaEntry("predefined_picture_representation_item",&STEP::ObjectHelper::Construct ) +, SchemaEntry("presentation_layer_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("presentation_size",&STEP::ObjectHelper::Construct ) +, SchemaEntry("presentation_style_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("presentation_style_by_context",&STEP::ObjectHelper::Construct ) +, SchemaEntry("presented_item_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("pressure_measure_with_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("pressure_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("procedural_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("procedural_representation_sequence",&STEP::ObjectHelper::Construct ) +, SchemaEntry("procedural_shape_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("procedural_shape_representation_sequence",&STEP::ObjectHelper::Construct ) +, SchemaEntry("product",&STEP::ObjectHelper::Construct ) +, SchemaEntry("product_category",&STEP::ObjectHelper::Construct ) +, SchemaEntry("product_class",&STEP::ObjectHelper::Construct ) +, SchemaEntry("product_concept",&STEP::ObjectHelper::Construct ) +, SchemaEntry("product_concept_context",&STEP::ObjectHelper::Construct ) +, SchemaEntry("product_concept_feature_association",&STEP::ObjectHelper::Construct ) +, SchemaEntry("product_concept_feature_category_usage",&STEP::ObjectHelper::Construct ) +, SchemaEntry("product_concept_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("product_definition_context_association",&STEP::ObjectHelper::Construct ) +, SchemaEntry("product_definition_context_role",&STEP::ObjectHelper::Construct ) +, SchemaEntry("product_definition_element_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("product_definition_formation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("product_definition_formation_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("product_definition_formation_with_specified_source",&STEP::ObjectHelper::Construct ) +, SchemaEntry("product_definition_group_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("product_definition_occurrence_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("product_definition_shape",&STEP::ObjectHelper::Construct ) +, SchemaEntry("product_definition_substitute",&STEP::ObjectHelper::Construct ) +, SchemaEntry("product_definition_with_associated_documents",&STEP::ObjectHelper::Construct ) +, SchemaEntry("product_identification",&STEP::ObjectHelper::Construct ) +, SchemaEntry("product_material_composition_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("product_related_product_category",&STEP::ObjectHelper::Construct ) +, SchemaEntry("product_specification",&STEP::ObjectHelper::Construct ) +, SchemaEntry("tolerance_zone_definition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("projected_zone_definition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("projection_curve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("promissory_usage_occurrence",&STEP::ObjectHelper::Construct ) +, SchemaEntry("property_definition_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("qualified_representation_item",&STEP::ObjectHelper::Construct ) +, SchemaEntry("qualitative_uncertainty",&STEP::ObjectHelper::Construct ) +, SchemaEntry("quantified_assembly_component_usage",&STEP::ObjectHelper::Construct ) +, SchemaEntry("quasi_uniform_curve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("quasi_uniform_surface",&STEP::ObjectHelper::Construct ) +, SchemaEntry("radioactivity_measure_with_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("radioactivity_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("radius_dimension",&STEP::ObjectHelper::Construct ) +, SchemaEntry("range_characteristic",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ratio_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("rational_b_spline_curve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("rational_b_spline_surface",&STEP::ObjectHelper::Construct ) +, SchemaEntry("rational_representation_item",&STEP::ObjectHelper::Construct ) +, SchemaEntry("real_literal",&STEP::ObjectHelper::Construct ) +, SchemaEntry("real_representation_item",&STEP::ObjectHelper::Construct ) +, SchemaEntry("rectangular_composite_surface",&STEP::ObjectHelper::Construct ) +, SchemaEntry("rectangular_trimmed_surface",&STEP::ObjectHelper::Construct ) +, SchemaEntry("referenced_modified_datum",&STEP::ObjectHelper::Construct ) +, SchemaEntry("relative_event_occurrence",&STEP::ObjectHelper::Construct ) +, SchemaEntry("rep_item_group",&STEP::ObjectHelper::Construct ) +, SchemaEntry("reparametrised_composite_curve_segment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("representation_relationship_with_transformation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("requirement_assigned_object",&STEP::ObjectHelper::Construct ) +, SchemaEntry("requirement_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("requirement_source",&STEP::ObjectHelper::Construct ) +, SchemaEntry("requirement_view_definition_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("resistance_measure_with_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("resistance_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("revolved_area_solid",&STEP::ObjectHelper::Construct ) +, SchemaEntry("revolved_face_solid",&STEP::ObjectHelper::Construct ) +, SchemaEntry("revolved_face_solid_with_trim_conditions",&STEP::ObjectHelper::Construct ) +, SchemaEntry("right_angular_wedge",&STEP::ObjectHelper::Construct ) +, SchemaEntry("right_circular_cone",&STEP::ObjectHelper::Construct ) +, SchemaEntry("right_circular_cylinder",&STEP::ObjectHelper::Construct ) +, SchemaEntry("right_to_usage_association",&STEP::ObjectHelper::Construct ) +, SchemaEntry("role_association",&STEP::ObjectHelper::Construct ) +, SchemaEntry("roundness_tolerance",&STEP::ObjectHelper::Construct ) +, SchemaEntry("row_representation_item",&STEP::ObjectHelper::Construct ) +, SchemaEntry("row_value",&STEP::ObjectHelper::Construct ) +, SchemaEntry("row_variable",&STEP::ObjectHelper::Construct ) +, SchemaEntry("rule_action",&STEP::ObjectHelper::Construct ) +, SchemaEntry("rule_condition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("rule_set",&STEP::ObjectHelper::Construct ) +, SchemaEntry("rule_set_group",&STEP::ObjectHelper::Construct ) +, SchemaEntry("rule_superseded_assignment",&STEP::ObjectHelper::Construct ) +, SchemaEntry("rule_supersedence",&STEP::ObjectHelper::Construct ) +, SchemaEntry("surface_curve_swept_area_solid",&STEP::ObjectHelper::Construct ) +, SchemaEntry("ruled_surface_swept_area_solid",&STEP::ObjectHelper::Construct ) +, SchemaEntry("runout_zone_definition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("runout_zone_orientation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("runout_zone_orientation_reference_direction",&STEP::ObjectHelper::Construct ) +, SchemaEntry("satisfied_requirement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("satisfies_requirement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("satisfying_item",&STEP::ObjectHelper::Construct ) +, SchemaEntry("scalar_variable",&STEP::ObjectHelper::Construct ) +, SchemaEntry("scattering_parameter",&STEP::ObjectHelper::Construct ) +, SchemaEntry("sculptured_solid",&STEP::ObjectHelper::Construct ) +, SchemaEntry("seam_curve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("security_classification",&STEP::ObjectHelper::Construct ) +, SchemaEntry("security_classification_level",&STEP::ObjectHelper::Construct ) +, SchemaEntry("serial_numbered_effectivity",&STEP::ObjectHelper::Construct ) +, SchemaEntry("shape_aspect_associativity",&STEP::ObjectHelper::Construct ) +, SchemaEntry("shape_aspect_deriving_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("shape_definition_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("shape_dimension_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("shape_feature_definition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("shape_representation_with_parameters",&STEP::ObjectHelper::Construct ) +, SchemaEntry("shell_based_surface_model",&STEP::ObjectHelper::Construct ) +, SchemaEntry("shell_based_wireframe_model",&STEP::ObjectHelper::Construct ) +, SchemaEntry("shell_based_wireframe_shape_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("si_absorbed_dose_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("si_capacitance_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("si_conductance_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("si_dose_equivalent_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("si_electric_charge_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("si_electric_potential_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("si_energy_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("si_force_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("si_frequency_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("si_illuminance_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("si_inductance_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("si_magnetic_flux_density_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("si_magnetic_flux_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("si_power_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("si_pressure_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("si_radioactivity_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("si_resistance_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("si_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("simple_boolean_expression",&STEP::ObjectHelper::Construct ) +, SchemaEntry("simple_numeric_expression",&STEP::ObjectHelper::Construct ) +, SchemaEntry("slash_expression",&STEP::ObjectHelper::Construct ) +, SchemaEntry("smeared_material_definition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("solid_angle_measure_with_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("solid_angle_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("solid_curve_font",&STEP::ObjectHelper::Construct ) +, SchemaEntry("solid_replica",&STEP::ObjectHelper::Construct ) +, SchemaEntry("solid_with_chamfered_edges",&STEP::ObjectHelper::Construct ) +, SchemaEntry("solid_with_angle_based_chamfer",&STEP::ObjectHelper::Construct ) +, SchemaEntry("solid_with_shape_element_pattern",&STEP::ObjectHelper::Construct ) +, SchemaEntry("solid_with_circular_pattern",&STEP::ObjectHelper::Construct ) +, SchemaEntry("solid_with_depression",&STEP::ObjectHelper::Construct ) +, SchemaEntry("solid_with_pocket",&STEP::ObjectHelper::Construct ) +, SchemaEntry("solid_with_circular_pocket",&STEP::ObjectHelper::Construct ) +, SchemaEntry("solid_with_protrusion",&STEP::ObjectHelper::Construct ) +, SchemaEntry("solid_with_circular_protrusion",&STEP::ObjectHelper::Construct ) +, SchemaEntry("solid_with_hole",&STEP::ObjectHelper::Construct ) +, SchemaEntry("solid_with_stepped_round_hole",&STEP::ObjectHelper::Construct ) +, SchemaEntry("solid_with_conical_bottom_round_hole",&STEP::ObjectHelper::Construct ) +, SchemaEntry("solid_with_constant_radius_edge_blend",&STEP::ObjectHelper::Construct ) +, SchemaEntry("solid_with_slot",&STEP::ObjectHelper::Construct ) +, SchemaEntry("solid_with_curved_slot",&STEP::ObjectHelper::Construct ) +, SchemaEntry("solid_with_double_offset_chamfer",&STEP::ObjectHelper::Construct ) +, SchemaEntry("solid_with_flat_bottom_round_hole",&STEP::ObjectHelper::Construct ) +, SchemaEntry("solid_with_general_pocket",&STEP::ObjectHelper::Construct ) +, SchemaEntry("solid_with_general_protrusion",&STEP::ObjectHelper::Construct ) +, SchemaEntry("solid_with_groove",&STEP::ObjectHelper::Construct ) +, SchemaEntry("solid_with_incomplete_circular_pattern",&STEP::ObjectHelper::Construct ) +, SchemaEntry("solid_with_rectangular_pattern",&STEP::ObjectHelper::Construct ) +, SchemaEntry("solid_with_incomplete_rectangular_pattern",&STEP::ObjectHelper::Construct ) +, SchemaEntry("solid_with_rectangular_pocket",&STEP::ObjectHelper::Construct ) +, SchemaEntry("solid_with_rectangular_protrusion",&STEP::ObjectHelper::Construct ) +, SchemaEntry("solid_with_single_offset_chamfer",&STEP::ObjectHelper::Construct ) +, SchemaEntry("solid_with_spherical_bottom_round_hole",&STEP::ObjectHelper::Construct ) +, SchemaEntry("solid_with_stepped_round_hole_and_conical_transitions",&STEP::ObjectHelper::Construct ) +, SchemaEntry("solid_with_straight_slot",&STEP::ObjectHelper::Construct ) +, SchemaEntry("solid_with_tee_section_slot",&STEP::ObjectHelper::Construct ) +, SchemaEntry("solid_with_through_depression",&STEP::ObjectHelper::Construct ) +, SchemaEntry("solid_with_trapezoidal_section_slot",&STEP::ObjectHelper::Construct ) +, SchemaEntry("solid_with_variable_radius_edge_blend",&STEP::ObjectHelper::Construct ) +, SchemaEntry("source_for_requirement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("sourced_requirement",&STEP::ObjectHelper::Construct ) +, SchemaEntry("specification_definition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("specified_higher_usage_occurrence",&STEP::ObjectHelper::Construct ) +, SchemaEntry("sphere",&STEP::ObjectHelper::Construct ) +, SchemaEntry("spherical_surface",&STEP::ObjectHelper::Construct ) +, SchemaEntry("start_request",&STEP::ObjectHelper::Construct ) +, SchemaEntry("start_work",&STEP::ObjectHelper::Construct ) +, SchemaEntry("straightness_tolerance",&STEP::ObjectHelper::Construct ) +, SchemaEntry("structured_dimension_callout",&STEP::ObjectHelper::Construct ) +, SchemaEntry("structured_text_composition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("structured_text_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("subedge",&STEP::ObjectHelper::Construct ) +, SchemaEntry("subface",&STEP::ObjectHelper::Construct ) +, SchemaEntry("supplied_part_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("surface_condition_callout",&STEP::ObjectHelper::Construct ) +, SchemaEntry("swept_surface",&STEP::ObjectHelper::Construct ) +, SchemaEntry("surface_of_linear_extrusion",&STEP::ObjectHelper::Construct ) +, SchemaEntry("surface_of_revolution",&STEP::ObjectHelper::Construct ) +, SchemaEntry("surface_patch",&STEP::ObjectHelper::Construct ) +, SchemaEntry("surface_profile_tolerance",&STEP::ObjectHelper::Construct ) +, SchemaEntry("surface_rendering_properties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("surface_replica",&STEP::ObjectHelper::Construct ) +, SchemaEntry("surface_side_style",&STEP::ObjectHelper::Construct ) +, SchemaEntry("surface_style_boundary",&STEP::ObjectHelper::Construct ) +, SchemaEntry("surface_style_control_grid",&STEP::ObjectHelper::Construct ) +, SchemaEntry("surface_style_fill_area",&STEP::ObjectHelper::Construct ) +, SchemaEntry("surface_style_parameter_line",&STEP::ObjectHelper::Construct ) +, SchemaEntry("surface_style_reflectance_ambient",&STEP::ObjectHelper::Construct ) +, SchemaEntry("surface_style_reflectance_ambient_diffuse",&STEP::ObjectHelper::Construct ) +, SchemaEntry("surface_style_reflectance_ambient_diffuse_specular",&STEP::ObjectHelper::Construct ) +, SchemaEntry("surface_style_rendering",&STEP::ObjectHelper::Construct ) +, SchemaEntry("surface_style_rendering_with_properties",&STEP::ObjectHelper::Construct ) +, SchemaEntry("surface_style_segmentation_curve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("surface_style_silhouette",&STEP::ObjectHelper::Construct ) +, SchemaEntry("surface_style_transparent",&STEP::ObjectHelper::Construct ) +, SchemaEntry("surface_style_usage",&STEP::ObjectHelper::Construct ) +, SchemaEntry("surface_texture_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("surfaced_open_shell",&STEP::ObjectHelper::Construct ) +, SchemaEntry("swept_disk_solid",&STEP::ObjectHelper::Construct ) +, SchemaEntry("symbol",&STEP::ObjectHelper::Construct ) +, SchemaEntry("symbol_colour",&STEP::ObjectHelper::Construct ) +, SchemaEntry("symbol_representation_map",&STEP::ObjectHelper::Construct ) +, SchemaEntry("symbol_style",&STEP::ObjectHelper::Construct ) +, SchemaEntry("symbol_target",&STEP::ObjectHelper::Construct ) +, SchemaEntry("symmetric_shape_aspect",&STEP::ObjectHelper::Construct ) +, SchemaEntry("symmetry_tolerance",&STEP::ObjectHelper::Construct ) +, SchemaEntry("table_representation_item",&STEP::ObjectHelper::Construct ) +, SchemaEntry("tactile_appearance_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("tagged_text_format",&STEP::ObjectHelper::Construct ) +, SchemaEntry("tagged_text_item",&STEP::ObjectHelper::Construct ) +, SchemaEntry("tangent",&STEP::ObjectHelper::Construct ) +, SchemaEntry("text_font",&STEP::ObjectHelper::Construct ) +, SchemaEntry("text_font_family",&STEP::ObjectHelper::Construct ) +, SchemaEntry("text_font_in_family",&STEP::ObjectHelper::Construct ) +, SchemaEntry("text_literal_with_associated_curves",&STEP::ObjectHelper::Construct ) +, SchemaEntry("text_literal_with_blanking_box",&STEP::ObjectHelper::Construct ) +, SchemaEntry("text_literal_with_extent",&STEP::ObjectHelper::Construct ) +, SchemaEntry("text_string_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("text_style",&STEP::ObjectHelper::Construct ) +, SchemaEntry("text_style_for_defined_font",&STEP::ObjectHelper::Construct ) +, SchemaEntry("text_style_with_box_characteristics",&STEP::ObjectHelper::Construct ) +, SchemaEntry("text_style_with_mirror",&STEP::ObjectHelper::Construct ) +, SchemaEntry("text_style_with_spacing",&STEP::ObjectHelper::Construct ) +, SchemaEntry("thermal_resistance_measure_with_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("thermal_resistance_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("thermodynamic_temperature_measure_with_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("thermodynamic_temperature_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("thickened_face_solid",&STEP::ObjectHelper::Construct ) +, SchemaEntry("thickness_laminate_definition",&STEP::ObjectHelper::Construct ) +, SchemaEntry("thickness_laminate_table",&STEP::ObjectHelper::Construct ) +, SchemaEntry("time_interval",&STEP::ObjectHelper::Construct ) +, SchemaEntry("time_interval_based_effectivity",&STEP::ObjectHelper::Construct ) +, SchemaEntry("time_interval_relationship",&STEP::ObjectHelper::Construct ) +, SchemaEntry("time_interval_role",&STEP::ObjectHelper::Construct ) +, SchemaEntry("time_interval_with_bounds",&STEP::ObjectHelper::Construct ) +, SchemaEntry("time_measure_with_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("time_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("tolerance_value",&STEP::ObjectHelper::Construct ) +, SchemaEntry("tolerance_zone",&STEP::ObjectHelper::Construct ) +, SchemaEntry("tolerance_zone_form",&STEP::ObjectHelper::Construct ) +, SchemaEntry("torus",&STEP::ObjectHelper::Construct ) +, SchemaEntry("total_runout_tolerance",&STEP::ObjectHelper::Construct ) +, SchemaEntry("track_blended_solid",&STEP::ObjectHelper::Construct ) +, SchemaEntry("track_blended_solid_with_end_conditions",&STEP::ObjectHelper::Construct ) +, SchemaEntry("trimmed_curve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("two_direction_repeat_factor",&STEP::ObjectHelper::Construct ) +, SchemaEntry("type_qualifier",&STEP::ObjectHelper::Construct ) +, SchemaEntry("unary_generic_expression",&STEP::ObjectHelper::Construct ) +, SchemaEntry("unary_numeric_expression",&STEP::ObjectHelper::Construct ) +, SchemaEntry("uncertainty_assigned_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("uncertainty_measure_with_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("uniform_curve",&STEP::ObjectHelper::Construct ) +, SchemaEntry("uniform_resource_identifier",&STEP::ObjectHelper::Construct ) +, SchemaEntry("uniform_surface",&STEP::ObjectHelper::Construct ) +, SchemaEntry("usage_association",&STEP::ObjectHelper::Construct ) +, SchemaEntry("user_defined_curve_font",&STEP::ObjectHelper::Construct ) +, SchemaEntry("user_defined_marker",&STEP::ObjectHelper::Construct ) +, SchemaEntry("user_defined_terminator_symbol",&STEP::ObjectHelper::Construct ) +, SchemaEntry("user_selected_shape_elements",&STEP::ObjectHelper::Construct ) +, SchemaEntry("value_range",&STEP::ObjectHelper::Construct ) +, SchemaEntry("value_representation_item",&STEP::ObjectHelper::Construct ) +, SchemaEntry("variable_semantics",&STEP::ObjectHelper::Construct ) +, SchemaEntry("variational_representation_item",&STEP::ObjectHelper::Construct ) +, SchemaEntry("vector",&STEP::ObjectHelper::Construct ) +, SchemaEntry("vector_style",&STEP::ObjectHelper::Construct ) +, SchemaEntry("velocity_measure_with_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("velocity_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("versioned_action_request",&STEP::ObjectHelper::Construct ) +, SchemaEntry("vertex",&STEP::ObjectHelper::Construct ) +, SchemaEntry("vertex_loop",&STEP::ObjectHelper::Construct ) +, SchemaEntry("vertex_point",&STEP::ObjectHelper::Construct ) +, SchemaEntry("vertex_shell",&STEP::ObjectHelper::Construct ) +, SchemaEntry("view_volume",&STEP::ObjectHelper::Construct ) +, SchemaEntry("visual_appearance_representation",&STEP::ObjectHelper::Construct ) +, SchemaEntry("volume_measure_with_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("volume_unit",&STEP::ObjectHelper::Construct ) +, SchemaEntry("week_of_year_and_day_date",&STEP::ObjectHelper::Construct ) +, SchemaEntry("wire_shell",&STEP::ObjectHelper::Construct ) +, SchemaEntry("year_month",&STEP::ObjectHelper::Construct ) + + }; +} + +// ----------------------------------------------------------------------------------------------------------- +void StepFile::GetSchema(EXPRESS::ConversionSchema& out) +{ + out = EXPRESS::ConversionSchema(schema_raw); +} + +namespace STEP { + + // ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const STEP::DB& db, const LIST& params, NotImplemented* in) +{ + return 0; +} + +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, measure_with_unit* in) +{ + size_t base = 0; + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to measure_with_unit"); } do { // convert the 'value_component' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->value_component, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to measure_with_unit to be a `measure_value`")); } + } while(0); + do { // convert the 'unit_component' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + try { GenericConvert( in->unit_component, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to measure_with_unit to be a `unit`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, absorbed_dose_measure_with_unit* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to absorbed_dose_measure_with_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, derived_unit* in) +{ + size_t base = 0; + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to derived_unit"); } do { // convert the 'elements' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->elements, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to derived_unit to be a `SET [1:?] OF derived_unit_element`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, absorbed_dose_unit* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to absorbed_dose_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, abstract_variable* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, acceleration_measure_with_unit* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to acceleration_measure_with_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, acceleration_unit* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to acceleration_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, action* in) +{ + size_t base = 0; + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to action"); } do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->name, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to action to be a `label`")); } + } while(0); + do { // convert the 'description' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->description, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to action to be a `text`")); } + } while(0); + do { // convert the 'chosen_method' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2]=true; break; } + try { GenericConvert( in->chosen_method, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to action to be a `action_method`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, action_assignment* in) +{ + size_t base = 0; + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to action_assignment"); } do { // convert the 'assigned_action' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->assigned_action, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to action_assignment to be a `action`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, action_method* in) +{ + size_t base = 0; + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to action_method"); } do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->name, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to action_method to be a `label`")); } + } while(0); + do { // convert the 'description' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->description, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to action_method to be a `text`")); } + } while(0); + do { // convert the 'consequence' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2]=true; break; } + try { GenericConvert( in->consequence, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to action_method to be a `text`")); } + } while(0); + do { // convert the 'purpose' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[3]=true; break; } + try { GenericConvert( in->purpose, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to action_method to be a `text`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, action_method_assignment* in) +{ + size_t base = 0; + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to action_method_assignment"); } do { // convert the 'assigned_action_method' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->assigned_action_method, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to action_method_assignment to be a `action_method`")); } + } while(0); + do { // convert the 'role' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + try { GenericConvert( in->role, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to action_method_assignment to be a `action_method_role`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, action_method_relationship* in) +{ + size_t base = 0; + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to action_method_relationship"); } do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->name, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to action_method_relationship to be a `label`")); } + } while(0); + do { // convert the 'description' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->description, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to action_method_relationship to be a `text`")); } + } while(0); + do { // convert the 'relating_method' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2]=true; break; } + try { GenericConvert( in->relating_method, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to action_method_relationship to be a `action_method`")); } + } while(0); + do { // convert the 'related_method' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[3]=true; break; } + try { GenericConvert( in->related_method, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to action_method_relationship to be a `action_method`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, action_request_assignment* in) +{ + size_t base = 0; + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to action_request_assignment"); } do { // convert the 'assigned_action_request' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->assigned_action_request, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to action_request_assignment to be a `versioned_action_request`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill
(const DB& db, const LIST& params, address* in) +{ + size_t base = 0; + if (params.GetSize() < 12) { throw STEP::TypeError("expected 12 arguments to address"); } do { // convert the 'internal_location' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->internal_location, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to address to be a `label`")); } + } while(0); + do { // convert the 'street_number' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->street_number, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to address to be a `label`")); } + } while(0); + do { // convert the 'street' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->street, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to address to be a `label`")); } + } while(0); + do { // convert the 'postal_box' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[3]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->postal_box, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to address to be a `label`")); } + } while(0); + do { // convert the 'town' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[4]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->town, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to address to be a `label`")); } + } while(0); + do { // convert the 'region' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[5]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->region, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to address to be a `label`")); } + } while(0); + do { // convert the 'postal_code' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[6]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->postal_code, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 6 to address to be a `label`")); } + } while(0); + do { // convert the 'country' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[7]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->country, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 7 to address to be a `label`")); } + } while(0); + do { // convert the 'facsimile_number' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[8]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->facsimile_number, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 8 to address to be a `label`")); } + } while(0); + do { // convert the 'telephone_number' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[9]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->telephone_number, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 9 to address to be a `label`")); } + } while(0); + do { // convert the 'electronic_mail_address' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[10]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->electronic_mail_address, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 10 to address to be a `label`")); } + } while(0); + do { // convert the 'telex_number' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[11]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->telex_number, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 11 to address to be a `label`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, representation* in) +{ + size_t base = 0; + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to representation"); } do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->name, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to representation to be a `label`")); } + } while(0); + do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + try { GenericConvert( in->items, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to representation to be a `SET [1:?] OF representation_item`")); } + } while(0); + do { // convert the 'context_of_items' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2]=true; break; } + try { GenericConvert( in->context_of_items, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to representation to be a `representation_context`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, shape_representation* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to shape_representation"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, advanced_brep_shape_representation* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to advanced_brep_shape_representation"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, face_surface* in) +{ + size_t base = 0; + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to face_surface"); } do { // convert the 'face_geometry' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->face_geometry, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to face_surface to be a `surface`")); } + } while(0); + do { // convert the 'same_sense' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + try { GenericConvert( in->same_sense, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to face_surface to be a `BOOLEAN`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, advanced_face* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to advanced_face"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, amount_of_substance_measure_with_unit* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to amount_of_substance_measure_with_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, named_unit* in) +{ + size_t base = 0; + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to named_unit"); } do { // convert the 'dimensions' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->dimensions, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to named_unit to be a `dimensional_exponents`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, amount_of_substance_unit* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to amount_of_substance_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, angle_direction_reference* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, representation_item* in) +{ + size_t base = 0; + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to representation_item"); } do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->name, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to representation_item to be a `label`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, geometric_representation_item* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to geometric_representation_item"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, draughting_callout* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to draughting_callout"); } do { // convert the 'contents' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->contents, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to draughting_callout to be a `SET [1:?] OF draughting_callout_element`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, dimension_curve_directed_callout* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to dimension_curve_directed_callout"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, angular_dimension* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to angular_dimension"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, shape_aspect_relationship* in) +{ + size_t base = 0; + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to shape_aspect_relationship"); } do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->name, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to shape_aspect_relationship to be a `label`")); } + } while(0); + do { // convert the 'description' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->description, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to shape_aspect_relationship to be a `text`")); } + } while(0); + do { // convert the 'relating_shape_aspect' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2]=true; break; } + try { GenericConvert( in->relating_shape_aspect, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to shape_aspect_relationship to be a `shape_aspect`")); } + } while(0); + do { // convert the 'related_shape_aspect' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[3]=true; break; } + try { GenericConvert( in->related_shape_aspect, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to shape_aspect_relationship to be a `shape_aspect`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, dimensional_location* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to dimensional_location"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, angular_location* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to angular_location"); } do { // convert the 'angle_selection' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert( in->angle_selection, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to angular_location to be a `angle_relator`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, dimensional_size* in) +{ + size_t base = 0; + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to dimensional_size"); } do { // convert the 'applies_to' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->applies_to, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to dimensional_size to be a `shape_aspect`")); } + } while(0); + do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + try { GenericConvert( in->name, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to dimensional_size to be a `label`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, angular_size* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to angular_size"); } do { // convert the 'angle_selection' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert( in->angle_selection, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to angular_size to be a `angle_relator`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, geometric_tolerance* in) +{ + size_t base = 0; + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to geometric_tolerance"); } do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->name, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to geometric_tolerance to be a `label`")); } + } while(0); + do { // convert the 'description' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + try { GenericConvert( in->description, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to geometric_tolerance to be a `text`")); } + } while(0); + do { // convert the 'magnitude' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2]=true; break; } + try { GenericConvert( in->magnitude, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to geometric_tolerance to be a `measure_with_unit`")); } + } while(0); + do { // convert the 'toleranced_shape_aspect' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[3]=true; break; } + try { GenericConvert( in->toleranced_shape_aspect, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to geometric_tolerance to be a `shape_aspect`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, geometric_tolerance_with_datum_reference* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to geometric_tolerance_with_datum_reference"); } do { // convert the 'datum_system' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->datum_system, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to geometric_tolerance_with_datum_reference to be a `SET [1:?] OF datum_reference`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, angularity_tolerance* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to angularity_tolerance"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, styled_item* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to styled_item"); } do { // convert the 'styles' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->styles, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to styled_item to be a `SET [1:?] OF presentation_style_assignment`")); } + } while(0); + do { // convert the 'item' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + try { GenericConvert( in->item, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to styled_item to be a `representation_item`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, annotation_occurrence* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to annotation_occurrence"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, annotation_curve_occurrence* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to annotation_curve_occurrence"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, annotation_fill_area* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to annotation_fill_area"); } do { // convert the 'boundaries' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert( in->boundaries, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to annotation_fill_area to be a `SET [1:?] OF curve`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, annotation_fill_area_occurrence* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to annotation_fill_area_occurrence"); } do { // convert the 'fill_style_target' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert( in->fill_style_target, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to annotation_fill_area_occurrence to be a `point`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, annotation_occurrence_relationship* in) +{ + size_t base = 0; + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to annotation_occurrence_relationship"); } do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->name, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to annotation_occurrence_relationship to be a `label`")); } + } while(0); + do { // convert the 'description' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + try { GenericConvert( in->description, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to annotation_occurrence_relationship to be a `text`")); } + } while(0); + do { // convert the 'relating_annotation_occurrence' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2]=true; break; } + try { GenericConvert( in->relating_annotation_occurrence, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to annotation_occurrence_relationship to be a `annotation_occurrence`")); } + } while(0); + do { // convert the 'related_annotation_occurrence' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[3]=true; break; } + try { GenericConvert( in->related_annotation_occurrence, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to annotation_occurrence_relationship to be a `annotation_occurrence`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, annotation_occurrence_associativity* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to annotation_occurrence_associativity"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, annotation_plane* in) +{ + size_t base = 0; + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to annotation_plane"); } do { // convert the 'elements' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert( in->elements, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to annotation_plane to be a `SET [1:?] OF annotation_plane_element`")); } + } while(0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, annotation_symbol_occurrence* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to annotation_symbol_occurrence"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, annotation_subfigure_occurrence* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to annotation_subfigure_occurrence"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, mapped_item* in) +{ + size_t base = GenericFill(db,params,static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to mapped_item"); } do { // convert the 'mapping_source' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0]=true; break; } + try { GenericConvert( in->mapping_source, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to mapped_item to be a `representation_map`")); } + } while(0); + do { // convert the 'mapping_target' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1]=true; break; } + try { GenericConvert( in->mapping_target, arg, db ); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to mapped_item to be a `representation_item`")); } + } while(0); + return base; +} + +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, annotation_symbol* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to annotation_symbol"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, annotation_text* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to annotation_text"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, annotation_text_character* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to annotation_text_character"); } do { // convert the 'alignment' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->alignment, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to annotation_text_character to be a `text_alignment`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, annotation_text_occurrence* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to annotation_text_occurrence"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, shape_aspect* in) +{ + size_t base = 0; + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to shape_aspect"); } do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->name, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to shape_aspect to be a `label`")); } + } while (0); + do { // convert the 'description' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert(in->description, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to shape_aspect to be a `text`")); } + } while (0); + do { // convert the 'of_shape' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2] = true; break; } + try { GenericConvert(in->of_shape, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to shape_aspect to be a `product_definition_shape`")); } + } while (0); + do { // convert the 'product_definitional' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[3] = true; break; } + try { GenericConvert(in->product_definitional, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to shape_aspect to be a `LOGICAL`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, derived_shape_aspect* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to derived_shape_aspect"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, apex* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to apex"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, application_context_element* in) +{ + size_t base = 0; + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to application_context_element"); } do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->name, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to application_context_element to be a `label`")); } + } while (0); + do { // convert the 'frame_of_reference' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->frame_of_reference, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to application_context_element to be a `application_context`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, applied_action_assignment* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to applied_action_assignment"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to applied_action_assignment to be a `SET [1:?] OF action_items`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, applied_action_method_assignment* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to applied_action_method_assignment"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to applied_action_method_assignment to be a `SET [1:?] OF action_method_items`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, applied_action_request_assignment* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to applied_action_request_assignment"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to applied_action_request_assignment to be a `SET [1:?] OF action_request_item`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, approval_assignment* in) +{ + size_t base = 0; + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to approval_assignment"); } do { // convert the 'assigned_approval' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->assigned_approval, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to approval_assignment to be a `approval`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, applied_approval_assignment* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to applied_approval_assignment"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to applied_approval_assignment to be a `SET [1:?] OF approval_item`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, attribute_classification_assignment* in) +{ + size_t base = 0; + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to attribute_classification_assignment"); } do { // convert the 'assigned_class' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->assigned_class, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to attribute_classification_assignment to be a `group`")); } + } while (0); + do { // convert the 'attribute_name' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->attribute_name, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to attribute_classification_assignment to be a `label`")); } + } while (0); + do { // convert the 'role' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2] = true; break; } + try { GenericConvert(in->role, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to attribute_classification_assignment to be a `classification_role`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, applied_attribute_classification_assignment* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to applied_attribute_classification_assignment"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to applied_attribute_classification_assignment to be a `SET [1:?] OF attribute_classification_item`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, certification_assignment* in) +{ + size_t base = 0; + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to certification_assignment"); } do { // convert the 'assigned_certification' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->assigned_certification, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to certification_assignment to be a `certification`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, applied_certification_assignment* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to applied_certification_assignment"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to applied_certification_assignment to be a `SET [1:?] OF certification_item`")); } + } while (0); + return base; +} + +} // ! STEP +} // ! Assimp + +#endif diff --git a/code/Importer/StepFile/StepFileGen2.cpp b/code/Importer/StepFile/StepFileGen2.cpp new file mode 100644 index 000000000..eca09e4e1 --- /dev/null +++ b/code/Importer/StepFile/StepFileGen2.cpp @@ -0,0 +1,3067 @@ +/* +Open Asset Import Library (ASSIMP) +---------------------------------------------------------------------- + +Copyright (c) 2006-2010, ASSIMP Development Team +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the ASSIMP team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the ASSIMP Development Team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +#include "code/Importer/StepFile/StepReaderGen.h" + +namespace Assimp { +using namespace StepFile; +namespace STEP { + + // ----------------------------------------------------------------------------------------------------------- + template <> size_t GenericFill(const DB& db, const LIST& params, classification_assignment* in) + { + size_t base = 0; + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to classification_assignment"); } do { // convert the 'assigned_class' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->assigned_class, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to classification_assignment to be a `group`")); } + } while (0); + do { // convert the 'role' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->role, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to classification_assignment to be a `classification_role`")); } + } while (0); + return base; + } + // ----------------------------------------------------------------------------------------------------------- + template <> size_t GenericFill(const DB& db, const LIST& params, applied_classification_assignment* in) + { + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to applied_classification_assignment"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to applied_classification_assignment to be a `SET [1:?] OF classification_item`")); } + } while (0); + return base; + } + // ----------------------------------------------------------------------------------------------------------- + template <> size_t GenericFill(const DB& db, const LIST& params, contract_assignment* in) + { + size_t base = 0; + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to contract_assignment"); } do { // convert the 'assigned_contract' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->assigned_contract, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to contract_assignment to be a `contract`")); } + } while (0); + return base; + } + // ----------------------------------------------------------------------------------------------------------- + template <> size_t GenericFill(const DB& db, const LIST& params, applied_contract_assignment* in) + { + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to applied_contract_assignment"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to applied_contract_assignment to be a `SET [1:?] OF contract_item`")); } + } while (0); + return base; + } + // ----------------------------------------------------------------------------------------------------------- + template <> size_t GenericFill(const DB& db, const LIST& params, date_and_time_assignment* in) + { + size_t base = 0; + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to date_and_time_assignment"); } do { // convert the 'assigned_date_and_time' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->assigned_date_and_time, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to date_and_time_assignment to be a `date_and_time`")); } + } while (0); + do { // convert the 'role' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->role, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to date_and_time_assignment to be a `date_time_role`")); } + } while (0); + return base; + } + // ----------------------------------------------------------------------------------------------------------- + template <> size_t GenericFill(const DB& db, const LIST& params, applied_date_and_time_assignment* in) + { + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to applied_date_and_time_assignment"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to applied_date_and_time_assignment to be a `SET [1:?] OF date_and_time_item`")); } + } while (0); + return base; + } + // ----------------------------------------------------------------------------------------------------------- + template <> size_t GenericFill(const DB& db, const LIST& params, date_assignment* in) + { + size_t base = 0; + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to date_assignment"); } do { // convert the 'assigned_date' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->assigned_date, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to date_assignment to be a `date`")); } + } while (0); + do { // convert the 'role' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->role, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to date_assignment to be a `date_role`")); } + } while (0); + return base; + } + // ----------------------------------------------------------------------------------------------------------- + template <> size_t GenericFill(const DB& db, const LIST& params, applied_date_assignment* in) + { + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to applied_date_assignment"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to applied_date_assignment to be a `SET [1:?] OF date_item`")); } + } while (0); + return base; + } + // ----------------------------------------------------------------------------------------------------------- + template <> size_t GenericFill(const DB& db, const LIST& params, document_reference* in) + { + size_t base = 0; + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to document_reference"); } do { // convert the 'assigned_document' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->assigned_document, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to document_reference to be a `document`")); } + } while (0); + do { // convert the 'source' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->source, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to document_reference to be a `label`")); } + } while (0); + return base; + } + // ----------------------------------------------------------------------------------------------------------- + template <> size_t GenericFill(const DB& db, const LIST& params, applied_document_reference* in) + { + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to applied_document_reference"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to applied_document_reference to be a `SET [1:?] OF document_reference_item`")); } + } while (0); + return base; + } + // ----------------------------------------------------------------------------------------------------------- + template <> size_t GenericFill(const DB& db, const LIST& params, document_usage_constraint_assignment* in) + { + size_t base = 0; + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to document_usage_constraint_assignment"); } do { // convert the 'assigned_document_usage' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->assigned_document_usage, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to document_usage_constraint_assignment to be a `document_usage_constraint`")); } + } while (0); + do { // convert the 'role' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->role, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to document_usage_constraint_assignment to be a `document_usage_role`")); } + } while (0); + return base; + } + // ----------------------------------------------------------------------------------------------------------- + template <> size_t GenericFill(const DB& db, const LIST& params, applied_document_usage_constraint_assignment* in) + { + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to applied_document_usage_constraint_assignment"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to applied_document_usage_constraint_assignment to be a `SET [1:?] OF document_reference_item`")); } + } while (0); + return base; + } + // ----------------------------------------------------------------------------------------------------------- + template <> size_t GenericFill(const DB& db, const LIST& params, effectivity_assignment* in) + { + size_t base = 0; + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to effectivity_assignment"); } do { // convert the 'assigned_effectivity' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->assigned_effectivity, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to effectivity_assignment to be a `effectivity`")); } + } while (0); + return base; + } + // ----------------------------------------------------------------------------------------------------------- + template <> size_t GenericFill(const DB& db, const LIST& params, applied_effectivity_assignment* in) + { + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to applied_effectivity_assignment"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to applied_effectivity_assignment to be a `SET [1:?] OF effectivity_item`")); } + } while (0); + return base; + } + // ----------------------------------------------------------------------------------------------------------- + template <> size_t GenericFill(const DB& db, const LIST& params, event_occurrence_assignment* in) + { + size_t base = 0; + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to event_occurrence_assignment"); } do { // convert the 'assigned_event_occurrence' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->assigned_event_occurrence, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to event_occurrence_assignment to be a `event_occurrence`")); } + } while (0); + do { // convert the 'role' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->role, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to event_occurrence_assignment to be a `event_occurrence_role`")); } + } while (0); + return base; + } + // ----------------------------------------------------------------------------------------------------------- + template <> size_t GenericFill(const DB& db, const LIST& params, applied_event_occurrence_assignment* in) + { + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to applied_event_occurrence_assignment"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to applied_event_occurrence_assignment to be a `SET [1:?] OF event_occurrence_item`")); } + } while (0); + return base; + } + // ----------------------------------------------------------------------------------------------------------- + template <> size_t GenericFill(const DB& db, const LIST& params, identification_assignment* in) + { + size_t base = 0; + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to identification_assignment"); } do { // convert the 'assigned_id' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->assigned_id, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to identification_assignment to be a `identifier`")); } + } while (0); + do { // convert the 'role' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->role, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to identification_assignment to be a `identification_role`")); } + } while (0); + return base; + } +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, external_identification_assignment* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to external_identification_assignment"); } do { // convert the 'source' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->source, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to external_identification_assignment to be a `external_source`")); } + } while (0); + return base; +} + +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, applied_external_identification_assignment* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to applied_external_identification_assignment"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to applied_external_identification_assignment to be a `SET [1:?] OF external_identification_item`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, group_assignment* in) +{ + size_t base = 0; + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to group_assignment"); } do { // convert the 'assigned_group' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->assigned_group, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to group_assignment to be a `group`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, applied_group_assignment* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to applied_group_assignment"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to applied_group_assignment to be a `SET [1:?] OF groupable_item`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, applied_identification_assignment* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to applied_identification_assignment"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to applied_identification_assignment to be a `SET [1:?] OF identification_item`")); } + } while (0); + return base; +} + +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, name_assignment* in) +{ + size_t base = 0; + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to name_assignment"); } do { // convert the 'assigned_name' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->assigned_name, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to name_assignment to be a `label`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, applied_name_assignment* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to applied_name_assignment"); } do { // convert the 'item' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->item, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to applied_name_assignment to be a `name_item`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, organization_assignment* in) +{ + size_t base = 0; + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to organization_assignment"); } do { // convert the 'assigned_organization' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->assigned_organization, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to organization_assignment to be a `organization`")); } + } while (0); + do { // convert the 'role' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->role, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to organization_assignment to be a `organization_role`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, applied_organization_assignment* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to applied_organization_assignment"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to applied_organization_assignment to be a `SET [1:?] OF organization_item`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, organizational_project_assignment* in) +{ + size_t base = 0; + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to organizational_project_assignment"); } do { // convert the 'assigned_organizational_project' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->assigned_organizational_project, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to organizational_project_assignment to be a `organizational_project`")); } + } while (0); + do { // convert the 'role' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->role, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to organizational_project_assignment to be a `organizational_project_role`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, applied_organizational_project_assignment* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to applied_organizational_project_assignment"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to applied_organizational_project_assignment to be a `SET [1:?] OF project_item`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, person_and_organization_assignment* in) +{ + size_t base = 0; + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to person_and_organization_assignment"); } do { // convert the 'assigned_person_and_organization' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->assigned_person_and_organization, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to person_and_organization_assignment to be a `person_and_organization`")); } + } while (0); + do { // convert the 'role' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->role, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to person_and_organization_assignment to be a `person_and_organization_role`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, applied_person_and_organization_assignment* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to applied_person_and_organization_assignment"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to applied_person_and_organization_assignment to be a `SET [1:?] OF person_and_organization_item`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, presented_item* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, applied_presented_item* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to applied_presented_item"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to applied_presented_item to be a `SET [1:?] OF presented_item_select`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, security_classification_assignment* in) +{ + size_t base = 0; + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to security_classification_assignment"); } do { // convert the 'assigned_security_classification' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->assigned_security_classification, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to security_classification_assignment to be a `security_classification`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, applied_security_classification_assignment* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to applied_security_classification_assignment"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to applied_security_classification_assignment to be a `SET [1:?] OF security_classification_item`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, time_interval_assignment* in) +{ + size_t base = 0; + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to time_interval_assignment"); } do { // convert the 'assigned_time_interval' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->assigned_time_interval, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to time_interval_assignment to be a `time_interval`")); } + } while (0); + do { // convert the 'role' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->role, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to time_interval_assignment to be a `time_interval_role`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, applied_time_interval_assignment* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to applied_time_interval_assignment"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to applied_time_interval_assignment to be a `SET [0:?] OF time_interval_item`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, applied_usage_right* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to applied_usage_right"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, area_in_set* in) +{ + size_t base = 0; + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to area_in_set"); } do { // convert the 'area' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->area, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to area_in_set to be a `presentation_area`")); } + } while (0); + do { // convert the 'in_set' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->in_set, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to area_in_set to be a `presentation_set`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, area_measure_with_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to area_measure_with_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, area_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to area_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, product_definition_relationship* in) +{ + size_t base = 0; + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to product_definition_relationship"); } do { // convert the 'id' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->id, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to product_definition_relationship to be a `identifier`")); } + } while (0); + do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->name, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to product_definition_relationship to be a `label`")); } + } while (0); + do { // convert the 'description' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2] = true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert(in->description, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to product_definition_relationship to be a `text`")); } + } while (0); + do { // convert the 'relating_product_definition' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[3] = true; break; } + try { GenericConvert(in->relating_product_definition, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to product_definition_relationship to be a `product_definition`")); } + } while (0); + do { // convert the 'related_product_definition' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[4] = true; break; } + try { GenericConvert(in->related_product_definition, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to product_definition_relationship to be a `product_definition`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, product_definition_usage* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to product_definition_usage"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, assembly_component_usage* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to assembly_component_usage"); } do { // convert the 'reference_designator' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert(in->reference_designator, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to assembly_component_usage to be a `identifier`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, assigned_requirement* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to assigned_requirement"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to assigned_requirement to be a `SET [1:1] OF product_definition`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, compound_representation_item* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to compound_representation_item"); } do { // convert the 'item_element' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->item_element, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to compound_representation_item to be a `compound_item_definition`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, atomic_formula* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to atomic_formula"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, attribute_assertion* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, attribute_language_assignment* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to attribute_language_assignment"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to attribute_language_assignment to be a `SET [1:?] OF attribute_language_item`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, attribute_value_assignment* in) +{ + size_t base = 0; + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to attribute_value_assignment"); } do { // convert the 'attribute_name' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->attribute_name, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to attribute_value_assignment to be a `label`")); } + } while (0); + do { // convert the 'attribute_value' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->attribute_value, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to attribute_value_assignment to be a `attribute_type`")); } + } while (0); + do { // convert the 'role' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2] = true; break; } + try { GenericConvert(in->role, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to attribute_value_assignment to be a `attribute_value_role`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, auxiliary_geometric_representation_item* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, placement* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to placement"); } do { // convert the 'location' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->location, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to placement to be a `cartesian_point`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, axis1_placement* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to axis1_placement"); } do { // convert the 'axis' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert(in->axis, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to axis1_placement to be a `direction`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, axis2_placement_2d* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to axis2_placement_2d"); } do { // convert the 'ref_direction' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert(in->ref_direction, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to axis2_placement_2d to be a `direction`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, axis2_placement_3d* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to axis2_placement_3d"); } do { // convert the 'axis' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert(in->axis, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to axis2_placement_3d to be a `direction`")); } + } while (0); + do { // convert the 'ref_direction' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert(in->ref_direction, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to axis2_placement_3d to be a `direction`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, curve* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to curve"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, bounded_curve* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to bounded_curve"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, b_spline_curve* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to b_spline_curve"); } do { // convert the 'degree' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->degree, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to b_spline_curve to be a `INTEGER`")); } + } while (0); + do { // convert the 'control_points_list' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->control_points_list, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to b_spline_curve to be a `LIST [2:?] OF cartesian_point`")); } + } while (0); + do { // convert the 'curve_form' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2] = true; break; } + try { GenericConvert(in->curve_form, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to b_spline_curve to be a `b_spline_curve_form`")); } + } while (0); + do { // convert the 'closed_curve' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[3] = true; break; } + try { GenericConvert(in->closed_curve, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to b_spline_curve to be a `LOGICAL`")); } + } while (0); + do { // convert the 'self_intersect' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[4] = true; break; } + try { GenericConvert(in->self_intersect, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to b_spline_curve to be a `LOGICAL`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, b_spline_curve_with_knots* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 9) { throw STEP::TypeError("expected 9 arguments to b_spline_curve_with_knots"); } do { // convert the 'knot_multiplicities' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->knot_multiplicities, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 6 to b_spline_curve_with_knots to be a `LIST [2:?] OF INTEGER`")); } + } while (0); + do { // convert the 'knots' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->knots, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 7 to b_spline_curve_with_knots to be a `LIST [2:?] OF parameter_value`")); } + } while (0); + do { // convert the 'knot_spec' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->knot_spec, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 8 to b_spline_curve_with_knots to be a `knot_type`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, surface* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to surface"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, bounded_surface* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to bounded_surface"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, b_spline_surface* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 7) { throw STEP::TypeError("expected 7 arguments to b_spline_surface"); } do { // convert the 'u_degree' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->u_degree, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to b_spline_surface to be a `INTEGER`")); } + } while (0); + do { // convert the 'v_degree' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->v_degree, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to b_spline_surface to be a `INTEGER`")); } + } while (0); + do { // convert the 'surface_form' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2] = true; break; } + try { GenericConvert(in->surface_form, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to b_spline_surface to be a `b_spline_surface_form`")); } + } while (0); + do { // convert the 'u_closed' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[3] = true; break; } + try { GenericConvert(in->u_closed, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to b_spline_surface to be a `LOGICAL`")); } + } while (0); + do { // convert the 'v_closed' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[4] = true; break; } + try { GenericConvert(in->v_closed, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to b_spline_surface to be a `LOGICAL`")); } + } while (0); + do { // convert the 'self_intersect' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[5] = true; break; } + try { GenericConvert(in->self_intersect, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 6 to b_spline_surface to be a `LOGICAL`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, b_spline_surface_with_knots* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 12) { throw STEP::TypeError("expected 12 arguments to b_spline_surface_with_knots"); } do { // convert the 'u_multiplicities' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->u_multiplicities, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 7 to b_spline_surface_with_knots to be a `LIST [2:?] OF INTEGER`")); } + } while (0); + do { // convert the 'v_multiplicities' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->v_multiplicities, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 8 to b_spline_surface_with_knots to be a `LIST [2:?] OF INTEGER`")); } + } while (0); + do { // convert the 'u_knots' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->u_knots, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 9 to b_spline_surface_with_knots to be a `LIST [2:?] OF parameter_value`")); } + } while (0); + do { // convert the 'v_knots' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->v_knots, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 10 to b_spline_surface_with_knots to be a `LIST [2:?] OF parameter_value`")); } + } while (0); + do { // convert the 'knot_spec' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->knot_spec, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 11 to b_spline_surface_with_knots to be a `knot_type`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, product_definition* in) +{ + size_t base = 0; + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to product_definition"); } do { // convert the 'id' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->id, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to product_definition to be a `identifier`")); } + } while (0); + do { // convert the 'description' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert(in->description, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to product_definition to be a `text`")); } + } while (0); + do { // convert the 'formation' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2] = true; break; } + try { GenericConvert(in->formation, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to product_definition to be a `product_definition_formation`")); } + } while (0); + do { // convert the 'frame_of_reference' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[3] = true; break; } + try { GenericConvert(in->frame_of_reference, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to product_definition to be a `product_definition_context`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, rule_software_definition* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to rule_software_definition"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, rule_definition* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to rule_definition"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, back_chaining_rule* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to back_chaining_rule"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, back_chaining_rule_body* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, colour* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, background_colour* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to background_colour"); } do { // convert the 'presentation' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->presentation, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to background_colour to be a `area_or_view`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, beveled_sheet_representation* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to beveled_sheet_representation"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, bezier_curve* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to bezier_curve"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, bezier_surface* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 7) { throw STEP::TypeError("expected 7 arguments to bezier_surface"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, generic_expression* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, binary_generic_expression* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to binary_generic_expression"); } do { // convert the 'operands' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->operands, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to binary_generic_expression to be a `LIST [2:2] OF generic_expression`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, binary_numeric_expression* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, binary_representation_item* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to binary_representation_item"); } do { // convert the 'binary_value' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->binary_value, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to binary_representation_item to be a `BINARY`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, block* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to block"); } do { // convert the 'position' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->position, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to block to be a `axis2_placement_3d`")); } + } while (0); + do { // convert the 'x' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->x, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to block to be a `positive_length_measure`")); } + } while (0); + do { // convert the 'y' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->y, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to block to be a `positive_length_measure`")); } + } while (0); + do { // convert the 'z' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->z, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to block to be a `positive_length_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, expression* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, boolean_expression* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, boolean_literal* in) +{ + size_t base = 0; + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to boolean_literal"); } do { // convert the 'the_value' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->the_value, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to boolean_literal to be a `BOOLEAN`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, boolean_representation_item* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, boolean_result* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to boolean_result"); } do { // convert the 'operator' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->operator_, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to boolean_result to be a `boolean_operator`")); } + } while (0); + do { // convert the 'first_operand' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->first_operand, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to boolean_result to be a `boolean_operand`")); } + } while (0); + do { // convert the 'second_operand' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->second_operand, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to boolean_result to be a `boolean_operand`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, composite_curve* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to composite_curve"); } do { // convert the 'segments' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->segments, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to composite_curve to be a `LIST [1:?] OF composite_curve_segment`")); } + } while (0); + do { // convert the 'self_intersect' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->self_intersect, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to composite_curve to be a `LOGICAL`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, composite_curve_on_surface* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to composite_curve_on_surface"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, boundary_curve* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to boundary_curve"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, bounded_pcurve* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, bounded_surface_curve* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, founded_item* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, box_domain* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to box_domain"); } do { // convert the 'corner' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->corner, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to box_domain to be a `cartesian_point`")); } + } while (0); + do { // convert the 'xlength' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->xlength, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to box_domain to be a `positive_length_measure`")); } + } while (0); + do { // convert the 'ylength' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->ylength, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to box_domain to be a `positive_length_measure`")); } + } while (0); + do { // convert the 'zlength' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->zlength, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to box_domain to be a `positive_length_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, half_space_solid* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to half_space_solid"); } do { // convert the 'base_surface' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->base_surface, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to half_space_solid to be a `surface`")); } + } while (0); + do { // convert the 'agreement_flag' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->agreement_flag, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to half_space_solid to be a `BOOLEAN`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, boxed_half_space* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to boxed_half_space"); } do { // convert the 'enclosure' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->enclosure, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to boxed_half_space to be a `box_domain`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, breakdown_context* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to breakdown_context"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, breakdown_element_group_assignment* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to breakdown_element_group_assignment"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to breakdown_element_group_assignment to be a `SET [1:1] OF product_definition_or_breakdown_element_usage`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, breakdown_element_realization* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, breakdown_element_usage* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to breakdown_element_usage"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, breakdown_of* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to breakdown_of"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, solid_model* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to solid_model"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, manifold_solid_brep* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to manifold_solid_brep"); } do { // convert the 'outer' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->outer, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to manifold_solid_brep to be a `closed_shell`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, brep_with_voids* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to brep_with_voids"); } do { // convert the 'voids' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->voids, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to brep_with_voids to be a `SET [1:?] OF oriented_closed_shell`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, bytes_representation_item* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to bytes_representation_item"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, date* in) +{ + size_t base = 0; + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to date"); } do { // convert the 'year_component' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->year_component, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to date to be a `year_number`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, calendar_date* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to calendar_date"); } do { // convert the 'day_component' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->day_component, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to calendar_date to be a `day_in_month_number`")); } + } while (0); + do { // convert the 'month_component' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->month_component, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to calendar_date to be a `month_in_year_number`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, camera_image* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to camera_image"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, camera_image_3d_with_scale* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to camera_image_3d_with_scale"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, camera_model* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to camera_model"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, camera_model_d3* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to camera_model_d3"); } do { // convert the 'view_reference_system' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->view_reference_system, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to camera_model_d3 to be a `axis2_placement_3d`")); } + } while (0); + do { // convert the 'perspective_of_volume' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->perspective_of_volume, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to camera_model_d3 to be a `view_volume`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, camera_model_d3_multi_clipping* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to camera_model_d3_multi_clipping"); } do { // convert the 'shape_clipping' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->shape_clipping, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to camera_model_d3_multi_clipping to be a `SET [1:?] OF camera_model_d3_multi_clipping_interection_select`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, camera_model_d3_multi_clipping_intersection* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to camera_model_d3_multi_clipping_intersection"); } do { // convert the 'shape_clipping' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->shape_clipping, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to camera_model_d3_multi_clipping_intersection to be a `SET [2:?] OF camera_model_d3_multi_clipping_interection_select`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, camera_model_d3_multi_clipping_union* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to camera_model_d3_multi_clipping_union"); } do { // convert the 'shape_clipping' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->shape_clipping, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to camera_model_d3_multi_clipping_union to be a `SET [2:?] OF camera_model_d3_multi_clipping_union_select`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, camera_model_d3_with_hlhsr* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to camera_model_d3_with_hlhsr"); } do { // convert the 'hidden_line_surface_removal' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->hidden_line_surface_removal, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to camera_model_d3_with_hlhsr to be a `BOOLEAN`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, camera_model_with_light_sources* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to camera_model_with_light_sources"); } do { // convert the 'sources' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->sources, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to camera_model_with_light_sources to be a `SET [1:?] OF light_source`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, representation_map* in) +{ + size_t base = 0; + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to representation_map"); } do { // convert the 'mapping_origin' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->mapping_origin, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to representation_map to be a `representation_item`")); } + } while (0); + do { // convert the 'mapped_representation' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->mapped_representation, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to representation_map to be a `representation`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, camera_usage* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to camera_usage"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, capacitance_measure_with_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to capacitance_measure_with_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, capacitance_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to capacitance_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, point* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to point"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, cartesian_point* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to cartesian_point"); } do { // convert the 'coordinates' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->coordinates, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to cartesian_point to be a `LIST [1:3] OF length_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, cartesian_transformation_operator* in) +{ + size_t base = 0; + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to cartesian_transformation_operator"); } do { // convert the 'axis1' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert(in->axis1, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to cartesian_transformation_operator to be a `direction`")); } + } while (0); + do { // convert the 'axis2' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert(in->axis2, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to cartesian_transformation_operator to be a `direction`")); } + } while (0); + do { // convert the 'local_origin' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2] = true; break; } + try { GenericConvert(in->local_origin, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to cartesian_transformation_operator to be a `cartesian_point`")); } + } while (0); + do { // convert the 'scale' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[3] = true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert(in->scale, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to cartesian_transformation_operator to be a `REAL`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, cartesian_transformation_operator_2d* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to cartesian_transformation_operator_2d"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, cartesian_transformation_operator_3d* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to cartesian_transformation_operator_3d"); } do { // convert the 'axis3' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert(in->axis3, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to cartesian_transformation_operator_3d to be a `direction`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, cc_design_approval* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to cc_design_approval"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to cc_design_approval to be a `SET [1:?] OF approved_item`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, cc_design_certification* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to cc_design_certification"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to cc_design_certification to be a `SET [1:?] OF certified_item`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, cc_design_contract* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to cc_design_contract"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to cc_design_contract to be a `SET [1:?] OF contracted_item`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, cc_design_date_and_time_assignment* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to cc_design_date_and_time_assignment"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to cc_design_date_and_time_assignment to be a `SET [1:?] OF date_time_item`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, cc_design_person_and_organization_assignment* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to cc_design_person_and_organization_assignment"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to cc_design_person_and_organization_assignment to be a `SET [1:?] OF cc_person_organization_item`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, cc_design_security_classification* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to cc_design_security_classification"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to cc_design_security_classification to be a `SET [1:?] OF cc_classified_item`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, cc_design_specification_reference* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to cc_design_specification_reference"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to cc_design_specification_reference to be a `SET [1:?] OF cc_specified_item`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, celsius_temperature_measure_with_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to celsius_temperature_measure_with_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, centre_of_symmetry* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to centre_of_symmetry"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, change* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to change"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to change to be a `SET [1:?] OF work_item`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, change_request* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to change_request"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to change_request to be a `SET [1:?] OF change_request_item`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, character_glyph_style_outline* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to character_glyph_style_outline"); } do { // convert the 'outline_style' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->outline_style, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to character_glyph_style_outline to be a `curve_style`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, character_glyph_style_stroke* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to character_glyph_style_stroke"); } do { // convert the 'stroke_style' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->stroke_style, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to character_glyph_style_stroke to be a `curve_style`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, symbol_representation* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to symbol_representation"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, generic_character_glyph_symbol* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to generic_character_glyph_symbol"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, character_glyph_symbol* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to character_glyph_symbol"); } do { // convert the 'character_box' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->character_box, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to character_glyph_symbol to be a `planar_extent`")); } + } while (0); + do { // convert the 'baseline_ratio' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->baseline_ratio, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to character_glyph_symbol to be a `ratio_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, character_glyph_symbol_outline* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to character_glyph_symbol_outline"); } do { // convert the 'outlines' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->outlines, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to character_glyph_symbol_outline to be a `SET [1:?] OF annotation_fill_area`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, character_glyph_symbol_stroke* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to character_glyph_symbol_stroke"); } do { // convert the 'strokes' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->strokes, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to character_glyph_symbol_stroke to be a `SET [1:?] OF curve`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, general_property* in) +{ + size_t base = 0; + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to general_property"); } do { // convert the 'id' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->id, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to general_property to be a `identifier`")); } + } while (0); + do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->name, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to general_property to be a `label`")); } + } while (0); + do { // convert the 'description' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2] = true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert(in->description, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to general_property to be a `text`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, characteristic_data_column_header* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to characteristic_data_column_header"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, general_property_relationship* in) +{ + size_t base = 0; + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to general_property_relationship"); } do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->name, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to general_property_relationship to be a `label`")); } + } while (0); + do { // convert the 'description' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert(in->description, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to general_property_relationship to be a `text`")); } + } while (0); + do { // convert the 'relating_property' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2] = true; break; } + try { GenericConvert(in->relating_property, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to general_property_relationship to be a `general_property`")); } + } while (0); + do { // convert the 'related_property' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[3] = true; break; } + try { GenericConvert(in->related_property, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to general_property_relationship to be a `general_property`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, characteristic_data_column_header_link* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to characteristic_data_column_header_link"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, characteristic_data_table_header* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to characteristic_data_table_header"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, characteristic_data_table_header_decomposition* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to characteristic_data_table_header_decomposition"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, group* in) +{ + size_t base = 0; + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to group"); } do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->name, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to group to be a `label`")); } + } while (0); + do { // convert the 'description' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert(in->description, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to group to be a `text`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, characteristic_type* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to characteristic_type"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, characterized_class* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, characterized_object* in) +{ + size_t base = 0; + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to characterized_object"); } do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->name, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to characterized_object to be a `label`")); } + } while (0); + do { // convert the 'description' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert(in->description, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to characterized_object to be a `text`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, conic* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to conic"); } do { // convert the 'position' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->position, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to conic to be a `axis2_placement`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, circle* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to circle"); } do { // convert the 'radius' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->radius, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to circle to be a `positive_length_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, circular_runout_tolerance* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to circular_runout_tolerance"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, class_by_extension* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to class_by_extension"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, class_by_intension* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to class_by_intension"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, class_system* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to class_system"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, effectivity_context_assignment* in) +{ + size_t base = 0; + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to effectivity_context_assignment"); } do { // convert the 'assigned_effectivity_assignment' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->assigned_effectivity_assignment, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to effectivity_context_assignment to be a `effectivity_assignment`")); } + } while (0); + do { // convert the 'role' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->role, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to effectivity_context_assignment to be a `effectivity_context_role`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, class_usage_effectivity_context_assignment* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to class_usage_effectivity_context_assignment"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to class_usage_effectivity_context_assignment to be a `SET [1:?] OF class_usage_effectivity_context_item`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, topological_representation_item* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to topological_representation_item"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, connected_face_set* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to connected_face_set"); } do { // convert the 'cfs_faces' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->cfs_faces, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to connected_face_set to be a `SET [1:?] OF face`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, closed_shell* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to closed_shell"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, coaxiality_tolerance* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to coaxiality_tolerance"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, colour_specification* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to colour_specification"); } do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->name, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to colour_specification to be a `label`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, colour_rgb* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to colour_rgb"); } do { // convert the 'red' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->red, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to colour_rgb to be a `REAL`")); } + } while (0); + do { // convert the 'green' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->green, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to colour_rgb to be a `REAL`")); } + } while (0); + do { // convert the 'blue' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->blue, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to colour_rgb to be a `REAL`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, common_datum* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, comparison_expression* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, complex_clause* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to complex_clause"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, complex_conjunctive_clause* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to complex_conjunctive_clause"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, complex_disjunctive_clause* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to complex_disjunctive_clause"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, modified_solid* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to modified_solid"); } do { // convert the 'rationale' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->rationale, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to modified_solid to be a `text`")); } + } while (0); + do { // convert the 'base_solid' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->base_solid, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to modified_solid to be a `base_solid_select`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, shelled_solid* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to shelled_solid"); } do { // convert the 'deleted_face_set' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->deleted_face_set, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to shelled_solid to be a `SET [1:?] OF face_surface`")); } + } while (0); + do { // convert the 'thickness' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->thickness, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to shelled_solid to be a `length_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, complex_shelled_solid* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to complex_shelled_solid"); } do { // convert the 'thickness_list' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->thickness_list, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to complex_shelled_solid to be a `LIST [1:?] OF length_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, composite_assembly_definition* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to composite_assembly_definition"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, composite_assembly_sequence_definition* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to composite_assembly_sequence_definition"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, laminate_table* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to laminate_table"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, part_laminate_table* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to part_laminate_table"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, composite_assembly_table* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to composite_assembly_table"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, composite_curve_segment* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to composite_curve_segment"); } do { // convert the 'transition' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->transition, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to composite_curve_segment to be a `transition_code`")); } + } while (0); + do { // convert the 'same_sense' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->same_sense, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to composite_curve_segment to be a `BOOLEAN`")); } + } while (0); + do { // convert the 'parent_curve' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2] = true; break; } + try { GenericConvert(in->parent_curve, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to composite_curve_segment to be a `curve`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, material_designation* in) +{ + size_t base = 0; + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to material_designation"); } do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->name, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to material_designation to be a `label`")); } + } while (0); + do { // convert the 'definitions' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->definitions, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to material_designation to be a `SET [1:?] OF characterized_definition`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, composite_material_designation* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to composite_material_designation"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, composite_shape_aspect* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to composite_shape_aspect"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, composite_sheet_representation* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to composite_sheet_representation"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, composite_text* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to composite_text"); } do { // convert the 'collected_text' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->collected_text, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to composite_text to be a `SET [2:?] OF text_or_character`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, composite_text_with_associated_curves* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to composite_text_with_associated_curves"); } do { // convert the 'associated_curves' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->associated_curves, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to composite_text_with_associated_curves to be a `SET [1:?] OF curve`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, composite_text_with_blanking_box* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to composite_text_with_blanking_box"); } do { // convert the 'blanking' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->blanking, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to composite_text_with_blanking_box to be a `planar_box`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, composite_text_with_delineation* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to composite_text_with_delineation"); } do { // convert the 'delineation' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->delineation, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to composite_text_with_delineation to be a `text_delineation`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, composite_text_with_extent* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to composite_text_with_extent"); } do { // convert the 'extent' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->extent, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to composite_text_with_extent to be a `planar_extent`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, compound_shape_representation* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to compound_shape_representation"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, concentricity_tolerance* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to concentricity_tolerance"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, concept_feature_relationship* in) +{ + size_t base = 0; + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to concept_feature_relationship"); } do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->name, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to concept_feature_relationship to be a `label`")); } + } while (0); + do { // convert the 'description' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert(in->description, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to concept_feature_relationship to be a `text`")); } + } while (0); + do { // convert the 'relating_product_concept_feature' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2] = true; break; } + try { GenericConvert(in->relating_product_concept_feature, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to concept_feature_relationship to be a `product_concept_feature`")); } + } while (0); + do { // convert the 'related_product_concept_feature' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[3] = true; break; } + try { GenericConvert(in->related_product_concept_feature, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to concept_feature_relationship to be a `product_concept_feature`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, concept_feature_relationship_with_condition* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to concept_feature_relationship_with_condition"); } do { // convert the 'conditional_operator' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->conditional_operator, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to concept_feature_relationship_with_condition to be a `concept_feature_operator`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, product_concept_feature* in) +{ + size_t base = 0; + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to product_concept_feature"); } do { // convert the 'id' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->id, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to product_concept_feature to be a `identifier`")); } + } while (0); + do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->name, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to product_concept_feature to be a `label`")); } + } while (0); + do { // convert the 'description' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2] = true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert(in->description, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to product_concept_feature to be a `text`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, conditional_concept_feature* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to conditional_concept_feature"); } do { // convert the 'condition' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->condition, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to conditional_concept_feature to be a `concept_feature_relationship_with_condition`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, conductance_measure_with_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to conductance_measure_with_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, conductance_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to conductance_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, configuration_item* in) +{ + size_t base = 0; + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to configuration_item"); } do { // convert the 'id' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->id, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to configuration_item to be a `identifier`")); } + } while (0); + do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->name, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to configuration_item to be a `label`")); } + } while (0); + do { // convert the 'description' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2] = true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert(in->description, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to configuration_item to be a `text`")); } + } while (0); + do { // convert the 'item_concept' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[3] = true; break; } + try { GenericConvert(in->item_concept, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to configuration_item to be a `product_concept`")); } + } while (0); + do { // convert the 'purpose' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[4] = true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert(in->purpose, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to configuration_item to be a `label`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, configurable_item* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to configurable_item"); } do { // convert the 'item_concept_feature' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->item_concept_feature, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to configurable_item to be a `SET [1:?] OF product_concept_feature_association`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, effectivity* in) +{ + size_t base = 0; + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to effectivity"); } do { // convert the 'id' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->id, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to effectivity to be a `identifier`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, product_definition_effectivity* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to product_definition_effectivity"); } do { // convert the 'usage' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->usage, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to product_definition_effectivity to be a `product_definition_relationship`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, configuration_effectivity* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to configuration_effectivity"); } do { // convert the 'configuration' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->configuration, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to configuration_effectivity to be a `configuration_design`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, configuration_item_relationship* in) +{ + size_t base = 0; + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to configuration_item_relationship"); } do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->name, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to configuration_item_relationship to be a `label`")); } + } while (0); + do { // convert the 'description' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert(in->description, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to configuration_item_relationship to be a `text`")); } + } while (0); + do { // convert the 'relating_configuration_item' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2] = true; break; } + try { GenericConvert(in->relating_configuration_item, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to configuration_item_relationship to be a `configuration_item`")); } + } while (0); + do { // convert the 'related_configuration_item' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[3] = true; break; } + try { GenericConvert(in->related_configuration_item, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to configuration_item_relationship to be a `configuration_item`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, configuration_item_hierarchical_relationship* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to configuration_item_hierarchical_relationship"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, configuration_item_revision_sequence* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to configuration_item_revision_sequence"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, configured_effectivity_assignment* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to configured_effectivity_assignment"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to configured_effectivity_assignment to be a `SET [1:?] OF configured_effectivity_item`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, configured_effectivity_context_assignment* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to configured_effectivity_context_assignment"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to configured_effectivity_context_assignment to be a `SET [1:?] OF configured_effectivity_context_item`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, conical_stepped_hole_transition* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to conical_stepped_hole_transition"); } do { // convert the 'transition_number' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->transition_number, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to conical_stepped_hole_transition to be a `positive_integer`")); } + } while (0); + do { // convert the 'cone_apex_angle' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->cone_apex_angle, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to conical_stepped_hole_transition to be a `plane_angle_measure`")); } + } while (0); + do { // convert the 'cone_base_radius' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->cone_base_radius, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to conical_stepped_hole_transition to be a `positive_length_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, elementary_surface* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to elementary_surface"); } do { // convert the 'position' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->position, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to elementary_surface to be a `axis2_placement_3d`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, conical_surface* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to conical_surface"); } do { // convert the 'radius' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->radius, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to conical_surface to be a `length_measure`")); } + } while (0); + do { // convert the 'semi_angle' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->semi_angle, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to conical_surface to be a `plane_angle_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, connected_edge_set* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to connected_edge_set"); } do { // convert the 'ces_edges' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->ces_edges, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to connected_edge_set to be a `SET [1:?] OF edge`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, connected_face_sub_set* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to connected_face_sub_set"); } do { // convert the 'parent_face_set' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->parent_face_set, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to connected_face_sub_set to be a `connected_face_set`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, constructive_geometry_representation* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to constructive_geometry_representation"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, representation_relationship* in) +{ + size_t base = 0; + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to representation_relationship"); } do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->name, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to representation_relationship to be a `label`")); } + } while (0); + do { // convert the 'description' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert(in->description, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to representation_relationship to be a `text`")); } + } while (0); + do { // convert the 'rep_1' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2] = true; break; } + try { GenericConvert(in->rep_1, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to representation_relationship to be a `representation`")); } + } while (0); + do { // convert the 'rep_2' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[3] = true; break; } + try { GenericConvert(in->rep_2, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to representation_relationship to be a `representation`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, constructive_geometry_representation_relationship* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to constructive_geometry_representation_relationship"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, contact_ratio_representation* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to contact_ratio_representation"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, invisibility* in) +{ + size_t base = 0; + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to invisibility"); } do { // convert the 'invisible_items' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->invisible_items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to invisibility to be a `SET [1:?] OF invisible_item`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, context_dependent_invisibility* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to context_dependent_invisibility"); } do { // convert the 'presentation_context' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->presentation_context, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to context_dependent_invisibility to be a `invisibility_context`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, over_riding_styled_item* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to over_riding_styled_item"); } do { // convert the 'over_ridden_style' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->over_ridden_style, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to over_riding_styled_item to be a `styled_item`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, context_dependent_over_riding_styled_item* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to context_dependent_over_riding_styled_item"); } do { // convert the 'style_context' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->style_context, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to context_dependent_over_riding_styled_item to be a `LIST [1:?] OF style_context_select`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, context_dependent_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to context_dependent_unit"); } do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->name, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to context_dependent_unit to be a `label`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, conversion_based_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to conversion_based_unit"); } do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->name, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to conversion_based_unit to be a `label`")); } + } while (0); + do { // convert the 'conversion_factor' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->conversion_factor, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to conversion_based_unit to be a `measure_with_unit`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, csg_shape_representation* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to csg_shape_representation"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, csg_solid* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to csg_solid"); } do { // convert the 'tree_root_expression' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->tree_root_expression, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to csg_solid to be a `csg_select`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, currency* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to currency"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, currency_measure_with_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to currency_measure_with_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, curve_bounded_surface* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to curve_bounded_surface"); } do { // convert the 'basis_surface' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->basis_surface, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to curve_bounded_surface to be a `surface`")); } + } while (0); + do { // convert the 'boundaries' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->boundaries, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to curve_bounded_surface to be a `SET [1:?] OF boundary_curve`")); } + } while (0); + do { // convert the 'implicit_outer' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->implicit_outer, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to curve_bounded_surface to be a `BOOLEAN`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, curve_dimension* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to curve_dimension"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, curve_replica* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to curve_replica"); } do { // convert the 'parent_curve' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->parent_curve, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to curve_replica to be a `curve`")); } + } while (0); + do { // convert the 'transformation' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->transformation, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to curve_replica to be a `cartesian_transformation_operator`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, curve_style* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to curve_style"); } do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->name, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to curve_style to be a `label`")); } + } while (0); + do { // convert the 'curve_font' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->curve_font, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to curve_style to be a `curve_font_or_scaled_curve_font_select`")); } + } while (0); + do { // convert the 'curve_width' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->curve_width, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to curve_style to be a `size_select`")); } + } while (0); + do { // convert the 'curve_colour' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->curve_colour, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to curve_style to be a `colour`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, curve_style_font* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to curve_style_font"); } do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->name, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to curve_style_font to be a `label`")); } + } while (0); + do { // convert the 'pattern_list' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->pattern_list, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to curve_style_font to be a `LIST [1:?] OF curve_style_font_pattern`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, curve_style_font_and_scaling* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to curve_style_font_and_scaling"); } do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->name, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to curve_style_font_and_scaling to be a `label`")); } + } while (0); + do { // convert the 'curve_font' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->curve_font, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to curve_style_font_and_scaling to be a `curve_style_font_select`")); } + } while (0); + do { // convert the 'curve_font_scaling' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->curve_font_scaling, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to curve_style_font_and_scaling to be a `REAL`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, curve_style_font_pattern* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to curve_style_font_pattern"); } do { // convert the 'visible_segment_length' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->visible_segment_length, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to curve_style_font_pattern to be a `positive_length_measure`")); } + } while (0); + do { // convert the 'invisible_segment_length' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->invisible_segment_length, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to curve_style_font_pattern to be a `positive_length_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, curve_swept_solid_shape_representation* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to curve_swept_solid_shape_representation"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, cylindrical_surface* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to cylindrical_surface"); } do { // convert the 'radius' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->radius, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to cylindrical_surface to be a `positive_length_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, cylindricity_tolerance* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to cylindricity_tolerance"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, date_representation_item* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, date_time_representation_item* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, dated_effectivity* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to dated_effectivity"); } do { // convert the 'effectivity_end_date' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert(in->effectivity_end_date, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to dated_effectivity to be a `date_time_or_event_occurrence`")); } + } while (0); + do { // convert the 'effectivity_start_date' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->effectivity_start_date, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to dated_effectivity to be a `date_time_or_event_occurrence`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, datum* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to datum"); } do { // convert the 'identification' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->identification, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to datum to be a `identifier`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, datum_feature* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to datum_feature"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, datum_feature_callout* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to datum_feature_callout"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, datum_reference* in) +{ + size_t base = 0; + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to datum_reference"); } do { // convert the 'precedence' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->precedence, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to datum_reference to be a `INTEGER`")); } + } while (0); + do { // convert the 'referenced_datum' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->referenced_datum, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to datum_reference to be a `datum`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, datum_target* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to datum_target"); } do { // convert the 'target_id' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->target_id, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to datum_target to be a `identifier`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, datum_target_callout* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to datum_target_callout"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, default_tolerance_table* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to default_tolerance_table"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, default_tolerance_table_cell* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to default_tolerance_table_cell"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, defined_symbol* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to defined_symbol"); } do { // convert the 'definition' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->definition, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to defined_symbol to be a `defined_symbol_select`")); } + } while (0); + do { // convert the 'target' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->target, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to defined_symbol to be a `symbol_target`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, definitional_representation* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to definitional_representation"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, definitional_representation_relationship* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to definitional_representation_relationship"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, definitional_representation_relationship_with_same_context* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to definitional_representation_relationship_with_same_context"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, degenerate_pcurve* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to degenerate_pcurve"); } do { // convert the 'basis_surface' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->basis_surface, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to degenerate_pcurve to be a `surface`")); } + } while (0); + do { // convert the 'reference_to_curve' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->reference_to_curve, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to degenerate_pcurve to be a `definitional_representation`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, toroidal_surface* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to toroidal_surface"); } do { // convert the 'major_radius' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->major_radius, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to toroidal_surface to be a `positive_length_measure`")); } + } while (0); + do { // convert the 'minor_radius' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->minor_radius, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to toroidal_surface to be a `positive_length_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, degenerate_toroidal_surface* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to degenerate_toroidal_surface"); } do { // convert the 'select_outer' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->select_outer, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to degenerate_toroidal_surface to be a `BOOLEAN`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, descriptive_representation_item* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to descriptive_representation_item"); } do { // convert the 'description' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->description, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to descriptive_representation_item to be a `text`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, product_definition_context* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to product_definition_context"); } do { // convert the 'life_cycle_stage' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->life_cycle_stage, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to product_definition_context to be a `label`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, design_context* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to design_context"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, design_make_from_relationship* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to design_make_from_relationship"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, diameter_dimension* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to diameter_dimension"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, ratio_measure_with_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to ratio_measure_with_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, dielectric_constant_measure_with_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to dielectric_constant_measure_with_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, dimension_callout* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to dimension_callout"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, draughting_callout_relationship* in) +{ + size_t base = 0; + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to draughting_callout_relationship"); } do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->name, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to draughting_callout_relationship to be a `label`")); } + } while (0); + do { // convert the 'description' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->description, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to draughting_callout_relationship to be a `text`")); } + } while (0); + do { // convert the 'relating_draughting_callout' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2] = true; break; } + try { GenericConvert(in->relating_draughting_callout, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to draughting_callout_relationship to be a `draughting_callout`")); } + } while (0); + do { // convert the 'related_draughting_callout' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[3] = true; break; } + try { GenericConvert(in->related_draughting_callout, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to draughting_callout_relationship to be a `draughting_callout`")); } + } while (0); + return base; +} + +} +} diff --git a/code/Importer/StepFile/StepFileGen3.cpp b/code/Importer/StepFile/StepFileGen3.cpp new file mode 100644 index 000000000..d8d81141f --- /dev/null +++ b/code/Importer/StepFile/StepFileGen3.cpp @@ -0,0 +1,5746 @@ +/* +Open Asset Import Library (ASSIMP) +---------------------------------------------------------------------- + +Copyright (c) 2006-2010, ASSIMP Development Team +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the ASSIMP team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the ASSIMP Development Team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +#include "code/Importer/StepFile/StepReaderGen.h" + +namespace Assimp { +using namespace StepFile; +namespace STEP { + +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, dimension_callout_component_relationship* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to dimension_callout_component_relationship"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, dimension_callout_relationship* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to dimension_callout_relationship"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, dimension_curve* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to dimension_curve"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, terminator_symbol* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to terminator_symbol"); } do { // convert the 'annotated_curve' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->annotated_curve, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to terminator_symbol to be a `annotation_curve_occurrence`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, dimension_curve_terminator* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to dimension_curve_terminator"); } do { // convert the 'role' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->role, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to dimension_curve_terminator to be a `dimension_extent_usage`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, dimension_curve_terminator_to_projection_curve_associativity* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to dimension_curve_terminator_to_projection_curve_associativity"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, dimension_pair* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to dimension_pair"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, dimension_text_associativity* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, dimensional_location_with_path* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to dimensional_location_with_path"); } do { // convert the 'path' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->path, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to dimensional_location_with_path to be a `shape_aspect`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, dimensional_size_with_path* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to dimensional_size_with_path"); } do { // convert the 'path' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->path, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to dimensional_size_with_path to be a `shape_aspect`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, executed_action* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to executed_action"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, directed_action* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to directed_action"); } do { // convert the 'directive' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->directive, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to directed_action to be a `action_directive`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, directed_dimensional_location* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to directed_dimensional_location"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, direction* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to direction"); } do { // convert the 'direction_ratios' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->direction_ratios, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to direction to be a `LIST [2:3] OF REAL`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, document_file* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, document_identifier* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to document_identifier"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, document_identifier_assignment* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to document_identifier_assignment"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to document_identifier_assignment to be a `SET [1:?] OF document_identifier_assigned_item`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, document_product_association* in) +{ + size_t base = 0; + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to document_product_association"); } do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->name, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to document_product_association to be a `label`")); } + } while (0); + do { // convert the 'description' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert(in->description, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to document_product_association to be a `text`")); } + } while (0); + do { // convert the 'relating_document' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2] = true; break; } + try { GenericConvert(in->relating_document, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to document_product_association to be a `document`")); } + } while (0); + do { // convert the 'related_product' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[3] = true; break; } + try { GenericConvert(in->related_product, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to document_product_association to be a `product_or_formation_or_definition`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, document_product_equivalence* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to document_product_equivalence"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, dose_equivalent_measure_with_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to dose_equivalent_measure_with_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, dose_equivalent_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to dose_equivalent_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, double_offset_shelled_solid* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to double_offset_shelled_solid"); } do { // convert the 'thickness2' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->thickness2, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to double_offset_shelled_solid to be a `length_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, item_defined_transformation* in) +{ + size_t base = 0; + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to item_defined_transformation"); } do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->name, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to item_defined_transformation to be a `label`")); } + } while (0); + do { // convert the 'description' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert(in->description, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to item_defined_transformation to be a `text`")); } + } while (0); + do { // convert the 'transform_item_1' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2] = true; break; } + try { GenericConvert(in->transform_item_1, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to item_defined_transformation to be a `representation_item`")); } + } while (0); + do { // convert the 'transform_item_2' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[3] = true; break; } + try { GenericConvert(in->transform_item_2, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to item_defined_transformation to be a `representation_item`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, transformation_with_derived_angle* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to transformation_with_derived_angle"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, draped_defined_transformation* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to draped_defined_transformation"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, draughting_annotation_occurrence* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to draughting_annotation_occurrence"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, draughting_elements* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to draughting_elements"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, draughting_model* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to draughting_model"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, item_identified_representation_usage* in) +{ + size_t base = 0; + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to item_identified_representation_usage"); } do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->name, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to item_identified_representation_usage to be a `label`")); } + } while (0); + do { // convert the 'description' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert(in->description, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to item_identified_representation_usage to be a `text`")); } + } while (0); + do { // convert the 'definition' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2] = true; break; } + try { GenericConvert(in->definition, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to item_identified_representation_usage to be a `represented_definition`")); } + } while (0); + do { // convert the 'used_representation' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[3] = true; break; } + try { GenericConvert(in->used_representation, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to item_identified_representation_usage to be a `representation`")); } + } while (0); + do { // convert the 'identified_item' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[4] = true; break; } + try { GenericConvert(in->identified_item, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to item_identified_representation_usage to be a `representation_item`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, draughting_model_item_association* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to draughting_model_item_association"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, pre_defined_colour* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, draughting_pre_defined_colour* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, pre_defined_item* in) +{ + size_t base = 0; + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to pre_defined_item"); } do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->name, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to pre_defined_item to be a `label`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, pre_defined_curve_font* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to pre_defined_curve_font"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, draughting_pre_defined_curve_font* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to draughting_pre_defined_curve_font"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, pre_defined_text_font* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to pre_defined_text_font"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, draughting_pre_defined_text_font* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to draughting_pre_defined_text_font"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, draughting_subfigure_representation* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to draughting_subfigure_representation"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, draughting_symbol_representation* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to draughting_symbol_representation"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, text_literal* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to text_literal"); } do { // convert the 'literal' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->literal, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to text_literal to be a `presentable_text`")); } + } while (0); + do { // convert the 'placement' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->placement, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to text_literal to be a `axis2_placement`")); } + } while (0); + do { // convert the 'alignment' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2] = true; break; } + try { GenericConvert(in->alignment, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to text_literal to be a `text_alignment`")); } + } while (0); + do { // convert the 'path' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[3] = true; break; } + try { GenericConvert(in->path, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to text_literal to be a `text_path`")); } + } while (0); + do { // convert the 'font' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[4] = true; break; } + try { GenericConvert(in->font, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to text_literal to be a `font_select`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, text_literal_with_delineation* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 7) { throw STEP::TypeError("expected 7 arguments to text_literal_with_delineation"); } do { // convert the 'delineation' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->delineation, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 6 to text_literal_with_delineation to be a `text_delineation`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, draughting_text_literal_with_delineation* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 7) { throw STEP::TypeError("expected 7 arguments to draughting_text_literal_with_delineation"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, presentation_set* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, drawing_revision* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to drawing_revision"); } do { // convert the 'revision_identifier' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->revision_identifier, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to drawing_revision to be a `identifier`")); } + } while (0); + do { // convert the 'drawing_identifier' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->drawing_identifier, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to drawing_revision to be a `drawing_definition`")); } + } while (0); + do { // convert the 'intended_scale' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert(in->intended_scale, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to drawing_revision to be a `text`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, presentation_representation* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to presentation_representation"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, presentation_area* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to presentation_area"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, drawing_sheet_revision* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to drawing_sheet_revision"); } do { // convert the 'revision_identifier' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->revision_identifier, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to drawing_sheet_revision to be a `identifier`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, drawing_sheet_revision_sequence* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to drawing_sheet_revision_sequence"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, drawing_sheet_revision_usage* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to drawing_sheet_revision_usage"); } do { // convert the 'sheet_number' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->sheet_number, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to drawing_sheet_revision_usage to be a `identifier`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, edge* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to edge"); } do { // convert the 'edge_start' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->edge_start, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to edge to be a `vertex`")); } + } while (0); + do { // convert the 'edge_end' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->edge_end, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to edge to be a `vertex`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, edge_based_wireframe_model* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to edge_based_wireframe_model"); } do { // convert the 'ebwm_boundary' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->ebwm_boundary, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to edge_based_wireframe_model to be a `SET [1:?] OF connected_edge_set`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, edge_based_wireframe_shape_representation* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to edge_based_wireframe_shape_representation"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, edge_blended_solid* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to edge_blended_solid"); } do { // convert the 'blended_edges' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->blended_edges, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to edge_blended_solid to be a `LIST [1:?] OF edge_curve`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, edge_curve* in) +{ + size_t base = 0; + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to edge_curve"); } do { // convert the 'edge_geometry' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->edge_geometry, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to edge_curve to be a `curve`")); } + } while (0); + do { // convert the 'same_sense' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->same_sense, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to edge_curve to be a `BOOLEAN`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, edge_loop* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, electric_charge_measure_with_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to electric_charge_measure_with_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, electric_charge_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to electric_charge_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, electric_current_measure_with_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to electric_current_measure_with_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, electric_current_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to electric_current_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, electric_potential_measure_with_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to electric_potential_measure_with_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, electric_potential_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to electric_potential_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, elementary_brep_shape_representation* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to elementary_brep_shape_representation"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, ellipse* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to ellipse"); } do { // convert the 'semi_axis_1' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->semi_axis_1, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to ellipse to be a `positive_length_measure`")); } + } while (0); + do { // convert the 'semi_axis_2' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->semi_axis_2, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to ellipse to be a `positive_length_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, energy_measure_with_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to energy_measure_with_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, energy_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to energy_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, property_definition* in) +{ + size_t base = 0; + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to property_definition"); } do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->name, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to property_definition to be a `label`")); } + } while (0); + do { // convert the 'description' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert(in->description, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to property_definition to be a `text`")); } + } while (0); + do { // convert the 'definition' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2] = true; break; } + try { GenericConvert(in->definition, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to property_definition to be a `characterized_definition`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, fact_type* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to fact_type"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, entity_assertion* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to entity_assertion"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, enum_reference_prefix* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to enum_reference_prefix"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, evaluated_characteristic* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, evaluated_degenerate_pcurve* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to evaluated_degenerate_pcurve"); } do { // convert the 'equivalent_point' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->equivalent_point, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to evaluated_degenerate_pcurve to be a `cartesian_point`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, evaluation_product_definition* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to evaluation_product_definition"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, event_occurrence* in) +{ + size_t base = 0; + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to event_occurrence"); } do { // convert the 'id' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->id, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to event_occurrence to be a `identifier`")); } + } while (0); + do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->name, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to event_occurrence to be a `label`")); } + } while (0); + do { // convert the 'description' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2] = true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert(in->description, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to event_occurrence to be a `text`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, product_concept_feature_category* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to product_concept_feature_category"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, exclusive_product_concept_feature_category* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to exclusive_product_concept_feature_category"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, uncertainty_qualifier* in) +{ + size_t base = 0; + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to uncertainty_qualifier"); } do { // convert the 'measure_name' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->measure_name, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to uncertainty_qualifier to be a `label`")); } + } while (0); + do { // convert the 'description' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->description, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to uncertainty_qualifier to be a `text`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, standard_uncertainty* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to standard_uncertainty"); } do { // convert the 'uncertainty_value' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->uncertainty_value, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to standard_uncertainty to be a `REAL`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, expanded_uncertainty* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to expanded_uncertainty"); } do { // convert the 'coverage_factor' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->coverage_factor, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to expanded_uncertainty to be a `REAL`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, representation_item_relationship* in) +{ + size_t base = 0; + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to representation_item_relationship"); } do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->name, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to representation_item_relationship to be a `label`")); } + } while (0); + do { // convert the 'description' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert(in->description, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to representation_item_relationship to be a `text`")); } + } while (0); + do { // convert the 'relating_representation_item' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2] = true; break; } + try { GenericConvert(in->relating_representation_item, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to representation_item_relationship to be a `representation_item`")); } + } while (0); + do { // convert the 'related_representation_item' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[3] = true; break; } + try { GenericConvert(in->related_representation_item, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to representation_item_relationship to be a `representation_item`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, explicit_procedural_representation_item_relationship* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to explicit_procedural_representation_item_relationship"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, explicit_procedural_geometric_representation_item_relationship* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to explicit_procedural_geometric_representation_item_relationship"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, explicit_procedural_representation_relationship* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to explicit_procedural_representation_relationship"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, explicit_procedural_shape_representation_relationship* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to explicit_procedural_shape_representation_relationship"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, expression_conversion_based_unit* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, extension* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to extension"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, extent* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to extent"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, external_source* in) +{ + size_t base = 0; + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to external_source"); } do { // convert the 'source_id' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->source_id, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to external_source to be a `source_item`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, external_class_library* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to external_class_library"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, externally_defined_class* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, externally_defined_colour* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, externally_defined_context_dependent_unit* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, externally_defined_conversion_based_unit* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, externally_defined_currency* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, externally_defined_item* in) +{ + size_t base = 0; + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to externally_defined_item"); } do { // convert the 'item_id' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->item_id, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to externally_defined_item to be a `source_item`")); } + } while (0); + do { // convert the 'source' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->source, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to externally_defined_item to be a `external_source`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, externally_defined_curve_font* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to externally_defined_curve_font"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, externally_defined_dimension_definition* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, externally_defined_general_property* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, externally_defined_hatch_style* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, externally_defined_marker* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, picture_representation_item* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to picture_representation_item"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, externally_defined_picture_representation_item* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to externally_defined_picture_representation_item"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, externally_defined_representation_item* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, externally_defined_string* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, externally_defined_symbol* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to externally_defined_symbol"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, externally_defined_terminator_symbol* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to externally_defined_terminator_symbol"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, externally_defined_text_font* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to externally_defined_text_font"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, externally_defined_tile* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to externally_defined_tile"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, externally_defined_tile_style* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, swept_area_solid* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to swept_area_solid"); } do { // convert the 'swept_area' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->swept_area, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to swept_area_solid to be a `curve_bounded_surface`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, extruded_area_solid* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to extruded_area_solid"); } do { // convert the 'extruded_direction' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->extruded_direction, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to extruded_area_solid to be a `direction`")); } + } while (0); + do { // convert the 'depth' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->depth, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to extruded_area_solid to be a `positive_length_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, swept_face_solid* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to swept_face_solid"); } do { // convert the 'swept_face' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->swept_face, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to swept_face_solid to be a `face_surface`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, extruded_face_solid* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to extruded_face_solid"); } do { // convert the 'extruded_direction' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->extruded_direction, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to extruded_face_solid to be a `direction`")); } + } while (0); + do { // convert the 'depth' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->depth, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to extruded_face_solid to be a `positive_length_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, extruded_face_solid_with_trim_conditions* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 10) { throw STEP::TypeError("expected 10 arguments to extruded_face_solid_with_trim_conditions"); } do { // convert the 'first_trim_condition' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->first_trim_condition, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to extruded_face_solid_with_trim_conditions to be a `trim_condition_select`")); } + } while (0); + do { // convert the 'second_trim_condition' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->second_trim_condition, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to extruded_face_solid_with_trim_conditions to be a `trim_condition_select`")); } + } while (0); + do { // convert the 'first_trim_intent' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2] = true; break; } + try { GenericConvert(in->first_trim_intent, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 6 to extruded_face_solid_with_trim_conditions to be a `trim_intent`")); } + } while (0); + do { // convert the 'second_trim_intent' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[3] = true; break; } + try { GenericConvert(in->second_trim_intent, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 7 to extruded_face_solid_with_trim_conditions to be a `trim_intent`")); } + } while (0); + do { // convert the 'first_offset' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[4] = true; break; } + try { GenericConvert(in->first_offset, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 8 to extruded_face_solid_with_trim_conditions to be a `non_negative_length_measure`")); } + } while (0); + do { // convert the 'second_offset' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[5] = true; break; } + try { GenericConvert(in->second_offset, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 9 to extruded_face_solid_with_trim_conditions to be a `non_negative_length_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, extruded_face_solid_with_draft_angle* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 11) { throw STEP::TypeError("expected 11 arguments to extruded_face_solid_with_draft_angle"); } do { // convert the 'draft_angle' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->draft_angle, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 10 to extruded_face_solid_with_draft_angle to be a `plane_angle_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, extruded_face_solid_with_multiple_draft_angles* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 11) { throw STEP::TypeError("expected 11 arguments to extruded_face_solid_with_multiple_draft_angles"); } do { // convert the 'draft_angles' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->draft_angles, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 10 to extruded_face_solid_with_multiple_draft_angles to be a `LIST [2:?] OF plane_angle_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, face* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to face"); } do { // convert the 'bounds' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->bounds, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to face to be a `SET [1:?] OF face_bound`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, face_based_surface_model* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to face_based_surface_model"); } do { // convert the 'fbsm_faces' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->fbsm_faces, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to face_based_surface_model to be a `SET [1:?] OF connected_face_set`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, face_bound* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to face_bound"); } do { // convert the 'bound' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->bound, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to face_bound to be a `loop`")); } + } while (0); + do { // convert the 'orientation' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->orientation, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to face_bound to be a `BOOLEAN`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, face_outer_bound* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to face_outer_bound"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, faceted_brep* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to faceted_brep"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, faceted_brep_shape_representation* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to faceted_brep_shape_representation"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, fill_area_style* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to fill_area_style"); } do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->name, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to fill_area_style to be a `label`")); } + } while (0); + do { // convert the 'fill_styles' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->fill_styles, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to fill_area_style to be a `SET [1:?] OF fill_style_select`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, fill_area_style_hatching* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to fill_area_style_hatching"); } do { // convert the 'hatch_line_appearance' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->hatch_line_appearance, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to fill_area_style_hatching to be a `curve_style`")); } + } while (0); + do { // convert the 'start_of_next_hatch_line' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->start_of_next_hatch_line, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to fill_area_style_hatching to be a `one_direction_repeat_factor`")); } + } while (0); + do { // convert the 'point_of_reference_hatch_line' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->point_of_reference_hatch_line, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to fill_area_style_hatching to be a `cartesian_point`")); } + } while (0); + do { // convert the 'pattern_start' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->pattern_start, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to fill_area_style_hatching to be a `cartesian_point`")); } + } while (0); + do { // convert the 'hatch_line_angle' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->hatch_line_angle, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to fill_area_style_hatching to be a `plane_angle_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, fill_area_style_tile_coloured_region* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to fill_area_style_tile_coloured_region"); } do { // convert the 'closed_curve' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->closed_curve, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to fill_area_style_tile_coloured_region to be a `curve_or_annotation_curve_occurrence`")); } + } while (0); + do { // convert the 'region_colour' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->region_colour, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to fill_area_style_tile_coloured_region to be a `colour`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, fill_area_style_tile_curve_with_style* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to fill_area_style_tile_curve_with_style"); } do { // convert the 'styled_curve' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->styled_curve, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to fill_area_style_tile_curve_with_style to be a `annotation_curve_occurrence`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, fill_area_style_tile_symbol_with_style* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to fill_area_style_tile_symbol_with_style"); } do { // convert the 'symbol' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->symbol, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to fill_area_style_tile_symbol_with_style to be a `annotation_symbol_occurrence`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, fill_area_style_tiles* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to fill_area_style_tiles"); } do { // convert the 'tiling_pattern' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->tiling_pattern, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to fill_area_style_tiles to be a `two_direction_repeat_factor`")); } + } while (0); + do { // convert the 'tiles' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->tiles, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to fill_area_style_tiles to be a `SET [1:?] OF fill_area_style_tile_shape_select`")); } + } while (0); + do { // convert the 'tiling_scale' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->tiling_scale, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to fill_area_style_tiles to be a `positive_ratio_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, shape_representation_relationship* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to shape_representation_relationship"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, flat_pattern_ply_representation_relationship* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to flat_pattern_ply_representation_relationship"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, flatness_tolerance* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to flatness_tolerance"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, force_measure_with_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to force_measure_with_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, force_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to force_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, forward_chaining_rule* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to forward_chaining_rule"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, forward_chaining_rule_premise* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, frequency_measure_with_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to frequency_measure_with_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, frequency_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to frequency_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, func* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to func"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, functional_breakdown_context* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to functional_breakdown_context"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, functional_element_usage* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to functional_element_usage"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, general_material_property* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to general_material_property"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, simple_generic_expression* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, generic_literal* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, generic_variable* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, geometric_alignment* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to geometric_alignment"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, geometric_set* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to geometric_set"); } do { // convert the 'elements' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->elements, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to geometric_set to be a `SET [1:?] OF geometric_set_select`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, geometric_curve_set* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to geometric_curve_set"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, geometric_intersection* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to geometric_intersection"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, geometric_item_specific_usage* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to geometric_item_specific_usage"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, geometric_model_element_relationship* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, representation_context* in) +{ + size_t base = 0; + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to representation_context"); } do { // convert the 'context_identifier' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->context_identifier, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to representation_context to be a `identifier`")); } + } while (0); + do { // convert the 'context_type' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->context_type, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to representation_context to be a `text`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, geometric_representation_context* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to geometric_representation_context"); } do { // convert the 'coordinate_space_dimension' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->coordinate_space_dimension, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to geometric_representation_context to be a `dimension_count`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, geometric_tolerance_with_defined_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to geometric_tolerance_with_defined_unit"); } do { // convert the 'unit_size' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->unit_size, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to geometric_tolerance_with_defined_unit to be a `measure_with_unit`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, geometrical_tolerance_callout* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to geometrical_tolerance_callout"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, geometrically_bounded_2d_wireframe_representation* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to geometrically_bounded_2d_wireframe_representation"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, geometrically_bounded_surface_shape_representation* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to geometrically_bounded_surface_shape_representation"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, geometrically_bounded_wireframe_shape_representation* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to geometrically_bounded_wireframe_shape_representation"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, global_assignment* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to global_assignment"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, global_uncertainty_assigned_context* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to global_uncertainty_assigned_context"); } do { // convert the 'uncertainty' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->uncertainty, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to global_uncertainty_assigned_context to be a `SET [1:?] OF uncertainty_measure_with_unit`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, global_unit_assigned_context* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to global_unit_assigned_context"); } do { // convert the 'units' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->units, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to global_unit_assigned_context to be a `SET [1:?] OF unit`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, ground_fact* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to ground_fact"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, hardness_representation* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to hardness_representation"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, hidden_element_over_riding_styled_item* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to hidden_element_over_riding_styled_item"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, hyperbola* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to hyperbola"); } do { // convert the 'semi_axis' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->semi_axis, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to hyperbola to be a `positive_length_measure`")); } + } while (0); + do { // convert the 'semi_imag_axis' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->semi_imag_axis, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to hyperbola to be a `positive_length_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, illuminance_measure_with_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to illuminance_measure_with_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, illuminance_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to illuminance_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, included_text_block* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to included_text_block"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, inclusion_product_concept_feature* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to inclusion_product_concept_feature"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, user_selected_elements* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to user_selected_elements"); } do { // convert the 'picked_items' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->picked_items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to user_selected_elements to be a `SET [1:?] OF representation_item`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, indirectly_selected_elements* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to indirectly_selected_elements"); } do { // convert the 'indirectly_picked_items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->indirectly_picked_items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to indirectly_selected_elements to be a `SET [1:?] OF representation_item`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, indirectly_selected_shape_elements* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, inductance_measure_with_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to inductance_measure_with_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, inductance_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to inductance_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, information_right* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to information_right"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, information_usage_right* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to information_usage_right"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, instance_usage_context_assignment* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to instance_usage_context_assignment"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to instance_usage_context_assignment to be a `SET [1:?] OF instance_usage_context_select`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, instanced_feature* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, literal_number* in) +{ + size_t base = 0; + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to literal_number"); } do { // convert the 'the_value' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->the_value, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to literal_number to be a `NUMBER`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, int_literal* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to int_literal"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, integer_representation_item* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, surface_curve* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to surface_curve"); } do { // convert the 'curve_3d' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->curve_3d, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to surface_curve to be a `curve`")); } + } while (0); + do { // convert the 'associated_geometry' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->associated_geometry, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to surface_curve to be a `LIST [1:2] OF pcurve_or_surface`")); } + } while (0); + do { // convert the 'master_representation' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2] = true; break; } + try { GenericConvert(in->master_representation, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to surface_curve to be a `preferred_surface_curve_representation`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, intersection_curve* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to intersection_curve"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, interval_expression* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, iso4217_currency* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to iso4217_currency"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, known_source* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, laid_defined_transformation* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to laid_defined_transformation"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, language* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to language"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, leader_curve* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to leader_curve"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, leader_directed_callout* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to leader_directed_callout"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, leader_directed_dimension* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to leader_directed_dimension"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, leader_terminator* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to leader_terminator"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, length_measure_with_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to length_measure_with_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, length_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to length_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, light_source* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to light_source"); } do { // convert the 'light_colour' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->light_colour, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to light_source to be a `colour`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, light_source_ambient* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to light_source_ambient"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, light_source_directional* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to light_source_directional"); } do { // convert the 'orientation' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->orientation, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to light_source_directional to be a `direction`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, light_source_positional* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to light_source_positional"); } do { // convert the 'position' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->position, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to light_source_positional to be a `cartesian_point`")); } + } while (0); + do { // convert the 'constant_attenuation' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->constant_attenuation, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to light_source_positional to be a `REAL`")); } + } while (0); + do { // convert the 'distance_attenuation' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->distance_attenuation, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to light_source_positional to be a `REAL`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, light_source_spot* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 8) { throw STEP::TypeError("expected 8 arguments to light_source_spot"); } do { // convert the 'position' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->position, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to light_source_spot to be a `cartesian_point`")); } + } while (0); + do { // convert the 'orientation' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->orientation, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to light_source_spot to be a `direction`")); } + } while (0); + do { // convert the 'concentration_exponent' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->concentration_exponent, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to light_source_spot to be a `REAL`")); } + } while (0); + do { // convert the 'constant_attenuation' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->constant_attenuation, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to light_source_spot to be a `REAL`")); } + } while (0); + do { // convert the 'distance_attenuation' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->distance_attenuation, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 6 to light_source_spot to be a `REAL`")); } + } while (0); + do { // convert the 'spread_angle' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->spread_angle, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 7 to light_source_spot to be a `positive_plane_angle_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, line* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to line"); } do { // convert the 'pnt' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->pnt, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to line to be a `cartesian_point`")); } + } while (0); + do { // convert the 'dir' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->dir, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to line to be a `vector`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, line_profile_tolerance* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to line_profile_tolerance"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, linear_dimension* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to linear_dimension"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, simple_clause* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to simple_clause"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, literal_conjunction* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to literal_conjunction"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, literal_disjunction* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to literal_disjunction"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, logical_literal* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to logical_literal"); } do { // convert the 'lit_value' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->lit_value, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to logical_literal to be a `LOGICAL`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, logical_representation_item* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, loop* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to loop"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, loss_tangent_measure_with_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to loss_tangent_measure_with_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, lot_effectivity* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to lot_effectivity"); } do { // convert the 'effectivity_lot_id' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->effectivity_lot_id, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to lot_effectivity to be a `identifier`")); } + } while (0); + do { // convert the 'effectivity_lot_size' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->effectivity_lot_size, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to lot_effectivity to be a `measure_with_unit`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, luminous_flux_measure_with_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to luminous_flux_measure_with_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, luminous_flux_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to luminous_flux_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, luminous_intensity_measure_with_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to luminous_intensity_measure_with_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, luminous_intensity_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to luminous_intensity_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, magnetic_flux_density_measure_with_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to magnetic_flux_density_measure_with_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, magnetic_flux_density_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to magnetic_flux_density_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, magnetic_flux_measure_with_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to magnetic_flux_measure_with_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, magnetic_flux_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to magnetic_flux_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, make_from_usage_option* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 8) { throw STEP::TypeError("expected 8 arguments to make_from_usage_option"); } do { // convert the 'ranking' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->ranking, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to make_from_usage_option to be a `INTEGER`")); } + } while (0); + do { // convert the 'ranking_rationale' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->ranking_rationale, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 6 to make_from_usage_option to be a `text`")); } + } while (0); + do { // convert the 'quantity' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->quantity, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 7 to make_from_usage_option to be a `measure_with_unit`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, manifold_subsurface_shape_representation* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to manifold_subsurface_shape_representation"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, manifold_surface_shape_representation* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to manifold_surface_shape_representation"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, mass_measure_with_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to mass_measure_with_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, mass_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to mass_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, material_property* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to material_property"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, property_definition_representation* in) +{ + size_t base = 0; + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to property_definition_representation"); } do { // convert the 'definition' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->definition, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to property_definition_representation to be a `represented_definition`")); } + } while (0); + do { // convert the 'used_representation' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->used_representation, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to property_definition_representation to be a `representation`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, material_property_representation* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to material_property_representation"); } do { // convert the 'dependent_environment' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->dependent_environment, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to material_property_representation to be a `data_environment`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, measure_representation_item* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, product_context* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to product_context"); } do { // convert the 'discipline_type' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->discipline_type, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to product_context to be a `label`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, mechanical_context* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to mechanical_context"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, mechanical_design_and_draughting_relationship* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to mechanical_design_and_draughting_relationship"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, mechanical_design_geometric_presentation_area* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to mechanical_design_geometric_presentation_area"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, mechanical_design_geometric_presentation_representation* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to mechanical_design_geometric_presentation_representation"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, mechanical_design_presentation_representation_with_draughting* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to mechanical_design_presentation_representation_with_draughting"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, mechanical_design_shaded_presentation_area* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to mechanical_design_shaded_presentation_area"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, mechanical_design_shaded_presentation_representation* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to mechanical_design_shaded_presentation_representation"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, min_and_major_ply_orientation_basis* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, modified_geometric_tolerance* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to modified_geometric_tolerance"); } do { // convert the 'modifier' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->modifier, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to modified_geometric_tolerance to be a `limit_condition`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, modified_solid_with_placed_configuration* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to modified_solid_with_placed_configuration"); } do { // convert the 'placing' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->placing, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to modified_solid_with_placed_configuration to be a `axis2_placement_3d`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, moments_of_inertia_representation* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to moments_of_inertia_representation"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, multi_language_attribute_assignment* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to multi_language_attribute_assignment"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to multi_language_attribute_assignment to be a `SET [1:?] OF multi_language_attribute_item`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, multiple_arity_boolean_expression* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, multiple_arity_generic_expression* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to multiple_arity_generic_expression"); } do { // convert the 'operands' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->operands, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to multiple_arity_generic_expression to be a `LIST [2:?] OF generic_expression`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, multiple_arity_numeric_expression* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, next_assembly_usage_occurrence* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to next_assembly_usage_occurrence"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, non_manifold_surface_shape_representation* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to non_manifold_surface_shape_representation"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, null_representation_item* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to null_representation_item"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, numeric_expression* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, offset_curve_2d* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to offset_curve_2d"); } do { // convert the 'basis_curve' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->basis_curve, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to offset_curve_2d to be a `curve`")); } + } while (0); + do { // convert the 'distance' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->distance, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to offset_curve_2d to be a `length_measure`")); } + } while (0); + do { // convert the 'self_intersect' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->self_intersect, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to offset_curve_2d to be a `LOGICAL`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, offset_curve_3d* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to offset_curve_3d"); } do { // convert the 'basis_curve' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->basis_curve, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to offset_curve_3d to be a `curve`")); } + } while (0); + do { // convert the 'distance' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->distance, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to offset_curve_3d to be a `length_measure`")); } + } while (0); + do { // convert the 'self_intersect' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->self_intersect, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to offset_curve_3d to be a `LOGICAL`")); } + } while (0); + do { // convert the 'ref_direction' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->ref_direction, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to offset_curve_3d to be a `direction`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, offset_surface* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to offset_surface"); } do { // convert the 'basis_surface' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->basis_surface, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to offset_surface to be a `surface`")); } + } while (0); + do { // convert the 'distance' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->distance, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to offset_surface to be a `length_measure`")); } + } while (0); + do { // convert the 'self_intersect' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->self_intersect, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to offset_surface to be a `LOGICAL`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, one_direction_repeat_factor* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to one_direction_repeat_factor"); } do { // convert the 'repeat_factor' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->repeat_factor, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to one_direction_repeat_factor to be a `vector`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, open_shell* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to open_shell"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, ordinal_date* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to ordinal_date"); } do { // convert the 'day_component' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->day_component, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to ordinal_date to be a `day_in_year_number`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, projection_directed_callout* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to projection_directed_callout"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, ordinate_dimension* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to ordinate_dimension"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, organizational_address* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 14) { throw STEP::TypeError("expected 14 arguments to organizational_address"); } do { // convert the 'organizations' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->organizations, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 12 to organizational_address to be a `SET [1:?] OF organization`")); } + } while (0); + do { // convert the 'description' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert(in->description, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 13 to organizational_address to be a `text`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, oriented_closed_shell* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to oriented_closed_shell"); } do { // convert the 'closed_shell_element' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->closed_shell_element, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to oriented_closed_shell to be a `closed_shell`")); } + } while (0); + do { // convert the 'orientation' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->orientation, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to oriented_closed_shell to be a `BOOLEAN`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, oriented_edge* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to oriented_edge"); } do { // convert the 'edge_element' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->edge_element, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to oriented_edge to be a `edge`")); } + } while (0); + do { // convert the 'orientation' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->orientation, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to oriented_edge to be a `BOOLEAN`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, oriented_face* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to oriented_face"); } do { // convert the 'face_element' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->face_element, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to oriented_face to be a `face`")); } + } while (0); + do { // convert the 'orientation' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->orientation, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to oriented_face to be a `BOOLEAN`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, oriented_open_shell* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to oriented_open_shell"); } do { // convert the 'open_shell_element' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->open_shell_element, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to oriented_open_shell to be a `open_shell`")); } + } while (0); + do { // convert the 'orientation' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->orientation, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to oriented_open_shell to be a `BOOLEAN`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, path* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to path"); } do { // convert the 'edge_list' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->edge_list, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to path to be a `LIST [1:?] OF oriented_edge`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, oriented_path* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to oriented_path"); } do { // convert the 'path_element' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->path_element, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to oriented_path to be a `path`")); } + } while (0); + do { // convert the 'orientation' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->orientation, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to oriented_path to be a `BOOLEAN`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, oriented_surface* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to oriented_surface"); } do { // convert the 'orientation' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->orientation, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to oriented_surface to be a `BOOLEAN`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, outer_boundary_curve* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to outer_boundary_curve"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, package_product_concept_feature* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to package_product_concept_feature"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, parabola* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to parabola"); } do { // convert the 'focal_dist' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->focal_dist, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to parabola to be a `length_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, parallel_offset* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to parallel_offset"); } do { // convert the 'offset' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->offset, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to parallel_offset to be a `measure_with_unit`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, parallelism_tolerance* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to parallelism_tolerance"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, parametric_representation_context* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to parametric_representation_context"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, partial_document_with_structured_text_representation_assignment* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, pcurve* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to pcurve"); } do { // convert the 'basis_surface' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->basis_surface, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to pcurve to be a `surface`")); } + } while (0); + do { // convert the 'reference_to_curve' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->reference_to_curve, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to pcurve to be a `definitional_representation`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, percentage_laminate_definition* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to percentage_laminate_definition"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, zone_structural_makeup* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to zone_structural_makeup"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, percentage_laminate_table* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to percentage_laminate_table"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, percentage_ply_definition* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to percentage_ply_definition"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, perpendicular_to* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to perpendicular_to"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, perpendicularity_tolerance* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to perpendicularity_tolerance"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, person_and_organization_address* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, personal_address* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 14) { throw STEP::TypeError("expected 14 arguments to personal_address"); } do { // convert the 'people' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->people, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 12 to personal_address to be a `SET [1:?] OF person`")); } + } while (0); + do { // convert the 'description' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert(in->description, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 13 to personal_address to be a `text`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, physical_breakdown_context* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to physical_breakdown_context"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, physical_element_usage* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to physical_element_usage"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, presentation_view* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to presentation_view"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, picture_representation* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to picture_representation"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, placed_datum_target_feature* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to placed_datum_target_feature"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, placed_feature* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to placed_feature"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, planar_extent* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to planar_extent"); } do { // convert the 'size_in_x' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->size_in_x, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to planar_extent to be a `length_measure`")); } + } while (0); + do { // convert the 'size_in_y' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->size_in_y, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to planar_extent to be a `length_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, planar_box* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to planar_box"); } do { // convert the 'placement' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->placement, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to planar_box to be a `axis2_placement`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, plane* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to plane"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, plane_angle_measure_with_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to plane_angle_measure_with_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, plane_angle_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to plane_angle_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, ply_laminate_definition* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to ply_laminate_definition"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, ply_laminate_sequence_definition* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to ply_laminate_sequence_definition"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, ply_laminate_table* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to ply_laminate_table"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, point_and_vector* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, point_on_curve* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to point_on_curve"); } do { // convert the 'basis_curve' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->basis_curve, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to point_on_curve to be a `curve`")); } + } while (0); + do { // convert the 'point_parameter' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->point_parameter, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to point_on_curve to be a `parameter_value`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, point_on_surface* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to point_on_surface"); } do { // convert the 'basis_surface' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->basis_surface, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to point_on_surface to be a `surface`")); } + } while (0); + do { // convert the 'point_parameter_u' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->point_parameter_u, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to point_on_surface to be a `parameter_value`")); } + } while (0); + do { // convert the 'point_parameter_v' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->point_parameter_v, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to point_on_surface to be a `parameter_value`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, point_path* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, point_replica* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to point_replica"); } do { // convert the 'parent_pt' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->parent_pt, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to point_replica to be a `point`")); } + } while (0); + do { // convert the 'transformation' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->transformation, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to point_replica to be a `cartesian_transformation_operator`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, point_style* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to point_style"); } do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->name, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to point_style to be a `label`")); } + } while (0); + do { // convert the 'marker' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->marker, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to point_style to be a `marker_select`")); } + } while (0); + do { // convert the 'marker_size' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->marker_size, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to point_style to be a `size_select`")); } + } while (0); + do { // convert the 'marker_colour' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->marker_colour, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to point_style to be a `colour`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, polar_complex_number_literal* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to polar_complex_number_literal"); } do { // convert the 'radius' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->radius, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to polar_complex_number_literal to be a `REAL`")); } + } while (0); + do { // convert the 'angle' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->angle, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to polar_complex_number_literal to be a `REAL`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, poly_loop* in) +{ + size_t base = 0; + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to poly_loop"); } do { // convert the 'polygon' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->polygon, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to poly_loop to be a `LIST [3:?] OF cartesian_point`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, polyline* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to polyline"); } do { // convert the 'points' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->points, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to polyline to be a `LIST [2:?] OF cartesian_point`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, position_tolerance* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to position_tolerance"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, positioned_sketch* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to positioned_sketch"); } do { // convert the 'sketch_basis' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->sketch_basis, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to positioned_sketch to be a `sketch_basis_select`")); } + } while (0); + do { // convert the 'auxiliary_elements' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->auxiliary_elements, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to positioned_sketch to be a `SET [0:?] OF auxiliary_geometric_representation_item`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, power_measure_with_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to power_measure_with_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, power_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to power_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, pre_defined_symbol* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to pre_defined_symbol"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, pre_defined_dimension_symbol* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to pre_defined_dimension_symbol"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, pre_defined_geometrical_tolerance_symbol* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to pre_defined_geometrical_tolerance_symbol"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, pre_defined_marker* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to pre_defined_marker"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, pre_defined_point_marker_symbol* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, pre_defined_surface_condition_symbol* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to pre_defined_surface_condition_symbol"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, pre_defined_surface_side_style* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to pre_defined_surface_side_style"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, pre_defined_terminator_symbol* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to pre_defined_terminator_symbol"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, pre_defined_tile* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to pre_defined_tile"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, predefined_picture_representation_item* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to predefined_picture_representation_item"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, presentation_style_assignment* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to presentation_style_assignment"); } do { // convert the 'styles' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->styles, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to presentation_style_assignment to be a `SET [1:?] OF presentation_style_select`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, presentation_style_by_context* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to presentation_style_by_context"); } do { // convert the 'style_context' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->style_context, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to presentation_style_by_context to be a `style_context_select`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, pressure_measure_with_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to pressure_measure_with_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, pressure_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to pressure_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, procedural_representation* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to procedural_representation"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, procedural_representation_sequence* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to procedural_representation_sequence"); } do { // convert the 'elements' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->elements, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to procedural_representation_sequence to be a `LIST [1:?] OF representation_item`")); } + } while (0); + do { // convert the 'suppressed_items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->suppressed_items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to procedural_representation_sequence to be a `SET [0:?] OF representation_item`")); } + } while (0); + do { // convert the 'rationale' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->rationale, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to procedural_representation_sequence to be a `text`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, procedural_shape_representation* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, procedural_shape_representation_sequence* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, product_category* in) +{ + size_t base = 0; + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to product_category"); } do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->name, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to product_category to be a `label`")); } + } while (0); + do { // convert the 'description' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert(in->description, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to product_category to be a `text`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, product_class* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, product_concept_context* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to product_concept_context"); } do { // convert the 'market_segment_type' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->market_segment_type, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to product_concept_context to be a `label`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, product_concept_feature_category_usage* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to product_concept_feature_category_usage"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to product_concept_feature_category_usage to be a `SET [1:?] OF category_usage_item`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, product_definition_element_relationship* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to product_definition_element_relationship"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, product_definition_formation* in) +{ + size_t base = 0; + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to product_definition_formation"); } do { // convert the 'id' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->id, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to product_definition_formation to be a `identifier`")); } + } while (0); + do { // convert the 'description' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert(in->description, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to product_definition_formation to be a `text`")); } + } while (0); + do { // convert the 'of_product' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2] = true; break; } + try { GenericConvert(in->of_product, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to product_definition_formation to be a `product`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, product_definition_formation_with_specified_source* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to product_definition_formation_with_specified_source"); } do { // convert the 'make_or_buy' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->make_or_buy, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to product_definition_formation_with_specified_source to be a `source`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, product_definition_group_assignment* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to product_definition_group_assignment"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to product_definition_group_assignment to be a `SET [1:1] OF product_definition_or_product_definition_relationship`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, product_definition_shape* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to product_definition_shape"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, product_definition_with_associated_documents* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to product_definition_with_associated_documents"); } do { // convert the 'documentation_ids' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->documentation_ids, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to product_definition_with_associated_documents to be a `SET [1:?] OF document`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, product_identification* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, product_material_composition_relationship* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 9) { throw STEP::TypeError("expected 9 arguments to product_material_composition_relationship"); } do { // convert the 'class' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->class_, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to product_material_composition_relationship to be a `label`")); } + } while (0); + do { // convert the 'constituent_amount' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->constituent_amount, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 6 to product_material_composition_relationship to be a `SET [1:?] OF characterized_product_composition_value`")); } + } while (0); + do { // convert the 'composition_basis' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->composition_basis, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 7 to product_material_composition_relationship to be a `label`")); } + } while (0); + do { // convert the 'determination_method' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->determination_method, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 8 to product_material_composition_relationship to be a `text`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, product_related_product_category* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to product_related_product_category"); } do { // convert the 'products' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->products, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to product_related_product_category to be a `SET [1:?] OF product`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, product_specification* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, tolerance_zone_definition* in) +{ + size_t base = 0; + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to tolerance_zone_definition"); } do { // convert the 'zone' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->zone, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to tolerance_zone_definition to be a `tolerance_zone`")); } + } while (0); + do { // convert the 'boundaries' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->boundaries, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to tolerance_zone_definition to be a `SET [1:?] OF shape_aspect`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, projected_zone_definition* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to projected_zone_definition"); } do { // convert the 'projection_end' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->projection_end, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to projected_zone_definition to be a `shape_aspect`")); } + } while (0); + do { // convert the 'projected_length' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->projected_length, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to projected_zone_definition to be a `measure_with_unit`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, projection_curve* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to projection_curve"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, promissory_usage_occurrence* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to promissory_usage_occurrence"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, qualified_representation_item* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to qualified_representation_item"); } do { // convert the 'qualifiers' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->qualifiers, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to qualified_representation_item to be a `SET [1:?] OF value_qualifier`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, qualitative_uncertainty* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to qualitative_uncertainty"); } do { // convert the 'uncertainty_value' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->uncertainty_value, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to qualitative_uncertainty to be a `text`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, quantified_assembly_component_usage* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 7) { throw STEP::TypeError("expected 7 arguments to quantified_assembly_component_usage"); } do { // convert the 'quantity' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->quantity, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 6 to quantified_assembly_component_usage to be a `measure_with_unit`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, quasi_uniform_curve* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to quasi_uniform_curve"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, quasi_uniform_surface* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 7) { throw STEP::TypeError("expected 7 arguments to quasi_uniform_surface"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, radioactivity_measure_with_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to radioactivity_measure_with_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, radioactivity_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to radioactivity_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, radius_dimension* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to radius_dimension"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, range_characteristic* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, ratio_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to ratio_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, rational_b_spline_curve* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 7) { throw STEP::TypeError("expected 7 arguments to rational_b_spline_curve"); } do { // convert the 'weights_data' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->weights_data, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 6 to rational_b_spline_curve to be a `LIST [2:?] OF REAL`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, rational_b_spline_surface* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 7) { throw STEP::TypeError("expected 7 arguments to rational_b_spline_surface"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, rational_representation_item* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, real_literal* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to real_literal"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, real_representation_item* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, rectangular_composite_surface* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to rectangular_composite_surface"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, rectangular_trimmed_surface* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 8) { throw STEP::TypeError("expected 8 arguments to rectangular_trimmed_surface"); } do { // convert the 'basis_surface' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->basis_surface, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to rectangular_trimmed_surface to be a `surface`")); } + } while (0); + do { // convert the 'u1' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->u1, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to rectangular_trimmed_surface to be a `parameter_value`")); } + } while (0); + do { // convert the 'u2' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->u2, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to rectangular_trimmed_surface to be a `parameter_value`")); } + } while (0); + do { // convert the 'v1' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->v1, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to rectangular_trimmed_surface to be a `parameter_value`")); } + } while (0); + do { // convert the 'v2' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->v2, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to rectangular_trimmed_surface to be a `parameter_value`")); } + } while (0); + do { // convert the 'usense' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->usense, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 6 to rectangular_trimmed_surface to be a `BOOLEAN`")); } + } while (0); + do { // convert the 'vsense' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->vsense, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 7 to rectangular_trimmed_surface to be a `BOOLEAN`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, referenced_modified_datum* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to referenced_modified_datum"); } do { // convert the 'modifier' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->modifier, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to referenced_modified_datum to be a `limit_condition`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, relative_event_occurrence* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to relative_event_occurrence"); } do { // convert the 'base_event' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->base_event, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to relative_event_occurrence to be a `event_occurrence`")); } + } while (0); + do { // convert the 'offset' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->offset, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to relative_event_occurrence to be a `time_measure_with_unit`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, rep_item_group* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, reparametrised_composite_curve_segment* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to reparametrised_composite_curve_segment"); } do { // convert the 'param_length' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->param_length, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to reparametrised_composite_curve_segment to be a `parameter_value`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, representation_relationship_with_transformation* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to representation_relationship_with_transformation"); } do { // convert the 'transformation_operator' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->transformation_operator, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to representation_relationship_with_transformation to be a `transformation`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, requirement_assigned_object* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to requirement_assigned_object"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to requirement_assigned_object to be a `SET [1:1] OF requirement_assigned_item`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, requirement_assignment* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, requirement_source* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to requirement_source"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, requirement_view_definition_relationship* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to requirement_view_definition_relationship"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, resistance_measure_with_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to resistance_measure_with_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, resistance_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to resistance_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, revolved_area_solid* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to revolved_area_solid"); } do { // convert the 'axis' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->axis, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to revolved_area_solid to be a `axis1_placement`")); } + } while (0); + do { // convert the 'angle' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->angle, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to revolved_area_solid to be a `plane_angle_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, revolved_face_solid* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to revolved_face_solid"); } do { // convert the 'axis' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->axis, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to revolved_face_solid to be a `axis1_placement`")); } + } while (0); + do { // convert the 'angle' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->angle, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to revolved_face_solid to be a `plane_angle_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, revolved_face_solid_with_trim_conditions* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to revolved_face_solid_with_trim_conditions"); } do { // convert the 'first_trim_condition' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->first_trim_condition, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to revolved_face_solid_with_trim_conditions to be a `trim_condition_select`")); } + } while (0); + do { // convert the 'second_trim_condition' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->second_trim_condition, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to revolved_face_solid_with_trim_conditions to be a `trim_condition_select`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, right_angular_wedge* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to right_angular_wedge"); } do { // convert the 'position' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->position, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to right_angular_wedge to be a `axis2_placement_3d`")); } + } while (0); + do { // convert the 'x' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->x, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to right_angular_wedge to be a `positive_length_measure`")); } + } while (0); + do { // convert the 'y' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->y, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to right_angular_wedge to be a `positive_length_measure`")); } + } while (0); + do { // convert the 'z' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->z, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to right_angular_wedge to be a `positive_length_measure`")); } + } while (0); + do { // convert the 'ltx' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->ltx, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to right_angular_wedge to be a `length_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, right_circular_cone* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to right_circular_cone"); } do { // convert the 'position' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->position, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to right_circular_cone to be a `axis1_placement`")); } + } while (0); + do { // convert the 'height' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->height, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to right_circular_cone to be a `positive_length_measure`")); } + } while (0); + do { // convert the 'radius' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->radius, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to right_circular_cone to be a `length_measure`")); } + } while (0); + do { // convert the 'semi_angle' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->semi_angle, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to right_circular_cone to be a `plane_angle_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, right_circular_cylinder* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to right_circular_cylinder"); } do { // convert the 'position' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->position, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to right_circular_cylinder to be a `axis1_placement`")); } + } while (0); + do { // convert the 'height' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->height, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to right_circular_cylinder to be a `positive_length_measure`")); } + } while (0); + do { // convert the 'radius' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->radius, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to right_circular_cylinder to be a `positive_length_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, right_to_usage_association* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to right_to_usage_association"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, roundness_tolerance* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to roundness_tolerance"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, row_representation_item* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to row_representation_item"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, row_value* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to row_value"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, row_variable* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, rule_action* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to rule_action"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, rule_condition* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to rule_condition"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, rule_set* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to rule_set"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, rule_set_group* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to rule_set_group"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, rule_superseded_assignment* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to rule_superseded_assignment"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to rule_superseded_assignment to be a `SET [1:?] OF rule_superseded_item`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, rule_supersedence* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to rule_supersedence"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, surface_curve_swept_area_solid* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to surface_curve_swept_area_solid"); } do { // convert the 'directrix' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->directrix, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to surface_curve_swept_area_solid to be a `curve`")); } + } while (0); + do { // convert the 'start_param' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->start_param, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to surface_curve_swept_area_solid to be a `REAL`")); } + } while (0); + do { // convert the 'end_param' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2] = true; break; } + try { GenericConvert(in->end_param, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to surface_curve_swept_area_solid to be a `REAL`")); } + } while (0); + do { // convert the 'reference_surface' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[3] = true; break; } + try { GenericConvert(in->reference_surface, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to surface_curve_swept_area_solid to be a `surface`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, ruled_surface_swept_area_solid* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to ruled_surface_swept_area_solid"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, runout_zone_definition* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to runout_zone_definition"); } do { // convert the 'orientation' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->orientation, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to runout_zone_definition to be a `runout_zone_orientation`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, runout_zone_orientation* in) +{ + size_t base = 0; + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to runout_zone_orientation"); } do { // convert the 'angle' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->angle, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to runout_zone_orientation to be a `measure_with_unit`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, runout_zone_orientation_reference_direction* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to runout_zone_orientation_reference_direction"); } do { // convert the 'orientation_defining_relationship' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->orientation_defining_relationship, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to runout_zone_orientation_reference_direction to be a `shape_aspect_relationship`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, satisfied_requirement* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to satisfied_requirement"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to satisfied_requirement to be a `SET [1:1] OF product_definition`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, satisfies_requirement* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to satisfies_requirement"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, satisfying_item* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to satisfying_item"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to satisfying_item to be a `SET [1:1] OF requirement_satisfaction_item`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, scalar_variable* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, scattering_parameter* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to scattering_parameter"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, sculptured_solid* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to sculptured_solid"); } do { // convert the 'sculpturing_element' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->sculpturing_element, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to sculptured_solid to be a `generalized_surface_select`")); } + } while (0); + do { // convert the 'positive_side' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->positive_side, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to sculptured_solid to be a `BOOLEAN`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, seam_curve* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to seam_curve"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, serial_numbered_effectivity* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to serial_numbered_effectivity"); } do { // convert the 'effectivity_start_id' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->effectivity_start_id, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to serial_numbered_effectivity to be a `identifier`")); } + } while (0); + do { // convert the 'effectivity_end_id' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert(in->effectivity_end_id, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to serial_numbered_effectivity to be a `identifier`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, shape_aspect_associativity* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to shape_aspect_associativity"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, shape_aspect_deriving_relationship* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to shape_aspect_deriving_relationship"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, shape_definition_representation* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to shape_definition_representation"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, shape_dimension_representation* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to shape_dimension_representation"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, shape_feature_definition* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to shape_feature_definition"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, shape_representation_with_parameters* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to shape_representation_with_parameters"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, shell_based_surface_model* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to shell_based_surface_model"); } do { // convert the 'sbsm_boundary' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->sbsm_boundary, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to shell_based_surface_model to be a `SET [1:?] OF shell`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, shell_based_wireframe_model* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to shell_based_wireframe_model"); } do { // convert the 'sbwm_boundary' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->sbwm_boundary, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to shell_based_wireframe_model to be a `SET [1:?] OF shell`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, shell_based_wireframe_shape_representation* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to shell_based_wireframe_shape_representation"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, si_absorbed_dose_unit* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, si_capacitance_unit* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, si_conductance_unit* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, si_dose_equivalent_unit* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, si_electric_charge_unit* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, si_electric_potential_unit* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, si_energy_unit* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, si_force_unit* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, si_frequency_unit* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, si_illuminance_unit* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, si_inductance_unit* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, si_magnetic_flux_density_unit* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, si_magnetic_flux_unit* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, si_power_unit* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, si_pressure_unit* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, si_radioactivity_unit* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, si_resistance_unit* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, si_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to si_unit"); } do { // convert the 'prefix' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert(in->prefix, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to si_unit to be a `si_prefix`")); } + } while (0); + do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->name, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to si_unit to be a `si_unit_name`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, simple_boolean_expression* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, simple_numeric_expression* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, slash_expression* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, smeared_material_definition* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to smeared_material_definition"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, solid_angle_measure_with_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to solid_angle_measure_with_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, solid_angle_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to solid_angle_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, solid_curve_font* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to solid_curve_font"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, solid_replica* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to solid_replica"); } do { // convert the 'parent_solid' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->parent_solid, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to solid_replica to be a `solid_model`")); } + } while (0); + do { // convert the 'transformation' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->transformation, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to solid_replica to be a `cartesian_transformation_operator_3d`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, solid_with_chamfered_edges* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to solid_with_chamfered_edges"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, solid_with_angle_based_chamfer* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 7) { throw STEP::TypeError("expected 7 arguments to solid_with_angle_based_chamfer"); } do { // convert the 'offset_distance' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->offset_distance, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to solid_with_angle_based_chamfer to be a `positive_length_measure`")); } + } while (0); + do { // convert the 'left_offset' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->left_offset, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to solid_with_angle_based_chamfer to be a `BOOLEAN`")); } + } while (0); + do { // convert the 'offset_angle' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->offset_angle, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 6 to solid_with_angle_based_chamfer to be a `positive_plane_angle_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, solid_with_shape_element_pattern* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to solid_with_shape_element_pattern"); } do { // convert the 'replicated_element' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->replicated_element, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to solid_with_shape_element_pattern to be a `modified_solid_with_placed_configuration`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, solid_with_circular_pattern* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 9) { throw STEP::TypeError("expected 9 arguments to solid_with_circular_pattern"); } do { // convert the 'replicate_count' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->replicate_count, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to solid_with_circular_pattern to be a `positive_integer`")); } + } while (0); + do { // convert the 'angular_spacing' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->angular_spacing, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 6 to solid_with_circular_pattern to be a `plane_angle_measure`")); } + } while (0); + do { // convert the 'radial_alignment' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2] = true; break; } + try { GenericConvert(in->radial_alignment, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 7 to solid_with_circular_pattern to be a `BOOLEAN`")); } + } while (0); + do { // convert the 'reference_point' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[3] = true; break; } + try { GenericConvert(in->reference_point, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 8 to solid_with_circular_pattern to be a `point`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, solid_with_depression* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to solid_with_depression"); } do { // convert the 'depth' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->depth, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to solid_with_depression to be a `positive_length_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, solid_with_pocket* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 7) { throw STEP::TypeError("expected 7 arguments to solid_with_pocket"); } do { // convert the 'floor_blend_radius' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->floor_blend_radius, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to solid_with_pocket to be a `non_negative_length_measure`")); } + } while (0); + do { // convert the 'draft_angle' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->draft_angle, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 6 to solid_with_pocket to be a `plane_angle_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, solid_with_circular_pocket* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 8) { throw STEP::TypeError("expected 8 arguments to solid_with_circular_pocket"); } do { // convert the 'pocket_radius' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->pocket_radius, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 7 to solid_with_circular_pocket to be a `positive_length_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, solid_with_protrusion* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to solid_with_protrusion"); } do { // convert the 'protrusion_height' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->protrusion_height, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to solid_with_protrusion to be a `positive_length_measure`")); } + } while (0); + do { // convert the 'protrusion_draft_angle' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->protrusion_draft_angle, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to solid_with_protrusion to be a `plane_angle_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, solid_with_circular_protrusion* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 7) { throw STEP::TypeError("expected 7 arguments to solid_with_circular_protrusion"); } do { // convert the 'protrusion_radius' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->protrusion_radius, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 6 to solid_with_circular_protrusion to be a `positive_length_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, solid_with_hole* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to solid_with_hole"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, solid_with_stepped_round_hole* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to solid_with_stepped_round_hole"); } do { // convert the 'segments' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->segments, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to solid_with_stepped_round_hole to be a `positive_integer`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, solid_with_conical_bottom_round_hole* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 8) { throw STEP::TypeError("expected 8 arguments to solid_with_conical_bottom_round_hole"); } do { // convert the 'semi_apex_angle' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->semi_apex_angle, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 6 to solid_with_conical_bottom_round_hole to be a `positive_plane_angle_measure`")); } + } while (0); + do { // convert the 'tip_radius' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->tip_radius, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 7 to solid_with_conical_bottom_round_hole to be a `non_negative_length_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, solid_with_constant_radius_edge_blend* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to solid_with_constant_radius_edge_blend"); } do { // convert the 'radius' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->radius, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to solid_with_constant_radius_edge_blend to be a `positive_length_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, solid_with_slot* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 7) { throw STEP::TypeError("expected 7 arguments to solid_with_slot"); } do { // convert the 'slot_width' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->slot_width, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to solid_with_slot to be a `positive_length_measure`")); } + } while (0); + do { // convert the 'closed_ends' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->closed_ends, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 6 to solid_with_slot to be a `LIST [2:2] OF LOGICAL`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, solid_with_curved_slot* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 8) { throw STEP::TypeError("expected 8 arguments to solid_with_curved_slot"); } do { // convert the 'slot_centreline' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->slot_centreline, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 7 to solid_with_curved_slot to be a `bounded_curve`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, solid_with_double_offset_chamfer* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to solid_with_double_offset_chamfer"); } do { // convert the 'left_offset_distance' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->left_offset_distance, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to solid_with_double_offset_chamfer to be a `positive_length_measure`")); } + } while (0); + do { // convert the 'right_offset_distance' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->right_offset_distance, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to solid_with_double_offset_chamfer to be a `positive_length_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, solid_with_flat_bottom_round_hole* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 7) { throw STEP::TypeError("expected 7 arguments to solid_with_flat_bottom_round_hole"); } do { // convert the 'fillet_radius' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->fillet_radius, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 6 to solid_with_flat_bottom_round_hole to be a `non_negative_length_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, solid_with_general_pocket* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 9) { throw STEP::TypeError("expected 9 arguments to solid_with_general_pocket"); } do { // convert the 'profile' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->profile, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 7 to solid_with_general_pocket to be a `positioned_sketch`")); } + } while (0); + do { // convert the 'reference_point' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->reference_point, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 8 to solid_with_general_pocket to be a `point`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, solid_with_general_protrusion* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 8) { throw STEP::TypeError("expected 8 arguments to solid_with_general_protrusion"); } do { // convert the 'profile' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->profile, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 6 to solid_with_general_protrusion to be a `positioned_sketch`")); } + } while (0); + do { // convert the 'reference_point' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->reference_point, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 7 to solid_with_general_protrusion to be a `point`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, solid_with_groove* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 10) { throw STEP::TypeError("expected 10 arguments to solid_with_groove"); } do { // convert the 'groove_radius' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->groove_radius, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to solid_with_groove to be a `positive_length_measure`")); } + } while (0); + do { // convert the 'groove_width' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->groove_width, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 6 to solid_with_groove to be a `positive_length_measure`")); } + } while (0); + do { // convert the 'draft_angle' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->draft_angle, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 7 to solid_with_groove to be a `plane_angle_measure`")); } + } while (0); + do { // convert the 'floor_fillet_radius' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->floor_fillet_radius, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 8 to solid_with_groove to be a `non_negative_length_measure`")); } + } while (0); + do { // convert the 'external_groove' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->external_groove, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 9 to solid_with_groove to be a `BOOLEAN`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, solid_with_incomplete_circular_pattern* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 10) { throw STEP::TypeError("expected 10 arguments to solid_with_incomplete_circular_pattern"); } do { // convert the 'omitted_instances' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->omitted_instances, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 9 to solid_with_incomplete_circular_pattern to be a `SET [1:?] OF positive_integer`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, solid_with_rectangular_pattern* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 9) { throw STEP::TypeError("expected 9 arguments to solid_with_rectangular_pattern"); } do { // convert the 'row_count' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->row_count, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to solid_with_rectangular_pattern to be a `positive_integer`")); } + } while (0); + do { // convert the 'column_count' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->column_count, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 6 to solid_with_rectangular_pattern to be a `positive_integer`")); } + } while (0); + do { // convert the 'row_spacing' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2] = true; break; } + try { GenericConvert(in->row_spacing, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 7 to solid_with_rectangular_pattern to be a `length_measure`")); } + } while (0); + do { // convert the 'column_spacing' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[3] = true; break; } + try { GenericConvert(in->column_spacing, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 8 to solid_with_rectangular_pattern to be a `length_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, solid_with_incomplete_rectangular_pattern* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 9) { throw STEP::TypeError("expected 9 arguments to solid_with_incomplete_rectangular_pattern"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, solid_with_rectangular_pocket* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 10) { throw STEP::TypeError("expected 10 arguments to solid_with_rectangular_pocket"); } do { // convert the 'pocket_length' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->pocket_length, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 7 to solid_with_rectangular_pocket to be a `positive_length_measure`")); } + } while (0); + do { // convert the 'pocket_width' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->pocket_width, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 8 to solid_with_rectangular_pocket to be a `positive_length_measure`")); } + } while (0); + do { // convert the 'corner_radius' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->corner_radius, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 9 to solid_with_rectangular_pocket to be a `non_negative_length_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, solid_with_rectangular_protrusion* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 9) { throw STEP::TypeError("expected 9 arguments to solid_with_rectangular_protrusion"); } do { // convert the 'protrusion_length' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->protrusion_length, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 6 to solid_with_rectangular_protrusion to be a `positive_length_measure`")); } + } while (0); + do { // convert the 'protrusion_width' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->protrusion_width, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 7 to solid_with_rectangular_protrusion to be a `positive_length_measure`")); } + } while (0); + do { // convert the 'protrusion_corner_radius' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->protrusion_corner_radius, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 8 to solid_with_rectangular_protrusion to be a `non_negative_length_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, solid_with_single_offset_chamfer* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to solid_with_single_offset_chamfer"); } do { // convert the 'offset_distance' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->offset_distance, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to solid_with_single_offset_chamfer to be a `positive_length_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, solid_with_spherical_bottom_round_hole* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 7) { throw STEP::TypeError("expected 7 arguments to solid_with_spherical_bottom_round_hole"); } do { // convert the 'sphere_radius' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->sphere_radius, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 6 to solid_with_spherical_bottom_round_hole to be a `positive_length_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, solid_with_stepped_round_hole_and_conical_transitions* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 7) { throw STEP::TypeError("expected 7 arguments to solid_with_stepped_round_hole_and_conical_transitions"); } do { // convert the 'conical_transitions' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->conical_transitions, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 6 to solid_with_stepped_round_hole_and_conical_transitions to be a `SET [1:?] OF conical_stepped_hole_transition`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, solid_with_straight_slot* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 8) { throw STEP::TypeError("expected 8 arguments to solid_with_straight_slot"); } do { // convert the 'slot_length' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->slot_length, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 7 to solid_with_straight_slot to be a `positive_length_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, solid_with_tee_section_slot* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 9) { throw STEP::TypeError("expected 9 arguments to solid_with_tee_section_slot"); } do { // convert the 'tee_section_width' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->tee_section_width, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 7 to solid_with_tee_section_slot to be a `positive_length_measure`")); } + } while (0); + do { // convert the 'collar_depth' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->collar_depth, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 8 to solid_with_tee_section_slot to be a `positive_length_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, solid_with_through_depression* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to solid_with_through_depression"); } do { // convert the 'exit_faces' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->exit_faces, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to solid_with_through_depression to be a `SET [1:?] OF face_surface`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, solid_with_trapezoidal_section_slot* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 9) { throw STEP::TypeError("expected 9 arguments to solid_with_trapezoidal_section_slot"); } do { // convert the 'draft_angle' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->draft_angle, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 7 to solid_with_trapezoidal_section_slot to be a `plane_angle_measure`")); } + } while (0); + do { // convert the 'floor_fillet_radius' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->floor_fillet_radius, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 8 to solid_with_trapezoidal_section_slot to be a `non_negative_length_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, solid_with_variable_radius_edge_blend* in) +{ + size_t base = 0; + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to solid_with_variable_radius_edge_blend"); } do { // convert the 'point_list' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->point_list, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to solid_with_variable_radius_edge_blend to be a `LIST [2:?] OF point`")); } + } while (0); + do { // convert the 'radius_list' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->radius_list, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to solid_with_variable_radius_edge_blend to be a `LIST [2:?] OF positive_length_measure`")); } + } while (0); + do { // convert the 'edge_function_list' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->edge_function_list, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to solid_with_variable_radius_edge_blend to be a `LIST [1:?] OF blend_radius_variation_type`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, source_for_requirement* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to source_for_requirement"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to source_for_requirement to be a `SET [1:1] OF requirement_source_item`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, sourced_requirement* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to sourced_requirement"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to sourced_requirement to be a `SET [1:1] OF product_definition`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, specification_definition* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to specification_definition"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, specified_higher_usage_occurrence* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 8) { throw STEP::TypeError("expected 8 arguments to specified_higher_usage_occurrence"); } do { // convert the 'upper_usage' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->upper_usage, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 6 to specified_higher_usage_occurrence to be a `assembly_component_usage`")); } + } while (0); + do { // convert the 'next_usage' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->next_usage, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 7 to specified_higher_usage_occurrence to be a `next_assembly_usage_occurrence`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, sphere* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to sphere"); } do { // convert the 'radius' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->radius, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to sphere to be a `positive_length_measure`")); } + } while (0); + do { // convert the 'centre' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->centre, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to sphere to be a `point`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, spherical_surface* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to spherical_surface"); } do { // convert the 'radius' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->radius, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to spherical_surface to be a `positive_length_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, start_request* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to start_request"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to start_request to be a `SET [1:?] OF start_request_item`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, start_work* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to start_work"); } do { // convert the 'items' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->items, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to start_work to be a `SET [1:?] OF work_item`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, straightness_tolerance* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to straightness_tolerance"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, structured_dimension_callout* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to structured_dimension_callout"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, structured_text_composition* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to structured_text_composition"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, structured_text_representation* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to structured_text_representation"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, subedge* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to subedge"); } do { // convert the 'parent_edge' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->parent_edge, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to subedge to be a `edge`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, subface* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to subface"); } do { // convert the 'parent_face' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->parent_face, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to subface to be a `face`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, supplied_part_relationship* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to supplied_part_relationship"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, surface_condition_callout* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to surface_condition_callout"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, swept_surface* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to swept_surface"); } do { // convert the 'swept_curve' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->swept_curve, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to swept_surface to be a `curve`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, surface_of_linear_extrusion* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to surface_of_linear_extrusion"); } do { // convert the 'extrusion_axis' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->extrusion_axis, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to surface_of_linear_extrusion to be a `vector`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, surface_of_revolution* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to surface_of_revolution"); } do { // convert the 'axis_position' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->axis_position, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to surface_of_revolution to be a `axis1_placement`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, surface_patch* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to surface_patch"); } do { // convert the 'parent_surface' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->parent_surface, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to surface_patch to be a `bounded_surface`")); } + } while (0); + do { // convert the 'u_transition' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->u_transition, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to surface_patch to be a `transition_code`")); } + } while (0); + do { // convert the 'v_transition' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->v_transition, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to surface_patch to be a `transition_code`")); } + } while (0); + do { // convert the 'u_sense' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->u_sense, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to surface_patch to be a `BOOLEAN`")); } + } while (0); + do { // convert the 'v_sense' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->v_sense, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to surface_patch to be a `BOOLEAN`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, surface_profile_tolerance* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to surface_profile_tolerance"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, surface_replica* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to surface_replica"); } do { // convert the 'parent_surface' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->parent_surface, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to surface_replica to be a `surface`")); } + } while (0); + do { // convert the 'transformation' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->transformation, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to surface_replica to be a `cartesian_transformation_operator_3d`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, surface_side_style* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to surface_side_style"); } do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->name, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to surface_side_style to be a `label`")); } + } while (0); + do { // convert the 'styles' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->styles, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to surface_side_style to be a `SET [1:7] OF surface_style_element_select`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, surface_style_boundary* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to surface_style_boundary"); } do { // convert the 'style_of_boundary' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->style_of_boundary, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to surface_style_boundary to be a `curve_or_render`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, surface_style_control_grid* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to surface_style_control_grid"); } do { // convert the 'style_of_control_grid' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->style_of_control_grid, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to surface_style_control_grid to be a `curve_or_render`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, surface_style_fill_area* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to surface_style_fill_area"); } do { // convert the 'fill_area' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->fill_area, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to surface_style_fill_area to be a `fill_area_style`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, surface_style_parameter_line* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to surface_style_parameter_line"); } do { // convert the 'style_of_parameter_lines' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->style_of_parameter_lines, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to surface_style_parameter_line to be a `curve_or_render`")); } + } while (0); + do { // convert the 'direction_counts' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->direction_counts, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to surface_style_parameter_line to be a `SET [1:2] OF direction_count_select`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, surface_style_reflectance_ambient* in) +{ + size_t base = 0; + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to surface_style_reflectance_ambient"); } do { // convert the 'ambient_reflectance' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->ambient_reflectance, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to surface_style_reflectance_ambient to be a `REAL`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, surface_style_reflectance_ambient_diffuse* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to surface_style_reflectance_ambient_diffuse"); } do { // convert the 'diffuse_reflectance' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->diffuse_reflectance, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to surface_style_reflectance_ambient_diffuse to be a `REAL`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, surface_style_reflectance_ambient_diffuse_specular* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to surface_style_reflectance_ambient_diffuse_specular"); } do { // convert the 'specular_reflectance' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->specular_reflectance, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to surface_style_reflectance_ambient_diffuse_specular to be a `REAL`")); } + } while (0); + do { // convert the 'specular_exponent' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->specular_exponent, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to surface_style_reflectance_ambient_diffuse_specular to be a `REAL`")); } + } while (0); + do { // convert the 'specular_colour' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->specular_colour, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to surface_style_reflectance_ambient_diffuse_specular to be a `colour`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, surface_style_rendering* in) +{ + size_t base = 0; + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to surface_style_rendering"); } do { // convert the 'rendering_method' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->rendering_method, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to surface_style_rendering to be a `shading_surface_method`")); } + } while (0); + do { // convert the 'surface_colour' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->surface_colour, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to surface_style_rendering to be a `colour`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, surface_style_rendering_with_properties* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to surface_style_rendering_with_properties"); } do { // convert the 'properties' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->properties, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to surface_style_rendering_with_properties to be a `SET [1:2] OF rendering_properties_select`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, surface_style_segmentation_curve* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to surface_style_segmentation_curve"); } do { // convert the 'style_of_segmentation_curve' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->style_of_segmentation_curve, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to surface_style_segmentation_curve to be a `curve_or_render`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, surface_style_silhouette* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to surface_style_silhouette"); } do { // convert the 'style_of_silhouette' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->style_of_silhouette, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to surface_style_silhouette to be a `curve_or_render`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, surface_style_usage* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to surface_style_usage"); } do { // convert the 'side' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->side, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to surface_style_usage to be a `surface_side`")); } + } while (0); + do { // convert the 'style' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->style, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to surface_style_usage to be a `surface_side_style_select`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, surface_texture_representation* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to surface_texture_representation"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, surfaced_open_shell* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to surfaced_open_shell"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, swept_disk_solid* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to swept_disk_solid"); } do { // convert the 'directrix' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->directrix, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to swept_disk_solid to be a `curve`")); } + } while (0); + do { // convert the 'radius' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->radius, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to swept_disk_solid to be a `positive_length_measure`")); } + } while (0); + do { // convert the 'inner_radius' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert(in->inner_radius, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to swept_disk_solid to be a `positive_length_measure`")); } + } while (0); + do { // convert the 'start_param' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->start_param, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to swept_disk_solid to be a `REAL`")); } + } while (0); + do { // convert the 'end_param' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->end_param, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to swept_disk_solid to be a `REAL`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, symbol* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to symbol"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, symbol_representation_map* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to symbol_representation_map"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, symbol_style* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to symbol_style"); } do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->name, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to symbol_style to be a `label`")); } + } while (0); + do { // convert the 'style_of_symbol' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->style_of_symbol, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to symbol_style to be a `symbol_style_select`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, symbol_target* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to symbol_target"); } do { // convert the 'placement' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->placement, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to symbol_target to be a `axis2_placement`")); } + } while (0); + do { // convert the 'x_scale' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->x_scale, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to symbol_target to be a `positive_ratio_measure`")); } + } while (0); + do { // convert the 'y_scale' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->y_scale, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to symbol_target to be a `positive_ratio_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, symmetric_shape_aspect* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to symmetric_shape_aspect"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, symmetry_tolerance* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to symmetry_tolerance"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, table_representation_item* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to table_representation_item"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, tactile_appearance_representation* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to tactile_appearance_representation"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, tagged_text_format* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to tagged_text_format"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, tagged_text_item* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to tagged_text_item"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, tangent* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to tangent"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, text_literal_with_associated_curves* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 7) { throw STEP::TypeError("expected 7 arguments to text_literal_with_associated_curves"); } do { // convert the 'associated_curves' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->associated_curves, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 6 to text_literal_with_associated_curves to be a `SET [1:?] OF curve`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, text_literal_with_blanking_box* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 7) { throw STEP::TypeError("expected 7 arguments to text_literal_with_blanking_box"); } do { // convert the 'blanking' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->blanking, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 6 to text_literal_with_blanking_box to be a `planar_box`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, text_literal_with_extent* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 7) { throw STEP::TypeError("expected 7 arguments to text_literal_with_extent"); } do { // convert the 'extent' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->extent, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 6 to text_literal_with_extent to be a `planar_extent`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, text_string_representation* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to text_string_representation"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, text_style* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to text_style"); } do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->name, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to text_style to be a `label`")); } + } while (0); + do { // convert the 'character_appearance' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->character_appearance, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to text_style to be a `character_style_select`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, text_style_with_box_characteristics* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to text_style_with_box_characteristics"); } do { // convert the 'characteristics' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->characteristics, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to text_style_with_box_characteristics to be a `SET [1:4] OF box_characteristic_select`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, text_style_with_mirror* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to text_style_with_mirror"); } do { // convert the 'mirror_placement' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->mirror_placement, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to text_style_with_mirror to be a `axis2_placement`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, text_style_with_spacing* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to text_style_with_spacing"); } do { // convert the 'character_spacing' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->character_spacing, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to text_style_with_spacing to be a `character_spacing_select`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, thermal_resistance_measure_with_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to thermal_resistance_measure_with_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, thermal_resistance_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to thermal_resistance_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, thermodynamic_temperature_measure_with_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to thermodynamic_temperature_measure_with_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, thermodynamic_temperature_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to thermodynamic_temperature_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, thickened_face_solid* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to thickened_face_solid"); } do { // convert the 'base_element' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->base_element, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to thickened_face_solid to be a `generalized_surface_select`")); } + } while (0); + do { // convert the 'offset1' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->offset1, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to thickened_face_solid to be a `length_measure`")); } + } while (0); + do { // convert the 'offset2' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->offset2, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to thickened_face_solid to be a `length_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, thickness_laminate_definition* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to thickness_laminate_definition"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, thickness_laminate_table* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to thickness_laminate_table"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, time_interval* in) +{ + size_t base = 0; + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to time_interval"); } do { // convert the 'id' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[0] = true; break; } + try { GenericConvert(in->id, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to time_interval to be a `identifier`")); } + } while (0); + do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[1] = true; break; } + try { GenericConvert(in->name, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to time_interval to be a `label`")); } + } while (0); + do { // convert the 'description' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) { in->ObjectHelper::aux_is_derived[2] = true; break; } + if (dynamic_cast(&*arg)) break; + try { GenericConvert(in->description, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to time_interval to be a `text`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, time_interval_based_effectivity* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to time_interval_based_effectivity"); } do { // convert the 'effectivity_period' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->effectivity_period, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to time_interval_based_effectivity to be a `time_interval`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, time_interval_with_bounds* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to time_interval_with_bounds"); } do { // convert the 'primary_bound' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert(in->primary_bound, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to time_interval_with_bounds to be a `date_time_or_event_occurrence`")); } + } while (0); + do { // convert the 'secondary_bound' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert(in->secondary_bound, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to time_interval_with_bounds to be a `date_time_or_event_occurrence`")); } + } while (0); + do { // convert the 'duration' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert(in->duration, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to time_interval_with_bounds to be a `time_measure_with_unit`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, time_measure_with_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to time_measure_with_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, time_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to time_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, tolerance_zone* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to tolerance_zone"); } do { // convert the 'defining_tolerance' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->defining_tolerance, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to tolerance_zone to be a `SET [1:?] OF geometric_tolerance`")); } + } while (0); + do { // convert the 'form' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->form, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to tolerance_zone to be a `tolerance_zone_form`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, torus* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to torus"); } do { // convert the 'position' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->position, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to torus to be a `axis1_placement`")); } + } while (0); + do { // convert the 'major_radius' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->major_radius, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to torus to be a `positive_length_measure`")); } + } while (0); + do { // convert the 'minor_radius' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->minor_radius, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to torus to be a `positive_length_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, total_runout_tolerance* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to total_runout_tolerance"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, track_blended_solid* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to track_blended_solid"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, track_blended_solid_with_end_conditions* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 5) { throw STEP::TypeError("expected 5 arguments to track_blended_solid_with_end_conditions"); } do { // convert the 'end_conditions' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->end_conditions, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to track_blended_solid_with_end_conditions to be a `LIST [2:2] OF blend_end_condition_select`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, trimmed_curve* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to trimmed_curve"); } do { // convert the 'basis_curve' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->basis_curve, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to trimmed_curve to be a `curve`")); } + } while (0); + do { // convert the 'trim_1' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->trim_1, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to trimmed_curve to be a `SET [1:2] OF trimming_select`")); } + } while (0); + do { // convert the 'trim_2' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->trim_2, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to trimmed_curve to be a `SET [1:2] OF trimming_select`")); } + } while (0); + do { // convert the 'sense_agreement' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->sense_agreement, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to trimmed_curve to be a `BOOLEAN`")); } + } while (0); + do { // convert the 'master_representation' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->master_representation, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to trimmed_curve to be a `trimming_preference`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, two_direction_repeat_factor* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to two_direction_repeat_factor"); } do { // convert the 'second_repeat_factor' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->second_repeat_factor, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to two_direction_repeat_factor to be a `vector`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, unary_generic_expression* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to unary_generic_expression"); } do { // convert the 'operand' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->operand, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to unary_generic_expression to be a `generic_expression`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, unary_numeric_expression* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, uncertainty_assigned_representation* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to uncertainty_assigned_representation"); } do { // convert the 'uncertainty' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->uncertainty, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to uncertainty_assigned_representation to be a `SET [1:?] OF uncertainty_measure_with_unit`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, uncertainty_measure_with_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to uncertainty_measure_with_unit"); } do { // convert the 'name' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->name, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to uncertainty_measure_with_unit to be a `label`")); } + } while (0); + do { // convert the 'description' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert(in->description, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to uncertainty_measure_with_unit to be a `text`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, uniform_curve* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 6) { throw STEP::TypeError("expected 6 arguments to uniform_curve"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, uniform_resource_identifier* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to uniform_resource_identifier"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, uniform_surface* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 7) { throw STEP::TypeError("expected 7 arguments to uniform_surface"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, usage_association* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 4) { throw STEP::TypeError("expected 4 arguments to usage_association"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, user_defined_curve_font* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, user_defined_marker* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, user_defined_terminator_symbol* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, user_selected_shape_elements* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to user_selected_shape_elements"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, value_range* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to value_range"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, value_representation_item* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to value_representation_item"); } do { // convert the 'value_component' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->value_component, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to value_representation_item to be a `measure_value`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, variable_semantics* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, variational_representation_item* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to variational_representation_item"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, vector* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to vector"); } do { // convert the 'orientation' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->orientation, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to vector to be a `direction`")); } + } while (0); + do { // convert the 'magnitude' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->magnitude, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to vector to be a `length_measure`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, vector_style* in) +{ + size_t base = 0; + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, velocity_measure_with_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to velocity_measure_with_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, velocity_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to velocity_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, vertex* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to vertex"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, vertex_loop* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to vertex_loop"); } do { // convert the 'loop_vertex' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->loop_vertex, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to vertex_loop to be a `vertex`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, vertex_point* in) +{ + size_t base = 0; + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to vertex_point"); } do { // convert the 'vertex_geometry' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->vertex_geometry, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to vertex_point to be a `point`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, vertex_shell* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to vertex_shell"); } do { // convert the 'vertex_shell_extent' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->vertex_shell_extent, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to vertex_shell to be a `vertex_loop`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, view_volume* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 9) { throw STEP::TypeError("expected 9 arguments to view_volume"); } do { // convert the 'projection_type' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->projection_type, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 0 to view_volume to be a `central_or_parallel`")); } + } while (0); + do { // convert the 'projection_point' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->projection_point, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to view_volume to be a `cartesian_point`")); } + } while (0); + do { // convert the 'view_plane_distance' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->view_plane_distance, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to view_volume to be a `length_measure`")); } + } while (0); + do { // convert the 'front_plane_distance' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->front_plane_distance, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 3 to view_volume to be a `length_measure`")); } + } while (0); + do { // convert the 'front_plane_clipping' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->front_plane_clipping, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 4 to view_volume to be a `BOOLEAN`")); } + } while (0); + do { // convert the 'back_plane_distance' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->back_plane_distance, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 5 to view_volume to be a `length_measure`")); } + } while (0); + do { // convert the 'back_plane_clipping' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->back_plane_clipping, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 6 to view_volume to be a `BOOLEAN`")); } + } while (0); + do { // convert the 'view_volume_sides_clipping' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->view_volume_sides_clipping, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 7 to view_volume to be a `BOOLEAN`")); } + } while (0); + do { // convert the 'view_window' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->view_window, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 8 to view_volume to be a `planar_box`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, visual_appearance_representation* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to visual_appearance_representation"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, volume_measure_with_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to volume_measure_with_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, volume_unit* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 1) { throw STEP::TypeError("expected 1 arguments to volume_unit"); } return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, week_of_year_and_day_date* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 3) { throw STEP::TypeError("expected 3 arguments to week_of_year_and_day_date"); } do { // convert the 'week_component' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->week_component, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to week_of_year_and_day_date to be a `week_in_year_number`")); } + } while (0); + do { // convert the 'day_component' argument + std::shared_ptr arg = params[base++]; + if (dynamic_cast(&*arg)) break; + try { GenericConvert(in->day_component, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 2 to week_of_year_and_day_date to be a `day_in_week_number`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, wire_shell* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to wire_shell"); } do { // convert the 'wire_shell_extent' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->wire_shell_extent, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to wire_shell to be a `SET [1:?] OF loop`")); } + } while (0); + return base; +} +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const DB& db, const LIST& params, year_month* in) +{ + size_t base = GenericFill(db, params, static_cast(in)); + if (params.GetSize() < 2) { throw STEP::TypeError("expected 2 arguments to year_month"); } do { // convert the 'month_component' argument + std::shared_ptr arg = params[base++]; + try { GenericConvert(in->month_component, arg, db); break; } + catch (const TypeError& t) { throw TypeError(t.what() + std::string(" - expected argument 1 to year_month to be a `month_in_year_number`")); } + } while (0); + return base; +} + +} +} diff --git a/code/Importer/StepFile/StepFileImporter.cpp b/code/Importer/StepFile/StepFileImporter.cpp new file mode 100644 index 000000000..9bfaf7051 --- /dev/null +++ b/code/Importer/StepFile/StepFileImporter.cpp @@ -0,0 +1,114 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2018, assimp team + + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ + +#ifndef ASSIMP_BUILD_NO_STEPFILE_IMPORTER + +#include "StepFileImporter.h" +#include "../../Importer/STEPParser/STEPFileReader.h" +#include +#include + +namespace Assimp { +namespace StepFile { + +using namespace STEP; + +static const aiImporterDesc desc = { "StepFile Importer", + "", + "", + "", + 0, + 0, + 0, + 0, + 0, + "stp" }; + +StepFileImporter::StepFileImporter() +: BaseImporter() { + +} + +StepFileImporter::~StepFileImporter() { + +} + +bool StepFileImporter::CanRead(const std::string& file, IOSystem* pIOHandler, bool checkSig) const { + const std::string &extension = GetExtension(file); + if ( extension == "stp" || extension == "step" ) { + return true; + } else if ((!extension.length() || checkSig) && pIOHandler) { + const char* tokens[] = { "ISO-10303-21" }; + const bool found(SearchFileHeaderForToken(pIOHandler, file, tokens, 1)); + return found; + } + + return false; +} + +const aiImporterDesc *StepFileImporter::GetInfo() const { + return &desc; +} + +static const std::string mode = "rb"; +static const std::string StepFileSchema = "CONFIG_CONTROL_DESIGN"; + +void StepFileImporter::InternReadFile(const std::string &file, aiScene* pScene, IOSystem* pIOHandler) { + // Read file into memory + std::shared_ptr fileStream(pIOHandler->Open(file, mode)); + if (!fileStream.get()) { + throw DeadlyImportError("Failed to open file " + file + "."); + } + + std::unique_ptr db(STEP::ReadFileHeader(fileStream)); + const STEP::HeaderInfo& head = static_cast(*db).GetHeader(); + if (!head.fileSchema.size() || head.fileSchema != StepFileSchema) { + DeadlyImportError("Unrecognized file schema: " + head.fileSchema); + } +} + +} // Namespace StepFile +} // Namespace Assimp + +#endif // ASSIMP_BUILD_NO_STEPFILE_IMPORTER + diff --git a/code/Importer/StepFile/StepFileImporter.h b/code/Importer/StepFile/StepFileImporter.h new file mode 100644 index 000000000..7314a54f3 --- /dev/null +++ b/code/Importer/StepFile/StepFileImporter.h @@ -0,0 +1,69 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2018, assimp team + + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ + +#pragma once + +#ifndef ASSIMP_BUILD_NO_STEPFILE_IMPORTER + +#include + +namespace Assimp { +namespace StepFile { + +class StepFileImporter : public BaseImporter { +public: + StepFileImporter(); + ~StepFileImporter(); + bool CanRead(const std::string& pFile, IOSystem* pIOHandler, bool checkSig) const override; + const aiImporterDesc* GetInfo() const override; + +protected: + void InternReadFile( const std::string& pFile, aiScene* pScene, IOSystem* pIOHandler ) override; + +private: +}; + +} // Namespace StepFile +} // Namespace Assimp + +#endif // ASSIMP_BUILD_NO_STEPFILE_IMPORTER diff --git a/code/Importer/StepFile/StepReaderGen.h b/code/Importer/StepFile/StepReaderGen.h new file mode 100644 index 000000000..21f2518df --- /dev/null +++ b/code/Importer/StepFile/StepReaderGen.h @@ -0,0 +1,7288 @@ +/* +Open Asset Import Library (ASSIMP) +---------------------------------------------------------------------- + +Copyright (c) 2006-2018, ASSIMP Development Team +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the ASSIMP team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the ASSIMP Development Team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +/** MACHINE-GENERATED by scripts/ICFImporter/CppGenerator.py */ + +#ifndef INCLUDED_STEPFILE_READER_GEN_H +#define INCLUDED_STEPFILE_READER_GEN_H + +#include "code/STEPFile.h" + +namespace Assimp { +namespace StepFile { + using namespace STEP; + using namespace STEP::EXPRESS; + + + struct NotImplemented : public ObjectHelper { + + }; + + + // ****************************************************************************** + // StepFile Custom data types + // ****************************************************************************** + + + // C++ wrapper type for absorbed_dose_measure + typedef REAL absorbed_dose_measure; + // C++ wrapper type for acceleration_measure + typedef REAL acceleration_measure; + // C++ wrapper type for action_items + typedef SELECT action_items; + // C++ wrapper type for action_method_items + typedef SELECT action_method_items; + // C++ wrapper type for action_request_item + typedef SELECT action_request_item; + // C++ wrapper type for ahead_or_behind + typedef ENUMERATION ahead_or_behind; + // C++ wrapper type for amount_of_substance_measure + typedef REAL amount_of_substance_measure; + // C++ wrapper type for angle_direction_reference_select + typedef SELECT angle_direction_reference_select; + // C++ wrapper type for angle_direction_reference_with_a2p3d_select + typedef SELECT angle_direction_reference_with_a2p3d_select; + // C++ wrapper type for angle_relator + typedef ENUMERATION angle_relator; + // C++ wrapper type for annotation_plane_element + typedef SELECT annotation_plane_element; + // C++ wrapper type for annotation_representation_select + typedef SELECT annotation_representation_select; + // C++ wrapper type for annotation_symbol_occurrence_item + typedef SELECT annotation_symbol_occurrence_item; + // C++ wrapper type for annotation_text_occurrence_item + typedef SELECT annotation_text_occurrence_item; + // C++ wrapper type for approval_item + typedef SELECT approval_item; + // C++ wrapper type for approved_item + typedef SELECT approved_item; + // C++ wrapper type for area_measure + typedef REAL area_measure; + // C++ wrapper type for area_or_view + typedef SELECT area_or_view; + // C++ wrapper type for attribute_classification_item + typedef SELECT attribute_classification_item; + // C++ wrapper type for attribute_language_item + typedef SELECT attribute_language_item; + // C++ wrapper type for attribute_type + typedef SELECT attribute_type; + // C++ wrapper type for axis2_placement + typedef SELECT axis2_placement; + // C++ wrapper type for b_spline_curve_form + typedef ENUMERATION b_spline_curve_form; + // C++ wrapper type for b_spline_surface_form + typedef ENUMERATION b_spline_surface_form; + // C++ wrapper type for base_solid_select + typedef SELECT base_solid_select; + // C++ wrapper type for blend_end_condition_select + typedef SELECT blend_end_condition_select; + // C++ wrapper type for blend_radius_variation_type + typedef ENUMERATION blend_radius_variation_type; + // C++ wrapper type for boolean_operand + typedef SELECT boolean_operand; + // C++ wrapper type for boolean_operator + typedef ENUMERATION boolean_operator; + // C++ wrapper type for box_characteristic_select + typedef SELECT box_characteristic_select; + // C++ wrapper type for box_height + typedef REAL box_height; + // C++ wrapper type for box_rotate_angle + typedef REAL box_rotate_angle; + // C++ wrapper type for box_slant_angle + typedef REAL box_slant_angle; + // C++ wrapper type for box_width + typedef REAL box_width; + // C++ wrapper type for camera_model_d3_multi_clipping_interection_select + typedef SELECT camera_model_d3_multi_clipping_interection_select; + // C++ wrapper type for camera_model_d3_multi_clipping_union_select + typedef SELECT camera_model_d3_multi_clipping_union_select; + // C++ wrapper type for capacitance_measure + typedef REAL capacitance_measure; + // C++ wrapper type for category_usage_item + typedef SELECT category_usage_item; + // C++ wrapper type for cc_classified_item + typedef SELECT cc_classified_item; + // C++ wrapper type for cc_person_organization_item + typedef SELECT cc_person_organization_item; + // C++ wrapper type for cc_specified_item + typedef SELECT cc_specified_item; + // C++ wrapper type for celsius_temperature_measure + typedef REAL celsius_temperature_measure; + // C++ wrapper type for central_or_parallel + typedef ENUMERATION central_or_parallel; + // C++ wrapper type for certification_item + typedef SELECT certification_item; + // C++ wrapper type for certified_item + typedef SELECT certified_item; + // C++ wrapper type for change_request_item + typedef SELECT change_request_item; + // C++ wrapper type for character_spacing_select + typedef SELECT character_spacing_select; + // C++ wrapper type for character_style_select + typedef SELECT character_style_select; + // C++ wrapper type for characterized_action_definition + typedef SELECT characterized_action_definition; + // C++ wrapper type for characterized_definition + typedef SELECT characterized_definition; + // C++ wrapper type for characterized_material_property + typedef SELECT characterized_material_property; + // C++ wrapper type for characterized_product_composition_value + typedef SELECT characterized_product_composition_value; + // C++ wrapper type for characterized_product_definition + typedef SELECT characterized_product_definition; + // C++ wrapper type for class_usage_effectivity_context_item + typedef SELECT class_usage_effectivity_context_item; + // C++ wrapper type for classification_item + typedef SELECT classification_item; + // C++ wrapper type for classified_item + typedef SELECT classified_item; + // C++ wrapper type for compound_item_definition + typedef SELECT compound_item_definition; + // C++ wrapper type for conductance_measure + typedef REAL conductance_measure; + // C++ wrapper type for configuration_design_item + typedef SELECT configuration_design_item; + // C++ wrapper type for configured_effectivity_context_item + typedef SELECT configured_effectivity_context_item; + // C++ wrapper type for configured_effectivity_item + typedef SELECT configured_effectivity_item; + // C++ wrapper type for constructive_geometry_representation_or_shape_represenation + typedef SELECT constructive_geometry_representation_or_shape_represenation; + // C++ wrapper type for context_dependent_measure + typedef REAL context_dependent_measure; + // C++ wrapper type for contract_item + typedef SELECT contract_item; + // C++ wrapper type for contracted_item + typedef SELECT contracted_item; + // C++ wrapper type for count_measure + typedef NUMBER count_measure; + // C++ wrapper type for csg_primitive + typedef SELECT csg_primitive; + // C++ wrapper type for csg_select + typedef SELECT csg_select; + // C++ wrapper type for curve_font_or_scaled_curve_font_select + typedef SELECT curve_font_or_scaled_curve_font_select; + // C++ wrapper type for curve_on_surface + typedef SELECT curve_on_surface; + // C++ wrapper type for curve_or_annotation_curve_occurrence + typedef SELECT curve_or_annotation_curve_occurrence; + // C++ wrapper type for curve_or_render + typedef SELECT curve_or_render; + // C++ wrapper type for curve_style_font_select + typedef SELECT curve_style_font_select; + // C++ wrapper type for date_and_time_item + typedef SELECT date_and_time_item; + // C++ wrapper type for date_item + typedef SELECT date_item; + // C++ wrapper type for date_time_item + typedef SELECT date_time_item; + // C++ wrapper type for date_time_or_event_occurrence + typedef SELECT date_time_or_event_occurrence; + // C++ wrapper type for date_time_select + typedef SELECT date_time_select; + // C++ wrapper type for day_in_month_number + typedef INTEGER day_in_month_number; + // C++ wrapper type for day_in_week_number + typedef INTEGER day_in_week_number; + // C++ wrapper type for day_in_year_number + typedef INTEGER day_in_year_number; + // C++ wrapper type for defined_symbol_select + typedef SELECT defined_symbol_select; + // C++ wrapper type for derived_property_select + typedef SELECT derived_property_select; + // C++ wrapper type for description_attribute_select + typedef SELECT description_attribute_select; + // C++ wrapper type for descriptive_measure + typedef STRING descriptive_measure; + // C++ wrapper type for dimension_count + typedef INTEGER dimension_count; + // C++ wrapper type for dimension_extent_usage + typedef ENUMERATION dimension_extent_usage; + // C++ wrapper type for dimensional_characteristic + typedef SELECT dimensional_characteristic; + // C++ wrapper type for direction_count_select + typedef SELECT direction_count_select; + // C++ wrapper type for document_identifier_assigned_item + typedef SELECT document_identifier_assigned_item; + // C++ wrapper type for document_reference_item + typedef SELECT document_reference_item; + // C++ wrapper type for dose_equivalent_measure + typedef REAL dose_equivalent_measure; + // C++ wrapper type for draughting_callout_element + typedef SELECT draughting_callout_element; + // C++ wrapper type for draughting_model_item_association_select + typedef SELECT draughting_model_item_association_select; + // C++ wrapper type for draughting_model_item_select + typedef SELECT draughting_model_item_select; + // C++ wrapper type for draughting_titled_item + typedef SELECT draughting_titled_item; + // C++ wrapper type for effectivity_item + typedef SELECT effectivity_item; + // C++ wrapper type for electric_charge_measure + typedef REAL electric_charge_measure; + // C++ wrapper type for electric_current_measure + typedef REAL electric_current_measure; + // C++ wrapper type for electric_potential_measure + typedef REAL electric_potential_measure; + // C++ wrapper type for energy_measure + typedef REAL energy_measure; + // C++ wrapper type for event_occurrence_item + typedef SELECT event_occurrence_item; + // C++ wrapper type for external_identification_item + typedef SELECT external_identification_item; + // C++ wrapper type for fill_area_style_tile_shape_select + typedef SELECT fill_area_style_tile_shape_select; + // C++ wrapper type for fill_style_select + typedef SELECT fill_style_select; + // C++ wrapper type for font_select + typedef SELECT font_select; + // C++ wrapper type for force_measure + typedef REAL force_measure; + // C++ wrapper type for founded_item_select + typedef SELECT founded_item_select; + // C++ wrapper type for frequency_measure + typedef REAL frequency_measure; + // C++ wrapper type for generalized_surface_select + typedef SELECT generalized_surface_select; + // C++ wrapper type for geometric_item_specific_usage_select + typedef SELECT geometric_item_specific_usage_select; + // C++ wrapper type for geometric_set_select + typedef SELECT geometric_set_select; + // C++ wrapper type for groupable_item + typedef SELECT groupable_item; + // C++ wrapper type for hour_in_day + typedef INTEGER hour_in_day; + // C++ wrapper type for id_attribute_select + typedef SELECT id_attribute_select; + // C++ wrapper type for identification_item + typedef SELECT identification_item; + // C++ wrapper type for identifier + typedef STRING identifier; + // C++ wrapper type for illuminance_measure + typedef REAL illuminance_measure; + // C++ wrapper type for inductance_measure + typedef REAL inductance_measure; + // C++ wrapper type for instance_usage_context_select + typedef SELECT instance_usage_context_select; + // C++ wrapper type for invisibility_context + typedef SELECT invisibility_context; + // C++ wrapper type for invisible_item + typedef SELECT invisible_item; + // C++ wrapper type for ir_usage_item + typedef SELECT ir_usage_item; + // C++ wrapper type for knot_type + typedef ENUMERATION knot_type; + // C++ wrapper type for label + typedef STRING label; + // C++ wrapper type for layered_item + typedef SELECT layered_item; + // C++ wrapper type for length_measure + typedef REAL length_measure; + // C++ wrapper type for limit_condition + typedef ENUMERATION limit_condition; + // C++ wrapper type for list_of_reversible_topology_item + typedef ListOf< SELECT, 0, 0 > list_of_reversible_topology_item; + // C++ wrapper type for luminous_flux_measure + typedef REAL luminous_flux_measure; + // C++ wrapper type for luminous_intensity_measure + typedef REAL luminous_intensity_measure; + // C++ wrapper type for magnetic_flux_density_measure + typedef REAL magnetic_flux_density_measure; + // C++ wrapper type for magnetic_flux_measure + typedef REAL magnetic_flux_measure; + // C++ wrapper type for marker_select + typedef SELECT marker_select; + // C++ wrapper type for marker_type + typedef ENUMERATION marker_type; + // C++ wrapper type for mass_measure + typedef REAL mass_measure; + // C++ wrapper type for measure_value + typedef SELECT measure_value; + // C++ wrapper type for mechanical_design_and_draughting_relationship_select + typedef SELECT mechanical_design_and_draughting_relationship_select; + // C++ wrapper type for mechanical_design_geometric_presentation_area_items + typedef SELECT mechanical_design_geometric_presentation_area_items; + // C++ wrapper type for mechanical_design_geometric_presentation_representation_items + typedef SELECT mechanical_design_geometric_presentation_representation_items; + // C++ wrapper type for message + typedef STRING message; + // C++ wrapper type for minute_in_hour + typedef INTEGER minute_in_hour; + // C++ wrapper type for month_in_year_number + typedef INTEGER month_in_year_number; + // C++ wrapper type for multi_language_attribute_item + typedef SELECT multi_language_attribute_item; + // C++ wrapper type for name_attribute_select + typedef SELECT name_attribute_select; + // C++ wrapper type for name_item + typedef SELECT name_item; + // C++ wrapper type for non_negative_length_measure + typedef REAL non_negative_length_measure; + // C++ wrapper type for nonnegative_integer + typedef INTEGER nonnegative_integer; + // C++ wrapper type for null_style + typedef ENUMERATION null_style; + // C++ wrapper type for numeric_measure + typedef NUMBER numeric_measure; + // C++ wrapper type for organization_item + typedef SELECT organization_item; + // C++ wrapper type for orientation_basis_select + typedef SELECT orientation_basis_select; + // C++ wrapper type for parameter_value + typedef REAL parameter_value; + // C++ wrapper type for pcurve_or_surface + typedef SELECT pcurve_or_surface; + // C++ wrapper type for person_and_organization_item + typedef SELECT person_and_organization_item; + // C++ wrapper type for person_organization_select + typedef SELECT person_organization_select; + // C++ wrapper type for picture_representation_item_select + typedef SELECT picture_representation_item_select; + // C++ wrapper type for plane_angle_measure + typedef REAL plane_angle_measure; + // C++ wrapper type for plane_or_planar_box + typedef SELECT plane_or_planar_box; + // C++ wrapper type for point_and_vector_member + typedef SELECT point_and_vector_member; + // C++ wrapper type for point_and_vector_members + typedef ListOf< SELECT, 2, 3 > point_and_vector_members; + // C++ wrapper type for positive_integer + typedef INTEGER positive_integer; + // C++ wrapper type for positive_length_measure + typedef REAL positive_length_measure; + // C++ wrapper type for positive_plane_angle_measure + typedef REAL positive_plane_angle_measure; + // C++ wrapper type for positive_ratio_measure + typedef REAL positive_ratio_measure; + // C++ wrapper type for power_measure + typedef REAL power_measure; + // C++ wrapper type for preferred_surface_curve_representation + typedef ENUMERATION preferred_surface_curve_representation; + // C++ wrapper type for presentable_text + typedef STRING presentable_text; + // C++ wrapper type for presentation_representation_select + typedef SELECT presentation_representation_select; + // C++ wrapper type for presentation_size_assignment_select + typedef SELECT presentation_size_assignment_select; + // C++ wrapper type for presentation_style_select + typedef SELECT presentation_style_select; + // C++ wrapper type for presented_item_select + typedef SELECT presented_item_select; + // C++ wrapper type for pressure_measure + typedef REAL pressure_measure; + // C++ wrapper type for product_definition_or_assembly_relationship + typedef SELECT product_definition_or_assembly_relationship; + // C++ wrapper type for product_definition_or_breakdown_element_usage + typedef SELECT product_definition_or_breakdown_element_usage; + // C++ wrapper type for product_definition_or_product_definition_relationship + typedef SELECT product_definition_or_product_definition_relationship; + // C++ wrapper type for product_or_formation_or_definition + typedef SELECT product_or_formation_or_definition; + // C++ wrapper type for project_item + typedef SELECT project_item; + // C++ wrapper type for radioactivity_measure + typedef REAL radioactivity_measure; + // C++ wrapper type for ratio_measure + typedef REAL ratio_measure; + // C++ wrapper type for rendering_properties_select + typedef SELECT rendering_properties_select; + // C++ wrapper type for represented_definition + typedef SELECT represented_definition; + // C++ wrapper type for requirement_assigned_item + typedef SELECT requirement_assigned_item; + // C++ wrapper type for requirement_satisfaction_item + typedef SELECT requirement_satisfaction_item; + // C++ wrapper type for requirement_source_item + typedef SELECT requirement_source_item; + // C++ wrapper type for resistance_measure + typedef REAL resistance_measure; + // C++ wrapper type for reversible_topology + typedef SELECT reversible_topology; + // C++ wrapper type for reversible_topology_item + typedef SELECT reversible_topology_item; + // C++ wrapper type for role_select + typedef SELECT role_select; + // C++ wrapper type for rule_superseded_item + typedef SELECT rule_superseded_item; + // C++ wrapper type for second_in_minute + typedef REAL second_in_minute; + // C++ wrapper type for security_classification_item + typedef SELECT security_classification_item; + // C++ wrapper type for set_of_reversible_topology_item + typedef ListOf< SELECT, 0, 0 > set_of_reversible_topology_item; + // C++ wrapper type for shading_curve_method + typedef ENUMERATION shading_curve_method; + // C++ wrapper type for shading_surface_method + typedef ENUMERATION shading_surface_method; + // C++ wrapper type for shape_definition + typedef SELECT shape_definition; + // C++ wrapper type for shell + typedef SELECT shell; + // C++ wrapper type for si_prefix + typedef ENUMERATION si_prefix; + // C++ wrapper type for si_unit_name + typedef ENUMERATION si_unit_name; + // C++ wrapper type for size_select + typedef SELECT size_select; + // C++ wrapper type for sketch_basis_select + typedef SELECT sketch_basis_select; + // C++ wrapper type for solid_angle_measure + typedef REAL solid_angle_measure; + // C++ wrapper type for source + typedef ENUMERATION source; + // C++ wrapper type for source_item + typedef SELECT source_item; + // C++ wrapper type for start_request_item + typedef SELECT start_request_item; + // C++ wrapper type for string_representation_item_select + typedef SELECT string_representation_item_select; + // C++ wrapper type for style_context_select + typedef SELECT style_context_select; + // C++ wrapper type for surface_side + typedef ENUMERATION surface_side; + // C++ wrapper type for surface_side_style_select + typedef SELECT surface_side_style_select; + // C++ wrapper type for surface_style_element_select + typedef SELECT surface_style_element_select; + // C++ wrapper type for symbol_style_select + typedef SELECT symbol_style_select; + // C++ wrapper type for text + typedef STRING text; + // C++ wrapper type for text_alignment + typedef STRING text_alignment; + // C++ wrapper type for text_delineation + typedef STRING text_delineation; + // C++ wrapper type for text_or_character + typedef SELECT text_or_character; + // C++ wrapper type for text_path + typedef ENUMERATION text_path; + // C++ wrapper type for text_string_representation_item + typedef SELECT text_string_representation_item; + // C++ wrapper type for thermodynamic_temperature_measure + typedef REAL thermodynamic_temperature_measure; + // C++ wrapper type for time_interval_item + typedef SELECT time_interval_item; + // C++ wrapper type for time_measure + typedef REAL time_measure; + // C++ wrapper type for tolerance_method_definition + typedef SELECT tolerance_method_definition; + // C++ wrapper type for transformation + typedef SELECT transformation; + // C++ wrapper type for transition_code + typedef ENUMERATION transition_code; + // C++ wrapper type for trim_condition_select + typedef SELECT trim_condition_select; + // C++ wrapper type for trim_intent + typedef ENUMERATION trim_intent; + // C++ wrapper type for trimming_preference + typedef ENUMERATION trimming_preference; + // C++ wrapper type for trimming_select + typedef SELECT trimming_select; + // C++ wrapper type for u_direction_count + typedef INTEGER u_direction_count; + // C++ wrapper type for unit + typedef SELECT unit; + // C++ wrapper type for v_direction_count + typedef INTEGER v_direction_count; + // C++ wrapper type for value_qualifier + typedef SELECT value_qualifier; + // C++ wrapper type for vector_or_direction + typedef SELECT vector_or_direction; + // C++ wrapper type for velocity_measure + typedef REAL velocity_measure; + // C++ wrapper type for volume_measure + typedef REAL volume_measure; + // C++ wrapper type for week_in_year_number + typedef INTEGER week_in_year_number; + // C++ wrapper type for work_item + typedef SELECT work_item; + // C++ wrapper type for year_number + typedef INTEGER year_number; + + + // ****************************************************************************** + // StepFile Entities + // ****************************************************************************** + + struct measure_with_unit; + struct absorbed_dose_measure_with_unit; + struct derived_unit; + struct absorbed_dose_unit; + struct abstract_variable; + struct acceleration_measure_with_unit; + struct acceleration_unit; + struct action; + struct action_assignment; + typedef NotImplemented action_directive; // (not currently used by Assimp) + struct action_method; + struct action_method_assignment; + struct action_method_relationship; + typedef NotImplemented action_method_role; // (not currently used by Assimp) + typedef NotImplemented action_property; // (not currently used by Assimp) + typedef NotImplemented action_property_representation; // (not currently used by Assimp) + typedef NotImplemented action_relationship; // (not currently used by Assimp) + struct action_request_assignment; + typedef NotImplemented action_request_solution; // (not currently used by Assimp) + typedef NotImplemented action_request_status; // (not currently used by Assimp) + typedef NotImplemented action_status; // (not currently used by Assimp) + struct address; + struct representation; + struct shape_representation; + struct advanced_brep_shape_representation; + struct face_surface; + struct advanced_face; + typedef NotImplemented alternate_product_relationship; // (not currently used by Assimp) + struct amount_of_substance_measure_with_unit; + struct named_unit; + struct amount_of_substance_unit; + struct angle_direction_reference; + struct representation_item; + struct geometric_representation_item; + struct draughting_callout; + struct dimension_curve_directed_callout; + struct angular_dimension; + struct shape_aspect_relationship; + struct dimensional_location; + struct angular_location; + struct dimensional_size; + struct angular_size; + struct geometric_tolerance; + struct geometric_tolerance_with_datum_reference; + struct angularity_tolerance; + struct styled_item; + struct annotation_occurrence; + struct annotation_curve_occurrence; + struct annotation_fill_area; + struct annotation_fill_area_occurrence; + struct annotation_occurrence_relationship; + struct annotation_occurrence_associativity; + struct annotation_plane; + struct annotation_symbol_occurrence; + struct annotation_subfigure_occurrence; + struct mapped_item; + struct annotation_symbol; + struct annotation_text; + struct annotation_text_character; + struct annotation_text_occurrence; + struct shape_aspect; + struct derived_shape_aspect; + struct apex; + typedef NotImplemented application_context; // (not currently used by Assimp) + struct application_context_element; + typedef NotImplemented application_protocol_definition; // (not currently used by Assimp) + struct applied_action_assignment; + struct applied_action_method_assignment; + struct applied_action_request_assignment; + struct approval_assignment; + struct applied_approval_assignment; + struct attribute_classification_assignment; + struct applied_attribute_classification_assignment; + struct certification_assignment; + struct applied_certification_assignment; + struct classification_assignment; + struct applied_classification_assignment; + struct contract_assignment; + struct applied_contract_assignment; + struct date_and_time_assignment; + struct applied_date_and_time_assignment; + struct date_assignment; + struct applied_date_assignment; + struct document_reference; + struct applied_document_reference; + struct document_usage_constraint_assignment; + struct applied_document_usage_constraint_assignment; + struct effectivity_assignment; + struct applied_effectivity_assignment; + struct event_occurrence_assignment; + struct applied_event_occurrence_assignment; + struct identification_assignment; + struct external_identification_assignment; + struct applied_external_identification_assignment; + struct group_assignment; + struct applied_group_assignment; + struct applied_identification_assignment; + struct name_assignment; + struct applied_name_assignment; + struct organization_assignment; + struct applied_organization_assignment; + struct organizational_project_assignment; + struct applied_organizational_project_assignment; + struct person_and_organization_assignment; + struct applied_person_and_organization_assignment; + struct presented_item; + struct applied_presented_item; + struct security_classification_assignment; + struct applied_security_classification_assignment; + struct time_interval_assignment; + struct applied_time_interval_assignment; + struct applied_usage_right; + typedef NotImplemented approval; // (not currently used by Assimp) + typedef NotImplemented approval_date_time; // (not currently used by Assimp) + typedef NotImplemented approval_person_organization; // (not currently used by Assimp) + typedef NotImplemented approval_relationship; // (not currently used by Assimp) + typedef NotImplemented approval_role; // (not currently used by Assimp) + typedef NotImplemented approval_status; // (not currently used by Assimp) + struct area_in_set; + struct area_measure_with_unit; + struct area_unit; + struct product_definition_relationship; + struct product_definition_usage; + struct assembly_component_usage; + typedef NotImplemented assembly_component_usage_substitute; // (not currently used by Assimp) + struct assigned_requirement; + struct compound_representation_item; + struct atomic_formula; + struct attribute_assertion; + struct attribute_language_assignment; + struct attribute_value_assignment; + typedef NotImplemented attribute_value_role; // (not currently used by Assimp) + struct auxiliary_geometric_representation_item; + struct placement; + struct axis1_placement; + struct axis2_placement_2d; + struct axis2_placement_3d; + struct curve; + struct bounded_curve; + struct b_spline_curve; + struct b_spline_curve_with_knots; + struct surface; + struct bounded_surface; + struct b_spline_surface; + struct b_spline_surface_with_knots; + struct product_definition; + struct rule_software_definition; + struct rule_definition; + struct back_chaining_rule; + struct back_chaining_rule_body; + struct colour; + struct background_colour; + struct beveled_sheet_representation; + struct bezier_curve; + struct bezier_surface; + struct generic_expression; + struct binary_generic_expression; + struct binary_numeric_expression; + struct binary_representation_item; + struct block; + struct expression; + struct boolean_expression; + struct boolean_literal; + struct boolean_representation_item; + struct boolean_result; + struct composite_curve; + struct composite_curve_on_surface; + struct boundary_curve; + struct bounded_pcurve; + struct bounded_surface_curve; + struct founded_item; + struct box_domain; + struct half_space_solid; + struct boxed_half_space; + struct breakdown_context; + struct breakdown_element_group_assignment; + struct breakdown_element_realization; + struct breakdown_element_usage; + struct breakdown_of; + struct solid_model; + struct manifold_solid_brep; + struct brep_with_voids; + struct bytes_representation_item; + struct date; + struct calendar_date; + struct camera_image; + struct camera_image_3d_with_scale; + struct camera_model; + struct camera_model_d3; + struct camera_model_d3_multi_clipping; + struct camera_model_d3_multi_clipping_intersection; + struct camera_model_d3_multi_clipping_union; + struct camera_model_d3_with_hlhsr; + struct camera_model_with_light_sources; + struct representation_map; + struct camera_usage; + struct capacitance_measure_with_unit; + struct capacitance_unit; + struct point; + struct cartesian_point; + struct cartesian_transformation_operator; + struct cartesian_transformation_operator_2d; + struct cartesian_transformation_operator_3d; + struct cc_design_approval; + struct cc_design_certification; + struct cc_design_contract; + struct cc_design_date_and_time_assignment; + struct cc_design_person_and_organization_assignment; + struct cc_design_security_classification; + struct cc_design_specification_reference; + struct celsius_temperature_measure_with_unit; + struct centre_of_symmetry; + typedef NotImplemented certification; // (not currently used by Assimp) + typedef NotImplemented certification_type; // (not currently used by Assimp) + struct change; + struct change_request; + typedef NotImplemented character_glyph_font_usage; // (not currently used by Assimp) + struct character_glyph_style_outline; + struct character_glyph_style_stroke; + struct symbol_representation; + struct generic_character_glyph_symbol; + struct character_glyph_symbol; + struct character_glyph_symbol_outline; + struct character_glyph_symbol_stroke; + struct general_property; + struct characteristic_data_column_header; + struct general_property_relationship; + struct characteristic_data_column_header_link; + struct characteristic_data_table_header; + struct characteristic_data_table_header_decomposition; + struct group; + struct characteristic_type; + struct characterized_class; + struct characterized_object; + struct conic; + struct circle; + struct circular_runout_tolerance; + typedef NotImplemented class_t; // (not currently used by Assimp) + struct class_by_extension; + struct class_by_intension; + struct class_system; + struct effectivity_context_assignment; + struct class_usage_effectivity_context_assignment; + typedef NotImplemented classification_role; // (not currently used by Assimp) + struct topological_representation_item; + struct connected_face_set; + struct closed_shell; + struct coaxiality_tolerance; + struct colour_specification; + struct colour_rgb; + struct common_datum; + struct comparison_expression; + struct complex_clause; + struct complex_conjunctive_clause; + struct complex_disjunctive_clause; + struct modified_solid; + struct shelled_solid; + struct complex_shelled_solid; + struct composite_assembly_definition; + struct composite_assembly_sequence_definition; + struct laminate_table; + struct part_laminate_table; + struct composite_assembly_table; + struct composite_curve_segment; + struct material_designation; + struct composite_material_designation; + struct composite_shape_aspect; + struct composite_sheet_representation; + struct composite_text; + struct composite_text_with_associated_curves; + struct composite_text_with_blanking_box; + struct composite_text_with_delineation; + struct composite_text_with_extent; + struct compound_shape_representation; + struct concentricity_tolerance; + typedef NotImplemented concept_feature_operator; // (not currently used by Assimp) + struct concept_feature_relationship; + struct concept_feature_relationship_with_condition; + struct product_concept_feature; + struct conditional_concept_feature; + struct conductance_measure_with_unit; + struct conductance_unit; + struct configuration_item; + struct configurable_item; + typedef NotImplemented configuration_design; // (not currently used by Assimp) + struct effectivity; + struct product_definition_effectivity; + struct configuration_effectivity; + struct configuration_item_relationship; + struct configuration_item_hierarchical_relationship; + struct configuration_item_revision_sequence; + struct configured_effectivity_assignment; + struct configured_effectivity_context_assignment; + struct conical_stepped_hole_transition; + struct elementary_surface; + struct conical_surface; + struct connected_edge_set; + struct connected_face_sub_set; + struct constructive_geometry_representation; + struct representation_relationship; + struct constructive_geometry_representation_relationship; + struct contact_ratio_representation; + struct invisibility; + struct context_dependent_invisibility; + struct over_riding_styled_item; + struct context_dependent_over_riding_styled_item; + typedef NotImplemented context_dependent_shape_representation; // (not currently used by Assimp) + struct context_dependent_unit; + typedef NotImplemented contract; // (not currently used by Assimp) + typedef NotImplemented contract_relationship; // (not currently used by Assimp) + typedef NotImplemented contract_type; // (not currently used by Assimp) + struct conversion_based_unit; + typedef NotImplemented coordinated_universal_time_offset; // (not currently used by Assimp) + struct csg_shape_representation; + struct csg_solid; + struct currency; + struct currency_measure_with_unit; + struct curve_bounded_surface; + struct curve_dimension; + struct curve_replica; + struct curve_style; + struct curve_style_font; + struct curve_style_font_and_scaling; + struct curve_style_font_pattern; + typedef NotImplemented curve_style_rendering; // (not currently used by Assimp) + struct curve_swept_solid_shape_representation; + struct cylindrical_surface; + struct cylindricity_tolerance; + typedef NotImplemented data_environment; // (not currently used by Assimp) + typedef NotImplemented date_and_time; // (not currently used by Assimp) + struct date_representation_item; + typedef NotImplemented date_role; // (not currently used by Assimp) + struct date_time_representation_item; + typedef NotImplemented date_time_role; // (not currently used by Assimp) + struct dated_effectivity; + struct datum; + struct datum_feature; + struct datum_feature_callout; + struct datum_reference; + struct datum_target; + struct datum_target_callout; + struct default_tolerance_table; + struct default_tolerance_table_cell; + struct defined_symbol; + struct definitional_representation; + struct definitional_representation_relationship; + struct definitional_representation_relationship_with_same_context; + struct degenerate_pcurve; + struct toroidal_surface; + struct degenerate_toroidal_surface; + typedef NotImplemented derived_unit_element; // (not currently used by Assimp) + typedef NotImplemented description_attribute; // (not currently used by Assimp) + struct descriptive_representation_item; + struct product_definition_context; + struct design_context; + struct design_make_from_relationship; + struct diameter_dimension; + struct ratio_measure_with_unit; + struct dielectric_constant_measure_with_unit; + struct dimension_callout; + struct draughting_callout_relationship; + struct dimension_callout_component_relationship; + struct dimension_callout_relationship; + struct dimension_curve; + struct terminator_symbol; + struct dimension_curve_terminator; + struct dimension_curve_terminator_to_projection_curve_associativity; + struct dimension_pair; + typedef NotImplemented dimension_related_tolerance_zone_element; // (not currently used by Assimp) + struct dimension_text_associativity; + typedef NotImplemented dimensional_characteristic_representation; // (not currently used by Assimp) + typedef NotImplemented dimensional_exponents; // (not currently used by Assimp) + struct dimensional_location_with_path; + struct dimensional_size_with_path; + struct executed_action; + struct directed_action; + struct directed_dimensional_location; + struct direction; + typedef NotImplemented document; // (not currently used by Assimp) + struct document_file; + struct document_identifier; + struct document_identifier_assignment; + struct document_product_association; + struct document_product_equivalence; + typedef NotImplemented document_relationship; // (not currently used by Assimp) + typedef NotImplemented document_representation_type; // (not currently used by Assimp) + typedef NotImplemented document_type; // (not currently used by Assimp) + typedef NotImplemented document_usage_constraint; // (not currently used by Assimp) + typedef NotImplemented document_usage_role; // (not currently used by Assimp) + struct dose_equivalent_measure_with_unit; + struct dose_equivalent_unit; + struct double_offset_shelled_solid; + struct item_defined_transformation; + struct transformation_with_derived_angle; + struct draped_defined_transformation; + struct draughting_annotation_occurrence; + struct draughting_elements; + struct draughting_model; + struct item_identified_representation_usage; + struct draughting_model_item_association; + struct pre_defined_colour; + struct draughting_pre_defined_colour; + struct pre_defined_item; + struct pre_defined_curve_font; + struct draughting_pre_defined_curve_font; + struct pre_defined_text_font; + struct draughting_pre_defined_text_font; + struct draughting_subfigure_representation; + struct draughting_symbol_representation; + struct text_literal; + struct text_literal_with_delineation; + struct draughting_text_literal_with_delineation; + typedef NotImplemented draughting_title; // (not currently used by Assimp) + typedef NotImplemented drawing_definition; // (not currently used by Assimp) + struct presentation_set; + struct drawing_revision; + typedef NotImplemented drawing_revision_sequence; // (not currently used by Assimp) + struct presentation_representation; + struct presentation_area; + struct drawing_sheet_revision; + struct drawing_sheet_revision_sequence; + struct drawing_sheet_revision_usage; + struct edge; + struct edge_based_wireframe_model; + struct edge_based_wireframe_shape_representation; + struct edge_blended_solid; + struct edge_curve; + struct edge_loop; + typedef NotImplemented effectivity_context_role; // (not currently used by Assimp) + typedef NotImplemented effectivity_relationship; // (not currently used by Assimp) + struct electric_charge_measure_with_unit; + struct electric_charge_unit; + struct electric_current_measure_with_unit; + struct electric_current_unit; + struct electric_potential_measure_with_unit; + struct electric_potential_unit; + struct elementary_brep_shape_representation; + struct ellipse; + struct energy_measure_with_unit; + struct energy_unit; + struct property_definition; + struct fact_type; + struct entity_assertion; + struct enum_reference_prefix; + typedef NotImplemented environment; // (not currently used by Assimp) + struct evaluated_characteristic; + struct evaluated_degenerate_pcurve; + struct evaluation_product_definition; + struct event_occurrence; + typedef NotImplemented event_occurrence_relationship; // (not currently used by Assimp) + typedef NotImplemented event_occurrence_role; // (not currently used by Assimp) + struct product_concept_feature_category; + struct exclusive_product_concept_feature_category; + struct uncertainty_qualifier; + struct standard_uncertainty; + struct expanded_uncertainty; + struct representation_item_relationship; + struct explicit_procedural_representation_item_relationship; + struct explicit_procedural_geometric_representation_item_relationship; + struct explicit_procedural_representation_relationship; + struct explicit_procedural_shape_representation_relationship; + struct expression_conversion_based_unit; + struct extension; + struct extent; + struct external_source; + struct external_class_library; + typedef NotImplemented external_source_relationship; // (not currently used by Assimp) + struct externally_defined_class; + struct externally_defined_colour; + struct externally_defined_context_dependent_unit; + struct externally_defined_conversion_based_unit; + struct externally_defined_currency; + struct externally_defined_item; + struct externally_defined_curve_font; + struct externally_defined_dimension_definition; + struct externally_defined_general_property; + struct externally_defined_hatch_style; + typedef NotImplemented externally_defined_item_relationship; // (not currently used by Assimp) + struct externally_defined_marker; + struct picture_representation_item; + struct externally_defined_picture_representation_item; + struct externally_defined_representation_item; + struct externally_defined_string; + struct externally_defined_symbol; + struct externally_defined_terminator_symbol; + struct externally_defined_text_font; + struct externally_defined_tile; + struct externally_defined_tile_style; + struct swept_area_solid; + struct extruded_area_solid; + struct swept_face_solid; + struct extruded_face_solid; + struct extruded_face_solid_with_trim_conditions; + struct extruded_face_solid_with_draft_angle; + struct extruded_face_solid_with_multiple_draft_angles; + struct face; + struct face_based_surface_model; + struct face_bound; + struct face_outer_bound; + struct faceted_brep; + struct faceted_brep_shape_representation; + struct fill_area_style; + typedef NotImplemented fill_area_style_colour; // (not currently used by Assimp) + struct fill_area_style_hatching; + struct fill_area_style_tile_coloured_region; + struct fill_area_style_tile_curve_with_style; + struct fill_area_style_tile_symbol_with_style; + struct fill_area_style_tiles; + struct shape_representation_relationship; + struct flat_pattern_ply_representation_relationship; + struct flatness_tolerance; + struct force_measure_with_unit; + struct force_unit; + struct forward_chaining_rule; + struct forward_chaining_rule_premise; + struct frequency_measure_with_unit; + struct frequency_unit; + struct func; + struct functional_breakdown_context; + struct functional_element_usage; + typedef NotImplemented functionally_defined_transformation; // (not currently used by Assimp) + struct general_material_property; + typedef NotImplemented general_property_association; // (not currently used by Assimp) + struct simple_generic_expression; + struct generic_literal; + struct generic_variable; + struct geometric_alignment; + struct geometric_set; + struct geometric_curve_set; + struct geometric_intersection; + struct geometric_item_specific_usage; + struct geometric_model_element_relationship; + struct representation_context; + struct geometric_representation_context; + typedef NotImplemented geometric_tolerance_relationship; // (not currently used by Assimp) + struct geometric_tolerance_with_defined_unit; + struct geometrical_tolerance_callout; + struct geometrically_bounded_2d_wireframe_representation; + struct geometrically_bounded_surface_shape_representation; + struct geometrically_bounded_wireframe_shape_representation; + struct global_assignment; + struct global_uncertainty_assigned_context; + struct global_unit_assigned_context; + struct ground_fact; + typedef NotImplemented group_relationship; // (not currently used by Assimp) + struct hardness_representation; + struct hidden_element_over_riding_styled_item; + struct hyperbola; + typedef NotImplemented id_attribute; // (not currently used by Assimp) + typedef NotImplemented identification_role; // (not currently used by Assimp) + struct illuminance_measure_with_unit; + struct illuminance_unit; + struct included_text_block; + struct inclusion_product_concept_feature; + struct user_selected_elements; + struct indirectly_selected_elements; + struct indirectly_selected_shape_elements; + struct inductance_measure_with_unit; + struct inductance_unit; + struct information_right; + struct information_usage_right; + struct instance_usage_context_assignment; + struct instanced_feature; + struct literal_number; + struct int_literal; + struct integer_representation_item; + struct surface_curve; + struct intersection_curve; + struct interval_expression; + struct iso4217_currency; + struct known_source; + struct laid_defined_transformation; + struct language; + struct leader_curve; + struct leader_directed_callout; + struct leader_directed_dimension; + struct leader_terminator; + struct length_measure_with_unit; + struct length_unit; + struct light_source; + struct light_source_ambient; + struct light_source_directional; + struct light_source_positional; + struct light_source_spot; + typedef NotImplemented limits_and_fits; // (not currently used by Assimp) + struct line; + struct line_profile_tolerance; + struct linear_dimension; + struct simple_clause; + struct literal_conjunction; + struct literal_disjunction; + typedef NotImplemented local_time; // (not currently used by Assimp) + struct logical_literal; + struct logical_representation_item; + struct loop; + struct loss_tangent_measure_with_unit; + struct lot_effectivity; + struct luminous_flux_measure_with_unit; + struct luminous_flux_unit; + struct luminous_intensity_measure_with_unit; + struct luminous_intensity_unit; + struct magnetic_flux_density_measure_with_unit; + struct magnetic_flux_density_unit; + struct magnetic_flux_measure_with_unit; + struct magnetic_flux_unit; + struct make_from_usage_option; + struct manifold_subsurface_shape_representation; + struct manifold_surface_shape_representation; + struct mass_measure_with_unit; + struct mass_unit; + typedef NotImplemented material_designation_characterization; // (not currently used by Assimp) + struct material_property; + struct property_definition_representation; + struct material_property_representation; + typedef NotImplemented measure_qualification; // (not currently used by Assimp) + struct measure_representation_item; + struct product_context; + struct mechanical_context; + struct mechanical_design_and_draughting_relationship; + struct mechanical_design_geometric_presentation_area; + struct mechanical_design_geometric_presentation_representation; + struct mechanical_design_presentation_representation_with_draughting; + struct mechanical_design_shaded_presentation_area; + struct mechanical_design_shaded_presentation_representation; + struct min_and_major_ply_orientation_basis; + struct modified_geometric_tolerance; + struct modified_solid_with_placed_configuration; + struct moments_of_inertia_representation; + struct multi_language_attribute_assignment; + struct multiple_arity_boolean_expression; + struct multiple_arity_generic_expression; + struct multiple_arity_numeric_expression; + typedef NotImplemented name_attribute; // (not currently used by Assimp) + struct next_assembly_usage_occurrence; + struct non_manifold_surface_shape_representation; + struct null_representation_item; + struct numeric_expression; + typedef NotImplemented object_role; // (not currently used by Assimp) + struct offset_curve_2d; + struct offset_curve_3d; + struct offset_surface; + struct one_direction_repeat_factor; + struct open_shell; + struct ordinal_date; + struct projection_directed_callout; + struct ordinate_dimension; + typedef NotImplemented organization; // (not currently used by Assimp) + typedef NotImplemented organization_relationship; // (not currently used by Assimp) + typedef NotImplemented organization_role; // (not currently used by Assimp) + struct organizational_address; + typedef NotImplemented organizational_project; // (not currently used by Assimp) + typedef NotImplemented organizational_project_relationship; // (not currently used by Assimp) + typedef NotImplemented organizational_project_role; // (not currently used by Assimp) + struct oriented_closed_shell; + struct oriented_edge; + struct oriented_face; + struct oriented_open_shell; + struct path; + struct oriented_path; + struct oriented_surface; + struct outer_boundary_curve; + struct package_product_concept_feature; + struct parabola; + struct parallel_offset; + struct parallelism_tolerance; + struct parametric_representation_context; + struct partial_document_with_structured_text_representation_assignment; + struct pcurve; + struct percentage_laminate_definition; + struct zone_structural_makeup; + struct percentage_laminate_table; + struct percentage_ply_definition; + struct perpendicular_to; + struct perpendicularity_tolerance; + typedef NotImplemented person; // (not currently used by Assimp) + typedef NotImplemented person_and_organization; // (not currently used by Assimp) + struct person_and_organization_address; + typedef NotImplemented person_and_organization_role; // (not currently used by Assimp) + struct personal_address; + struct physical_breakdown_context; + struct physical_element_usage; + struct presentation_view; + struct picture_representation; + struct placed_datum_target_feature; + struct placed_feature; + struct planar_extent; + struct planar_box; + struct plane; + struct plane_angle_measure_with_unit; + struct plane_angle_unit; + typedef NotImplemented plus_minus_tolerance; // (not currently used by Assimp) + struct ply_laminate_definition; + struct ply_laminate_sequence_definition; + struct ply_laminate_table; + struct point_and_vector; + struct point_on_curve; + struct point_on_surface; + struct point_path; + struct point_replica; + struct point_style; + struct polar_complex_number_literal; + struct poly_loop; + struct polyline; + struct position_tolerance; + struct positioned_sketch; + struct power_measure_with_unit; + struct power_unit; + struct pre_defined_symbol; + struct pre_defined_dimension_symbol; + struct pre_defined_geometrical_tolerance_symbol; + struct pre_defined_marker; + struct pre_defined_point_marker_symbol; + struct pre_defined_surface_condition_symbol; + struct pre_defined_surface_side_style; + struct pre_defined_terminator_symbol; + struct pre_defined_tile; + typedef NotImplemented precision_qualifier; // (not currently used by Assimp) + struct predefined_picture_representation_item; + typedef NotImplemented presentation_layer_assignment; // (not currently used by Assimp) + typedef NotImplemented presentation_size; // (not currently used by Assimp) + struct presentation_style_assignment; + struct presentation_style_by_context; + typedef NotImplemented presented_item_representation; // (not currently used by Assimp) + struct pressure_measure_with_unit; + struct pressure_unit; + struct procedural_representation; + struct procedural_representation_sequence; + struct procedural_shape_representation; + struct procedural_shape_representation_sequence; + typedef NotImplemented product; // (not currently used by Assimp) + struct product_category; + struct product_class; + typedef NotImplemented product_concept; // (not currently used by Assimp) + struct product_concept_context; + typedef NotImplemented product_concept_feature_association; // (not currently used by Assimp) + struct product_concept_feature_category_usage; + typedef NotImplemented product_concept_relationship; // (not currently used by Assimp) + typedef NotImplemented product_definition_context_association; // (not currently used by Assimp) + typedef NotImplemented product_definition_context_role; // (not currently used by Assimp) + struct product_definition_element_relationship; + struct product_definition_formation; + typedef NotImplemented product_definition_formation_relationship; // (not currently used by Assimp) + struct product_definition_formation_with_specified_source; + struct product_definition_group_assignment; + typedef NotImplemented product_definition_occurrence_relationship; // (not currently used by Assimp) + struct product_definition_shape; + typedef NotImplemented product_definition_substitute; // (not currently used by Assimp) + struct product_definition_with_associated_documents; + struct product_identification; + struct product_material_composition_relationship; + struct product_related_product_category; + struct product_specification; + struct tolerance_zone_definition; + struct projected_zone_definition; + struct projection_curve; + struct promissory_usage_occurrence; + typedef NotImplemented property_definition_relationship; // (not currently used by Assimp) + struct qualified_representation_item; + struct qualitative_uncertainty; + struct quantified_assembly_component_usage; + struct quasi_uniform_curve; + struct quasi_uniform_surface; + struct radioactivity_measure_with_unit; + struct radioactivity_unit; + struct radius_dimension; + struct range_characteristic; + struct ratio_unit; + struct rational_b_spline_curve; + struct rational_b_spline_surface; + struct rational_representation_item; + struct real_literal; + struct real_representation_item; + struct rectangular_composite_surface; + struct rectangular_trimmed_surface; + struct referenced_modified_datum; + struct relative_event_occurrence; + struct rep_item_group; + struct reparametrised_composite_curve_segment; + struct representation_relationship_with_transformation; + struct requirement_assigned_object; + struct requirement_assignment; + struct requirement_source; + struct requirement_view_definition_relationship; + struct resistance_measure_with_unit; + struct resistance_unit; + struct revolved_area_solid; + struct revolved_face_solid; + struct revolved_face_solid_with_trim_conditions; + struct right_angular_wedge; + struct right_circular_cone; + struct right_circular_cylinder; + struct right_to_usage_association; + typedef NotImplemented role_association; // (not currently used by Assimp) + struct roundness_tolerance; + struct row_representation_item; + struct row_value; + struct row_variable; + struct rule_action; + struct rule_condition; + struct rule_set; + struct rule_set_group; + struct rule_superseded_assignment; + struct rule_supersedence; + struct surface_curve_swept_area_solid; + struct ruled_surface_swept_area_solid; + struct runout_zone_definition; + struct runout_zone_orientation; + struct runout_zone_orientation_reference_direction; + struct satisfied_requirement; + struct satisfies_requirement; + struct satisfying_item; + struct scalar_variable; + struct scattering_parameter; + struct sculptured_solid; + struct seam_curve; + typedef NotImplemented security_classification; // (not currently used by Assimp) + typedef NotImplemented security_classification_level; // (not currently used by Assimp) + struct serial_numbered_effectivity; + struct shape_aspect_associativity; + struct shape_aspect_deriving_relationship; + struct shape_definition_representation; + struct shape_dimension_representation; + struct shape_feature_definition; + struct shape_representation_with_parameters; + struct shell_based_surface_model; + struct shell_based_wireframe_model; + struct shell_based_wireframe_shape_representation; + struct si_absorbed_dose_unit; + struct si_capacitance_unit; + struct si_conductance_unit; + struct si_dose_equivalent_unit; + struct si_electric_charge_unit; + struct si_electric_potential_unit; + struct si_energy_unit; + struct si_force_unit; + struct si_frequency_unit; + struct si_illuminance_unit; + struct si_inductance_unit; + struct si_magnetic_flux_density_unit; + struct si_magnetic_flux_unit; + struct si_power_unit; + struct si_pressure_unit; + struct si_radioactivity_unit; + struct si_resistance_unit; + struct si_unit; + struct simple_boolean_expression; + struct simple_numeric_expression; + struct slash_expression; + struct smeared_material_definition; + struct solid_angle_measure_with_unit; + struct solid_angle_unit; + struct solid_curve_font; + struct solid_replica; + struct solid_with_chamfered_edges; + struct solid_with_angle_based_chamfer; + struct solid_with_shape_element_pattern; + struct solid_with_circular_pattern; + struct solid_with_depression; + struct solid_with_pocket; + struct solid_with_circular_pocket; + struct solid_with_protrusion; + struct solid_with_circular_protrusion; + struct solid_with_hole; + struct solid_with_stepped_round_hole; + struct solid_with_conical_bottom_round_hole; + struct solid_with_constant_radius_edge_blend; + struct solid_with_slot; + struct solid_with_curved_slot; + struct solid_with_double_offset_chamfer; + struct solid_with_flat_bottom_round_hole; + struct solid_with_general_pocket; + struct solid_with_general_protrusion; + struct solid_with_groove; + struct solid_with_incomplete_circular_pattern; + struct solid_with_rectangular_pattern; + struct solid_with_incomplete_rectangular_pattern; + struct solid_with_rectangular_pocket; + struct solid_with_rectangular_protrusion; + struct solid_with_single_offset_chamfer; + struct solid_with_spherical_bottom_round_hole; + struct solid_with_stepped_round_hole_and_conical_transitions; + struct solid_with_straight_slot; + struct solid_with_tee_section_slot; + struct solid_with_through_depression; + struct solid_with_trapezoidal_section_slot; + struct solid_with_variable_radius_edge_blend; + struct source_for_requirement; + struct sourced_requirement; + struct specification_definition; + struct specified_higher_usage_occurrence; + struct sphere; + struct spherical_surface; + struct start_request; + struct start_work; + struct straightness_tolerance; + struct structured_dimension_callout; + struct structured_text_composition; + struct structured_text_representation; + struct subedge; + struct subface; + struct supplied_part_relationship; + struct surface_condition_callout; + struct swept_surface; + struct surface_of_linear_extrusion; + struct surface_of_revolution; + struct surface_patch; + struct surface_profile_tolerance; + typedef NotImplemented surface_rendering_properties; // (not currently used by Assimp) + struct surface_replica; + struct surface_side_style; + struct surface_style_boundary; + struct surface_style_control_grid; + struct surface_style_fill_area; + struct surface_style_parameter_line; + struct surface_style_reflectance_ambient; + struct surface_style_reflectance_ambient_diffuse; + struct surface_style_reflectance_ambient_diffuse_specular; + struct surface_style_rendering; + struct surface_style_rendering_with_properties; + struct surface_style_segmentation_curve; + struct surface_style_silhouette; + typedef NotImplemented surface_style_transparent; // (not currently used by Assimp) + struct surface_style_usage; + struct surface_texture_representation; + struct surfaced_open_shell; + struct swept_disk_solid; + struct symbol; + typedef NotImplemented symbol_colour; // (not currently used by Assimp) + struct symbol_representation_map; + struct symbol_style; + struct symbol_target; + struct symmetric_shape_aspect; + struct symmetry_tolerance; + struct table_representation_item; + struct tactile_appearance_representation; + struct tagged_text_format; + struct tagged_text_item; + struct tangent; + typedef NotImplemented text_font; // (not currently used by Assimp) + typedef NotImplemented text_font_family; // (not currently used by Assimp) + typedef NotImplemented text_font_in_family; // (not currently used by Assimp) + struct text_literal_with_associated_curves; + struct text_literal_with_blanking_box; + struct text_literal_with_extent; + struct text_string_representation; + struct text_style; + typedef NotImplemented text_style_for_defined_font; // (not currently used by Assimp) + struct text_style_with_box_characteristics; + struct text_style_with_mirror; + struct text_style_with_spacing; + struct thermal_resistance_measure_with_unit; + struct thermal_resistance_unit; + struct thermodynamic_temperature_measure_with_unit; + struct thermodynamic_temperature_unit; + struct thickened_face_solid; + struct thickness_laminate_definition; + struct thickness_laminate_table; + struct time_interval; + struct time_interval_based_effectivity; + typedef NotImplemented time_interval_relationship; // (not currently used by Assimp) + typedef NotImplemented time_interval_role; // (not currently used by Assimp) + struct time_interval_with_bounds; + struct time_measure_with_unit; + struct time_unit; + typedef NotImplemented tolerance_value; // (not currently used by Assimp) + struct tolerance_zone; + typedef NotImplemented tolerance_zone_form; // (not currently used by Assimp) + struct torus; + struct total_runout_tolerance; + struct track_blended_solid; + struct track_blended_solid_with_end_conditions; + struct trimmed_curve; + struct two_direction_repeat_factor; + typedef NotImplemented type_qualifier; // (not currently used by Assimp) + struct unary_generic_expression; + struct unary_numeric_expression; + struct uncertainty_assigned_representation; + struct uncertainty_measure_with_unit; + struct uniform_curve; + struct uniform_resource_identifier; + struct uniform_surface; + struct usage_association; + struct user_defined_curve_font; + struct user_defined_marker; + struct user_defined_terminator_symbol; + struct user_selected_shape_elements; + struct value_range; + struct value_representation_item; + struct variable_semantics; + struct variational_representation_item; + struct vector; + struct vector_style; + struct velocity_measure_with_unit; + struct velocity_unit; + typedef NotImplemented versioned_action_request; // (not currently used by Assimp) + struct vertex; + struct vertex_loop; + struct vertex_point; + struct vertex_shell; + struct view_volume; + struct visual_appearance_representation; + struct volume_measure_with_unit; + struct volume_unit; + struct week_of_year_and_day_date; + struct wire_shell; + struct year_month; + + + + // C++ wrapper for measure_with_unit + struct measure_with_unit : ObjectHelper { measure_with_unit() : Object("measure_with_unit") {} + measure_value::Out value_component; + unit::Out unit_component; + }; + + // C++ wrapper for absorbed_dose_measure_with_unit + struct absorbed_dose_measure_with_unit : measure_with_unit, ObjectHelper { absorbed_dose_measure_with_unit() : Object("absorbed_dose_measure_with_unit") {} + + }; + + // C++ wrapper for derived_unit + struct derived_unit : ObjectHelper { derived_unit() : Object("derived_unit") {} + ListOf< Lazy< NotImplemented >, 1, 0 > elements; + }; + + // C++ wrapper for absorbed_dose_unit + struct absorbed_dose_unit : derived_unit, ObjectHelper { absorbed_dose_unit() : Object("absorbed_dose_unit") {} + + }; + + // C++ wrapper for abstract_variable + struct abstract_variable : ObjectHelper { abstract_variable() : Object("abstract_variable") {} + + }; + + // C++ wrapper for acceleration_measure_with_unit + struct acceleration_measure_with_unit : measure_with_unit, ObjectHelper { acceleration_measure_with_unit() : Object("acceleration_measure_with_unit") {} + + }; + + // C++ wrapper for acceleration_unit + struct acceleration_unit : derived_unit, ObjectHelper { acceleration_unit() : Object("acceleration_unit") {} + + }; + + // C++ wrapper for action + struct action : ObjectHelper { action() : Object("action") {} + label::Out name; + Maybe< text::Out > description; + Lazy< action_method > chosen_method; + }; + + // C++ wrapper for action_assignment + struct action_assignment : ObjectHelper { action_assignment() : Object("action_assignment") {} + Lazy< action > assigned_action; + }; + + // C++ wrapper for action_method + struct action_method : ObjectHelper { action_method() : Object("action_method") {} + label::Out name; + Maybe< text::Out > description; + text::Out consequence; + text::Out purpose; + }; + + // C++ wrapper for action_method_assignment + struct action_method_assignment : ObjectHelper { action_method_assignment() : Object("action_method_assignment") {} + Lazy< action_method > assigned_action_method; + Lazy< NotImplemented > role; + }; + + // C++ wrapper for action_method_relationship + struct action_method_relationship : ObjectHelper { action_method_relationship() : Object("action_method_relationship") {} + label::Out name; + Maybe< text::Out > description; + Lazy< action_method > relating_method; + Lazy< action_method > related_method; + }; + + // C++ wrapper for action_request_assignment + struct action_request_assignment : ObjectHelper { action_request_assignment() : Object("action_request_assignment") {} + Lazy< NotImplemented > assigned_action_request; + }; + + // C++ wrapper for address + struct address : ObjectHelper { address() : Object("address") {} + Maybe< label::Out > internal_location; + Maybe< label::Out > street_number; + Maybe< label::Out > street; + Maybe< label::Out > postal_box; + Maybe< label::Out > town; + Maybe< label::Out > region; + Maybe< label::Out > postal_code; + Maybe< label::Out > country; + Maybe< label::Out > facsimile_number; + Maybe< label::Out > telephone_number; + Maybe< label::Out > electronic_mail_address; + Maybe< label::Out > telex_number; + }; + + // C++ wrapper for representation + struct representation : ObjectHelper { representation() : Object("representation") {} + label::Out name; + ListOf< Lazy< representation_item >, 1, 0 > items; + Lazy< representation_context > context_of_items; + }; + + // C++ wrapper for shape_representation + struct shape_representation : representation, ObjectHelper { shape_representation() : Object("shape_representation") {} + + }; + + // C++ wrapper for advanced_brep_shape_representation + struct advanced_brep_shape_representation : shape_representation, ObjectHelper { advanced_brep_shape_representation() : Object("advanced_brep_shape_representation") {} + + }; + + // C++ wrapper for face_surface + struct face_surface : ObjectHelper { face_surface() : Object("face_surface") {} + Lazy< surface > face_geometry; + BOOLEAN::Out same_sense; + }; + + // C++ wrapper for advanced_face + struct advanced_face : face_surface, ObjectHelper { advanced_face() : Object("advanced_face") {} + + }; + + // C++ wrapper for amount_of_substance_measure_with_unit + struct amount_of_substance_measure_with_unit : measure_with_unit, ObjectHelper { amount_of_substance_measure_with_unit() : Object("amount_of_substance_measure_with_unit") {} + + }; + + // C++ wrapper for named_unit + struct named_unit : ObjectHelper { named_unit() : Object("named_unit") {} + Lazy< NotImplemented > dimensions; + }; + + // C++ wrapper for amount_of_substance_unit + struct amount_of_substance_unit : named_unit, ObjectHelper { amount_of_substance_unit() : Object("amount_of_substance_unit") {} + + }; + + // C++ wrapper for angle_direction_reference + struct angle_direction_reference : ObjectHelper { angle_direction_reference() : Object("angle_direction_reference") {} + + }; + + // C++ wrapper for representation_item + struct representation_item : ObjectHelper { representation_item() : Object("representation_item") {} + label::Out name; + }; + + // C++ wrapper for geometric_representation_item + struct geometric_representation_item : representation_item, ObjectHelper { geometric_representation_item() : Object("geometric_representation_item") {} + + }; + + // C++ wrapper for draughting_callout + struct draughting_callout : geometric_representation_item, ObjectHelper { draughting_callout() : Object("draughting_callout") {} + ListOf< draughting_callout_element, 1, 0 >::Out contents; + }; + + // C++ wrapper for dimension_curve_directed_callout + struct dimension_curve_directed_callout : draughting_callout, ObjectHelper { dimension_curve_directed_callout() : Object("dimension_curve_directed_callout") {} + + }; + + // C++ wrapper for angular_dimension + struct angular_dimension : dimension_curve_directed_callout, ObjectHelper { angular_dimension() : Object("angular_dimension") {} + + }; + + // C++ wrapper for shape_aspect_relationship + struct shape_aspect_relationship : ObjectHelper { shape_aspect_relationship() : Object("shape_aspect_relationship") {} + label::Out name; + Maybe< text::Out > description; + Lazy< shape_aspect > relating_shape_aspect; + Lazy< shape_aspect > related_shape_aspect; + }; + + // C++ wrapper for dimensional_location + struct dimensional_location : shape_aspect_relationship, ObjectHelper { dimensional_location() : Object("dimensional_location") {} + + }; + + // C++ wrapper for angular_location + struct angular_location : dimensional_location, ObjectHelper { angular_location() : Object("angular_location") {} + angle_relator::Out angle_selection; + }; + + // C++ wrapper for dimensional_size + struct dimensional_size : ObjectHelper { dimensional_size() : Object("dimensional_size") {} + Lazy< shape_aspect > applies_to; + label::Out name; + }; + + // C++ wrapper for angular_size + struct angular_size : dimensional_size, ObjectHelper { angular_size() : Object("angular_size") {} + angle_relator::Out angle_selection; + }; + + // C++ wrapper for geometric_tolerance + struct geometric_tolerance : ObjectHelper { geometric_tolerance() : Object("geometric_tolerance") {} + label::Out name; + text::Out description; + Lazy< measure_with_unit > magnitude; + Lazy< shape_aspect > toleranced_shape_aspect; + }; + + // C++ wrapper for geometric_tolerance_with_datum_reference + struct geometric_tolerance_with_datum_reference : geometric_tolerance, ObjectHelper { geometric_tolerance_with_datum_reference() : Object("geometric_tolerance_with_datum_reference") {} + ListOf< Lazy< datum_reference >, 1, 0 > datum_system; + }; + + // C++ wrapper for angularity_tolerance + struct angularity_tolerance : geometric_tolerance_with_datum_reference, ObjectHelper { angularity_tolerance() : Object("angularity_tolerance") {} + + }; + + // C++ wrapper for styled_item + struct styled_item : representation_item, ObjectHelper { styled_item() : Object("styled_item") {} + ListOf< Lazy< presentation_style_assignment >, 1, 0 > styles; + Lazy< representation_item > item; + }; + + // C++ wrapper for annotation_occurrence + struct annotation_occurrence : styled_item, ObjectHelper { annotation_occurrence() : Object("annotation_occurrence") {} + + }; + + // C++ wrapper for annotation_curve_occurrence + struct annotation_curve_occurrence : annotation_occurrence, ObjectHelper { annotation_curve_occurrence() : Object("annotation_curve_occurrence") {} + + }; + + // C++ wrapper for annotation_fill_area + struct annotation_fill_area : geometric_representation_item, ObjectHelper { annotation_fill_area() : Object("annotation_fill_area") {} + ListOf< Lazy< curve >, 1, 0 > boundaries; + }; + + // C++ wrapper for annotation_fill_area_occurrence + struct annotation_fill_area_occurrence : annotation_occurrence, ObjectHelper { annotation_fill_area_occurrence() : Object("annotation_fill_area_occurrence") {} + Lazy< point > fill_style_target; + }; + + // C++ wrapper for annotation_occurrence_relationship + struct annotation_occurrence_relationship : ObjectHelper { annotation_occurrence_relationship() : Object("annotation_occurrence_relationship") {} + label::Out name; + text::Out description; + Lazy< annotation_occurrence > relating_annotation_occurrence; + Lazy< annotation_occurrence > related_annotation_occurrence; + }; + + // C++ wrapper for annotation_occurrence_associativity + struct annotation_occurrence_associativity : annotation_occurrence_relationship, ObjectHelper { annotation_occurrence_associativity() : Object("annotation_occurrence_associativity") {} + + }; + + // C++ wrapper for annotation_plane + struct annotation_plane : ObjectHelper { annotation_plane() : Object("annotation_plane") {} + Maybe< ListOf< annotation_plane_element, 1, 0 >::Out > elements; + }; + + // C++ wrapper for annotation_symbol_occurrence + struct annotation_symbol_occurrence : annotation_occurrence, ObjectHelper { annotation_symbol_occurrence() : Object("annotation_symbol_occurrence") {} + + }; + + // C++ wrapper for annotation_subfigure_occurrence + struct annotation_subfigure_occurrence : annotation_symbol_occurrence, ObjectHelper { annotation_subfigure_occurrence() : Object("annotation_subfigure_occurrence") {} + + }; + + // C++ wrapper for mapped_item + struct mapped_item : representation_item, ObjectHelper { mapped_item() : Object("mapped_item") {} + Lazy< representation_map > mapping_source; + Lazy< representation_item > mapping_target; + }; + + // C++ wrapper for annotation_symbol + struct annotation_symbol : mapped_item, ObjectHelper { annotation_symbol() : Object("annotation_symbol") {} + + }; + + // C++ wrapper for annotation_text + struct annotation_text : mapped_item, ObjectHelper { annotation_text() : Object("annotation_text") {} + + }; + + // C++ wrapper for annotation_text_character + struct annotation_text_character : mapped_item, ObjectHelper { annotation_text_character() : Object("annotation_text_character") {} + text_alignment::Out alignment; + }; + + // C++ wrapper for annotation_text_occurrence + struct annotation_text_occurrence : annotation_occurrence, ObjectHelper { annotation_text_occurrence() : Object("annotation_text_occurrence") {} + + }; + + // C++ wrapper for shape_aspect + struct shape_aspect : ObjectHelper { shape_aspect() : Object("shape_aspect") {} + label::Out name; + Maybe< text::Out > description; + Lazy< product_definition_shape > of_shape; + LOGICAL::Out product_definitional; + }; + + // C++ wrapper for derived_shape_aspect + struct derived_shape_aspect : shape_aspect, ObjectHelper { derived_shape_aspect() : Object("derived_shape_aspect") {} + + }; + + // C++ wrapper for apex + struct apex : derived_shape_aspect, ObjectHelper { apex() : Object("apex") {} + + }; + + // C++ wrapper for application_context_element + struct application_context_element : ObjectHelper { application_context_element() : Object("application_context_element") {} + label::Out name; + Lazy< NotImplemented > frame_of_reference; + }; + + // C++ wrapper for applied_action_assignment + struct applied_action_assignment : action_assignment, ObjectHelper { applied_action_assignment() : Object("applied_action_assignment") {} + ListOf< action_items, 1, 0 >::Out items; + }; + + // C++ wrapper for applied_action_method_assignment + struct applied_action_method_assignment : action_method_assignment, ObjectHelper { applied_action_method_assignment() : Object("applied_action_method_assignment") {} + ListOf< action_method_items, 1, 0 >::Out items; + }; + + // C++ wrapper for applied_action_request_assignment + struct applied_action_request_assignment : action_request_assignment, ObjectHelper { applied_action_request_assignment() : Object("applied_action_request_assignment") {} + ListOf< action_request_item, 1, 0 >::Out items; + }; + + // C++ wrapper for approval_assignment + struct approval_assignment : ObjectHelper { approval_assignment() : Object("approval_assignment") {} + Lazy< NotImplemented > assigned_approval; + }; + + // C++ wrapper for applied_approval_assignment + struct applied_approval_assignment : approval_assignment, ObjectHelper { applied_approval_assignment() : Object("applied_approval_assignment") {} + ListOf< approval_item, 1, 0 >::Out items; + }; + + // C++ wrapper for attribute_classification_assignment + struct attribute_classification_assignment : ObjectHelper { attribute_classification_assignment() : Object("attribute_classification_assignment") {} + Lazy< group > assigned_class; + label::Out attribute_name; + Lazy< NotImplemented > role; + }; + + // C++ wrapper for applied_attribute_classification_assignment + struct applied_attribute_classification_assignment : attribute_classification_assignment, ObjectHelper { applied_attribute_classification_assignment() : Object("applied_attribute_classification_assignment") {} + ListOf< attribute_classification_item, 1, 0 >::Out items; + }; + + // C++ wrapper for certification_assignment + struct certification_assignment : ObjectHelper { certification_assignment() : Object("certification_assignment") {} + Lazy< NotImplemented > assigned_certification; + }; + + // C++ wrapper for applied_certification_assignment + struct applied_certification_assignment : certification_assignment, ObjectHelper { applied_certification_assignment() : Object("applied_certification_assignment") {} + ListOf< certification_item, 1, 0 >::Out items; + }; + + // C++ wrapper for classification_assignment + struct classification_assignment : ObjectHelper { classification_assignment() : Object("classification_assignment") {} + Lazy< group > assigned_class; + Lazy< NotImplemented > role; + }; + + // C++ wrapper for applied_classification_assignment + struct applied_classification_assignment : classification_assignment, ObjectHelper { applied_classification_assignment() : Object("applied_classification_assignment") {} + ListOf< classification_item, 1, 0 >::Out items; + }; + + // C++ wrapper for contract_assignment + struct contract_assignment : ObjectHelper { contract_assignment() : Object("contract_assignment") {} + Lazy< NotImplemented > assigned_contract; + }; + + // C++ wrapper for applied_contract_assignment + struct applied_contract_assignment : contract_assignment, ObjectHelper { applied_contract_assignment() : Object("applied_contract_assignment") {} + ListOf< contract_item, 1, 0 >::Out items; + }; + + // C++ wrapper for date_and_time_assignment + struct date_and_time_assignment : ObjectHelper { date_and_time_assignment() : Object("date_and_time_assignment") {} + Lazy< NotImplemented > assigned_date_and_time; + Lazy< NotImplemented > role; + }; + + // C++ wrapper for applied_date_and_time_assignment + struct applied_date_and_time_assignment : date_and_time_assignment, ObjectHelper { applied_date_and_time_assignment() : Object("applied_date_and_time_assignment") {} + ListOf< date_and_time_item, 1, 0 >::Out items; + }; + + // C++ wrapper for date_assignment + struct date_assignment : ObjectHelper { date_assignment() : Object("date_assignment") {} + Lazy< date > assigned_date; + Lazy< NotImplemented > role; + }; + + // C++ wrapper for applied_date_assignment + struct applied_date_assignment : date_assignment, ObjectHelper { applied_date_assignment() : Object("applied_date_assignment") {} + ListOf< date_item, 1, 0 >::Out items; + }; + + // C++ wrapper for document_reference + struct document_reference : ObjectHelper { document_reference() : Object("document_reference") {} + Lazy< NotImplemented > assigned_document; + label::Out source; + }; + + // C++ wrapper for applied_document_reference + struct applied_document_reference : document_reference, ObjectHelper { applied_document_reference() : Object("applied_document_reference") {} + ListOf< document_reference_item, 1, 0 >::Out items; + }; + + // C++ wrapper for document_usage_constraint_assignment + struct document_usage_constraint_assignment : ObjectHelper { document_usage_constraint_assignment() : Object("document_usage_constraint_assignment") {} + Lazy< NotImplemented > assigned_document_usage; + Lazy< NotImplemented > role; + }; + + // C++ wrapper for applied_document_usage_constraint_assignment + struct applied_document_usage_constraint_assignment : document_usage_constraint_assignment, ObjectHelper { applied_document_usage_constraint_assignment() : Object("applied_document_usage_constraint_assignment") {} + ListOf< document_reference_item, 1, 0 >::Out items; + }; + + // C++ wrapper for effectivity_assignment + struct effectivity_assignment : ObjectHelper { effectivity_assignment() : Object("effectivity_assignment") {} + Lazy< effectivity > assigned_effectivity; + }; + + // C++ wrapper for applied_effectivity_assignment + struct applied_effectivity_assignment : effectivity_assignment, ObjectHelper { applied_effectivity_assignment() : Object("applied_effectivity_assignment") {} + ListOf< effectivity_item, 1, 0 >::Out items; + }; + + // C++ wrapper for event_occurrence_assignment + struct event_occurrence_assignment : ObjectHelper { event_occurrence_assignment() : Object("event_occurrence_assignment") {} + Lazy< event_occurrence > assigned_event_occurrence; + Lazy< NotImplemented > role; + }; + + // C++ wrapper for applied_event_occurrence_assignment + struct applied_event_occurrence_assignment : event_occurrence_assignment, ObjectHelper { applied_event_occurrence_assignment() : Object("applied_event_occurrence_assignment") {} + ListOf< event_occurrence_item, 1, 0 >::Out items; + }; + + // C++ wrapper for identification_assignment + struct identification_assignment : ObjectHelper { identification_assignment() : Object("identification_assignment") {} + identifier::Out assigned_id; + Lazy< NotImplemented > role; + }; + + // C++ wrapper for external_identification_assignment + struct external_identification_assignment : identification_assignment, ObjectHelper { external_identification_assignment() : Object("external_identification_assignment") {} + Lazy< external_source > source; + }; + + // C++ wrapper for applied_external_identification_assignment + struct applied_external_identification_assignment : external_identification_assignment, ObjectHelper { applied_external_identification_assignment() : Object("applied_external_identification_assignment") {} + ListOf< external_identification_item, 1, 0 >::Out items; + }; + + // C++ wrapper for group_assignment + struct group_assignment : ObjectHelper { group_assignment() : Object("group_assignment") {} + Lazy< group > assigned_group; + }; + + // C++ wrapper for applied_group_assignment + struct applied_group_assignment : group_assignment, ObjectHelper { applied_group_assignment() : Object("applied_group_assignment") {} + ListOf< groupable_item, 1, 0 >::Out items; + }; + + // C++ wrapper for applied_identification_assignment + struct applied_identification_assignment : identification_assignment, ObjectHelper { applied_identification_assignment() : Object("applied_identification_assignment") {} + ListOf< identification_item, 1, 0 >::Out items; + }; + + // C++ wrapper for name_assignment + struct name_assignment : ObjectHelper { name_assignment() : Object("name_assignment") {} + label::Out assigned_name; + }; + + // C++ wrapper for applied_name_assignment + struct applied_name_assignment : name_assignment, ObjectHelper { applied_name_assignment() : Object("applied_name_assignment") {} + name_item::Out item; + }; + + // C++ wrapper for organization_assignment + struct organization_assignment : ObjectHelper { organization_assignment() : Object("organization_assignment") {} + Lazy< NotImplemented > assigned_organization; + Lazy< NotImplemented > role; + }; + + // C++ wrapper for applied_organization_assignment + struct applied_organization_assignment : organization_assignment, ObjectHelper { applied_organization_assignment() : Object("applied_organization_assignment") {} + ListOf< organization_item, 1, 0 >::Out items; + }; + + // C++ wrapper for organizational_project_assignment + struct organizational_project_assignment : ObjectHelper { organizational_project_assignment() : Object("organizational_project_assignment") {} + Lazy< NotImplemented > assigned_organizational_project; + Lazy< NotImplemented > role; + }; + + // C++ wrapper for applied_organizational_project_assignment + struct applied_organizational_project_assignment : organizational_project_assignment, ObjectHelper { applied_organizational_project_assignment() : Object("applied_organizational_project_assignment") {} + ListOf< project_item, 1, 0 >::Out items; + }; + + // C++ wrapper for person_and_organization_assignment + struct person_and_organization_assignment : ObjectHelper { person_and_organization_assignment() : Object("person_and_organization_assignment") {} + Lazy< NotImplemented > assigned_person_and_organization; + Lazy< NotImplemented > role; + }; + + // C++ wrapper for applied_person_and_organization_assignment + struct applied_person_and_organization_assignment : person_and_organization_assignment, ObjectHelper { applied_person_and_organization_assignment() : Object("applied_person_and_organization_assignment") {} + ListOf< person_and_organization_item, 1, 0 >::Out items; + }; + + // C++ wrapper for presented_item + struct presented_item : ObjectHelper { presented_item() : Object("presented_item") {} + + }; + + // C++ wrapper for applied_presented_item + struct applied_presented_item : presented_item, ObjectHelper { applied_presented_item() : Object("applied_presented_item") {} + ListOf< presented_item_select, 1, 0 >::Out items; + }; + + // C++ wrapper for security_classification_assignment + struct security_classification_assignment : ObjectHelper { security_classification_assignment() : Object("security_classification_assignment") {} + Lazy< NotImplemented > assigned_security_classification; + }; + + // C++ wrapper for applied_security_classification_assignment + struct applied_security_classification_assignment : security_classification_assignment, ObjectHelper { applied_security_classification_assignment() : Object("applied_security_classification_assignment") {} + ListOf< security_classification_item, 1, 0 >::Out items; + }; + + // C++ wrapper for time_interval_assignment + struct time_interval_assignment : ObjectHelper { time_interval_assignment() : Object("time_interval_assignment") {} + Lazy< time_interval > assigned_time_interval; + Lazy< NotImplemented > role; + }; + + // C++ wrapper for applied_time_interval_assignment + struct applied_time_interval_assignment : time_interval_assignment, ObjectHelper { applied_time_interval_assignment() : Object("applied_time_interval_assignment") {} + ListOf< time_interval_item, 0, 0 >::Out items; + }; + + // C++ wrapper for applied_usage_right + struct applied_usage_right : applied_action_assignment, ObjectHelper { applied_usage_right() : Object("applied_usage_right") {} + + }; + + // C++ wrapper for area_in_set + struct area_in_set : ObjectHelper { area_in_set() : Object("area_in_set") {} + Lazy< presentation_area > area; + Lazy< presentation_set > in_set; + }; + + // C++ wrapper for area_measure_with_unit + struct area_measure_with_unit : measure_with_unit, ObjectHelper { area_measure_with_unit() : Object("area_measure_with_unit") {} + + }; + + // C++ wrapper for area_unit + struct area_unit : derived_unit, ObjectHelper { area_unit() : Object("area_unit") {} + + }; + + // C++ wrapper for product_definition_relationship + struct product_definition_relationship : ObjectHelper { product_definition_relationship() : Object("product_definition_relationship") {} + identifier::Out id; + label::Out name; + Maybe< text::Out > description; + Lazy< product_definition > relating_product_definition; + Lazy< product_definition > related_product_definition; + }; + + // C++ wrapper for product_definition_usage + struct product_definition_usage : product_definition_relationship, ObjectHelper { product_definition_usage() : Object("product_definition_usage") {} + + }; + + // C++ wrapper for assembly_component_usage + struct assembly_component_usage : product_definition_usage, ObjectHelper { assembly_component_usage() : Object("assembly_component_usage") {} + Maybe< identifier::Out > reference_designator; + }; + + // C++ wrapper for assigned_requirement + struct assigned_requirement : group_assignment, ObjectHelper { assigned_requirement() : Object("assigned_requirement") {} + ListOf< Lazy< product_definition >, 1, 1 > items; + }; + + // C++ wrapper for compound_representation_item + struct compound_representation_item : representation_item, ObjectHelper { compound_representation_item() : Object("compound_representation_item") {} + compound_item_definition::Out item_element; + }; + + // C++ wrapper for atomic_formula + struct atomic_formula : compound_representation_item, ObjectHelper { atomic_formula() : Object("atomic_formula") {} + + }; + + // C++ wrapper for attribute_assertion + struct attribute_assertion : ObjectHelper { attribute_assertion() : Object("attribute_assertion") {} + + }; + + // C++ wrapper for attribute_language_assignment + struct attribute_language_assignment : attribute_classification_assignment, ObjectHelper { attribute_language_assignment() : Object("attribute_language_assignment") {} + ListOf< attribute_language_item, 1, 0 >::Out items; + }; + + // C++ wrapper for attribute_value_assignment + struct attribute_value_assignment : ObjectHelper { attribute_value_assignment() : Object("attribute_value_assignment") {} + label::Out attribute_name; + attribute_type::Out attribute_value; + Lazy< NotImplemented > role; + }; + + // C++ wrapper for auxiliary_geometric_representation_item + struct auxiliary_geometric_representation_item : ObjectHelper { auxiliary_geometric_representation_item() : Object("auxiliary_geometric_representation_item") {} + + }; + + // C++ wrapper for placement + struct placement : geometric_representation_item, ObjectHelper { placement() : Object("placement") {} + Lazy< cartesian_point > location; + }; + + // C++ wrapper for axis1_placement + struct axis1_placement : placement, ObjectHelper { axis1_placement() : Object("axis1_placement") {} + Maybe< Lazy< direction > > axis; + }; + + // C++ wrapper for axis2_placement_2d + struct axis2_placement_2d : placement, ObjectHelper { axis2_placement_2d() : Object("axis2_placement_2d") {} + Maybe< Lazy< direction > > ref_direction; + }; + + // C++ wrapper for axis2_placement_3d + struct axis2_placement_3d : placement, ObjectHelper { axis2_placement_3d() : Object("axis2_placement_3d") {} + Maybe< Lazy< direction > > axis; + Maybe< Lazy< direction > > ref_direction; + }; + + // C++ wrapper for curve + struct curve : geometric_representation_item, ObjectHelper { curve() : Object("curve") {} + + }; + + // C++ wrapper for bounded_curve + struct bounded_curve : curve, ObjectHelper { bounded_curve() : Object("bounded_curve") {} + + }; + + // C++ wrapper for b_spline_curve + struct b_spline_curve : bounded_curve, ObjectHelper { b_spline_curve() : Object("b_spline_curve") {} + INTEGER::Out degree; + ListOf< Lazy< cartesian_point >, 2, 0 > control_points_list; + b_spline_curve_form::Out curve_form; + LOGICAL::Out closed_curve; + LOGICAL::Out self_intersect; + }; + + // C++ wrapper for b_spline_curve_with_knots + struct b_spline_curve_with_knots : b_spline_curve, ObjectHelper { b_spline_curve_with_knots() : Object("b_spline_curve_with_knots") {} + ListOf< INTEGER, 2, 0 >::Out knot_multiplicities; + ListOf< parameter_value, 2, 0 >::Out knots; + knot_type::Out knot_spec; + }; + + // C++ wrapper for surface + struct surface : geometric_representation_item, ObjectHelper { surface() : Object("surface") {} + + }; + + // C++ wrapper for bounded_surface + struct bounded_surface : surface, ObjectHelper { bounded_surface() : Object("bounded_surface") {} + + }; + + // C++ wrapper for b_spline_surface + struct b_spline_surface : bounded_surface, ObjectHelper { b_spline_surface() : Object("b_spline_surface") {} + INTEGER::Out u_degree; + INTEGER::Out v_degree; + b_spline_surface_form::Out surface_form; + LOGICAL::Out u_closed; + LOGICAL::Out v_closed; + LOGICAL::Out self_intersect; + }; + + // C++ wrapper for b_spline_surface_with_knots + struct b_spline_surface_with_knots : b_spline_surface, ObjectHelper { b_spline_surface_with_knots() : Object("b_spline_surface_with_knots") {} + ListOf< INTEGER, 2, 0 >::Out u_multiplicities; + ListOf< INTEGER, 2, 0 >::Out v_multiplicities; + ListOf< parameter_value, 2, 0 >::Out u_knots; + ListOf< parameter_value, 2, 0 >::Out v_knots; + knot_type::Out knot_spec; + }; + + // C++ wrapper for product_definition + struct product_definition : ObjectHelper { product_definition() : Object("product_definition") {} + identifier::Out id; + Maybe< text::Out > description; + Lazy< product_definition_formation > formation; + Lazy< product_definition_context > frame_of_reference; + }; + + // C++ wrapper for rule_software_definition + struct rule_software_definition : product_definition, ObjectHelper { rule_software_definition() : Object("rule_software_definition") {} + + }; + + // C++ wrapper for rule_definition + struct rule_definition : rule_software_definition, ObjectHelper { rule_definition() : Object("rule_definition") {} + + }; + + // C++ wrapper for back_chaining_rule + struct back_chaining_rule : rule_definition, ObjectHelper { back_chaining_rule() : Object("back_chaining_rule") {} + + }; + + // C++ wrapper for back_chaining_rule_body + struct back_chaining_rule_body : ObjectHelper { back_chaining_rule_body() : Object("back_chaining_rule_body") {} + + }; + + // C++ wrapper for colour + struct colour : ObjectHelper { colour() : Object("colour") {} + + }; + + // C++ wrapper for background_colour + struct background_colour : colour, ObjectHelper { background_colour() : Object("background_colour") {} + area_or_view::Out presentation; + }; + + // C++ wrapper for beveled_sheet_representation + struct beveled_sheet_representation : shape_representation, ObjectHelper { beveled_sheet_representation() : Object("beveled_sheet_representation") {} + + }; + + // C++ wrapper for bezier_curve + struct bezier_curve : b_spline_curve, ObjectHelper { bezier_curve() : Object("bezier_curve") {} + + }; + + // C++ wrapper for bezier_surface + struct bezier_surface : b_spline_surface, ObjectHelper { bezier_surface() : Object("bezier_surface") {} + + }; + + // C++ wrapper for generic_expression + struct generic_expression : ObjectHelper { generic_expression() : Object("generic_expression") {} + + }; + + // C++ wrapper for binary_generic_expression + struct binary_generic_expression : generic_expression, ObjectHelper { binary_generic_expression() : Object("binary_generic_expression") {} + ListOf< Lazy< generic_expression >, 2, 2 > operands; + }; + + // C++ wrapper for binary_numeric_expression + struct binary_numeric_expression : ObjectHelper { binary_numeric_expression() : Object("binary_numeric_expression") {} + + }; + + // C++ wrapper for binary_representation_item + struct binary_representation_item : representation_item, ObjectHelper { binary_representation_item() : Object("binary_representation_item") {} + BINARY::Out binary_value; + }; + + // C++ wrapper for block + struct block : geometric_representation_item, ObjectHelper { block() : Object("block") {} + Lazy< axis2_placement_3d > position; + positive_length_measure::Out x; + positive_length_measure::Out y; + positive_length_measure::Out z; + }; + + // C++ wrapper for expression + struct expression : generic_expression, ObjectHelper { expression() : Object("expression") {} + + }; + + // C++ wrapper for boolean_expression + struct boolean_expression : expression, ObjectHelper { boolean_expression() : Object("boolean_expression") {} + + }; + + // C++ wrapper for boolean_literal + struct boolean_literal : ObjectHelper { boolean_literal() : Object("boolean_literal") {} + BOOLEAN::Out the_value; + }; + + // C++ wrapper for boolean_representation_item + struct boolean_representation_item : ObjectHelper { boolean_representation_item() : Object("boolean_representation_item") {} + + }; + + // C++ wrapper for boolean_result + struct boolean_result : geometric_representation_item, ObjectHelper { boolean_result() : Object("boolean_result") {} + boolean_operator::Out operator_; + boolean_operand::Out first_operand; + boolean_operand::Out second_operand; + }; + + // C++ wrapper for composite_curve + struct composite_curve : bounded_curve, ObjectHelper { composite_curve() : Object("composite_curve") {} + ListOf< Lazy< composite_curve_segment >, 1, 0 > segments; + LOGICAL::Out self_intersect; + }; + + // C++ wrapper for composite_curve_on_surface + struct composite_curve_on_surface : composite_curve, ObjectHelper { composite_curve_on_surface() : Object("composite_curve_on_surface") {} + + }; + + // C++ wrapper for boundary_curve + struct boundary_curve : composite_curve_on_surface, ObjectHelper { boundary_curve() : Object("boundary_curve") {} + + }; + + // C++ wrapper for bounded_pcurve + struct bounded_pcurve : ObjectHelper { bounded_pcurve() : Object("bounded_pcurve") {} + + }; + + // C++ wrapper for bounded_surface_curve + struct bounded_surface_curve : ObjectHelper { bounded_surface_curve() : Object("bounded_surface_curve") {} + + }; + + // C++ wrapper for founded_item + struct founded_item : ObjectHelper { founded_item() : Object("founded_item") {} + + }; + + // C++ wrapper for box_domain + struct box_domain : founded_item, ObjectHelper { box_domain() : Object("box_domain") {} + Lazy< cartesian_point > corner; + positive_length_measure::Out xlength; + positive_length_measure::Out ylength; + positive_length_measure::Out zlength; + }; + + // C++ wrapper for half_space_solid + struct half_space_solid : geometric_representation_item, ObjectHelper { half_space_solid() : Object("half_space_solid") {} + Lazy< surface > base_surface; + BOOLEAN::Out agreement_flag; + }; + + // C++ wrapper for boxed_half_space + struct boxed_half_space : half_space_solid, ObjectHelper { boxed_half_space() : Object("boxed_half_space") {} + Lazy< box_domain > enclosure; + }; + + // C++ wrapper for breakdown_context + struct breakdown_context : product_definition_relationship, ObjectHelper { breakdown_context() : Object("breakdown_context") {} + + }; + + // C++ wrapper for breakdown_element_group_assignment + struct breakdown_element_group_assignment : group_assignment, ObjectHelper { breakdown_element_group_assignment() : Object("breakdown_element_group_assignment") {} + ListOf< product_definition_or_breakdown_element_usage, 1, 1 >::Out items; + }; + + // C++ wrapper for breakdown_element_realization + struct breakdown_element_realization : ObjectHelper { breakdown_element_realization() : Object("breakdown_element_realization") {} + + }; + + // C++ wrapper for breakdown_element_usage + struct breakdown_element_usage : product_definition_relationship, ObjectHelper { breakdown_element_usage() : Object("breakdown_element_usage") {} + + }; + + // C++ wrapper for breakdown_of + struct breakdown_of : product_definition_relationship, ObjectHelper { breakdown_of() : Object("breakdown_of") {} + + }; + + // C++ wrapper for solid_model + struct solid_model : geometric_representation_item, ObjectHelper { solid_model() : Object("solid_model") {} + + }; + + // C++ wrapper for manifold_solid_brep + struct manifold_solid_brep : solid_model, ObjectHelper { manifold_solid_brep() : Object("manifold_solid_brep") {} + Lazy< closed_shell > outer; + }; + + // C++ wrapper for brep_with_voids + struct brep_with_voids : manifold_solid_brep, ObjectHelper { brep_with_voids() : Object("brep_with_voids") {} + ListOf< Lazy< oriented_closed_shell >, 1, 0 > voids; + }; + + // C++ wrapper for bytes_representation_item + struct bytes_representation_item : binary_representation_item, ObjectHelper { bytes_representation_item() : Object("bytes_representation_item") {} + + }; + + // C++ wrapper for date + struct date : ObjectHelper { date() : Object("date") {} + year_number::Out year_component; + }; + + // C++ wrapper for calendar_date + struct calendar_date : date, ObjectHelper { calendar_date() : Object("calendar_date") {} + day_in_month_number::Out day_component; + month_in_year_number::Out month_component; + }; + + // C++ wrapper for camera_image + struct camera_image : mapped_item, ObjectHelper { camera_image() : Object("camera_image") {} + + }; + + // C++ wrapper for camera_image_3d_with_scale + struct camera_image_3d_with_scale : camera_image, ObjectHelper { camera_image_3d_with_scale() : Object("camera_image_3d_with_scale") {} + + }; + + // C++ wrapper for camera_model + struct camera_model : geometric_representation_item, ObjectHelper { camera_model() : Object("camera_model") {} + + }; + + // C++ wrapper for camera_model_d3 + struct camera_model_d3 : camera_model, ObjectHelper { camera_model_d3() : Object("camera_model_d3") {} + Lazy< axis2_placement_3d > view_reference_system; + Lazy< view_volume > perspective_of_volume; + }; + + // C++ wrapper for camera_model_d3_multi_clipping + struct camera_model_d3_multi_clipping : camera_model_d3, ObjectHelper { camera_model_d3_multi_clipping() : Object("camera_model_d3_multi_clipping") {} + ListOf< camera_model_d3_multi_clipping_interection_select, 1, 0 >::Out shape_clipping; + }; + + // C++ wrapper for camera_model_d3_multi_clipping_intersection + struct camera_model_d3_multi_clipping_intersection : geometric_representation_item, ObjectHelper { camera_model_d3_multi_clipping_intersection() : Object("camera_model_d3_multi_clipping_intersection") {} + ListOf< camera_model_d3_multi_clipping_interection_select, 2, 0 >::Out shape_clipping; + }; + + // C++ wrapper for camera_model_d3_multi_clipping_union + struct camera_model_d3_multi_clipping_union : geometric_representation_item, ObjectHelper { camera_model_d3_multi_clipping_union() : Object("camera_model_d3_multi_clipping_union") {} + ListOf< camera_model_d3_multi_clipping_union_select, 2, 0 >::Out shape_clipping; + }; + + // C++ wrapper for camera_model_d3_with_hlhsr + struct camera_model_d3_with_hlhsr : camera_model_d3, ObjectHelper { camera_model_d3_with_hlhsr() : Object("camera_model_d3_with_hlhsr") {} + BOOLEAN::Out hidden_line_surface_removal; + }; + + // C++ wrapper for camera_model_with_light_sources + struct camera_model_with_light_sources : camera_model_d3, ObjectHelper { camera_model_with_light_sources() : Object("camera_model_with_light_sources") {} + ListOf< Lazy< light_source >, 1, 0 > sources; + }; + + // C++ wrapper for representation_map + struct representation_map : ObjectHelper { representation_map() : Object("representation_map") {} + Lazy< representation_item > mapping_origin; + Lazy< representation > mapped_representation; + }; + + // C++ wrapper for camera_usage + struct camera_usage : representation_map, ObjectHelper { camera_usage() : Object("camera_usage") {} + + }; + + // C++ wrapper for capacitance_measure_with_unit + struct capacitance_measure_with_unit : measure_with_unit, ObjectHelper { capacitance_measure_with_unit() : Object("capacitance_measure_with_unit") {} + + }; + + // C++ wrapper for capacitance_unit + struct capacitance_unit : derived_unit, ObjectHelper { capacitance_unit() : Object("capacitance_unit") {} + + }; + + // C++ wrapper for point + struct point : geometric_representation_item, ObjectHelper { point() : Object("point") {} + + }; + + // C++ wrapper for cartesian_point + struct cartesian_point : point, ObjectHelper { cartesian_point() : Object("cartesian_point") {} + ListOf< length_measure, 1, 3 >::Out coordinates; + }; + + // C++ wrapper for cartesian_transformation_operator + struct cartesian_transformation_operator : ObjectHelper { cartesian_transformation_operator() : Object("cartesian_transformation_operator") {} + Maybe< Lazy< direction > > axis1; + Maybe< Lazy< direction > > axis2; + Lazy< cartesian_point > local_origin; + Maybe< REAL::Out > scale; + }; + + // C++ wrapper for cartesian_transformation_operator_2d + struct cartesian_transformation_operator_2d : cartesian_transformation_operator, ObjectHelper { cartesian_transformation_operator_2d() : Object("cartesian_transformation_operator_2d") {} + + }; + + // C++ wrapper for cartesian_transformation_operator_3d + struct cartesian_transformation_operator_3d : cartesian_transformation_operator, ObjectHelper { cartesian_transformation_operator_3d() : Object("cartesian_transformation_operator_3d") {} + Maybe< Lazy< direction > > axis3; + }; + + // C++ wrapper for cc_design_approval + struct cc_design_approval : approval_assignment, ObjectHelper { cc_design_approval() : Object("cc_design_approval") {} + ListOf< approved_item, 1, 0 >::Out items; + }; + + // C++ wrapper for cc_design_certification + struct cc_design_certification : certification_assignment, ObjectHelper { cc_design_certification() : Object("cc_design_certification") {} + ListOf< certified_item, 1, 0 >::Out items; + }; + + // C++ wrapper for cc_design_contract + struct cc_design_contract : contract_assignment, ObjectHelper { cc_design_contract() : Object("cc_design_contract") {} + ListOf< contracted_item, 1, 0 >::Out items; + }; + + // C++ wrapper for cc_design_date_and_time_assignment + struct cc_design_date_and_time_assignment : date_and_time_assignment, ObjectHelper { cc_design_date_and_time_assignment() : Object("cc_design_date_and_time_assignment") {} + ListOf< date_time_item, 1, 0 >::Out items; + }; + + // C++ wrapper for cc_design_person_and_organization_assignment + struct cc_design_person_and_organization_assignment : person_and_organization_assignment, ObjectHelper { cc_design_person_and_organization_assignment() : Object("cc_design_person_and_organization_assignment") {} + ListOf< cc_person_organization_item, 1, 0 >::Out items; + }; + + // C++ wrapper for cc_design_security_classification + struct cc_design_security_classification : security_classification_assignment, ObjectHelper { cc_design_security_classification() : Object("cc_design_security_classification") {} + ListOf< cc_classified_item, 1, 0 >::Out items; + }; + + // C++ wrapper for cc_design_specification_reference + struct cc_design_specification_reference : document_reference, ObjectHelper { cc_design_specification_reference() : Object("cc_design_specification_reference") {} + ListOf< cc_specified_item, 1, 0 >::Out items; + }; + + // C++ wrapper for celsius_temperature_measure_with_unit + struct celsius_temperature_measure_with_unit : measure_with_unit, ObjectHelper { celsius_temperature_measure_with_unit() : Object("celsius_temperature_measure_with_unit") {} + + }; + + // C++ wrapper for centre_of_symmetry + struct centre_of_symmetry : derived_shape_aspect, ObjectHelper { centre_of_symmetry() : Object("centre_of_symmetry") {} + + }; + + // C++ wrapper for change + struct change : action_assignment, ObjectHelper { change() : Object("change") {} + ListOf< work_item, 1, 0 >::Out items; + }; + + // C++ wrapper for change_request + struct change_request : action_request_assignment, ObjectHelper { change_request() : Object("change_request") {} + ListOf< change_request_item, 1, 0 >::Out items; + }; + + // C++ wrapper for character_glyph_style_outline + struct character_glyph_style_outline : founded_item, ObjectHelper { character_glyph_style_outline() : Object("character_glyph_style_outline") {} + Lazy< curve_style > outline_style; + }; + + // C++ wrapper for character_glyph_style_stroke + struct character_glyph_style_stroke : founded_item, ObjectHelper { character_glyph_style_stroke() : Object("character_glyph_style_stroke") {} + Lazy< curve_style > stroke_style; + }; + + // C++ wrapper for symbol_representation + struct symbol_representation : representation, ObjectHelper { symbol_representation() : Object("symbol_representation") {} + + }; + + // C++ wrapper for generic_character_glyph_symbol + struct generic_character_glyph_symbol : symbol_representation, ObjectHelper { generic_character_glyph_symbol() : Object("generic_character_glyph_symbol") {} + + }; + + // C++ wrapper for character_glyph_symbol + struct character_glyph_symbol : generic_character_glyph_symbol, ObjectHelper { character_glyph_symbol() : Object("character_glyph_symbol") {} + Lazy< planar_extent > character_box; + ratio_measure::Out baseline_ratio; + }; + + // C++ wrapper for character_glyph_symbol_outline + struct character_glyph_symbol_outline : character_glyph_symbol, ObjectHelper { character_glyph_symbol_outline() : Object("character_glyph_symbol_outline") {} + ListOf< Lazy< annotation_fill_area >, 1, 0 > outlines; + }; + + // C++ wrapper for character_glyph_symbol_stroke + struct character_glyph_symbol_stroke : character_glyph_symbol, ObjectHelper { character_glyph_symbol_stroke() : Object("character_glyph_symbol_stroke") {} + ListOf< Lazy< curve >, 1, 0 > strokes; + }; + + // C++ wrapper for general_property + struct general_property : ObjectHelper { general_property() : Object("general_property") {} + identifier::Out id; + label::Out name; + Maybe< text::Out > description; + }; + + // C++ wrapper for characteristic_data_column_header + struct characteristic_data_column_header : general_property, ObjectHelper { characteristic_data_column_header() : Object("characteristic_data_column_header") {} + + }; + + // C++ wrapper for general_property_relationship + struct general_property_relationship : ObjectHelper { general_property_relationship() : Object("general_property_relationship") {} + label::Out name; + Maybe< text::Out > description; + Lazy< general_property > relating_property; + Lazy< general_property > related_property; + }; + + // C++ wrapper for characteristic_data_column_header_link + struct characteristic_data_column_header_link : general_property_relationship, ObjectHelper { characteristic_data_column_header_link() : Object("characteristic_data_column_header_link") {} + + }; + + // C++ wrapper for characteristic_data_table_header + struct characteristic_data_table_header : general_property, ObjectHelper { characteristic_data_table_header() : Object("characteristic_data_table_header") {} + + }; + + // C++ wrapper for characteristic_data_table_header_decomposition + struct characteristic_data_table_header_decomposition : general_property_relationship, ObjectHelper { characteristic_data_table_header_decomposition() : Object("characteristic_data_table_header_decomposition") {} + + }; + + // C++ wrapper for group + struct group : ObjectHelper { group() : Object("group") {} + label::Out name; + Maybe< text::Out > description; + }; + + // C++ wrapper for characteristic_type + struct characteristic_type : group, ObjectHelper { characteristic_type() : Object("characteristic_type") {} + + }; + + // C++ wrapper for characterized_class + struct characterized_class : ObjectHelper { characterized_class() : Object("characterized_class") {} + + }; + + // C++ wrapper for characterized_object + struct characterized_object : ObjectHelper { characterized_object() : Object("characterized_object") {} + label::Out name; + Maybe< text::Out > description; + }; + + // C++ wrapper for conic + struct conic : curve, ObjectHelper { conic() : Object("conic") {} + axis2_placement::Out position; + }; + + // C++ wrapper for circle + struct circle : conic, ObjectHelper { circle() : Object("circle") {} + positive_length_measure::Out radius; + }; + + // C++ wrapper for circular_runout_tolerance + struct circular_runout_tolerance : geometric_tolerance_with_datum_reference, ObjectHelper { circular_runout_tolerance() : Object("circular_runout_tolerance") {} + + }; + + // C++ wrapper for class_by_extension + struct class_by_extension : class_t, ObjectHelper { class_by_extension() : Object("class_by_extension") {} + + }; + + // C++ wrapper for class_by_intension + struct class_by_intension : class_t, ObjectHelper { class_by_intension() : Object("class_by_intension") {} + + }; + + // C++ wrapper for class_system + struct class_system : group, ObjectHelper { class_system() : Object("class_system") {} + + }; + + // C++ wrapper for effectivity_context_assignment + struct effectivity_context_assignment : ObjectHelper { effectivity_context_assignment() : Object("effectivity_context_assignment") {} + Lazy< effectivity_assignment > assigned_effectivity_assignment; + Lazy< NotImplemented > role; + }; + + // C++ wrapper for class_usage_effectivity_context_assignment + struct class_usage_effectivity_context_assignment : effectivity_context_assignment, ObjectHelper { class_usage_effectivity_context_assignment() : Object("class_usage_effectivity_context_assignment") {} + ListOf< class_usage_effectivity_context_item, 1, 0 >::Out items; + }; + + // C++ wrapper for topological_representation_item + struct topological_representation_item : representation_item, ObjectHelper { topological_representation_item() : Object("topological_representation_item") {} + + }; + + // C++ wrapper for connected_face_set + struct connected_face_set : topological_representation_item, ObjectHelper { connected_face_set() : Object("connected_face_set") {} + ListOf< Lazy< face >, 1, 0 > cfs_faces; + }; + + // C++ wrapper for closed_shell + struct closed_shell : connected_face_set, ObjectHelper { closed_shell() : Object("closed_shell") {} + + }; + + // C++ wrapper for coaxiality_tolerance + struct coaxiality_tolerance : geometric_tolerance_with_datum_reference, ObjectHelper { coaxiality_tolerance() : Object("coaxiality_tolerance") {} + + }; + + // C++ wrapper for colour_specification + struct colour_specification : colour, ObjectHelper { colour_specification() : Object("colour_specification") {} + label::Out name; + }; + + // C++ wrapper for colour_rgb + struct colour_rgb : colour_specification, ObjectHelper { colour_rgb() : Object("colour_rgb") {} + REAL::Out red; + REAL::Out green; + REAL::Out blue; + }; + + // C++ wrapper for common_datum + struct common_datum : ObjectHelper { common_datum() : Object("common_datum") {} + + }; + + // C++ wrapper for comparison_expression + struct comparison_expression : ObjectHelper { comparison_expression() : Object("comparison_expression") {} + + }; + + // C++ wrapper for complex_clause + struct complex_clause : compound_representation_item, ObjectHelper { complex_clause() : Object("complex_clause") {} + + }; + + // C++ wrapper for complex_conjunctive_clause + struct complex_conjunctive_clause : complex_clause, ObjectHelper { complex_conjunctive_clause() : Object("complex_conjunctive_clause") {} + + }; + + // C++ wrapper for complex_disjunctive_clause + struct complex_disjunctive_clause : complex_clause, ObjectHelper { complex_disjunctive_clause() : Object("complex_disjunctive_clause") {} + + }; + + // C++ wrapper for modified_solid + struct modified_solid : solid_model, ObjectHelper { modified_solid() : Object("modified_solid") {} + text::Out rationale; + base_solid_select::Out base_solid; + }; + + // C++ wrapper for shelled_solid + struct shelled_solid : modified_solid, ObjectHelper { shelled_solid() : Object("shelled_solid") {} + ListOf< Lazy< face_surface >, 1, 0 > deleted_face_set; + length_measure::Out thickness; + }; + + // C++ wrapper for complex_shelled_solid + struct complex_shelled_solid : shelled_solid, ObjectHelper { complex_shelled_solid() : Object("complex_shelled_solid") {} + ListOf< length_measure, 1, 0 >::Out thickness_list; + }; + + // C++ wrapper for composite_assembly_definition + struct composite_assembly_definition : product_definition, ObjectHelper { composite_assembly_definition() : Object("composite_assembly_definition") {} + + }; + + // C++ wrapper for composite_assembly_sequence_definition + struct composite_assembly_sequence_definition : product_definition, ObjectHelper { composite_assembly_sequence_definition() : Object("composite_assembly_sequence_definition") {} + + }; + + // C++ wrapper for laminate_table + struct laminate_table : product_definition, ObjectHelper { laminate_table() : Object("laminate_table") {} + + }; + + // C++ wrapper for part_laminate_table + struct part_laminate_table : laminate_table, ObjectHelper { part_laminate_table() : Object("part_laminate_table") {} + + }; + + // C++ wrapper for composite_assembly_table + struct composite_assembly_table : part_laminate_table, ObjectHelper { composite_assembly_table() : Object("composite_assembly_table") {} + + }; + + // C++ wrapper for composite_curve_segment + struct composite_curve_segment : founded_item, ObjectHelper { composite_curve_segment() : Object("composite_curve_segment") {} + transition_code::Out transition; + BOOLEAN::Out same_sense; + Lazy< curve > parent_curve; + }; + + // C++ wrapper for material_designation + struct material_designation : ObjectHelper { material_designation() : Object("material_designation") {} + label::Out name; + ListOf< characterized_definition, 1, 0 >::Out definitions; + }; + + // C++ wrapper for composite_material_designation + struct composite_material_designation : material_designation, ObjectHelper { composite_material_designation() : Object("composite_material_designation") {} + + }; + + // C++ wrapper for composite_shape_aspect + struct composite_shape_aspect : shape_aspect, ObjectHelper { composite_shape_aspect() : Object("composite_shape_aspect") {} + + }; + + // C++ wrapper for composite_sheet_representation + struct composite_sheet_representation : shape_representation, ObjectHelper { composite_sheet_representation() : Object("composite_sheet_representation") {} + + }; + + // C++ wrapper for composite_text + struct composite_text : geometric_representation_item, ObjectHelper { composite_text() : Object("composite_text") {} + ListOf< text_or_character, 2, 0 >::Out collected_text; + }; + + // C++ wrapper for composite_text_with_associated_curves + struct composite_text_with_associated_curves : composite_text, ObjectHelper { composite_text_with_associated_curves() : Object("composite_text_with_associated_curves") {} + ListOf< Lazy< curve >, 1, 0 > associated_curves; + }; + + // C++ wrapper for composite_text_with_blanking_box + struct composite_text_with_blanking_box : composite_text, ObjectHelper { composite_text_with_blanking_box() : Object("composite_text_with_blanking_box") {} + Lazy< planar_box > blanking; + }; + + // C++ wrapper for composite_text_with_delineation + struct composite_text_with_delineation : composite_text, ObjectHelper { composite_text_with_delineation() : Object("composite_text_with_delineation") {} + text_delineation::Out delineation; + }; + + // C++ wrapper for composite_text_with_extent + struct composite_text_with_extent : composite_text, ObjectHelper { composite_text_with_extent() : Object("composite_text_with_extent") {} + Lazy< planar_extent > extent; + }; + + // C++ wrapper for compound_shape_representation + struct compound_shape_representation : shape_representation, ObjectHelper { compound_shape_representation() : Object("compound_shape_representation") {} + + }; + + // C++ wrapper for concentricity_tolerance + struct concentricity_tolerance : geometric_tolerance_with_datum_reference, ObjectHelper { concentricity_tolerance() : Object("concentricity_tolerance") {} + + }; + + // C++ wrapper for concept_feature_relationship + struct concept_feature_relationship : ObjectHelper { concept_feature_relationship() : Object("concept_feature_relationship") {} + label::Out name; + Maybe< text::Out > description; + Lazy< product_concept_feature > relating_product_concept_feature; + Lazy< product_concept_feature > related_product_concept_feature; + }; + + // C++ wrapper for concept_feature_relationship_with_condition + struct concept_feature_relationship_with_condition : concept_feature_relationship, ObjectHelper { concept_feature_relationship_with_condition() : Object("concept_feature_relationship_with_condition") {} + Lazy< NotImplemented > conditional_operator; + }; + + // C++ wrapper for product_concept_feature + struct product_concept_feature : ObjectHelper { product_concept_feature() : Object("product_concept_feature") {} + identifier::Out id; + label::Out name; + Maybe< text::Out > description; + }; + + // C++ wrapper for conditional_concept_feature + struct conditional_concept_feature : product_concept_feature, ObjectHelper { conditional_concept_feature() : Object("conditional_concept_feature") {} + Lazy< concept_feature_relationship_with_condition > condition; + }; + + // C++ wrapper for conductance_measure_with_unit + struct conductance_measure_with_unit : measure_with_unit, ObjectHelper { conductance_measure_with_unit() : Object("conductance_measure_with_unit") {} + + }; + + // C++ wrapper for conductance_unit + struct conductance_unit : derived_unit, ObjectHelper { conductance_unit() : Object("conductance_unit") {} + + }; + + // C++ wrapper for configuration_item + struct configuration_item : ObjectHelper { configuration_item() : Object("configuration_item") {} + identifier::Out id; + label::Out name; + Maybe< text::Out > description; + Lazy< NotImplemented > item_concept; + Maybe< label::Out > purpose; + }; + + // C++ wrapper for configurable_item + struct configurable_item : configuration_item, ObjectHelper { configurable_item() : Object("configurable_item") {} + ListOf< Lazy< NotImplemented >, 1, 0 > item_concept_feature; + }; + + // C++ wrapper for effectivity + struct effectivity : ObjectHelper { effectivity() : Object("effectivity") {} + identifier::Out id; + }; + + // C++ wrapper for product_definition_effectivity + struct product_definition_effectivity : effectivity, ObjectHelper { product_definition_effectivity() : Object("product_definition_effectivity") {} + Lazy< product_definition_relationship > usage; + }; + + // C++ wrapper for configuration_effectivity + struct configuration_effectivity : product_definition_effectivity, ObjectHelper { configuration_effectivity() : Object("configuration_effectivity") {} + Lazy< NotImplemented > configuration; + }; + + // C++ wrapper for configuration_item_relationship + struct configuration_item_relationship : ObjectHelper { configuration_item_relationship() : Object("configuration_item_relationship") {} + label::Out name; + Maybe< text::Out > description; + Lazy< configuration_item > relating_configuration_item; + Lazy< configuration_item > related_configuration_item; + }; + + // C++ wrapper for configuration_item_hierarchical_relationship + struct configuration_item_hierarchical_relationship : configuration_item_relationship, ObjectHelper { configuration_item_hierarchical_relationship() : Object("configuration_item_hierarchical_relationship") {} + + }; + + // C++ wrapper for configuration_item_revision_sequence + struct configuration_item_revision_sequence : configuration_item_relationship, ObjectHelper { configuration_item_revision_sequence() : Object("configuration_item_revision_sequence") {} + + }; + + // C++ wrapper for configured_effectivity_assignment + struct configured_effectivity_assignment : effectivity_assignment, ObjectHelper { configured_effectivity_assignment() : Object("configured_effectivity_assignment") {} + ListOf< configured_effectivity_item, 1, 0 >::Out items; + }; + + // C++ wrapper for configured_effectivity_context_assignment + struct configured_effectivity_context_assignment : effectivity_context_assignment, ObjectHelper { configured_effectivity_context_assignment() : Object("configured_effectivity_context_assignment") {} + ListOf< configured_effectivity_context_item, 1, 0 >::Out items; + }; + + // C++ wrapper for conical_stepped_hole_transition + struct conical_stepped_hole_transition : geometric_representation_item, ObjectHelper { conical_stepped_hole_transition() : Object("conical_stepped_hole_transition") {} + positive_integer::Out transition_number; + plane_angle_measure::Out cone_apex_angle; + positive_length_measure::Out cone_base_radius; + }; + + // C++ wrapper for elementary_surface + struct elementary_surface : surface, ObjectHelper { elementary_surface() : Object("elementary_surface") {} + Lazy< axis2_placement_3d > position; + }; + + // C++ wrapper for conical_surface + struct conical_surface : elementary_surface, ObjectHelper { conical_surface() : Object("conical_surface") {} + length_measure::Out radius; + plane_angle_measure::Out semi_angle; + }; + + // C++ wrapper for connected_edge_set + struct connected_edge_set : topological_representation_item, ObjectHelper { connected_edge_set() : Object("connected_edge_set") {} + ListOf< Lazy< edge >, 1, 0 > ces_edges; + }; + + // C++ wrapper for connected_face_sub_set + struct connected_face_sub_set : connected_face_set, ObjectHelper { connected_face_sub_set() : Object("connected_face_sub_set") {} + Lazy< connected_face_set > parent_face_set; + }; + + // C++ wrapper for constructive_geometry_representation + struct constructive_geometry_representation : representation, ObjectHelper { constructive_geometry_representation() : Object("constructive_geometry_representation") {} + + }; + + // C++ wrapper for representation_relationship + struct representation_relationship : ObjectHelper { representation_relationship() : Object("representation_relationship") {} + label::Out name; + Maybe< text::Out > description; + Lazy< representation > rep_1; + Lazy< representation > rep_2; + }; + + // C++ wrapper for constructive_geometry_representation_relationship + struct constructive_geometry_representation_relationship : representation_relationship, ObjectHelper { constructive_geometry_representation_relationship() : Object("constructive_geometry_representation_relationship") {} + + }; + + // C++ wrapper for contact_ratio_representation + struct contact_ratio_representation : representation, ObjectHelper { contact_ratio_representation() : Object("contact_ratio_representation") {} + + }; + + // C++ wrapper for invisibility + struct invisibility : ObjectHelper { invisibility() : Object("invisibility") {} + ListOf< invisible_item, 1, 0 >::Out invisible_items; + }; + + // C++ wrapper for context_dependent_invisibility + struct context_dependent_invisibility : invisibility, ObjectHelper { context_dependent_invisibility() : Object("context_dependent_invisibility") {} + invisibility_context::Out presentation_context; + }; + + // C++ wrapper for over_riding_styled_item + struct over_riding_styled_item : styled_item, ObjectHelper { over_riding_styled_item() : Object("over_riding_styled_item") {} + Lazy< styled_item > over_ridden_style; + }; + + // C++ wrapper for context_dependent_over_riding_styled_item + struct context_dependent_over_riding_styled_item : over_riding_styled_item, ObjectHelper { context_dependent_over_riding_styled_item() : Object("context_dependent_over_riding_styled_item") {} + ListOf< style_context_select, 1, 0 >::Out style_context; + }; + + // C++ wrapper for context_dependent_unit + struct context_dependent_unit : named_unit, ObjectHelper { context_dependent_unit() : Object("context_dependent_unit") {} + label::Out name; + }; + + // C++ wrapper for conversion_based_unit + struct conversion_based_unit : named_unit, ObjectHelper { conversion_based_unit() : Object("conversion_based_unit") {} + label::Out name; + Lazy< measure_with_unit > conversion_factor; + }; + + // C++ wrapper for csg_shape_representation + struct csg_shape_representation : shape_representation, ObjectHelper { csg_shape_representation() : Object("csg_shape_representation") {} + + }; + + // C++ wrapper for csg_solid + struct csg_solid : solid_model, ObjectHelper { csg_solid() : Object("csg_solid") {} + csg_select::Out tree_root_expression; + }; + + // C++ wrapper for currency + struct currency : context_dependent_unit, ObjectHelper { currency() : Object("currency") {} + + }; + + // C++ wrapper for currency_measure_with_unit + struct currency_measure_with_unit : measure_with_unit, ObjectHelper { currency_measure_with_unit() : Object("currency_measure_with_unit") {} + + }; + + // C++ wrapper for curve_bounded_surface + struct curve_bounded_surface : bounded_surface, ObjectHelper { curve_bounded_surface() : Object("curve_bounded_surface") {} + Lazy< surface > basis_surface; + ListOf< Lazy< boundary_curve >, 1, 0 > boundaries; + BOOLEAN::Out implicit_outer; + }; + + // C++ wrapper for curve_dimension + struct curve_dimension : dimension_curve_directed_callout, ObjectHelper { curve_dimension() : Object("curve_dimension") {} + + }; + + // C++ wrapper for curve_replica + struct curve_replica : curve, ObjectHelper { curve_replica() : Object("curve_replica") {} + Lazy< curve > parent_curve; + Lazy< cartesian_transformation_operator > transformation; + }; + + // C++ wrapper for curve_style + struct curve_style : founded_item, ObjectHelper { curve_style() : Object("curve_style") {} + label::Out name; + curve_font_or_scaled_curve_font_select::Out curve_font; + size_select::Out curve_width; + Lazy< colour > curve_colour; + }; + + // C++ wrapper for curve_style_font + struct curve_style_font : founded_item, ObjectHelper { curve_style_font() : Object("curve_style_font") {} + label::Out name; + ListOf< Lazy< curve_style_font_pattern >, 1, 0 > pattern_list; + }; + + // C++ wrapper for curve_style_font_and_scaling + struct curve_style_font_and_scaling : founded_item, ObjectHelper { curve_style_font_and_scaling() : Object("curve_style_font_and_scaling") {} + label::Out name; + curve_style_font_select::Out curve_font; + REAL::Out curve_font_scaling; + }; + + // C++ wrapper for curve_style_font_pattern + struct curve_style_font_pattern : founded_item, ObjectHelper { curve_style_font_pattern() : Object("curve_style_font_pattern") {} + positive_length_measure::Out visible_segment_length; + positive_length_measure::Out invisible_segment_length; + }; + + // C++ wrapper for curve_swept_solid_shape_representation + struct curve_swept_solid_shape_representation : shape_representation, ObjectHelper { curve_swept_solid_shape_representation() : Object("curve_swept_solid_shape_representation") {} + + }; + + // C++ wrapper for cylindrical_surface + struct cylindrical_surface : elementary_surface, ObjectHelper { cylindrical_surface() : Object("cylindrical_surface") {} + positive_length_measure::Out radius; + }; + + // C++ wrapper for cylindricity_tolerance + struct cylindricity_tolerance : geometric_tolerance, ObjectHelper { cylindricity_tolerance() : Object("cylindricity_tolerance") {} + + }; + + // C++ wrapper for date_representation_item + struct date_representation_item : ObjectHelper { date_representation_item() : Object("date_representation_item") {} + + }; + + // C++ wrapper for date_time_representation_item + struct date_time_representation_item : ObjectHelper { date_time_representation_item() : Object("date_time_representation_item") {} + + }; + + // C++ wrapper for dated_effectivity + struct dated_effectivity : effectivity, ObjectHelper { dated_effectivity() : Object("dated_effectivity") {} + Maybe< date_time_or_event_occurrence::Out > effectivity_end_date; + date_time_or_event_occurrence::Out effectivity_start_date; + }; + + // C++ wrapper for datum + struct datum : shape_aspect, ObjectHelper { datum() : Object("datum") {} + identifier::Out identification; + }; + + // C++ wrapper for datum_feature + struct datum_feature : shape_aspect, ObjectHelper { datum_feature() : Object("datum_feature") {} + + }; + + // C++ wrapper for datum_feature_callout + struct datum_feature_callout : draughting_callout, ObjectHelper { datum_feature_callout() : Object("datum_feature_callout") {} + + }; + + // C++ wrapper for datum_reference + struct datum_reference : ObjectHelper { datum_reference() : Object("datum_reference") {} + INTEGER::Out precedence; + Lazy< datum > referenced_datum; + }; + + // C++ wrapper for datum_target + struct datum_target : shape_aspect, ObjectHelper { datum_target() : Object("datum_target") {} + identifier::Out target_id; + }; + + // C++ wrapper for datum_target_callout + struct datum_target_callout : draughting_callout, ObjectHelper { datum_target_callout() : Object("datum_target_callout") {} + + }; + + // C++ wrapper for default_tolerance_table + struct default_tolerance_table : representation, ObjectHelper { default_tolerance_table() : Object("default_tolerance_table") {} + + }; + + // C++ wrapper for default_tolerance_table_cell + struct default_tolerance_table_cell : compound_representation_item, ObjectHelper { default_tolerance_table_cell() : Object("default_tolerance_table_cell") {} + + }; + + // C++ wrapper for defined_symbol + struct defined_symbol : geometric_representation_item, ObjectHelper { defined_symbol() : Object("defined_symbol") {} + defined_symbol_select::Out definition; + Lazy< symbol_target > target; + }; + + // C++ wrapper for definitional_representation + struct definitional_representation : representation, ObjectHelper { definitional_representation() : Object("definitional_representation") {} + + }; + + // C++ wrapper for definitional_representation_relationship + struct definitional_representation_relationship : representation_relationship, ObjectHelper { definitional_representation_relationship() : Object("definitional_representation_relationship") {} + + }; + + // C++ wrapper for definitional_representation_relationship_with_same_context + struct definitional_representation_relationship_with_same_context : definitional_representation_relationship, ObjectHelper { definitional_representation_relationship_with_same_context() : Object("definitional_representation_relationship_with_same_context") {} + + }; + + // C++ wrapper for degenerate_pcurve + struct degenerate_pcurve : point, ObjectHelper { degenerate_pcurve() : Object("degenerate_pcurve") {} + Lazy< surface > basis_surface; + Lazy< definitional_representation > reference_to_curve; + }; + + // C++ wrapper for toroidal_surface + struct toroidal_surface : elementary_surface, ObjectHelper { toroidal_surface() : Object("toroidal_surface") {} + positive_length_measure::Out major_radius; + positive_length_measure::Out minor_radius; + }; + + // C++ wrapper for degenerate_toroidal_surface + struct degenerate_toroidal_surface : toroidal_surface, ObjectHelper { degenerate_toroidal_surface() : Object("degenerate_toroidal_surface") {} + BOOLEAN::Out select_outer; + }; + + // C++ wrapper for descriptive_representation_item + struct descriptive_representation_item : representation_item, ObjectHelper { descriptive_representation_item() : Object("descriptive_representation_item") {} + text::Out description; + }; + + // C++ wrapper for product_definition_context + struct product_definition_context : application_context_element, ObjectHelper { product_definition_context() : Object("product_definition_context") {} + label::Out life_cycle_stage; + }; + + // C++ wrapper for design_context + struct design_context : product_definition_context, ObjectHelper { design_context() : Object("design_context") {} + + }; + + // C++ wrapper for design_make_from_relationship + struct design_make_from_relationship : product_definition_relationship, ObjectHelper { design_make_from_relationship() : Object("design_make_from_relationship") {} + + }; + + // C++ wrapper for diameter_dimension + struct diameter_dimension : dimension_curve_directed_callout, ObjectHelper { diameter_dimension() : Object("diameter_dimension") {} + + }; + + // C++ wrapper for ratio_measure_with_unit + struct ratio_measure_with_unit : measure_with_unit, ObjectHelper { ratio_measure_with_unit() : Object("ratio_measure_with_unit") {} + + }; + + // C++ wrapper for dielectric_constant_measure_with_unit + struct dielectric_constant_measure_with_unit : ratio_measure_with_unit, ObjectHelper { dielectric_constant_measure_with_unit() : Object("dielectric_constant_measure_with_unit") {} + + }; + + // C++ wrapper for dimension_callout + struct dimension_callout : draughting_callout, ObjectHelper { dimension_callout() : Object("dimension_callout") {} + + }; + + // C++ wrapper for draughting_callout_relationship + struct draughting_callout_relationship : ObjectHelper { draughting_callout_relationship() : Object("draughting_callout_relationship") {} + label::Out name; + text::Out description; + Lazy< draughting_callout > relating_draughting_callout; + Lazy< draughting_callout > related_draughting_callout; + }; + + // C++ wrapper for dimension_callout_component_relationship + struct dimension_callout_component_relationship : draughting_callout_relationship, ObjectHelper { dimension_callout_component_relationship() : Object("dimension_callout_component_relationship") {} + + }; + + // C++ wrapper for dimension_callout_relationship + struct dimension_callout_relationship : draughting_callout_relationship, ObjectHelper { dimension_callout_relationship() : Object("dimension_callout_relationship") {} + + }; + + // C++ wrapper for dimension_curve + struct dimension_curve : annotation_curve_occurrence, ObjectHelper { dimension_curve() : Object("dimension_curve") {} + + }; + + // C++ wrapper for terminator_symbol + struct terminator_symbol : annotation_symbol_occurrence, ObjectHelper { terminator_symbol() : Object("terminator_symbol") {} + Lazy< annotation_curve_occurrence > annotated_curve; + }; + + // C++ wrapper for dimension_curve_terminator + struct dimension_curve_terminator : terminator_symbol, ObjectHelper { dimension_curve_terminator() : Object("dimension_curve_terminator") {} + dimension_extent_usage::Out role; + }; + + // C++ wrapper for dimension_curve_terminator_to_projection_curve_associativity + struct dimension_curve_terminator_to_projection_curve_associativity : annotation_occurrence_associativity, ObjectHelper { dimension_curve_terminator_to_projection_curve_associativity() : Object("dimension_curve_terminator_to_projection_curve_associativity") {} + + }; + + // C++ wrapper for dimension_pair + struct dimension_pair : draughting_callout_relationship, ObjectHelper { dimension_pair() : Object("dimension_pair") {} + + }; + + // C++ wrapper for dimension_text_associativity + struct dimension_text_associativity : ObjectHelper { dimension_text_associativity() : Object("dimension_text_associativity") {} + + }; + + // C++ wrapper for dimensional_location_with_path + struct dimensional_location_with_path : dimensional_location, ObjectHelper { dimensional_location_with_path() : Object("dimensional_location_with_path") {} + Lazy< shape_aspect > path; + }; + + // C++ wrapper for dimensional_size_with_path + struct dimensional_size_with_path : dimensional_size, ObjectHelper { dimensional_size_with_path() : Object("dimensional_size_with_path") {} + Lazy< shape_aspect > path; + }; + + // C++ wrapper for executed_action + struct executed_action : action, ObjectHelper { executed_action() : Object("executed_action") {} + + }; + + // C++ wrapper for directed_action + struct directed_action : executed_action, ObjectHelper { directed_action() : Object("directed_action") {} + Lazy< NotImplemented > directive; + }; + + // C++ wrapper for directed_dimensional_location + struct directed_dimensional_location : dimensional_location, ObjectHelper { directed_dimensional_location() : Object("directed_dimensional_location") {} + + }; + + // C++ wrapper for direction + struct direction : geometric_representation_item, ObjectHelper { direction() : Object("direction") {} + ListOf< REAL, 2, 3 >::Out direction_ratios; + }; + + // C++ wrapper for document_file + struct document_file : ObjectHelper { document_file() : Object("document_file") {} + + }; + + // C++ wrapper for document_identifier + struct document_identifier : group, ObjectHelper { document_identifier() : Object("document_identifier") {} + + }; + + // C++ wrapper for document_identifier_assignment + struct document_identifier_assignment : group_assignment, ObjectHelper { document_identifier_assignment() : Object("document_identifier_assignment") {} + ListOf< document_identifier_assigned_item, 1, 0 >::Out items; + }; + + // C++ wrapper for document_product_association + struct document_product_association : ObjectHelper { document_product_association() : Object("document_product_association") {} + label::Out name; + Maybe< text::Out > description; + Lazy< NotImplemented > relating_document; + product_or_formation_or_definition::Out related_product; + }; + + // C++ wrapper for document_product_equivalence + struct document_product_equivalence : document_product_association, ObjectHelper { document_product_equivalence() : Object("document_product_equivalence") {} + + }; + + // C++ wrapper for dose_equivalent_measure_with_unit + struct dose_equivalent_measure_with_unit : measure_with_unit, ObjectHelper { dose_equivalent_measure_with_unit() : Object("dose_equivalent_measure_with_unit") {} + + }; + + // C++ wrapper for dose_equivalent_unit + struct dose_equivalent_unit : derived_unit, ObjectHelper { dose_equivalent_unit() : Object("dose_equivalent_unit") {} + + }; + + // C++ wrapper for double_offset_shelled_solid + struct double_offset_shelled_solid : shelled_solid, ObjectHelper { double_offset_shelled_solid() : Object("double_offset_shelled_solid") {} + length_measure::Out thickness2; + }; + + // C++ wrapper for item_defined_transformation + struct item_defined_transformation : ObjectHelper { item_defined_transformation() : Object("item_defined_transformation") {} + label::Out name; + Maybe< text::Out > description; + Lazy< representation_item > transform_item_1; + Lazy< representation_item > transform_item_2; + }; + + // C++ wrapper for transformation_with_derived_angle + struct transformation_with_derived_angle : item_defined_transformation, ObjectHelper { transformation_with_derived_angle() : Object("transformation_with_derived_angle") {} + + }; + + // C++ wrapper for draped_defined_transformation + struct draped_defined_transformation : transformation_with_derived_angle, ObjectHelper { draped_defined_transformation() : Object("draped_defined_transformation") {} + + }; + + // C++ wrapper for draughting_annotation_occurrence + struct draughting_annotation_occurrence : annotation_occurrence, ObjectHelper { draughting_annotation_occurrence() : Object("draughting_annotation_occurrence") {} + + }; + + // C++ wrapper for draughting_elements + struct draughting_elements : draughting_callout, ObjectHelper { draughting_elements() : Object("draughting_elements") {} + + }; + + // C++ wrapper for draughting_model + struct draughting_model : representation, ObjectHelper { draughting_model() : Object("draughting_model") {} + + }; + + // C++ wrapper for item_identified_representation_usage + struct item_identified_representation_usage : ObjectHelper { item_identified_representation_usage() : Object("item_identified_representation_usage") {} + label::Out name; + Maybe< text::Out > description; + represented_definition::Out definition; + Lazy< representation > used_representation; + Lazy< representation_item > identified_item; + }; + + // C++ wrapper for draughting_model_item_association + struct draughting_model_item_association : item_identified_representation_usage, ObjectHelper { draughting_model_item_association() : Object("draughting_model_item_association") {} + + }; + + // C++ wrapper for pre_defined_colour + struct pre_defined_colour : ObjectHelper { pre_defined_colour() : Object("pre_defined_colour") {} + + }; + + // C++ wrapper for draughting_pre_defined_colour + struct draughting_pre_defined_colour : pre_defined_colour, ObjectHelper { draughting_pre_defined_colour() : Object("draughting_pre_defined_colour") {} + + }; + + // C++ wrapper for pre_defined_item + struct pre_defined_item : ObjectHelper { pre_defined_item() : Object("pre_defined_item") {} + label::Out name; + }; + + // C++ wrapper for pre_defined_curve_font + struct pre_defined_curve_font : pre_defined_item, ObjectHelper { pre_defined_curve_font() : Object("pre_defined_curve_font") {} + + }; + + // C++ wrapper for draughting_pre_defined_curve_font + struct draughting_pre_defined_curve_font : pre_defined_curve_font, ObjectHelper { draughting_pre_defined_curve_font() : Object("draughting_pre_defined_curve_font") {} + + }; + + // C++ wrapper for pre_defined_text_font + struct pre_defined_text_font : pre_defined_item, ObjectHelper { pre_defined_text_font() : Object("pre_defined_text_font") {} + + }; + + // C++ wrapper for draughting_pre_defined_text_font + struct draughting_pre_defined_text_font : pre_defined_text_font, ObjectHelper { draughting_pre_defined_text_font() : Object("draughting_pre_defined_text_font") {} + + }; + + // C++ wrapper for draughting_subfigure_representation + struct draughting_subfigure_representation : symbol_representation, ObjectHelper { draughting_subfigure_representation() : Object("draughting_subfigure_representation") {} + + }; + + // C++ wrapper for draughting_symbol_representation + struct draughting_symbol_representation : symbol_representation, ObjectHelper { draughting_symbol_representation() : Object("draughting_symbol_representation") {} + + }; + + // C++ wrapper for text_literal + struct text_literal : geometric_representation_item, ObjectHelper { text_literal() : Object("text_literal") {} + presentable_text::Out literal; + axis2_placement::Out placement; + text_alignment::Out alignment; + text_path::Out path; + font_select::Out font; + }; + + // C++ wrapper for text_literal_with_delineation + struct text_literal_with_delineation : text_literal, ObjectHelper { text_literal_with_delineation() : Object("text_literal_with_delineation") {} + text_delineation::Out delineation; + }; + + // C++ wrapper for draughting_text_literal_with_delineation + struct draughting_text_literal_with_delineation : text_literal_with_delineation, ObjectHelper { draughting_text_literal_with_delineation() : Object("draughting_text_literal_with_delineation") {} + + }; + + // C++ wrapper for presentation_set + struct presentation_set : ObjectHelper { presentation_set() : Object("presentation_set") {} + + }; + + // C++ wrapper for drawing_revision + struct drawing_revision : presentation_set, ObjectHelper { drawing_revision() : Object("drawing_revision") {} + identifier::Out revision_identifier; + Lazy< NotImplemented > drawing_identifier; + Maybe< text::Out > intended_scale; + }; + + // C++ wrapper for presentation_representation + struct presentation_representation : representation, ObjectHelper { presentation_representation() : Object("presentation_representation") {} + + }; + + // C++ wrapper for presentation_area + struct presentation_area : presentation_representation, ObjectHelper { presentation_area() : Object("presentation_area") {} + + }; + + // C++ wrapper for drawing_sheet_revision + struct drawing_sheet_revision : presentation_area, ObjectHelper { drawing_sheet_revision() : Object("drawing_sheet_revision") {} + identifier::Out revision_identifier; + }; + + // C++ wrapper for drawing_sheet_revision_sequence + struct drawing_sheet_revision_sequence : representation_relationship, ObjectHelper { drawing_sheet_revision_sequence() : Object("drawing_sheet_revision_sequence") {} + + }; + + // C++ wrapper for drawing_sheet_revision_usage + struct drawing_sheet_revision_usage : area_in_set, ObjectHelper { drawing_sheet_revision_usage() : Object("drawing_sheet_revision_usage") {} + identifier::Out sheet_number; + }; + + // C++ wrapper for edge + struct edge : topological_representation_item, ObjectHelper { edge() : Object("edge") {} + Lazy< vertex > edge_start; + Lazy< vertex > edge_end; + }; + + // C++ wrapper for edge_based_wireframe_model + struct edge_based_wireframe_model : geometric_representation_item, ObjectHelper { edge_based_wireframe_model() : Object("edge_based_wireframe_model") {} + ListOf< Lazy< connected_edge_set >, 1, 0 > ebwm_boundary; + }; + + // C++ wrapper for edge_based_wireframe_shape_representation + struct edge_based_wireframe_shape_representation : shape_representation, ObjectHelper { edge_based_wireframe_shape_representation() : Object("edge_based_wireframe_shape_representation") {} + + }; + + // C++ wrapper for edge_blended_solid + struct edge_blended_solid : modified_solid, ObjectHelper { edge_blended_solid() : Object("edge_blended_solid") {} + ListOf< Lazy< edge_curve >, 1, 0 > blended_edges; + }; + + // C++ wrapper for edge_curve + struct edge_curve : ObjectHelper { edge_curve() : Object("edge_curve") {} + Lazy< curve > edge_geometry; + BOOLEAN::Out same_sense; + }; + + // C++ wrapper for edge_loop + struct edge_loop : ObjectHelper { edge_loop() : Object("edge_loop") {} + + }; + + // C++ wrapper for electric_charge_measure_with_unit + struct electric_charge_measure_with_unit : measure_with_unit, ObjectHelper { electric_charge_measure_with_unit() : Object("electric_charge_measure_with_unit") {} + + }; + + // C++ wrapper for electric_charge_unit + struct electric_charge_unit : derived_unit, ObjectHelper { electric_charge_unit() : Object("electric_charge_unit") {} + + }; + + // C++ wrapper for electric_current_measure_with_unit + struct electric_current_measure_with_unit : measure_with_unit, ObjectHelper { electric_current_measure_with_unit() : Object("electric_current_measure_with_unit") {} + + }; + + // C++ wrapper for electric_current_unit + struct electric_current_unit : named_unit, ObjectHelper { electric_current_unit() : Object("electric_current_unit") {} + + }; + + // C++ wrapper for electric_potential_measure_with_unit + struct electric_potential_measure_with_unit : measure_with_unit, ObjectHelper { electric_potential_measure_with_unit() : Object("electric_potential_measure_with_unit") {} + + }; + + // C++ wrapper for electric_potential_unit + struct electric_potential_unit : derived_unit, ObjectHelper { electric_potential_unit() : Object("electric_potential_unit") {} + + }; + + // C++ wrapper for elementary_brep_shape_representation + struct elementary_brep_shape_representation : shape_representation, ObjectHelper { elementary_brep_shape_representation() : Object("elementary_brep_shape_representation") {} + + }; + + // C++ wrapper for ellipse + struct ellipse : conic, ObjectHelper { ellipse() : Object("ellipse") {} + positive_length_measure::Out semi_axis_1; + positive_length_measure::Out semi_axis_2; + }; + + // C++ wrapper for energy_measure_with_unit + struct energy_measure_with_unit : measure_with_unit, ObjectHelper { energy_measure_with_unit() : Object("energy_measure_with_unit") {} + + }; + + // C++ wrapper for energy_unit + struct energy_unit : derived_unit, ObjectHelper { energy_unit() : Object("energy_unit") {} + + }; + + // C++ wrapper for property_definition + struct property_definition : ObjectHelper { property_definition() : Object("property_definition") {} + label::Out name; + Maybe< text::Out > description; + characterized_definition::Out definition; + }; + + // C++ wrapper for fact_type + struct fact_type : property_definition, ObjectHelper { fact_type() : Object("fact_type") {} + + }; + + // C++ wrapper for entity_assertion + struct entity_assertion : fact_type, ObjectHelper { entity_assertion() : Object("entity_assertion") {} + + }; + + // C++ wrapper for enum_reference_prefix + struct enum_reference_prefix : descriptive_representation_item, ObjectHelper { enum_reference_prefix() : Object("enum_reference_prefix") {} + + }; + + // C++ wrapper for evaluated_characteristic + struct evaluated_characteristic : ObjectHelper { evaluated_characteristic() : Object("evaluated_characteristic") {} + + }; + + // C++ wrapper for evaluated_degenerate_pcurve + struct evaluated_degenerate_pcurve : degenerate_pcurve, ObjectHelper { evaluated_degenerate_pcurve() : Object("evaluated_degenerate_pcurve") {} + Lazy< cartesian_point > equivalent_point; + }; + + // C++ wrapper for evaluation_product_definition + struct evaluation_product_definition : product_definition, ObjectHelper { evaluation_product_definition() : Object("evaluation_product_definition") {} + + }; + + // C++ wrapper for event_occurrence + struct event_occurrence : ObjectHelper { event_occurrence() : Object("event_occurrence") {} + identifier::Out id; + label::Out name; + Maybe< text::Out > description; + }; + + // C++ wrapper for product_concept_feature_category + struct product_concept_feature_category : group, ObjectHelper { product_concept_feature_category() : Object("product_concept_feature_category") {} + + }; + + // C++ wrapper for exclusive_product_concept_feature_category + struct exclusive_product_concept_feature_category : product_concept_feature_category, ObjectHelper { exclusive_product_concept_feature_category() : Object("exclusive_product_concept_feature_category") {} + + }; + + // C++ wrapper for uncertainty_qualifier + struct uncertainty_qualifier : ObjectHelper { uncertainty_qualifier() : Object("uncertainty_qualifier") {} + label::Out measure_name; + text::Out description; + }; + + // C++ wrapper for standard_uncertainty + struct standard_uncertainty : uncertainty_qualifier, ObjectHelper { standard_uncertainty() : Object("standard_uncertainty") {} + REAL::Out uncertainty_value; + }; + + // C++ wrapper for expanded_uncertainty + struct expanded_uncertainty : standard_uncertainty, ObjectHelper { expanded_uncertainty() : Object("expanded_uncertainty") {} + REAL::Out coverage_factor; + }; + + // C++ wrapper for representation_item_relationship + struct representation_item_relationship : ObjectHelper { representation_item_relationship() : Object("representation_item_relationship") {} + label::Out name; + Maybe< text::Out > description; + Lazy< representation_item > relating_representation_item; + Lazy< representation_item > related_representation_item; + }; + + // C++ wrapper for explicit_procedural_representation_item_relationship + struct explicit_procedural_representation_item_relationship : representation_item_relationship, ObjectHelper { explicit_procedural_representation_item_relationship() : Object("explicit_procedural_representation_item_relationship") {} + + }; + + // C++ wrapper for explicit_procedural_geometric_representation_item_relationship + struct explicit_procedural_geometric_representation_item_relationship : explicit_procedural_representation_item_relationship, ObjectHelper { explicit_procedural_geometric_representation_item_relationship() : Object("explicit_procedural_geometric_representation_item_relationship") {} + + }; + + // C++ wrapper for explicit_procedural_representation_relationship + struct explicit_procedural_representation_relationship : representation_relationship, ObjectHelper { explicit_procedural_representation_relationship() : Object("explicit_procedural_representation_relationship") {} + + }; + + // C++ wrapper for explicit_procedural_shape_representation_relationship + struct explicit_procedural_shape_representation_relationship : explicit_procedural_representation_relationship, ObjectHelper { explicit_procedural_shape_representation_relationship() : Object("explicit_procedural_shape_representation_relationship") {} + + }; + + // C++ wrapper for expression_conversion_based_unit + struct expression_conversion_based_unit : ObjectHelper { expression_conversion_based_unit() : Object("expression_conversion_based_unit") {} + + }; + + // C++ wrapper for extension + struct extension : derived_shape_aspect, ObjectHelper { extension() : Object("extension") {} + + }; + + // C++ wrapper for extent + struct extent : characterized_object, ObjectHelper { extent() : Object("extent") {} + + }; + + // C++ wrapper for external_source + struct external_source : ObjectHelper { external_source() : Object("external_source") {} + source_item::Out source_id; + }; + + // C++ wrapper for external_class_library + struct external_class_library : external_source, ObjectHelper { external_class_library() : Object("external_class_library") {} + + }; + + // C++ wrapper for externally_defined_class + struct externally_defined_class : ObjectHelper { externally_defined_class() : Object("externally_defined_class") {} + + }; + + // C++ wrapper for externally_defined_colour + struct externally_defined_colour : ObjectHelper { externally_defined_colour() : Object("externally_defined_colour") {} + + }; + + // C++ wrapper for externally_defined_context_dependent_unit + struct externally_defined_context_dependent_unit : ObjectHelper { externally_defined_context_dependent_unit() : Object("externally_defined_context_dependent_unit") {} + + }; + + // C++ wrapper for externally_defined_conversion_based_unit + struct externally_defined_conversion_based_unit : ObjectHelper { externally_defined_conversion_based_unit() : Object("externally_defined_conversion_based_unit") {} + + }; + + // C++ wrapper for externally_defined_currency + struct externally_defined_currency : ObjectHelper { externally_defined_currency() : Object("externally_defined_currency") {} + + }; + + // C++ wrapper for externally_defined_item + struct externally_defined_item : ObjectHelper { externally_defined_item() : Object("externally_defined_item") {} + source_item::Out item_id; + Lazy< external_source > source; + }; + + // C++ wrapper for externally_defined_curve_font + struct externally_defined_curve_font : externally_defined_item, ObjectHelper { externally_defined_curve_font() : Object("externally_defined_curve_font") {} + + }; + + // C++ wrapper for externally_defined_dimension_definition + struct externally_defined_dimension_definition : ObjectHelper { externally_defined_dimension_definition() : Object("externally_defined_dimension_definition") {} + + }; + + // C++ wrapper for externally_defined_general_property + struct externally_defined_general_property : ObjectHelper { externally_defined_general_property() : Object("externally_defined_general_property") {} + + }; + + // C++ wrapper for externally_defined_hatch_style + struct externally_defined_hatch_style : ObjectHelper { externally_defined_hatch_style() : Object("externally_defined_hatch_style") {} + + }; + + // C++ wrapper for externally_defined_marker + struct externally_defined_marker : ObjectHelper { externally_defined_marker() : Object("externally_defined_marker") {} + + }; + + // C++ wrapper for picture_representation_item + struct picture_representation_item : bytes_representation_item, ObjectHelper { picture_representation_item() : Object("picture_representation_item") {} + + }; + + // C++ wrapper for externally_defined_picture_representation_item + struct externally_defined_picture_representation_item : picture_representation_item, ObjectHelper { externally_defined_picture_representation_item() : Object("externally_defined_picture_representation_item") {} + + }; + + // C++ wrapper for externally_defined_representation_item + struct externally_defined_representation_item : ObjectHelper { externally_defined_representation_item() : Object("externally_defined_representation_item") {} + + }; + + // C++ wrapper for externally_defined_string + struct externally_defined_string : externally_defined_representation_item, ObjectHelper { externally_defined_string() : Object("externally_defined_string") {} + + }; + + // C++ wrapper for externally_defined_symbol + struct externally_defined_symbol : externally_defined_item, ObjectHelper { externally_defined_symbol() : Object("externally_defined_symbol") {} + + }; + + // C++ wrapper for externally_defined_terminator_symbol + struct externally_defined_terminator_symbol : externally_defined_symbol, ObjectHelper { externally_defined_terminator_symbol() : Object("externally_defined_terminator_symbol") {} + + }; + + // C++ wrapper for externally_defined_text_font + struct externally_defined_text_font : externally_defined_item, ObjectHelper { externally_defined_text_font() : Object("externally_defined_text_font") {} + + }; + + // C++ wrapper for externally_defined_tile + struct externally_defined_tile : externally_defined_item, ObjectHelper { externally_defined_tile() : Object("externally_defined_tile") {} + + }; + + // C++ wrapper for externally_defined_tile_style + struct externally_defined_tile_style : ObjectHelper { externally_defined_tile_style() : Object("externally_defined_tile_style") {} + + }; + + // C++ wrapper for swept_area_solid + struct swept_area_solid : solid_model, ObjectHelper { swept_area_solid() : Object("swept_area_solid") {} + Lazy< curve_bounded_surface > swept_area; + }; + + // C++ wrapper for extruded_area_solid + struct extruded_area_solid : swept_area_solid, ObjectHelper { extruded_area_solid() : Object("extruded_area_solid") {} + Lazy< direction > extruded_direction; + positive_length_measure::Out depth; + }; + + // C++ wrapper for swept_face_solid + struct swept_face_solid : solid_model, ObjectHelper { swept_face_solid() : Object("swept_face_solid") {} + Lazy< face_surface > swept_face; + }; + + // C++ wrapper for extruded_face_solid + struct extruded_face_solid : swept_face_solid, ObjectHelper { extruded_face_solid() : Object("extruded_face_solid") {} + Lazy< direction > extruded_direction; + positive_length_measure::Out depth; + }; + + // C++ wrapper for extruded_face_solid_with_trim_conditions + struct extruded_face_solid_with_trim_conditions : extruded_face_solid, ObjectHelper { extruded_face_solid_with_trim_conditions() : Object("extruded_face_solid_with_trim_conditions") {} + trim_condition_select::Out first_trim_condition; + trim_condition_select::Out second_trim_condition; + trim_intent::Out first_trim_intent; + trim_intent::Out second_trim_intent; + non_negative_length_measure::Out first_offset; + non_negative_length_measure::Out second_offset; + }; + + // C++ wrapper for extruded_face_solid_with_draft_angle + struct extruded_face_solid_with_draft_angle : extruded_face_solid_with_trim_conditions, ObjectHelper { extruded_face_solid_with_draft_angle() : Object("extruded_face_solid_with_draft_angle") {} + plane_angle_measure::Out draft_angle; + }; + + // C++ wrapper for extruded_face_solid_with_multiple_draft_angles + struct extruded_face_solid_with_multiple_draft_angles : extruded_face_solid_with_trim_conditions, ObjectHelper { extruded_face_solid_with_multiple_draft_angles() : Object("extruded_face_solid_with_multiple_draft_angles") {} + ListOf< plane_angle_measure, 2, 0 >::Out draft_angles; + }; + + // C++ wrapper for face + struct face : topological_representation_item, ObjectHelper { face() : Object("face") {} + ListOf< Lazy< face_bound >, 1, 0 > bounds; + }; + + // C++ wrapper for face_based_surface_model + struct face_based_surface_model : geometric_representation_item, ObjectHelper { face_based_surface_model() : Object("face_based_surface_model") {} + ListOf< Lazy< connected_face_set >, 1, 0 > fbsm_faces; + }; + + // C++ wrapper for face_bound + struct face_bound : topological_representation_item, ObjectHelper { face_bound() : Object("face_bound") {} + Lazy< loop > bound; + BOOLEAN::Out orientation; + }; + + // C++ wrapper for face_outer_bound + struct face_outer_bound : face_bound, ObjectHelper { face_outer_bound() : Object("face_outer_bound") {} + + }; + + // C++ wrapper for faceted_brep + struct faceted_brep : manifold_solid_brep, ObjectHelper { faceted_brep() : Object("faceted_brep") {} + + }; + + // C++ wrapper for faceted_brep_shape_representation + struct faceted_brep_shape_representation : shape_representation, ObjectHelper { faceted_brep_shape_representation() : Object("faceted_brep_shape_representation") {} + + }; + + // C++ wrapper for fill_area_style + struct fill_area_style : founded_item, ObjectHelper { fill_area_style() : Object("fill_area_style") {} + label::Out name; + ListOf< fill_style_select, 1, 0 >::Out fill_styles; + }; + + // C++ wrapper for fill_area_style_hatching + struct fill_area_style_hatching : geometric_representation_item, ObjectHelper { fill_area_style_hatching() : Object("fill_area_style_hatching") {} + Lazy< curve_style > hatch_line_appearance; + Lazy< one_direction_repeat_factor > start_of_next_hatch_line; + Lazy< cartesian_point > point_of_reference_hatch_line; + Lazy< cartesian_point > pattern_start; + plane_angle_measure::Out hatch_line_angle; + }; + + // C++ wrapper for fill_area_style_tile_coloured_region + struct fill_area_style_tile_coloured_region : geometric_representation_item, ObjectHelper { fill_area_style_tile_coloured_region() : Object("fill_area_style_tile_coloured_region") {} + curve_or_annotation_curve_occurrence::Out closed_curve; + Lazy< colour > region_colour; + }; + + // C++ wrapper for fill_area_style_tile_curve_with_style + struct fill_area_style_tile_curve_with_style : geometric_representation_item, ObjectHelper { fill_area_style_tile_curve_with_style() : Object("fill_area_style_tile_curve_with_style") {} + Lazy< annotation_curve_occurrence > styled_curve; + }; + + // C++ wrapper for fill_area_style_tile_symbol_with_style + struct fill_area_style_tile_symbol_with_style : geometric_representation_item, ObjectHelper { fill_area_style_tile_symbol_with_style() : Object("fill_area_style_tile_symbol_with_style") {} + Lazy< annotation_symbol_occurrence > symbol; + }; + + // C++ wrapper for fill_area_style_tiles + struct fill_area_style_tiles : geometric_representation_item, ObjectHelper { fill_area_style_tiles() : Object("fill_area_style_tiles") {} + Lazy< two_direction_repeat_factor > tiling_pattern; + ListOf< fill_area_style_tile_shape_select, 1, 0 >::Out tiles; + positive_ratio_measure::Out tiling_scale; + }; + + // C++ wrapper for shape_representation_relationship + struct shape_representation_relationship : representation_relationship, ObjectHelper { shape_representation_relationship() : Object("shape_representation_relationship") {} + + }; + + // C++ wrapper for flat_pattern_ply_representation_relationship + struct flat_pattern_ply_representation_relationship : shape_representation_relationship, ObjectHelper { flat_pattern_ply_representation_relationship() : Object("flat_pattern_ply_representation_relationship") {} + + }; + + // C++ wrapper for flatness_tolerance + struct flatness_tolerance : geometric_tolerance, ObjectHelper { flatness_tolerance() : Object("flatness_tolerance") {} + + }; + + // C++ wrapper for force_measure_with_unit + struct force_measure_with_unit : measure_with_unit, ObjectHelper { force_measure_with_unit() : Object("force_measure_with_unit") {} + + }; + + // C++ wrapper for force_unit + struct force_unit : derived_unit, ObjectHelper { force_unit() : Object("force_unit") {} + + }; + + // C++ wrapper for forward_chaining_rule + struct forward_chaining_rule : rule_definition, ObjectHelper { forward_chaining_rule() : Object("forward_chaining_rule") {} + + }; + + // C++ wrapper for forward_chaining_rule_premise + struct forward_chaining_rule_premise : ObjectHelper { forward_chaining_rule_premise() : Object("forward_chaining_rule_premise") {} + + }; + + // C++ wrapper for frequency_measure_with_unit + struct frequency_measure_with_unit : measure_with_unit, ObjectHelper { frequency_measure_with_unit() : Object("frequency_measure_with_unit") {} + + }; + + // C++ wrapper for frequency_unit + struct frequency_unit : derived_unit, ObjectHelper { frequency_unit() : Object("frequency_unit") {} + + }; + + // C++ wrapper for func + struct func : compound_representation_item, ObjectHelper { func() : Object("func") {} + + }; + + // C++ wrapper for functional_breakdown_context + struct functional_breakdown_context : breakdown_context, ObjectHelper { functional_breakdown_context() : Object("functional_breakdown_context") {} + + }; + + // C++ wrapper for functional_element_usage + struct functional_element_usage : breakdown_element_usage, ObjectHelper { functional_element_usage() : Object("functional_element_usage") {} + + }; + + // C++ wrapper for general_material_property + struct general_material_property : general_property, ObjectHelper { general_material_property() : Object("general_material_property") {} + + }; + + // C++ wrapper for simple_generic_expression + struct simple_generic_expression : generic_expression, ObjectHelper { simple_generic_expression() : Object("simple_generic_expression") {} + + }; + + // C++ wrapper for generic_literal + struct generic_literal : simple_generic_expression, ObjectHelper { generic_literal() : Object("generic_literal") {} + + }; + + // C++ wrapper for generic_variable + struct generic_variable : simple_generic_expression, ObjectHelper { generic_variable() : Object("generic_variable") {} + + }; + + // C++ wrapper for geometric_alignment + struct geometric_alignment : derived_shape_aspect, ObjectHelper { geometric_alignment() : Object("geometric_alignment") {} + + }; + + // C++ wrapper for geometric_set + struct geometric_set : geometric_representation_item, ObjectHelper { geometric_set() : Object("geometric_set") {} + ListOf< geometric_set_select, 1, 0 >::Out elements; + }; + + // C++ wrapper for geometric_curve_set + struct geometric_curve_set : geometric_set, ObjectHelper { geometric_curve_set() : Object("geometric_curve_set") {} + + }; + + // C++ wrapper for geometric_intersection + struct geometric_intersection : derived_shape_aspect, ObjectHelper { geometric_intersection() : Object("geometric_intersection") {} + + }; + + // C++ wrapper for geometric_item_specific_usage + struct geometric_item_specific_usage : item_identified_representation_usage, ObjectHelper { geometric_item_specific_usage() : Object("geometric_item_specific_usage") {} + + }; + + // C++ wrapper for geometric_model_element_relationship + struct geometric_model_element_relationship : ObjectHelper { geometric_model_element_relationship() : Object("geometric_model_element_relationship") {} + + }; + + // C++ wrapper for representation_context + struct representation_context : ObjectHelper { representation_context() : Object("representation_context") {} + identifier::Out context_identifier; + text::Out context_type; + }; + + // C++ wrapper for geometric_representation_context + struct geometric_representation_context : representation_context, ObjectHelper { geometric_representation_context() : Object("geometric_representation_context") {} + dimension_count::Out coordinate_space_dimension; + }; + + // C++ wrapper for geometric_tolerance_with_defined_unit + struct geometric_tolerance_with_defined_unit : geometric_tolerance, ObjectHelper { geometric_tolerance_with_defined_unit() : Object("geometric_tolerance_with_defined_unit") {} + Lazy< measure_with_unit > unit_size; + }; + + // C++ wrapper for geometrical_tolerance_callout + struct geometrical_tolerance_callout : draughting_callout, ObjectHelper { geometrical_tolerance_callout() : Object("geometrical_tolerance_callout") {} + + }; + + // C++ wrapper for geometrically_bounded_2d_wireframe_representation + struct geometrically_bounded_2d_wireframe_representation : shape_representation, ObjectHelper { geometrically_bounded_2d_wireframe_representation() : Object("geometrically_bounded_2d_wireframe_representation") {} + + }; + + // C++ wrapper for geometrically_bounded_surface_shape_representation + struct geometrically_bounded_surface_shape_representation : shape_representation, ObjectHelper { geometrically_bounded_surface_shape_representation() : Object("geometrically_bounded_surface_shape_representation") {} + + }; + + // C++ wrapper for geometrically_bounded_wireframe_shape_representation + struct geometrically_bounded_wireframe_shape_representation : shape_representation, ObjectHelper { geometrically_bounded_wireframe_shape_representation() : Object("geometrically_bounded_wireframe_shape_representation") {} + + }; + + // C++ wrapper for global_assignment + struct global_assignment : representation_item_relationship, ObjectHelper { global_assignment() : Object("global_assignment") {} + + }; + + // C++ wrapper for global_uncertainty_assigned_context + struct global_uncertainty_assigned_context : representation_context, ObjectHelper { global_uncertainty_assigned_context() : Object("global_uncertainty_assigned_context") {} + ListOf< Lazy< uncertainty_measure_with_unit >, 1, 0 > uncertainty; + }; + + // C++ wrapper for global_unit_assigned_context + struct global_unit_assigned_context : representation_context, ObjectHelper { global_unit_assigned_context() : Object("global_unit_assigned_context") {} + ListOf< unit, 1, 0 >::Out units; + }; + + // C++ wrapper for ground_fact + struct ground_fact : atomic_formula, ObjectHelper { ground_fact() : Object("ground_fact") {} + + }; + + // C++ wrapper for hardness_representation + struct hardness_representation : representation, ObjectHelper { hardness_representation() : Object("hardness_representation") {} + + }; + + // C++ wrapper for hidden_element_over_riding_styled_item + struct hidden_element_over_riding_styled_item : context_dependent_over_riding_styled_item, ObjectHelper { hidden_element_over_riding_styled_item() : Object("hidden_element_over_riding_styled_item") {} + + }; + + // C++ wrapper for hyperbola + struct hyperbola : conic, ObjectHelper { hyperbola() : Object("hyperbola") {} + positive_length_measure::Out semi_axis; + positive_length_measure::Out semi_imag_axis; + }; + + // C++ wrapper for illuminance_measure_with_unit + struct illuminance_measure_with_unit : measure_with_unit, ObjectHelper { illuminance_measure_with_unit() : Object("illuminance_measure_with_unit") {} + + }; + + // C++ wrapper for illuminance_unit + struct illuminance_unit : derived_unit, ObjectHelper { illuminance_unit() : Object("illuminance_unit") {} + + }; + + // C++ wrapper for included_text_block + struct included_text_block : mapped_item, ObjectHelper { included_text_block() : Object("included_text_block") {} + + }; + + // C++ wrapper for inclusion_product_concept_feature + struct inclusion_product_concept_feature : conditional_concept_feature, ObjectHelper { inclusion_product_concept_feature() : Object("inclusion_product_concept_feature") {} + + }; + + // C++ wrapper for user_selected_elements + struct user_selected_elements : representation_item, ObjectHelper { user_selected_elements() : Object("user_selected_elements") {} + ListOf< Lazy< representation_item >, 1, 0 > picked_items; + }; + + // C++ wrapper for indirectly_selected_elements + struct indirectly_selected_elements : user_selected_elements, ObjectHelper { indirectly_selected_elements() : Object("indirectly_selected_elements") {} + ListOf< Lazy< representation_item >, 1, 0 > indirectly_picked_items; + }; + + // C++ wrapper for indirectly_selected_shape_elements + struct indirectly_selected_shape_elements : ObjectHelper { indirectly_selected_shape_elements() : Object("indirectly_selected_shape_elements") {} + + }; + + // C++ wrapper for inductance_measure_with_unit + struct inductance_measure_with_unit : measure_with_unit, ObjectHelper { inductance_measure_with_unit() : Object("inductance_measure_with_unit") {} + + }; + + // C++ wrapper for inductance_unit + struct inductance_unit : derived_unit, ObjectHelper { inductance_unit() : Object("inductance_unit") {} + + }; + + // C++ wrapper for information_right + struct information_right : action_method, ObjectHelper { information_right() : Object("information_right") {} + + }; + + // C++ wrapper for information_usage_right + struct information_usage_right : action_method, ObjectHelper { information_usage_right() : Object("information_usage_right") {} + + }; + + // C++ wrapper for instance_usage_context_assignment + struct instance_usage_context_assignment : product_definition_context, ObjectHelper { instance_usage_context_assignment() : Object("instance_usage_context_assignment") {} + ListOf< instance_usage_context_select, 1, 0 >::Out items; + }; + + // C++ wrapper for instanced_feature + struct instanced_feature : ObjectHelper { instanced_feature() : Object("instanced_feature") {} + + }; + + // C++ wrapper for literal_number + struct literal_number : ObjectHelper { literal_number() : Object("literal_number") {} + NUMBER::Out the_value; + }; + + // C++ wrapper for int_literal + struct int_literal : literal_number, ObjectHelper { int_literal() : Object("int_literal") {} + + }; + + // C++ wrapper for integer_representation_item + struct integer_representation_item : ObjectHelper { integer_representation_item() : Object("integer_representation_item") {} + + }; + + // C++ wrapper for surface_curve + struct surface_curve : curve, ObjectHelper { surface_curve() : Object("surface_curve") {} + Lazy< curve > curve_3d; + ListOf< pcurve_or_surface, 1, 2 >::Out associated_geometry; + preferred_surface_curve_representation::Out master_representation; + }; + + // C++ wrapper for intersection_curve + struct intersection_curve : surface_curve, ObjectHelper { intersection_curve() : Object("intersection_curve") {} + + }; + + // C++ wrapper for interval_expression + struct interval_expression : ObjectHelper { interval_expression() : Object("interval_expression") {} + + }; + + // C++ wrapper for iso4217_currency + struct iso4217_currency : currency, ObjectHelper { iso4217_currency() : Object("iso4217_currency") {} + + }; + + // C++ wrapper for known_source + struct known_source : ObjectHelper { known_source() : Object("known_source") {} + + }; + + // C++ wrapper for laid_defined_transformation + struct laid_defined_transformation : transformation_with_derived_angle, ObjectHelper { laid_defined_transformation() : Object("laid_defined_transformation") {} + + }; + + // C++ wrapper for language + struct language : group, ObjectHelper { language() : Object("language") {} + + }; + + // C++ wrapper for leader_curve + struct leader_curve : annotation_curve_occurrence, ObjectHelper { leader_curve() : Object("leader_curve") {} + + }; + + // C++ wrapper for leader_directed_callout + struct leader_directed_callout : draughting_callout, ObjectHelper { leader_directed_callout() : Object("leader_directed_callout") {} + + }; + + // C++ wrapper for leader_directed_dimension + struct leader_directed_dimension : leader_directed_callout, ObjectHelper { leader_directed_dimension() : Object("leader_directed_dimension") {} + + }; + + // C++ wrapper for leader_terminator + struct leader_terminator : terminator_symbol, ObjectHelper { leader_terminator() : Object("leader_terminator") {} + + }; + + // C++ wrapper for length_measure_with_unit + struct length_measure_with_unit : measure_with_unit, ObjectHelper { length_measure_with_unit() : Object("length_measure_with_unit") {} + + }; + + // C++ wrapper for length_unit + struct length_unit : named_unit, ObjectHelper { length_unit() : Object("length_unit") {} + + }; + + // C++ wrapper for light_source + struct light_source : geometric_representation_item, ObjectHelper { light_source() : Object("light_source") {} + Lazy< colour > light_colour; + }; + + // C++ wrapper for light_source_ambient + struct light_source_ambient : light_source, ObjectHelper { light_source_ambient() : Object("light_source_ambient") {} + + }; + + // C++ wrapper for light_source_directional + struct light_source_directional : light_source, ObjectHelper { light_source_directional() : Object("light_source_directional") {} + Lazy< direction > orientation; + }; + + // C++ wrapper for light_source_positional + struct light_source_positional : light_source, ObjectHelper { light_source_positional() : Object("light_source_positional") {} + Lazy< cartesian_point > position; + REAL::Out constant_attenuation; + REAL::Out distance_attenuation; + }; + + // C++ wrapper for light_source_spot + struct light_source_spot : light_source, ObjectHelper { light_source_spot() : Object("light_source_spot") {} + Lazy< cartesian_point > position; + Lazy< direction > orientation; + REAL::Out concentration_exponent; + REAL::Out constant_attenuation; + REAL::Out distance_attenuation; + positive_plane_angle_measure::Out spread_angle; + }; + + // C++ wrapper for line + struct line : curve, ObjectHelper { line() : Object("line") {} + Lazy< cartesian_point > pnt; + Lazy< vector > dir; + }; + + // C++ wrapper for line_profile_tolerance + struct line_profile_tolerance : geometric_tolerance, ObjectHelper { line_profile_tolerance() : Object("line_profile_tolerance") {} + + }; + + // C++ wrapper for linear_dimension + struct linear_dimension : dimension_curve_directed_callout, ObjectHelper { linear_dimension() : Object("linear_dimension") {} + + }; + + // C++ wrapper for simple_clause + struct simple_clause : compound_representation_item, ObjectHelper { simple_clause() : Object("simple_clause") {} + + }; + + // C++ wrapper for literal_conjunction + struct literal_conjunction : simple_clause, ObjectHelper { literal_conjunction() : Object("literal_conjunction") {} + + }; + + // C++ wrapper for literal_disjunction + struct literal_disjunction : simple_clause, ObjectHelper { literal_disjunction() : Object("literal_disjunction") {} + + }; + + // C++ wrapper for logical_literal + struct logical_literal : generic_literal, ObjectHelper { logical_literal() : Object("logical_literal") {} + LOGICAL::Out lit_value; + }; + + // C++ wrapper for logical_representation_item + struct logical_representation_item : ObjectHelper { logical_representation_item() : Object("logical_representation_item") {} + + }; + + // C++ wrapper for loop + struct loop : topological_representation_item, ObjectHelper { loop() : Object("loop") {} + + }; + + // C++ wrapper for loss_tangent_measure_with_unit + struct loss_tangent_measure_with_unit : ratio_measure_with_unit, ObjectHelper { loss_tangent_measure_with_unit() : Object("loss_tangent_measure_with_unit") {} + + }; + + // C++ wrapper for lot_effectivity + struct lot_effectivity : effectivity, ObjectHelper { lot_effectivity() : Object("lot_effectivity") {} + identifier::Out effectivity_lot_id; + Lazy< measure_with_unit > effectivity_lot_size; + }; + + // C++ wrapper for luminous_flux_measure_with_unit + struct luminous_flux_measure_with_unit : measure_with_unit, ObjectHelper { luminous_flux_measure_with_unit() : Object("luminous_flux_measure_with_unit") {} + + }; + + // C++ wrapper for luminous_flux_unit + struct luminous_flux_unit : named_unit, ObjectHelper { luminous_flux_unit() : Object("luminous_flux_unit") {} + + }; + + // C++ wrapper for luminous_intensity_measure_with_unit + struct luminous_intensity_measure_with_unit : measure_with_unit, ObjectHelper { luminous_intensity_measure_with_unit() : Object("luminous_intensity_measure_with_unit") {} + + }; + + // C++ wrapper for luminous_intensity_unit + struct luminous_intensity_unit : named_unit, ObjectHelper { luminous_intensity_unit() : Object("luminous_intensity_unit") {} + + }; + + // C++ wrapper for magnetic_flux_density_measure_with_unit + struct magnetic_flux_density_measure_with_unit : measure_with_unit, ObjectHelper { magnetic_flux_density_measure_with_unit() : Object("magnetic_flux_density_measure_with_unit") {} + + }; + + // C++ wrapper for magnetic_flux_density_unit + struct magnetic_flux_density_unit : derived_unit, ObjectHelper { magnetic_flux_density_unit() : Object("magnetic_flux_density_unit") {} + + }; + + // C++ wrapper for magnetic_flux_measure_with_unit + struct magnetic_flux_measure_with_unit : measure_with_unit, ObjectHelper { magnetic_flux_measure_with_unit() : Object("magnetic_flux_measure_with_unit") {} + + }; + + // C++ wrapper for magnetic_flux_unit + struct magnetic_flux_unit : derived_unit, ObjectHelper { magnetic_flux_unit() : Object("magnetic_flux_unit") {} + + }; + + // C++ wrapper for make_from_usage_option + struct make_from_usage_option : product_definition_usage, ObjectHelper { make_from_usage_option() : Object("make_from_usage_option") {} + INTEGER::Out ranking; + text::Out ranking_rationale; + Lazy< measure_with_unit > quantity; + }; + + // C++ wrapper for manifold_subsurface_shape_representation + struct manifold_subsurface_shape_representation : shape_representation, ObjectHelper { manifold_subsurface_shape_representation() : Object("manifold_subsurface_shape_representation") {} + + }; + + // C++ wrapper for manifold_surface_shape_representation + struct manifold_surface_shape_representation : shape_representation, ObjectHelper { manifold_surface_shape_representation() : Object("manifold_surface_shape_representation") {} + + }; + + // C++ wrapper for mass_measure_with_unit + struct mass_measure_with_unit : measure_with_unit, ObjectHelper { mass_measure_with_unit() : Object("mass_measure_with_unit") {} + + }; + + // C++ wrapper for mass_unit + struct mass_unit : named_unit, ObjectHelper { mass_unit() : Object("mass_unit") {} + + }; + + // C++ wrapper for material_property + struct material_property : property_definition, ObjectHelper { material_property() : Object("material_property") {} + + }; + + // C++ wrapper for property_definition_representation + struct property_definition_representation : ObjectHelper { property_definition_representation() : Object("property_definition_representation") {} + represented_definition::Out definition; + Lazy< representation > used_representation; + }; + + // C++ wrapper for material_property_representation + struct material_property_representation : property_definition_representation, ObjectHelper { material_property_representation() : Object("material_property_representation") {} + Lazy< NotImplemented > dependent_environment; + }; + + // C++ wrapper for measure_representation_item + struct measure_representation_item : ObjectHelper { measure_representation_item() : Object("measure_representation_item") {} + + }; + + // C++ wrapper for product_context + struct product_context : application_context_element, ObjectHelper { product_context() : Object("product_context") {} + label::Out discipline_type; + }; + + // C++ wrapper for mechanical_context + struct mechanical_context : product_context, ObjectHelper { mechanical_context() : Object("mechanical_context") {} + + }; + + // C++ wrapper for mechanical_design_and_draughting_relationship + struct mechanical_design_and_draughting_relationship : definitional_representation_relationship_with_same_context, ObjectHelper { mechanical_design_and_draughting_relationship() : Object("mechanical_design_and_draughting_relationship") {} + + }; + + // C++ wrapper for mechanical_design_geometric_presentation_area + struct mechanical_design_geometric_presentation_area : presentation_area, ObjectHelper { mechanical_design_geometric_presentation_area() : Object("mechanical_design_geometric_presentation_area") {} + + }; + + // C++ wrapper for mechanical_design_geometric_presentation_representation + struct mechanical_design_geometric_presentation_representation : representation, ObjectHelper { mechanical_design_geometric_presentation_representation() : Object("mechanical_design_geometric_presentation_representation") {} + + }; + + // C++ wrapper for mechanical_design_presentation_representation_with_draughting + struct mechanical_design_presentation_representation_with_draughting : representation, ObjectHelper { mechanical_design_presentation_representation_with_draughting() : Object("mechanical_design_presentation_representation_with_draughting") {} + + }; + + // C++ wrapper for mechanical_design_shaded_presentation_area + struct mechanical_design_shaded_presentation_area : presentation_area, ObjectHelper { mechanical_design_shaded_presentation_area() : Object("mechanical_design_shaded_presentation_area") {} + + }; + + // C++ wrapper for mechanical_design_shaded_presentation_representation + struct mechanical_design_shaded_presentation_representation : representation, ObjectHelper { mechanical_design_shaded_presentation_representation() : Object("mechanical_design_shaded_presentation_representation") {} + + }; + + // C++ wrapper for min_and_major_ply_orientation_basis + struct min_and_major_ply_orientation_basis : ObjectHelper { min_and_major_ply_orientation_basis() : Object("min_and_major_ply_orientation_basis") {} + + }; + + // C++ wrapper for modified_geometric_tolerance + struct modified_geometric_tolerance : geometric_tolerance, ObjectHelper { modified_geometric_tolerance() : Object("modified_geometric_tolerance") {} + limit_condition::Out modifier; + }; + + // C++ wrapper for modified_solid_with_placed_configuration + struct modified_solid_with_placed_configuration : modified_solid, ObjectHelper { modified_solid_with_placed_configuration() : Object("modified_solid_with_placed_configuration") {} + Lazy< axis2_placement_3d > placing; + }; + + // C++ wrapper for moments_of_inertia_representation + struct moments_of_inertia_representation : representation, ObjectHelper { moments_of_inertia_representation() : Object("moments_of_inertia_representation") {} + + }; + + // C++ wrapper for multi_language_attribute_assignment + struct multi_language_attribute_assignment : attribute_value_assignment, ObjectHelper { multi_language_attribute_assignment() : Object("multi_language_attribute_assignment") {} + ListOf< multi_language_attribute_item, 1, 0 >::Out items; + }; + + // C++ wrapper for multiple_arity_boolean_expression + struct multiple_arity_boolean_expression : ObjectHelper { multiple_arity_boolean_expression() : Object("multiple_arity_boolean_expression") {} + + }; + + // C++ wrapper for multiple_arity_generic_expression + struct multiple_arity_generic_expression : generic_expression, ObjectHelper { multiple_arity_generic_expression() : Object("multiple_arity_generic_expression") {} + ListOf< Lazy< generic_expression >, 2, 0 > operands; + }; + + // C++ wrapper for multiple_arity_numeric_expression + struct multiple_arity_numeric_expression : ObjectHelper { multiple_arity_numeric_expression() : Object("multiple_arity_numeric_expression") {} + + }; + + // C++ wrapper for next_assembly_usage_occurrence + struct next_assembly_usage_occurrence : assembly_component_usage, ObjectHelper { next_assembly_usage_occurrence() : Object("next_assembly_usage_occurrence") {} + + }; + + // C++ wrapper for non_manifold_surface_shape_representation + struct non_manifold_surface_shape_representation : shape_representation, ObjectHelper { non_manifold_surface_shape_representation() : Object("non_manifold_surface_shape_representation") {} + + }; + + // C++ wrapper for null_representation_item + struct null_representation_item : representation_item, ObjectHelper { null_representation_item() : Object("null_representation_item") {} + + }; + + // C++ wrapper for numeric_expression + struct numeric_expression : expression, ObjectHelper { numeric_expression() : Object("numeric_expression") {} + + }; + + // C++ wrapper for offset_curve_2d + struct offset_curve_2d : curve, ObjectHelper { offset_curve_2d() : Object("offset_curve_2d") {} + Lazy< curve > basis_curve; + length_measure::Out distance; + LOGICAL::Out self_intersect; + }; + + // C++ wrapper for offset_curve_3d + struct offset_curve_3d : curve, ObjectHelper { offset_curve_3d() : Object("offset_curve_3d") {} + Lazy< curve > basis_curve; + length_measure::Out distance; + LOGICAL::Out self_intersect; + Lazy< direction > ref_direction; + }; + + // C++ wrapper for offset_surface + struct offset_surface : surface, ObjectHelper { offset_surface() : Object("offset_surface") {} + Lazy< surface > basis_surface; + length_measure::Out distance; + LOGICAL::Out self_intersect; + }; + + // C++ wrapper for one_direction_repeat_factor + struct one_direction_repeat_factor : geometric_representation_item, ObjectHelper { one_direction_repeat_factor() : Object("one_direction_repeat_factor") {} + Lazy< vector > repeat_factor; + }; + + // C++ wrapper for open_shell + struct open_shell : connected_face_set, ObjectHelper { open_shell() : Object("open_shell") {} + + }; + + // C++ wrapper for ordinal_date + struct ordinal_date : date, ObjectHelper { ordinal_date() : Object("ordinal_date") {} + day_in_year_number::Out day_component; + }; + + // C++ wrapper for projection_directed_callout + struct projection_directed_callout : draughting_callout, ObjectHelper { projection_directed_callout() : Object("projection_directed_callout") {} + + }; + + // C++ wrapper for ordinate_dimension + struct ordinate_dimension : projection_directed_callout, ObjectHelper { ordinate_dimension() : Object("ordinate_dimension") {} + + }; + + // C++ wrapper for organizational_address + struct organizational_address : address, ObjectHelper { organizational_address() : Object("organizational_address") {} + ListOf< Lazy< NotImplemented >, 1, 0 > organizations; + Maybe< text::Out > description; + }; + + // C++ wrapper for oriented_closed_shell + struct oriented_closed_shell : closed_shell, ObjectHelper { oriented_closed_shell() : Object("oriented_closed_shell") {} + Lazy< closed_shell > closed_shell_element; + BOOLEAN::Out orientation; + }; + + // C++ wrapper for oriented_edge + struct oriented_edge : edge, ObjectHelper { oriented_edge() : Object("oriented_edge") {} + Lazy< edge > edge_element; + BOOLEAN::Out orientation; + }; + + // C++ wrapper for oriented_face + struct oriented_face : face, ObjectHelper { oriented_face() : Object("oriented_face") {} + Lazy< face > face_element; + BOOLEAN::Out orientation; + }; + + // C++ wrapper for oriented_open_shell + struct oriented_open_shell : open_shell, ObjectHelper { oriented_open_shell() : Object("oriented_open_shell") {} + Lazy< open_shell > open_shell_element; + BOOLEAN::Out orientation; + }; + + // C++ wrapper for path + struct path : topological_representation_item, ObjectHelper { path() : Object("path") {} + ListOf< Lazy< oriented_edge >, 1, 0 > edge_list; + }; + + // C++ wrapper for oriented_path + struct oriented_path : path, ObjectHelper { oriented_path() : Object("oriented_path") {} + Lazy< path > path_element; + BOOLEAN::Out orientation; + }; + + // C++ wrapper for oriented_surface + struct oriented_surface : surface, ObjectHelper { oriented_surface() : Object("oriented_surface") {} + BOOLEAN::Out orientation; + }; + + // C++ wrapper for outer_boundary_curve + struct outer_boundary_curve : boundary_curve, ObjectHelper { outer_boundary_curve() : Object("outer_boundary_curve") {} + + }; + + // C++ wrapper for package_product_concept_feature + struct package_product_concept_feature : product_concept_feature, ObjectHelper { package_product_concept_feature() : Object("package_product_concept_feature") {} + + }; + + // C++ wrapper for parabola + struct parabola : conic, ObjectHelper { parabola() : Object("parabola") {} + length_measure::Out focal_dist; + }; + + // C++ wrapper for parallel_offset + struct parallel_offset : derived_shape_aspect, ObjectHelper { parallel_offset() : Object("parallel_offset") {} + Lazy< measure_with_unit > offset; + }; + + // C++ wrapper for parallelism_tolerance + struct parallelism_tolerance : geometric_tolerance_with_datum_reference, ObjectHelper { parallelism_tolerance() : Object("parallelism_tolerance") {} + + }; + + // C++ wrapper for parametric_representation_context + struct parametric_representation_context : representation_context, ObjectHelper { parametric_representation_context() : Object("parametric_representation_context") {} + + }; + + // C++ wrapper for partial_document_with_structured_text_representation_assignment + struct partial_document_with_structured_text_representation_assignment : ObjectHelper { partial_document_with_structured_text_representation_assignment() : Object("partial_document_with_structured_text_representation_assignment") {} + + }; + + // C++ wrapper for pcurve + struct pcurve : curve, ObjectHelper { pcurve() : Object("pcurve") {} + Lazy< surface > basis_surface; + Lazy< definitional_representation > reference_to_curve; + }; + + // C++ wrapper for percentage_laminate_definition + struct percentage_laminate_definition : product_definition, ObjectHelper { percentage_laminate_definition() : Object("percentage_laminate_definition") {} + + }; + + // C++ wrapper for zone_structural_makeup + struct zone_structural_makeup : laminate_table, ObjectHelper { zone_structural_makeup() : Object("zone_structural_makeup") {} + + }; + + // C++ wrapper for percentage_laminate_table + struct percentage_laminate_table : zone_structural_makeup, ObjectHelper { percentage_laminate_table() : Object("percentage_laminate_table") {} + + }; + + // C++ wrapper for percentage_ply_definition + struct percentage_ply_definition : product_definition, ObjectHelper { percentage_ply_definition() : Object("percentage_ply_definition") {} + + }; + + // C++ wrapper for perpendicular_to + struct perpendicular_to : derived_shape_aspect, ObjectHelper { perpendicular_to() : Object("perpendicular_to") {} + + }; + + // C++ wrapper for perpendicularity_tolerance + struct perpendicularity_tolerance : geometric_tolerance_with_datum_reference, ObjectHelper { perpendicularity_tolerance() : Object("perpendicularity_tolerance") {} + + }; + + // C++ wrapper for person_and_organization_address + struct person_and_organization_address : ObjectHelper { person_and_organization_address() : Object("person_and_organization_address") {} + + }; + + // C++ wrapper for personal_address + struct personal_address : address, ObjectHelper { personal_address() : Object("personal_address") {} + ListOf< Lazy< NotImplemented >, 1, 0 > people; + Maybe< text::Out > description; + }; + + // C++ wrapper for physical_breakdown_context + struct physical_breakdown_context : breakdown_context, ObjectHelper { physical_breakdown_context() : Object("physical_breakdown_context") {} + + }; + + // C++ wrapper for physical_element_usage + struct physical_element_usage : breakdown_element_usage, ObjectHelper { physical_element_usage() : Object("physical_element_usage") {} + + }; + + // C++ wrapper for presentation_view + struct presentation_view : presentation_representation, ObjectHelper { presentation_view() : Object("presentation_view") {} + + }; + + // C++ wrapper for picture_representation + struct picture_representation : presentation_view, ObjectHelper { picture_representation() : Object("picture_representation") {} + + }; + + // C++ wrapper for placed_datum_target_feature + struct placed_datum_target_feature : datum_target, ObjectHelper { placed_datum_target_feature() : Object("placed_datum_target_feature") {} + + }; + + // C++ wrapper for placed_feature + struct placed_feature : shape_aspect, ObjectHelper { placed_feature() : Object("placed_feature") {} + + }; + + // C++ wrapper for planar_extent + struct planar_extent : geometric_representation_item, ObjectHelper { planar_extent() : Object("planar_extent") {} + length_measure::Out size_in_x; + length_measure::Out size_in_y; + }; + + // C++ wrapper for planar_box + struct planar_box : planar_extent, ObjectHelper { planar_box() : Object("planar_box") {} + axis2_placement::Out placement; + }; + + // C++ wrapper for plane + struct plane : elementary_surface, ObjectHelper { plane() : Object("plane") {} + + }; + + // C++ wrapper for plane_angle_measure_with_unit + struct plane_angle_measure_with_unit : measure_with_unit, ObjectHelper { plane_angle_measure_with_unit() : Object("plane_angle_measure_with_unit") {} + + }; + + // C++ wrapper for plane_angle_unit + struct plane_angle_unit : named_unit, ObjectHelper { plane_angle_unit() : Object("plane_angle_unit") {} + + }; + + // C++ wrapper for ply_laminate_definition + struct ply_laminate_definition : product_definition, ObjectHelper { ply_laminate_definition() : Object("ply_laminate_definition") {} + + }; + + // C++ wrapper for ply_laminate_sequence_definition + struct ply_laminate_sequence_definition : product_definition, ObjectHelper { ply_laminate_sequence_definition() : Object("ply_laminate_sequence_definition") {} + + }; + + // C++ wrapper for ply_laminate_table + struct ply_laminate_table : part_laminate_table, ObjectHelper { ply_laminate_table() : Object("ply_laminate_table") {} + + }; + + // C++ wrapper for point_and_vector + struct point_and_vector : ObjectHelper { point_and_vector() : Object("point_and_vector") {} + + }; + + // C++ wrapper for point_on_curve + struct point_on_curve : point, ObjectHelper { point_on_curve() : Object("point_on_curve") {} + Lazy< curve > basis_curve; + parameter_value::Out point_parameter; + }; + + // C++ wrapper for point_on_surface + struct point_on_surface : point, ObjectHelper { point_on_surface() : Object("point_on_surface") {} + Lazy< surface > basis_surface; + parameter_value::Out point_parameter_u; + parameter_value::Out point_parameter_v; + }; + + // C++ wrapper for point_path + struct point_path : ObjectHelper { point_path() : Object("point_path") {} + + }; + + // C++ wrapper for point_replica + struct point_replica : point, ObjectHelper { point_replica() : Object("point_replica") {} + Lazy< point > parent_pt; + Lazy< cartesian_transformation_operator > transformation; + }; + + // C++ wrapper for point_style + struct point_style : founded_item, ObjectHelper { point_style() : Object("point_style") {} + label::Out name; + marker_select::Out marker; + size_select::Out marker_size; + Lazy< colour > marker_colour; + }; + + // C++ wrapper for polar_complex_number_literal + struct polar_complex_number_literal : generic_literal, ObjectHelper { polar_complex_number_literal() : Object("polar_complex_number_literal") {} + REAL::Out radius; + REAL::Out angle; + }; + + // C++ wrapper for poly_loop + struct poly_loop : ObjectHelper { poly_loop() : Object("poly_loop") {} + ListOf< Lazy< cartesian_point >, 3, 0 > polygon; + }; + + // C++ wrapper for polyline + struct polyline : bounded_curve, ObjectHelper { polyline() : Object("polyline") {} + ListOf< Lazy< cartesian_point >, 2, 0 > points; + }; + + // C++ wrapper for position_tolerance + struct position_tolerance : geometric_tolerance, ObjectHelper { position_tolerance() : Object("position_tolerance") {} + + }; + + // C++ wrapper for positioned_sketch + struct positioned_sketch : geometric_representation_item, ObjectHelper { positioned_sketch() : Object("positioned_sketch") {} + sketch_basis_select::Out sketch_basis; + ListOf< Lazy< auxiliary_geometric_representation_item >, 0, 0 > auxiliary_elements; + }; + + // C++ wrapper for power_measure_with_unit + struct power_measure_with_unit : measure_with_unit, ObjectHelper { power_measure_with_unit() : Object("power_measure_with_unit") {} + + }; + + // C++ wrapper for power_unit + struct power_unit : derived_unit, ObjectHelper { power_unit() : Object("power_unit") {} + + }; + + // C++ wrapper for pre_defined_symbol + struct pre_defined_symbol : pre_defined_item, ObjectHelper { pre_defined_symbol() : Object("pre_defined_symbol") {} + + }; + + // C++ wrapper for pre_defined_dimension_symbol + struct pre_defined_dimension_symbol : pre_defined_symbol, ObjectHelper { pre_defined_dimension_symbol() : Object("pre_defined_dimension_symbol") {} + + }; + + // C++ wrapper for pre_defined_geometrical_tolerance_symbol + struct pre_defined_geometrical_tolerance_symbol : pre_defined_symbol, ObjectHelper { pre_defined_geometrical_tolerance_symbol() : Object("pre_defined_geometrical_tolerance_symbol") {} + + }; + + // C++ wrapper for pre_defined_marker + struct pre_defined_marker : pre_defined_item, ObjectHelper { pre_defined_marker() : Object("pre_defined_marker") {} + + }; + + // C++ wrapper for pre_defined_point_marker_symbol + struct pre_defined_point_marker_symbol : ObjectHelper { pre_defined_point_marker_symbol() : Object("pre_defined_point_marker_symbol") {} + + }; + + // C++ wrapper for pre_defined_surface_condition_symbol + struct pre_defined_surface_condition_symbol : pre_defined_symbol, ObjectHelper { pre_defined_surface_condition_symbol() : Object("pre_defined_surface_condition_symbol") {} + + }; + + // C++ wrapper for pre_defined_surface_side_style + struct pre_defined_surface_side_style : pre_defined_item, ObjectHelper { pre_defined_surface_side_style() : Object("pre_defined_surface_side_style") {} + + }; + + // C++ wrapper for pre_defined_terminator_symbol + struct pre_defined_terminator_symbol : pre_defined_symbol, ObjectHelper { pre_defined_terminator_symbol() : Object("pre_defined_terminator_symbol") {} + + }; + + // C++ wrapper for pre_defined_tile + struct pre_defined_tile : pre_defined_item, ObjectHelper { pre_defined_tile() : Object("pre_defined_tile") {} + + }; + + // C++ wrapper for predefined_picture_representation_item + struct predefined_picture_representation_item : picture_representation_item, ObjectHelper { predefined_picture_representation_item() : Object("predefined_picture_representation_item") {} + + }; + + // C++ wrapper for presentation_style_assignment + struct presentation_style_assignment : founded_item, ObjectHelper { presentation_style_assignment() : Object("presentation_style_assignment") {} + ListOf< presentation_style_select, 1, 0 >::Out styles; + }; + + // C++ wrapper for presentation_style_by_context + struct presentation_style_by_context : presentation_style_assignment, ObjectHelper { presentation_style_by_context() : Object("presentation_style_by_context") {} + style_context_select::Out style_context; + }; + + // C++ wrapper for pressure_measure_with_unit + struct pressure_measure_with_unit : measure_with_unit, ObjectHelper { pressure_measure_with_unit() : Object("pressure_measure_with_unit") {} + + }; + + // C++ wrapper for pressure_unit + struct pressure_unit : derived_unit, ObjectHelper { pressure_unit() : Object("pressure_unit") {} + + }; + + // C++ wrapper for procedural_representation + struct procedural_representation : representation, ObjectHelper { procedural_representation() : Object("procedural_representation") {} + + }; + + // C++ wrapper for procedural_representation_sequence + struct procedural_representation_sequence : representation_item, ObjectHelper { procedural_representation_sequence() : Object("procedural_representation_sequence") {} + ListOf< Lazy< representation_item >, 1, 0 > elements; + ListOf< Lazy< representation_item >, 0, 0 > suppressed_items; + text::Out rationale; + }; + + // C++ wrapper for procedural_shape_representation + struct procedural_shape_representation : ObjectHelper { procedural_shape_representation() : Object("procedural_shape_representation") {} + + }; + + // C++ wrapper for procedural_shape_representation_sequence + struct procedural_shape_representation_sequence : ObjectHelper { procedural_shape_representation_sequence() : Object("procedural_shape_representation_sequence") {} + + }; + + // C++ wrapper for product_category + struct product_category : ObjectHelper { product_category() : Object("product_category") {} + label::Out name; + Maybe< text::Out > description; + }; + + // C++ wrapper for product_class + struct product_class : ObjectHelper { product_class() : Object("product_class") {} + + }; + + // C++ wrapper for product_concept_context + struct product_concept_context : application_context_element, ObjectHelper { product_concept_context() : Object("product_concept_context") {} + label::Out market_segment_type; + }; + + // C++ wrapper for product_concept_feature_category_usage + struct product_concept_feature_category_usage : group_assignment, ObjectHelper { product_concept_feature_category_usage() : Object("product_concept_feature_category_usage") {} + ListOf< category_usage_item, 1, 0 >::Out items; + }; + + // C++ wrapper for product_definition_element_relationship + struct product_definition_element_relationship : group, ObjectHelper { product_definition_element_relationship() : Object("product_definition_element_relationship") {} + + }; + + // C++ wrapper for product_definition_formation + struct product_definition_formation : ObjectHelper { product_definition_formation() : Object("product_definition_formation") {} + identifier::Out id; + Maybe< text::Out > description; + Lazy< NotImplemented > of_product; + }; + + // C++ wrapper for product_definition_formation_with_specified_source + struct product_definition_formation_with_specified_source : product_definition_formation, ObjectHelper { product_definition_formation_with_specified_source() : Object("product_definition_formation_with_specified_source") {} + source::Out make_or_buy; + }; + + // C++ wrapper for product_definition_group_assignment + struct product_definition_group_assignment : group_assignment, ObjectHelper { product_definition_group_assignment() : Object("product_definition_group_assignment") {} + ListOf< product_definition_or_product_definition_relationship, 1, 1 >::Out items; + }; + + // C++ wrapper for product_definition_shape + struct product_definition_shape : property_definition, ObjectHelper { product_definition_shape() : Object("product_definition_shape") {} + + }; + + // C++ wrapper for product_definition_with_associated_documents + struct product_definition_with_associated_documents : product_definition, ObjectHelper { product_definition_with_associated_documents() : Object("product_definition_with_associated_documents") {} + ListOf< Lazy< NotImplemented >, 1, 0 > documentation_ids; + }; + + // C++ wrapper for product_identification + struct product_identification : ObjectHelper { product_identification() : Object("product_identification") {} + + }; + + // C++ wrapper for product_material_composition_relationship + struct product_material_composition_relationship : product_definition_relationship, ObjectHelper { product_material_composition_relationship() : Object("product_material_composition_relationship") {} + label::Out class_; + ListOf< characterized_product_composition_value, 1, 0 >::Out constituent_amount; + label::Out composition_basis; + text::Out determination_method; + }; + + // C++ wrapper for product_related_product_category + struct product_related_product_category : product_category, ObjectHelper { product_related_product_category() : Object("product_related_product_category") {} + ListOf< Lazy< NotImplemented >, 1, 0 > products; + }; + + // C++ wrapper for product_specification + struct product_specification : ObjectHelper { product_specification() : Object("product_specification") {} + + }; + + // C++ wrapper for tolerance_zone_definition + struct tolerance_zone_definition : ObjectHelper { tolerance_zone_definition() : Object("tolerance_zone_definition") {} + Lazy< tolerance_zone > zone; + ListOf< Lazy< shape_aspect >, 1, 0 > boundaries; + }; + + // C++ wrapper for projected_zone_definition + struct projected_zone_definition : tolerance_zone_definition, ObjectHelper { projected_zone_definition() : Object("projected_zone_definition") {} + Lazy< shape_aspect > projection_end; + Lazy< measure_with_unit > projected_length; + }; + + // C++ wrapper for projection_curve + struct projection_curve : annotation_curve_occurrence, ObjectHelper { projection_curve() : Object("projection_curve") {} + + }; + + // C++ wrapper for promissory_usage_occurrence + struct promissory_usage_occurrence : assembly_component_usage, ObjectHelper { promissory_usage_occurrence() : Object("promissory_usage_occurrence") {} + + }; + + // C++ wrapper for qualified_representation_item + struct qualified_representation_item : representation_item, ObjectHelper { qualified_representation_item() : Object("qualified_representation_item") {} + ListOf< value_qualifier, 1, 0 >::Out qualifiers; + }; + + // C++ wrapper for qualitative_uncertainty + struct qualitative_uncertainty : uncertainty_qualifier, ObjectHelper { qualitative_uncertainty() : Object("qualitative_uncertainty") {} + text::Out uncertainty_value; + }; + + // C++ wrapper for quantified_assembly_component_usage + struct quantified_assembly_component_usage : assembly_component_usage, ObjectHelper { quantified_assembly_component_usage() : Object("quantified_assembly_component_usage") {} + Lazy< measure_with_unit > quantity; + }; + + // C++ wrapper for quasi_uniform_curve + struct quasi_uniform_curve : b_spline_curve, ObjectHelper { quasi_uniform_curve() : Object("quasi_uniform_curve") {} + + }; + + // C++ wrapper for quasi_uniform_surface + struct quasi_uniform_surface : b_spline_surface, ObjectHelper { quasi_uniform_surface() : Object("quasi_uniform_surface") {} + + }; + + // C++ wrapper for radioactivity_measure_with_unit + struct radioactivity_measure_with_unit : measure_with_unit, ObjectHelper { radioactivity_measure_with_unit() : Object("radioactivity_measure_with_unit") {} + + }; + + // C++ wrapper for radioactivity_unit + struct radioactivity_unit : derived_unit, ObjectHelper { radioactivity_unit() : Object("radioactivity_unit") {} + + }; + + // C++ wrapper for radius_dimension + struct radius_dimension : dimension_curve_directed_callout, ObjectHelper { radius_dimension() : Object("radius_dimension") {} + + }; + + // C++ wrapper for range_characteristic + struct range_characteristic : ObjectHelper { range_characteristic() : Object("range_characteristic") {} + + }; + + // C++ wrapper for ratio_unit + struct ratio_unit : named_unit, ObjectHelper { ratio_unit() : Object("ratio_unit") {} + + }; + + // C++ wrapper for rational_b_spline_curve + struct rational_b_spline_curve : b_spline_curve, ObjectHelper { rational_b_spline_curve() : Object("rational_b_spline_curve") {} + ListOf< REAL, 2, 0 >::Out weights_data; + }; + + // C++ wrapper for rational_b_spline_surface + struct rational_b_spline_surface : b_spline_surface, ObjectHelper { rational_b_spline_surface() : Object("rational_b_spline_surface") {} + + }; + + // C++ wrapper for rational_representation_item + struct rational_representation_item : ObjectHelper { rational_representation_item() : Object("rational_representation_item") {} + + }; + + // C++ wrapper for real_literal + struct real_literal : literal_number, ObjectHelper { real_literal() : Object("real_literal") {} + + }; + + // C++ wrapper for real_representation_item + struct real_representation_item : ObjectHelper { real_representation_item() : Object("real_representation_item") {} + + }; + + // C++ wrapper for rectangular_composite_surface + struct rectangular_composite_surface : bounded_surface, ObjectHelper { rectangular_composite_surface() : Object("rectangular_composite_surface") {} + + }; + + // C++ wrapper for rectangular_trimmed_surface + struct rectangular_trimmed_surface : bounded_surface, ObjectHelper { rectangular_trimmed_surface() : Object("rectangular_trimmed_surface") {} + Lazy< surface > basis_surface; + parameter_value::Out u1; + parameter_value::Out u2; + parameter_value::Out v1; + parameter_value::Out v2; + BOOLEAN::Out usense; + BOOLEAN::Out vsense; + }; + + // C++ wrapper for referenced_modified_datum + struct referenced_modified_datum : datum_reference, ObjectHelper { referenced_modified_datum() : Object("referenced_modified_datum") {} + limit_condition::Out modifier; + }; + + // C++ wrapper for relative_event_occurrence + struct relative_event_occurrence : event_occurrence, ObjectHelper { relative_event_occurrence() : Object("relative_event_occurrence") {} + Lazy< event_occurrence > base_event; + Lazy< time_measure_with_unit > offset; + }; + + // C++ wrapper for rep_item_group + struct rep_item_group : ObjectHelper { rep_item_group() : Object("rep_item_group") {} + + }; + + // C++ wrapper for reparametrised_composite_curve_segment + struct reparametrised_composite_curve_segment : composite_curve_segment, ObjectHelper { reparametrised_composite_curve_segment() : Object("reparametrised_composite_curve_segment") {} + parameter_value::Out param_length; + }; + + // C++ wrapper for representation_relationship_with_transformation + struct representation_relationship_with_transformation : representation_relationship, ObjectHelper { representation_relationship_with_transformation() : Object("representation_relationship_with_transformation") {} + transformation::Out transformation_operator; + }; + + // C++ wrapper for requirement_assigned_object + struct requirement_assigned_object : group_assignment, ObjectHelper { requirement_assigned_object() : Object("requirement_assigned_object") {} + ListOf< requirement_assigned_item, 1, 1 >::Out items; + }; + + // C++ wrapper for requirement_assignment + struct requirement_assignment : ObjectHelper { requirement_assignment() : Object("requirement_assignment") {} + + }; + + // C++ wrapper for requirement_source + struct requirement_source : group, ObjectHelper { requirement_source() : Object("requirement_source") {} + + }; + + // C++ wrapper for requirement_view_definition_relationship + struct requirement_view_definition_relationship : product_definition_relationship, ObjectHelper { requirement_view_definition_relationship() : Object("requirement_view_definition_relationship") {} + + }; + + // C++ wrapper for resistance_measure_with_unit + struct resistance_measure_with_unit : measure_with_unit, ObjectHelper { resistance_measure_with_unit() : Object("resistance_measure_with_unit") {} + + }; + + // C++ wrapper for resistance_unit + struct resistance_unit : derived_unit, ObjectHelper { resistance_unit() : Object("resistance_unit") {} + + }; + + // C++ wrapper for revolved_area_solid + struct revolved_area_solid : swept_area_solid, ObjectHelper { revolved_area_solid() : Object("revolved_area_solid") {} + Lazy< axis1_placement > axis; + plane_angle_measure::Out angle; + }; + + // C++ wrapper for revolved_face_solid + struct revolved_face_solid : swept_face_solid, ObjectHelper { revolved_face_solid() : Object("revolved_face_solid") {} + Lazy< axis1_placement > axis; + plane_angle_measure::Out angle; + }; + + // C++ wrapper for revolved_face_solid_with_trim_conditions + struct revolved_face_solid_with_trim_conditions : revolved_face_solid, ObjectHelper { revolved_face_solid_with_trim_conditions() : Object("revolved_face_solid_with_trim_conditions") {} + trim_condition_select::Out first_trim_condition; + trim_condition_select::Out second_trim_condition; + }; + + // C++ wrapper for right_angular_wedge + struct right_angular_wedge : geometric_representation_item, ObjectHelper { right_angular_wedge() : Object("right_angular_wedge") {} + Lazy< axis2_placement_3d > position; + positive_length_measure::Out x; + positive_length_measure::Out y; + positive_length_measure::Out z; + length_measure::Out ltx; + }; + + // C++ wrapper for right_circular_cone + struct right_circular_cone : geometric_representation_item, ObjectHelper { right_circular_cone() : Object("right_circular_cone") {} + Lazy< axis1_placement > position; + positive_length_measure::Out height; + length_measure::Out radius; + plane_angle_measure::Out semi_angle; + }; + + // C++ wrapper for right_circular_cylinder + struct right_circular_cylinder : geometric_representation_item, ObjectHelper { right_circular_cylinder() : Object("right_circular_cylinder") {} + Lazy< axis1_placement > position; + positive_length_measure::Out height; + positive_length_measure::Out radius; + }; + + // C++ wrapper for right_to_usage_association + struct right_to_usage_association : action_method_relationship, ObjectHelper { right_to_usage_association() : Object("right_to_usage_association") {} + + }; + + // C++ wrapper for roundness_tolerance + struct roundness_tolerance : geometric_tolerance, ObjectHelper { roundness_tolerance() : Object("roundness_tolerance") {} + + }; + + // C++ wrapper for row_representation_item + struct row_representation_item : compound_representation_item, ObjectHelper { row_representation_item() : Object("row_representation_item") {} + + }; + + // C++ wrapper for row_value + struct row_value : compound_representation_item, ObjectHelper { row_value() : Object("row_value") {} + + }; + + // C++ wrapper for row_variable + struct row_variable : abstract_variable, ObjectHelper { row_variable() : Object("row_variable") {} + + }; + + // C++ wrapper for rule_action + struct rule_action : action, ObjectHelper { rule_action() : Object("rule_action") {} + + }; + + // C++ wrapper for rule_condition + struct rule_condition : atomic_formula, ObjectHelper { rule_condition() : Object("rule_condition") {} + + }; + + // C++ wrapper for rule_set + struct rule_set : rule_software_definition, ObjectHelper { rule_set() : Object("rule_set") {} + + }; + + // C++ wrapper for rule_set_group + struct rule_set_group : rule_software_definition, ObjectHelper { rule_set_group() : Object("rule_set_group") {} + + }; + + // C++ wrapper for rule_superseded_assignment + struct rule_superseded_assignment : action_assignment, ObjectHelper { rule_superseded_assignment() : Object("rule_superseded_assignment") {} + ListOf< rule_superseded_item, 1, 0 >::Out items; + }; + + // C++ wrapper for rule_supersedence + struct rule_supersedence : rule_action, ObjectHelper { rule_supersedence() : Object("rule_supersedence") {} + + }; + + // C++ wrapper for surface_curve_swept_area_solid + struct surface_curve_swept_area_solid : swept_area_solid, ObjectHelper { surface_curve_swept_area_solid() : Object("surface_curve_swept_area_solid") {} + Lazy< curve > directrix; + REAL::Out start_param; + REAL::Out end_param; + Lazy< surface > reference_surface; + }; + + // C++ wrapper for ruled_surface_swept_area_solid + struct ruled_surface_swept_area_solid : surface_curve_swept_area_solid, ObjectHelper { ruled_surface_swept_area_solid() : Object("ruled_surface_swept_area_solid") {} + + }; + + // C++ wrapper for runout_zone_definition + struct runout_zone_definition : tolerance_zone_definition, ObjectHelper { runout_zone_definition() : Object("runout_zone_definition") {} + Lazy< runout_zone_orientation > orientation; + }; + + // C++ wrapper for runout_zone_orientation + struct runout_zone_orientation : ObjectHelper { runout_zone_orientation() : Object("runout_zone_orientation") {} + Lazy< measure_with_unit > angle; + }; + + // C++ wrapper for runout_zone_orientation_reference_direction + struct runout_zone_orientation_reference_direction : runout_zone_orientation, ObjectHelper { runout_zone_orientation_reference_direction() : Object("runout_zone_orientation_reference_direction") {} + Lazy< shape_aspect_relationship > orientation_defining_relationship; + }; + + // C++ wrapper for satisfied_requirement + struct satisfied_requirement : group_assignment, ObjectHelper { satisfied_requirement() : Object("satisfied_requirement") {} + ListOf< Lazy< product_definition >, 1, 1 > items; + }; + + // C++ wrapper for satisfies_requirement + struct satisfies_requirement : group, ObjectHelper { satisfies_requirement() : Object("satisfies_requirement") {} + + }; + + // C++ wrapper for satisfying_item + struct satisfying_item : group_assignment, ObjectHelper { satisfying_item() : Object("satisfying_item") {} + ListOf< requirement_satisfaction_item, 1, 1 >::Out items; + }; + + // C++ wrapper for scalar_variable + struct scalar_variable : abstract_variable, ObjectHelper { scalar_variable() : Object("scalar_variable") {} + + }; + + // C++ wrapper for scattering_parameter + struct scattering_parameter : polar_complex_number_literal, ObjectHelper { scattering_parameter() : Object("scattering_parameter") {} + + }; + + // C++ wrapper for sculptured_solid + struct sculptured_solid : modified_solid, ObjectHelper { sculptured_solid() : Object("sculptured_solid") {} + generalized_surface_select::Out sculpturing_element; + BOOLEAN::Out positive_side; + }; + + // C++ wrapper for seam_curve + struct seam_curve : surface_curve, ObjectHelper { seam_curve() : Object("seam_curve") {} + + }; + + // C++ wrapper for serial_numbered_effectivity + struct serial_numbered_effectivity : effectivity, ObjectHelper { serial_numbered_effectivity() : Object("serial_numbered_effectivity") {} + identifier::Out effectivity_start_id; + Maybe< identifier::Out > effectivity_end_id; + }; + + // C++ wrapper for shape_aspect_associativity + struct shape_aspect_associativity : shape_aspect_relationship, ObjectHelper { shape_aspect_associativity() : Object("shape_aspect_associativity") {} + + }; + + // C++ wrapper for shape_aspect_deriving_relationship + struct shape_aspect_deriving_relationship : shape_aspect_relationship, ObjectHelper { shape_aspect_deriving_relationship() : Object("shape_aspect_deriving_relationship") {} + + }; + + // C++ wrapper for shape_definition_representation + struct shape_definition_representation : property_definition_representation, ObjectHelper { shape_definition_representation() : Object("shape_definition_representation") {} + + }; + + // C++ wrapper for shape_dimension_representation + struct shape_dimension_representation : shape_representation, ObjectHelper { shape_dimension_representation() : Object("shape_dimension_representation") {} + + }; + + // C++ wrapper for shape_feature_definition + struct shape_feature_definition : characterized_object, ObjectHelper { shape_feature_definition() : Object("shape_feature_definition") {} + + }; + + // C++ wrapper for shape_representation_with_parameters + struct shape_representation_with_parameters : shape_representation, ObjectHelper { shape_representation_with_parameters() : Object("shape_representation_with_parameters") {} + + }; + + // C++ wrapper for shell_based_surface_model + struct shell_based_surface_model : geometric_representation_item, ObjectHelper { shell_based_surface_model() : Object("shell_based_surface_model") {} + ListOf< shell, 1, 0 >::Out sbsm_boundary; + }; + + // C++ wrapper for shell_based_wireframe_model + struct shell_based_wireframe_model : geometric_representation_item, ObjectHelper { shell_based_wireframe_model() : Object("shell_based_wireframe_model") {} + ListOf< shell, 1, 0 >::Out sbwm_boundary; + }; + + // C++ wrapper for shell_based_wireframe_shape_representation + struct shell_based_wireframe_shape_representation : shape_representation, ObjectHelper { shell_based_wireframe_shape_representation() : Object("shell_based_wireframe_shape_representation") {} + + }; + + // C++ wrapper for si_absorbed_dose_unit + struct si_absorbed_dose_unit : ObjectHelper { si_absorbed_dose_unit() : Object("si_absorbed_dose_unit") {} + + }; + + // C++ wrapper for si_capacitance_unit + struct si_capacitance_unit : ObjectHelper { si_capacitance_unit() : Object("si_capacitance_unit") {} + + }; + + // C++ wrapper for si_conductance_unit + struct si_conductance_unit : ObjectHelper { si_conductance_unit() : Object("si_conductance_unit") {} + + }; + + // C++ wrapper for si_dose_equivalent_unit + struct si_dose_equivalent_unit : ObjectHelper { si_dose_equivalent_unit() : Object("si_dose_equivalent_unit") {} + + }; + + // C++ wrapper for si_electric_charge_unit + struct si_electric_charge_unit : ObjectHelper { si_electric_charge_unit() : Object("si_electric_charge_unit") {} + + }; + + // C++ wrapper for si_electric_potential_unit + struct si_electric_potential_unit : ObjectHelper { si_electric_potential_unit() : Object("si_electric_potential_unit") {} + + }; + + // C++ wrapper for si_energy_unit + struct si_energy_unit : ObjectHelper { si_energy_unit() : Object("si_energy_unit") {} + + }; + + // C++ wrapper for si_force_unit + struct si_force_unit : ObjectHelper { si_force_unit() : Object("si_force_unit") {} + + }; + + // C++ wrapper for si_frequency_unit + struct si_frequency_unit : ObjectHelper { si_frequency_unit() : Object("si_frequency_unit") {} + + }; + + // C++ wrapper for si_illuminance_unit + struct si_illuminance_unit : ObjectHelper { si_illuminance_unit() : Object("si_illuminance_unit") {} + + }; + + // C++ wrapper for si_inductance_unit + struct si_inductance_unit : ObjectHelper { si_inductance_unit() : Object("si_inductance_unit") {} + + }; + + // C++ wrapper for si_magnetic_flux_density_unit + struct si_magnetic_flux_density_unit : ObjectHelper { si_magnetic_flux_density_unit() : Object("si_magnetic_flux_density_unit") {} + + }; + + // C++ wrapper for si_magnetic_flux_unit + struct si_magnetic_flux_unit : ObjectHelper { si_magnetic_flux_unit() : Object("si_magnetic_flux_unit") {} + + }; + + // C++ wrapper for si_power_unit + struct si_power_unit : ObjectHelper { si_power_unit() : Object("si_power_unit") {} + + }; + + // C++ wrapper for si_pressure_unit + struct si_pressure_unit : ObjectHelper { si_pressure_unit() : Object("si_pressure_unit") {} + + }; + + // C++ wrapper for si_radioactivity_unit + struct si_radioactivity_unit : ObjectHelper { si_radioactivity_unit() : Object("si_radioactivity_unit") {} + + }; + + // C++ wrapper for si_resistance_unit + struct si_resistance_unit : ObjectHelper { si_resistance_unit() : Object("si_resistance_unit") {} + + }; + + // C++ wrapper for si_unit + struct si_unit : named_unit, ObjectHelper { si_unit() : Object("si_unit") {} + Maybe< si_prefix::Out > prefix; + si_unit_name::Out name; + }; + + // C++ wrapper for simple_boolean_expression + struct simple_boolean_expression : ObjectHelper { simple_boolean_expression() : Object("simple_boolean_expression") {} + + }; + + // C++ wrapper for simple_numeric_expression + struct simple_numeric_expression : ObjectHelper { simple_numeric_expression() : Object("simple_numeric_expression") {} + + }; + + // C++ wrapper for slash_expression + struct slash_expression : binary_numeric_expression, ObjectHelper { slash_expression() : Object("slash_expression") {} + + }; + + // C++ wrapper for smeared_material_definition + struct smeared_material_definition : zone_structural_makeup, ObjectHelper { smeared_material_definition() : Object("smeared_material_definition") {} + + }; + + // C++ wrapper for solid_angle_measure_with_unit + struct solid_angle_measure_with_unit : measure_with_unit, ObjectHelper { solid_angle_measure_with_unit() : Object("solid_angle_measure_with_unit") {} + + }; + + // C++ wrapper for solid_angle_unit + struct solid_angle_unit : named_unit, ObjectHelper { solid_angle_unit() : Object("solid_angle_unit") {} + + }; + + // C++ wrapper for solid_curve_font + struct solid_curve_font : pre_defined_curve_font, ObjectHelper { solid_curve_font() : Object("solid_curve_font") {} + + }; + + // C++ wrapper for solid_replica + struct solid_replica : solid_model, ObjectHelper { solid_replica() : Object("solid_replica") {} + Lazy< solid_model > parent_solid; + Lazy< cartesian_transformation_operator_3d > transformation; + }; + + // C++ wrapper for solid_with_chamfered_edges + struct solid_with_chamfered_edges : edge_blended_solid, ObjectHelper { solid_with_chamfered_edges() : Object("solid_with_chamfered_edges") {} + + }; + + // C++ wrapper for solid_with_angle_based_chamfer + struct solid_with_angle_based_chamfer : solid_with_chamfered_edges, ObjectHelper { solid_with_angle_based_chamfer() : Object("solid_with_angle_based_chamfer") {} + positive_length_measure::Out offset_distance; + BOOLEAN::Out left_offset; + positive_plane_angle_measure::Out offset_angle; + }; + + // C++ wrapper for solid_with_shape_element_pattern + struct solid_with_shape_element_pattern : modified_solid_with_placed_configuration, ObjectHelper { solid_with_shape_element_pattern() : Object("solid_with_shape_element_pattern") {} + Lazy< modified_solid_with_placed_configuration > replicated_element; + }; + + // C++ wrapper for solid_with_circular_pattern + struct solid_with_circular_pattern : solid_with_shape_element_pattern, ObjectHelper { solid_with_circular_pattern() : Object("solid_with_circular_pattern") {} + positive_integer::Out replicate_count; + plane_angle_measure::Out angular_spacing; + BOOLEAN::Out radial_alignment; + Lazy< point > reference_point; + }; + + // C++ wrapper for solid_with_depression + struct solid_with_depression : modified_solid_with_placed_configuration, ObjectHelper { solid_with_depression() : Object("solid_with_depression") {} + positive_length_measure::Out depth; + }; + + // C++ wrapper for solid_with_pocket + struct solid_with_pocket : solid_with_depression, ObjectHelper { solid_with_pocket() : Object("solid_with_pocket") {} + non_negative_length_measure::Out floor_blend_radius; + plane_angle_measure::Out draft_angle; + }; + + // C++ wrapper for solid_with_circular_pocket + struct solid_with_circular_pocket : solid_with_pocket, ObjectHelper { solid_with_circular_pocket() : Object("solid_with_circular_pocket") {} + positive_length_measure::Out pocket_radius; + }; + + // C++ wrapper for solid_with_protrusion + struct solid_with_protrusion : modified_solid_with_placed_configuration, ObjectHelper { solid_with_protrusion() : Object("solid_with_protrusion") {} + positive_length_measure::Out protrusion_height; + plane_angle_measure::Out protrusion_draft_angle; + }; + + // C++ wrapper for solid_with_circular_protrusion + struct solid_with_circular_protrusion : solid_with_protrusion, ObjectHelper { solid_with_circular_protrusion() : Object("solid_with_circular_protrusion") {} + positive_length_measure::Out protrusion_radius; + }; + + // C++ wrapper for solid_with_hole + struct solid_with_hole : solid_with_depression, ObjectHelper { solid_with_hole() : Object("solid_with_hole") {} + + }; + + // C++ wrapper for solid_with_stepped_round_hole + struct solid_with_stepped_round_hole : solid_with_hole, ObjectHelper { solid_with_stepped_round_hole() : Object("solid_with_stepped_round_hole") {} + positive_integer::Out segments; + }; + + // C++ wrapper for solid_with_conical_bottom_round_hole + struct solid_with_conical_bottom_round_hole : solid_with_stepped_round_hole, ObjectHelper { solid_with_conical_bottom_round_hole() : Object("solid_with_conical_bottom_round_hole") {} + positive_plane_angle_measure::Out semi_apex_angle; + non_negative_length_measure::Out tip_radius; + }; + + // C++ wrapper for solid_with_constant_radius_edge_blend + struct solid_with_constant_radius_edge_blend : edge_blended_solid, ObjectHelper { solid_with_constant_radius_edge_blend() : Object("solid_with_constant_radius_edge_blend") {} + positive_length_measure::Out radius; + }; + + // C++ wrapper for solid_with_slot + struct solid_with_slot : solid_with_depression, ObjectHelper { solid_with_slot() : Object("solid_with_slot") {} + positive_length_measure::Out slot_width; + ListOf< LOGICAL, 2, 2 >::Out closed_ends; + }; + + // C++ wrapper for solid_with_curved_slot + struct solid_with_curved_slot : solid_with_slot, ObjectHelper { solid_with_curved_slot() : Object("solid_with_curved_slot") {} + Lazy< bounded_curve > slot_centreline; + }; + + // C++ wrapper for solid_with_double_offset_chamfer + struct solid_with_double_offset_chamfer : solid_with_chamfered_edges, ObjectHelper { solid_with_double_offset_chamfer() : Object("solid_with_double_offset_chamfer") {} + positive_length_measure::Out left_offset_distance; + positive_length_measure::Out right_offset_distance; + }; + + // C++ wrapper for solid_with_flat_bottom_round_hole + struct solid_with_flat_bottom_round_hole : solid_with_stepped_round_hole, ObjectHelper { solid_with_flat_bottom_round_hole() : Object("solid_with_flat_bottom_round_hole") {} + non_negative_length_measure::Out fillet_radius; + }; + + // C++ wrapper for solid_with_general_pocket + struct solid_with_general_pocket : solid_with_pocket, ObjectHelper { solid_with_general_pocket() : Object("solid_with_general_pocket") {} + Lazy< positioned_sketch > profile; + Lazy< point > reference_point; + }; + + // C++ wrapper for solid_with_general_protrusion + struct solid_with_general_protrusion : solid_with_protrusion, ObjectHelper { solid_with_general_protrusion() : Object("solid_with_general_protrusion") {} + Lazy< positioned_sketch > profile; + Lazy< point > reference_point; + }; + + // C++ wrapper for solid_with_groove + struct solid_with_groove : solid_with_depression, ObjectHelper { solid_with_groove() : Object("solid_with_groove") {} + positive_length_measure::Out groove_radius; + positive_length_measure::Out groove_width; + plane_angle_measure::Out draft_angle; + non_negative_length_measure::Out floor_fillet_radius; + BOOLEAN::Out external_groove; + }; + + // C++ wrapper for solid_with_incomplete_circular_pattern + struct solid_with_incomplete_circular_pattern : solid_with_circular_pattern, ObjectHelper { solid_with_incomplete_circular_pattern() : Object("solid_with_incomplete_circular_pattern") {} + ListOf< positive_integer, 1, 0 >::Out omitted_instances; + }; + + // C++ wrapper for solid_with_rectangular_pattern + struct solid_with_rectangular_pattern : solid_with_shape_element_pattern, ObjectHelper { solid_with_rectangular_pattern() : Object("solid_with_rectangular_pattern") {} + positive_integer::Out row_count; + positive_integer::Out column_count; + length_measure::Out row_spacing; + length_measure::Out column_spacing; + }; + + // C++ wrapper for solid_with_incomplete_rectangular_pattern + struct solid_with_incomplete_rectangular_pattern : solid_with_rectangular_pattern, ObjectHelper { solid_with_incomplete_rectangular_pattern() : Object("solid_with_incomplete_rectangular_pattern") {} + + }; + + // C++ wrapper for solid_with_rectangular_pocket + struct solid_with_rectangular_pocket : solid_with_pocket, ObjectHelper { solid_with_rectangular_pocket() : Object("solid_with_rectangular_pocket") {} + positive_length_measure::Out pocket_length; + positive_length_measure::Out pocket_width; + non_negative_length_measure::Out corner_radius; + }; + + // C++ wrapper for solid_with_rectangular_protrusion + struct solid_with_rectangular_protrusion : solid_with_protrusion, ObjectHelper { solid_with_rectangular_protrusion() : Object("solid_with_rectangular_protrusion") {} + positive_length_measure::Out protrusion_length; + positive_length_measure::Out protrusion_width; + non_negative_length_measure::Out protrusion_corner_radius; + }; + + // C++ wrapper for solid_with_single_offset_chamfer + struct solid_with_single_offset_chamfer : solid_with_chamfered_edges, ObjectHelper { solid_with_single_offset_chamfer() : Object("solid_with_single_offset_chamfer") {} + positive_length_measure::Out offset_distance; + }; + + // C++ wrapper for solid_with_spherical_bottom_round_hole + struct solid_with_spherical_bottom_round_hole : solid_with_stepped_round_hole, ObjectHelper { solid_with_spherical_bottom_round_hole() : Object("solid_with_spherical_bottom_round_hole") {} + positive_length_measure::Out sphere_radius; + }; + + // C++ wrapper for solid_with_stepped_round_hole_and_conical_transitions + struct solid_with_stepped_round_hole_and_conical_transitions : solid_with_stepped_round_hole, ObjectHelper { solid_with_stepped_round_hole_and_conical_transitions() : Object("solid_with_stepped_round_hole_and_conical_transitions") {} + ListOf< Lazy< conical_stepped_hole_transition >, 1, 0 > conical_transitions; + }; + + // C++ wrapper for solid_with_straight_slot + struct solid_with_straight_slot : solid_with_slot, ObjectHelper { solid_with_straight_slot() : Object("solid_with_straight_slot") {} + positive_length_measure::Out slot_length; + }; + + // C++ wrapper for solid_with_tee_section_slot + struct solid_with_tee_section_slot : solid_with_slot, ObjectHelper { solid_with_tee_section_slot() : Object("solid_with_tee_section_slot") {} + positive_length_measure::Out tee_section_width; + positive_length_measure::Out collar_depth; + }; + + // C++ wrapper for solid_with_through_depression + struct solid_with_through_depression : solid_with_depression, ObjectHelper { solid_with_through_depression() : Object("solid_with_through_depression") {} + ListOf< Lazy< face_surface >, 1, 0 > exit_faces; + }; + + // C++ wrapper for solid_with_trapezoidal_section_slot + struct solid_with_trapezoidal_section_slot : solid_with_slot, ObjectHelper { solid_with_trapezoidal_section_slot() : Object("solid_with_trapezoidal_section_slot") {} + plane_angle_measure::Out draft_angle; + non_negative_length_measure::Out floor_fillet_radius; + }; + + // C++ wrapper for solid_with_variable_radius_edge_blend + struct solid_with_variable_radius_edge_blend : ObjectHelper { solid_with_variable_radius_edge_blend() : Object("solid_with_variable_radius_edge_blend") {} + ListOf< Lazy< point >, 2, 0 > point_list; + ListOf< positive_length_measure, 2, 0 >::Out radius_list; + ListOf< blend_radius_variation_type, 1, 0 >::Out edge_function_list; + }; + + // C++ wrapper for source_for_requirement + struct source_for_requirement : group_assignment, ObjectHelper { source_for_requirement() : Object("source_for_requirement") {} + ListOf< requirement_source_item, 1, 1 >::Out items; + }; + + // C++ wrapper for sourced_requirement + struct sourced_requirement : group_assignment, ObjectHelper { sourced_requirement() : Object("sourced_requirement") {} + ListOf< Lazy< product_definition >, 1, 1 > items; + }; + + // C++ wrapper for specification_definition + struct specification_definition : product_definition, ObjectHelper { specification_definition() : Object("specification_definition") {} + + }; + + // C++ wrapper for specified_higher_usage_occurrence + struct specified_higher_usage_occurrence : assembly_component_usage, ObjectHelper { specified_higher_usage_occurrence() : Object("specified_higher_usage_occurrence") {} + Lazy< assembly_component_usage > upper_usage; + Lazy< next_assembly_usage_occurrence > next_usage; + }; + + // C++ wrapper for sphere + struct sphere : geometric_representation_item, ObjectHelper { sphere() : Object("sphere") {} + positive_length_measure::Out radius; + Lazy< point > centre; + }; + + // C++ wrapper for spherical_surface + struct spherical_surface : elementary_surface, ObjectHelper { spherical_surface() : Object("spherical_surface") {} + positive_length_measure::Out radius; + }; + + // C++ wrapper for start_request + struct start_request : action_request_assignment, ObjectHelper { start_request() : Object("start_request") {} + ListOf< start_request_item, 1, 0 >::Out items; + }; + + // C++ wrapper for start_work + struct start_work : action_assignment, ObjectHelper { start_work() : Object("start_work") {} + ListOf< work_item, 1, 0 >::Out items; + }; + + // C++ wrapper for straightness_tolerance + struct straightness_tolerance : geometric_tolerance, ObjectHelper { straightness_tolerance() : Object("straightness_tolerance") {} + + }; + + // C++ wrapper for structured_dimension_callout + struct structured_dimension_callout : draughting_callout, ObjectHelper { structured_dimension_callout() : Object("structured_dimension_callout") {} + + }; + + // C++ wrapper for structured_text_composition + struct structured_text_composition : compound_representation_item, ObjectHelper { structured_text_composition() : Object("structured_text_composition") {} + + }; + + // C++ wrapper for structured_text_representation + struct structured_text_representation : representation, ObjectHelper { structured_text_representation() : Object("structured_text_representation") {} + + }; + + // C++ wrapper for subedge + struct subedge : edge, ObjectHelper { subedge() : Object("subedge") {} + Lazy< edge > parent_edge; + }; + + // C++ wrapper for subface + struct subface : face, ObjectHelper { subface() : Object("subface") {} + Lazy< face > parent_face; + }; + + // C++ wrapper for supplied_part_relationship + struct supplied_part_relationship : product_definition_relationship, ObjectHelper { supplied_part_relationship() : Object("supplied_part_relationship") {} + + }; + + // C++ wrapper for surface_condition_callout + struct surface_condition_callout : draughting_callout, ObjectHelper { surface_condition_callout() : Object("surface_condition_callout") {} + + }; + + // C++ wrapper for swept_surface + struct swept_surface : surface, ObjectHelper { swept_surface() : Object("swept_surface") {} + Lazy< curve > swept_curve; + }; + + // C++ wrapper for surface_of_linear_extrusion + struct surface_of_linear_extrusion : swept_surface, ObjectHelper { surface_of_linear_extrusion() : Object("surface_of_linear_extrusion") {} + Lazy< vector > extrusion_axis; + }; + + // C++ wrapper for surface_of_revolution + struct surface_of_revolution : swept_surface, ObjectHelper { surface_of_revolution() : Object("surface_of_revolution") {} + Lazy< axis1_placement > axis_position; + }; + + // C++ wrapper for surface_patch + struct surface_patch : founded_item, ObjectHelper { surface_patch() : Object("surface_patch") {} + Lazy< bounded_surface > parent_surface; + transition_code::Out u_transition; + transition_code::Out v_transition; + BOOLEAN::Out u_sense; + BOOLEAN::Out v_sense; + }; + + // C++ wrapper for surface_profile_tolerance + struct surface_profile_tolerance : geometric_tolerance, ObjectHelper { surface_profile_tolerance() : Object("surface_profile_tolerance") {} + + }; + + // C++ wrapper for surface_replica + struct surface_replica : surface, ObjectHelper { surface_replica() : Object("surface_replica") {} + Lazy< surface > parent_surface; + Lazy< cartesian_transformation_operator_3d > transformation; + }; + + // C++ wrapper for surface_side_style + struct surface_side_style : founded_item, ObjectHelper { surface_side_style() : Object("surface_side_style") {} + label::Out name; + ListOf< surface_style_element_select, 1, 7 >::Out styles; + }; + + // C++ wrapper for surface_style_boundary + struct surface_style_boundary : founded_item, ObjectHelper { surface_style_boundary() : Object("surface_style_boundary") {} + curve_or_render::Out style_of_boundary; + }; + + // C++ wrapper for surface_style_control_grid + struct surface_style_control_grid : founded_item, ObjectHelper { surface_style_control_grid() : Object("surface_style_control_grid") {} + curve_or_render::Out style_of_control_grid; + }; + + // C++ wrapper for surface_style_fill_area + struct surface_style_fill_area : founded_item, ObjectHelper { surface_style_fill_area() : Object("surface_style_fill_area") {} + Lazy< fill_area_style > fill_area; + }; + + // C++ wrapper for surface_style_parameter_line + struct surface_style_parameter_line : founded_item, ObjectHelper { surface_style_parameter_line() : Object("surface_style_parameter_line") {} + curve_or_render::Out style_of_parameter_lines; + ListOf< direction_count_select, 1, 2 >::Out direction_counts; + }; + + // C++ wrapper for surface_style_reflectance_ambient + struct surface_style_reflectance_ambient : ObjectHelper { surface_style_reflectance_ambient() : Object("surface_style_reflectance_ambient") {} + REAL::Out ambient_reflectance; + }; + + // C++ wrapper for surface_style_reflectance_ambient_diffuse + struct surface_style_reflectance_ambient_diffuse : surface_style_reflectance_ambient, ObjectHelper { surface_style_reflectance_ambient_diffuse() : Object("surface_style_reflectance_ambient_diffuse") {} + REAL::Out diffuse_reflectance; + }; + + // C++ wrapper for surface_style_reflectance_ambient_diffuse_specular + struct surface_style_reflectance_ambient_diffuse_specular : surface_style_reflectance_ambient_diffuse, ObjectHelper { surface_style_reflectance_ambient_diffuse_specular() : Object("surface_style_reflectance_ambient_diffuse_specular") {} + REAL::Out specular_reflectance; + REAL::Out specular_exponent; + Lazy< colour > specular_colour; + }; + + // C++ wrapper for surface_style_rendering + struct surface_style_rendering : ObjectHelper { surface_style_rendering() : Object("surface_style_rendering") {} + shading_surface_method::Out rendering_method; + Lazy< colour > surface_colour; + }; + + // C++ wrapper for surface_style_rendering_with_properties + struct surface_style_rendering_with_properties : surface_style_rendering, ObjectHelper { surface_style_rendering_with_properties() : Object("surface_style_rendering_with_properties") {} + ListOf< rendering_properties_select, 1, 2 >::Out properties; + }; + + // C++ wrapper for surface_style_segmentation_curve + struct surface_style_segmentation_curve : founded_item, ObjectHelper { surface_style_segmentation_curve() : Object("surface_style_segmentation_curve") {} + curve_or_render::Out style_of_segmentation_curve; + }; + + // C++ wrapper for surface_style_silhouette + struct surface_style_silhouette : founded_item, ObjectHelper { surface_style_silhouette() : Object("surface_style_silhouette") {} + curve_or_render::Out style_of_silhouette; + }; + + // C++ wrapper for surface_style_usage + struct surface_style_usage : founded_item, ObjectHelper { surface_style_usage() : Object("surface_style_usage") {} + surface_side::Out side; + surface_side_style_select::Out style; + }; + + // C++ wrapper for surface_texture_representation + struct surface_texture_representation : representation, ObjectHelper { surface_texture_representation() : Object("surface_texture_representation") {} + + }; + + // C++ wrapper for surfaced_open_shell + struct surfaced_open_shell : open_shell, ObjectHelper { surfaced_open_shell() : Object("surfaced_open_shell") {} + + }; + + // C++ wrapper for swept_disk_solid + struct swept_disk_solid : solid_model, ObjectHelper { swept_disk_solid() : Object("swept_disk_solid") {} + Lazy< curve > directrix; + positive_length_measure::Out radius; + Maybe< positive_length_measure::Out > inner_radius; + REAL::Out start_param; + REAL::Out end_param; + }; + + // C++ wrapper for symbol + struct symbol : representation_item, ObjectHelper { symbol() : Object("symbol") {} + + }; + + // C++ wrapper for symbol_representation_map + struct symbol_representation_map : representation_map, ObjectHelper { symbol_representation_map() : Object("symbol_representation_map") {} + + }; + + // C++ wrapper for symbol_style + struct symbol_style : founded_item, ObjectHelper { symbol_style() : Object("symbol_style") {} + label::Out name; + symbol_style_select::Out style_of_symbol; + }; + + // C++ wrapper for symbol_target + struct symbol_target : geometric_representation_item, ObjectHelper { symbol_target() : Object("symbol_target") {} + axis2_placement::Out placement; + positive_ratio_measure::Out x_scale; + positive_ratio_measure::Out y_scale; + }; + + // C++ wrapper for symmetric_shape_aspect + struct symmetric_shape_aspect : shape_aspect, ObjectHelper { symmetric_shape_aspect() : Object("symmetric_shape_aspect") {} + + }; + + // C++ wrapper for symmetry_tolerance + struct symmetry_tolerance : geometric_tolerance_with_datum_reference, ObjectHelper { symmetry_tolerance() : Object("symmetry_tolerance") {} + + }; + + // C++ wrapper for table_representation_item + struct table_representation_item : compound_representation_item, ObjectHelper { table_representation_item() : Object("table_representation_item") {} + + }; + + // C++ wrapper for tactile_appearance_representation + struct tactile_appearance_representation : representation, ObjectHelper { tactile_appearance_representation() : Object("tactile_appearance_representation") {} + + }; + + // C++ wrapper for tagged_text_format + struct tagged_text_format : representation_context, ObjectHelper { tagged_text_format() : Object("tagged_text_format") {} + + }; + + // C++ wrapper for tagged_text_item + struct tagged_text_item : descriptive_representation_item, ObjectHelper { tagged_text_item() : Object("tagged_text_item") {} + + }; + + // C++ wrapper for tangent + struct tangent : derived_shape_aspect, ObjectHelper { tangent() : Object("tangent") {} + + }; + + // C++ wrapper for text_literal_with_associated_curves + struct text_literal_with_associated_curves : text_literal, ObjectHelper { text_literal_with_associated_curves() : Object("text_literal_with_associated_curves") {} + ListOf< Lazy< curve >, 1, 0 > associated_curves; + }; + + // C++ wrapper for text_literal_with_blanking_box + struct text_literal_with_blanking_box : text_literal, ObjectHelper { text_literal_with_blanking_box() : Object("text_literal_with_blanking_box") {} + Lazy< planar_box > blanking; + }; + + // C++ wrapper for text_literal_with_extent + struct text_literal_with_extent : text_literal, ObjectHelper { text_literal_with_extent() : Object("text_literal_with_extent") {} + Lazy< planar_extent > extent; + }; + + // C++ wrapper for text_string_representation + struct text_string_representation : representation, ObjectHelper { text_string_representation() : Object("text_string_representation") {} + + }; + + // C++ wrapper for text_style + struct text_style : founded_item, ObjectHelper { text_style() : Object("text_style") {} + label::Out name; + character_style_select::Out character_appearance; + }; + + // C++ wrapper for text_style_with_box_characteristics + struct text_style_with_box_characteristics : text_style, ObjectHelper { text_style_with_box_characteristics() : Object("text_style_with_box_characteristics") {} + ListOf< box_characteristic_select, 1, 4 >::Out characteristics; + }; + + // C++ wrapper for text_style_with_mirror + struct text_style_with_mirror : text_style, ObjectHelper { text_style_with_mirror() : Object("text_style_with_mirror") {} + axis2_placement::Out mirror_placement; + }; + + // C++ wrapper for text_style_with_spacing + struct text_style_with_spacing : text_style, ObjectHelper { text_style_with_spacing() : Object("text_style_with_spacing") {} + character_spacing_select::Out character_spacing; + }; + + // C++ wrapper for thermal_resistance_measure_with_unit + struct thermal_resistance_measure_with_unit : measure_with_unit, ObjectHelper { thermal_resistance_measure_with_unit() : Object("thermal_resistance_measure_with_unit") {} + + }; + + // C++ wrapper for thermal_resistance_unit + struct thermal_resistance_unit : derived_unit, ObjectHelper { thermal_resistance_unit() : Object("thermal_resistance_unit") {} + + }; + + // C++ wrapper for thermodynamic_temperature_measure_with_unit + struct thermodynamic_temperature_measure_with_unit : measure_with_unit, ObjectHelper { thermodynamic_temperature_measure_with_unit() : Object("thermodynamic_temperature_measure_with_unit") {} + + }; + + // C++ wrapper for thermodynamic_temperature_unit + struct thermodynamic_temperature_unit : named_unit, ObjectHelper { thermodynamic_temperature_unit() : Object("thermodynamic_temperature_unit") {} + + }; + + // C++ wrapper for thickened_face_solid + struct thickened_face_solid : solid_model, ObjectHelper { thickened_face_solid() : Object("thickened_face_solid") {} + generalized_surface_select::Out base_element; + length_measure::Out offset1; + length_measure::Out offset2; + }; + + // C++ wrapper for thickness_laminate_definition + struct thickness_laminate_definition : product_definition, ObjectHelper { thickness_laminate_definition() : Object("thickness_laminate_definition") {} + + }; + + // C++ wrapper for thickness_laminate_table + struct thickness_laminate_table : zone_structural_makeup, ObjectHelper { thickness_laminate_table() : Object("thickness_laminate_table") {} + + }; + + // C++ wrapper for time_interval + struct time_interval : ObjectHelper { time_interval() : Object("time_interval") {} + identifier::Out id; + label::Out name; + Maybe< text::Out > description; + }; + + // C++ wrapper for time_interval_based_effectivity + struct time_interval_based_effectivity : effectivity, ObjectHelper { time_interval_based_effectivity() : Object("time_interval_based_effectivity") {} + Lazy< time_interval > effectivity_period; + }; + + // C++ wrapper for time_interval_with_bounds + struct time_interval_with_bounds : time_interval, ObjectHelper { time_interval_with_bounds() : Object("time_interval_with_bounds") {} + Maybe< date_time_or_event_occurrence::Out > primary_bound; + Maybe< date_time_or_event_occurrence::Out > secondary_bound; + Maybe< Lazy< time_measure_with_unit > > duration; + }; + + // C++ wrapper for time_measure_with_unit + struct time_measure_with_unit : measure_with_unit, ObjectHelper { time_measure_with_unit() : Object("time_measure_with_unit") {} + + }; + + // C++ wrapper for time_unit + struct time_unit : named_unit, ObjectHelper { time_unit() : Object("time_unit") {} + + }; + + // C++ wrapper for tolerance_zone + struct tolerance_zone : shape_aspect, ObjectHelper { tolerance_zone() : Object("tolerance_zone") {} + ListOf< Lazy< geometric_tolerance >, 1, 0 > defining_tolerance; + Lazy< NotImplemented > form; + }; + + // C++ wrapper for torus + struct torus : geometric_representation_item, ObjectHelper { torus() : Object("torus") {} + Lazy< axis1_placement > position; + positive_length_measure::Out major_radius; + positive_length_measure::Out minor_radius; + }; + + // C++ wrapper for total_runout_tolerance + struct total_runout_tolerance : geometric_tolerance_with_datum_reference, ObjectHelper { total_runout_tolerance() : Object("total_runout_tolerance") {} + + }; + + // C++ wrapper for track_blended_solid + struct track_blended_solid : edge_blended_solid, ObjectHelper { track_blended_solid() : Object("track_blended_solid") {} + + }; + + // C++ wrapper for track_blended_solid_with_end_conditions + struct track_blended_solid_with_end_conditions : track_blended_solid, ObjectHelper { track_blended_solid_with_end_conditions() : Object("track_blended_solid_with_end_conditions") {} + ListOf< blend_end_condition_select, 2, 2 >::Out end_conditions; + }; + + // C++ wrapper for trimmed_curve + struct trimmed_curve : bounded_curve, ObjectHelper { trimmed_curve() : Object("trimmed_curve") {} + Lazy< curve > basis_curve; + ListOf< trimming_select, 1, 2 >::Out trim_1; + ListOf< trimming_select, 1, 2 >::Out trim_2; + BOOLEAN::Out sense_agreement; + trimming_preference::Out master_representation; + }; + + // C++ wrapper for two_direction_repeat_factor + struct two_direction_repeat_factor : one_direction_repeat_factor, ObjectHelper { two_direction_repeat_factor() : Object("two_direction_repeat_factor") {} + Lazy< vector > second_repeat_factor; + }; + + // C++ wrapper for unary_generic_expression + struct unary_generic_expression : generic_expression, ObjectHelper { unary_generic_expression() : Object("unary_generic_expression") {} + Lazy< generic_expression > operand; + }; + + // C++ wrapper for unary_numeric_expression + struct unary_numeric_expression : ObjectHelper { unary_numeric_expression() : Object("unary_numeric_expression") {} + + }; + + // C++ wrapper for uncertainty_assigned_representation + struct uncertainty_assigned_representation : representation, ObjectHelper { uncertainty_assigned_representation() : Object("uncertainty_assigned_representation") {} + ListOf< Lazy< uncertainty_measure_with_unit >, 1, 0 > uncertainty; + }; + + // C++ wrapper for uncertainty_measure_with_unit + struct uncertainty_measure_with_unit : measure_with_unit, ObjectHelper { uncertainty_measure_with_unit() : Object("uncertainty_measure_with_unit") {} + label::Out name; + Maybe< text::Out > description; + }; + + // C++ wrapper for uniform_curve + struct uniform_curve : b_spline_curve, ObjectHelper { uniform_curve() : Object("uniform_curve") {} + + }; + + // C++ wrapper for uniform_resource_identifier + struct uniform_resource_identifier : descriptive_representation_item, ObjectHelper { uniform_resource_identifier() : Object("uniform_resource_identifier") {} + + }; + + // C++ wrapper for uniform_surface + struct uniform_surface : b_spline_surface, ObjectHelper { uniform_surface() : Object("uniform_surface") {} + + }; + + // C++ wrapper for usage_association + struct usage_association : action_method_relationship, ObjectHelper { usage_association() : Object("usage_association") {} + + }; + + // C++ wrapper for user_defined_curve_font + struct user_defined_curve_font : ObjectHelper { user_defined_curve_font() : Object("user_defined_curve_font") {} + + }; + + // C++ wrapper for user_defined_marker + struct user_defined_marker : ObjectHelper { user_defined_marker() : Object("user_defined_marker") {} + + }; + + // C++ wrapper for user_defined_terminator_symbol + struct user_defined_terminator_symbol : ObjectHelper { user_defined_terminator_symbol() : Object("user_defined_terminator_symbol") {} + + }; + + // C++ wrapper for user_selected_shape_elements + struct user_selected_shape_elements : user_selected_elements, ObjectHelper { user_selected_shape_elements() : Object("user_selected_shape_elements") {} + + }; + + // C++ wrapper for value_range + struct value_range : compound_representation_item, ObjectHelper { value_range() : Object("value_range") {} + + }; + + // C++ wrapper for value_representation_item + struct value_representation_item : representation_item, ObjectHelper { value_representation_item() : Object("value_representation_item") {} + measure_value::Out value_component; + }; + + // C++ wrapper for variable_semantics + struct variable_semantics : ObjectHelper { variable_semantics() : Object("variable_semantics") {} + + }; + + // C++ wrapper for variational_representation_item + struct variational_representation_item : representation_item, ObjectHelper { variational_representation_item() : Object("variational_representation_item") {} + + }; + + // C++ wrapper for vector + struct vector : geometric_representation_item, ObjectHelper { vector() : Object("vector") {} + Lazy< direction > orientation; + length_measure::Out magnitude; + }; + + // C++ wrapper for vector_style + struct vector_style : ObjectHelper { vector_style() : Object("vector_style") {} + + }; + + // C++ wrapper for velocity_measure_with_unit + struct velocity_measure_with_unit : measure_with_unit, ObjectHelper { velocity_measure_with_unit() : Object("velocity_measure_with_unit") {} + + }; + + // C++ wrapper for velocity_unit + struct velocity_unit : derived_unit, ObjectHelper { velocity_unit() : Object("velocity_unit") {} + + }; + + // C++ wrapper for vertex + struct vertex : topological_representation_item, ObjectHelper { vertex() : Object("vertex") {} + + }; + + // C++ wrapper for vertex_loop + struct vertex_loop : loop, ObjectHelper { vertex_loop() : Object("vertex_loop") {} + Lazy< vertex > loop_vertex; + }; + + // C++ wrapper for vertex_point + struct vertex_point : ObjectHelper { vertex_point() : Object("vertex_point") {} + Lazy< point > vertex_geometry; + }; + + // C++ wrapper for vertex_shell + struct vertex_shell : topological_representation_item, ObjectHelper { vertex_shell() : Object("vertex_shell") {} + Lazy< vertex_loop > vertex_shell_extent; + }; + + // C++ wrapper for view_volume + struct view_volume : founded_item, ObjectHelper { view_volume() : Object("view_volume") {} + central_or_parallel::Out projection_type; + Lazy< cartesian_point > projection_point; + length_measure::Out view_plane_distance; + length_measure::Out front_plane_distance; + BOOLEAN::Out front_plane_clipping; + length_measure::Out back_plane_distance; + BOOLEAN::Out back_plane_clipping; + BOOLEAN::Out view_volume_sides_clipping; + Lazy< planar_box > view_window; + }; + + // C++ wrapper for visual_appearance_representation + struct visual_appearance_representation : representation, ObjectHelper { visual_appearance_representation() : Object("visual_appearance_representation") {} + + }; + + // C++ wrapper for volume_measure_with_unit + struct volume_measure_with_unit : measure_with_unit, ObjectHelper { volume_measure_with_unit() : Object("volume_measure_with_unit") {} + + }; + + // C++ wrapper for volume_unit + struct volume_unit : derived_unit, ObjectHelper { volume_unit() : Object("volume_unit") {} + + }; + + // C++ wrapper for week_of_year_and_day_date + struct week_of_year_and_day_date : date, ObjectHelper { week_of_year_and_day_date() : Object("week_of_year_and_day_date") {} + week_in_year_number::Out week_component; + Maybe< day_in_week_number::Out > day_component; + }; + + // C++ wrapper for wire_shell + struct wire_shell : topological_representation_item, ObjectHelper { wire_shell() : Object("wire_shell") {} + ListOf< Lazy< loop >, 1, 0 > wire_shell_extent; + }; + + // C++ wrapper for year_month + struct year_month : date, ObjectHelper { year_month() : Object("year_month") {} + month_in_year_number::Out month_component; + }; + + void GetSchema(EXPRESS::ConversionSchema& out); + +} //! StepFile +namespace STEP { + + // ****************************************************************************** + // Converter stubs + // ****************************************************************************** + +#define DECL_CONV_STUB(type) template <> size_t GenericFill(const STEP::DB& db, const EXPRESS::LIST& params, StepFile::type* in) + + DECL_CONV_STUB(measure_with_unit); + DECL_CONV_STUB(absorbed_dose_measure_with_unit); + DECL_CONV_STUB(derived_unit); + DECL_CONV_STUB(absorbed_dose_unit); + DECL_CONV_STUB(abstract_variable); + DECL_CONV_STUB(acceleration_measure_with_unit); + DECL_CONV_STUB(acceleration_unit); + DECL_CONV_STUB(action); + DECL_CONV_STUB(action_assignment); + DECL_CONV_STUB(action_method); + DECL_CONV_STUB(action_method_assignment); + DECL_CONV_STUB(action_method_relationship); + DECL_CONV_STUB(action_request_assignment); + DECL_CONV_STUB(address); + DECL_CONV_STUB(representation); + DECL_CONV_STUB(shape_representation); + DECL_CONV_STUB(advanced_brep_shape_representation); + DECL_CONV_STUB(face_surface); + DECL_CONV_STUB(advanced_face); + DECL_CONV_STUB(amount_of_substance_measure_with_unit); + DECL_CONV_STUB(named_unit); + DECL_CONV_STUB(amount_of_substance_unit); + DECL_CONV_STUB(angle_direction_reference); + DECL_CONV_STUB(representation_item); + DECL_CONV_STUB(geometric_representation_item); + DECL_CONV_STUB(draughting_callout); + DECL_CONV_STUB(dimension_curve_directed_callout); + DECL_CONV_STUB(angular_dimension); + DECL_CONV_STUB(shape_aspect_relationship); + DECL_CONV_STUB(dimensional_location); + DECL_CONV_STUB(angular_location); + DECL_CONV_STUB(dimensional_size); + DECL_CONV_STUB(angular_size); + DECL_CONV_STUB(geometric_tolerance); + DECL_CONV_STUB(geometric_tolerance_with_datum_reference); + DECL_CONV_STUB(angularity_tolerance); + DECL_CONV_STUB(styled_item); + DECL_CONV_STUB(annotation_occurrence); + DECL_CONV_STUB(annotation_curve_occurrence); + DECL_CONV_STUB(annotation_fill_area); + DECL_CONV_STUB(annotation_fill_area_occurrence); + DECL_CONV_STUB(annotation_occurrence_relationship); + DECL_CONV_STUB(annotation_occurrence_associativity); + DECL_CONV_STUB(annotation_plane); + DECL_CONV_STUB(annotation_symbol_occurrence); + DECL_CONV_STUB(annotation_subfigure_occurrence); + DECL_CONV_STUB(mapped_item); + DECL_CONV_STUB(annotation_symbol); + DECL_CONV_STUB(annotation_text); + DECL_CONV_STUB(annotation_text_character); + DECL_CONV_STUB(annotation_text_occurrence); + DECL_CONV_STUB(shape_aspect); + DECL_CONV_STUB(derived_shape_aspect); + DECL_CONV_STUB(apex); + DECL_CONV_STUB(application_context_element); + DECL_CONV_STUB(applied_action_assignment); + DECL_CONV_STUB(applied_action_method_assignment); + DECL_CONV_STUB(applied_action_request_assignment); + DECL_CONV_STUB(approval_assignment); + DECL_CONV_STUB(applied_approval_assignment); + DECL_CONV_STUB(attribute_classification_assignment); + DECL_CONV_STUB(applied_attribute_classification_assignment); + DECL_CONV_STUB(certification_assignment); + DECL_CONV_STUB(applied_certification_assignment); + DECL_CONV_STUB(classification_assignment); + DECL_CONV_STUB(applied_classification_assignment); + DECL_CONV_STUB(contract_assignment); + DECL_CONV_STUB(applied_contract_assignment); + DECL_CONV_STUB(date_and_time_assignment); + DECL_CONV_STUB(applied_date_and_time_assignment); + DECL_CONV_STUB(date_assignment); + DECL_CONV_STUB(applied_date_assignment); + DECL_CONV_STUB(document_reference); + DECL_CONV_STUB(applied_document_reference); + DECL_CONV_STUB(document_usage_constraint_assignment); + DECL_CONV_STUB(applied_document_usage_constraint_assignment); + DECL_CONV_STUB(effectivity_assignment); + DECL_CONV_STUB(applied_effectivity_assignment); + DECL_CONV_STUB(event_occurrence_assignment); + DECL_CONV_STUB(applied_event_occurrence_assignment); + DECL_CONV_STUB(identification_assignment); + DECL_CONV_STUB(external_identification_assignment); + DECL_CONV_STUB(applied_external_identification_assignment); + DECL_CONV_STUB(group_assignment); + DECL_CONV_STUB(applied_group_assignment); + DECL_CONV_STUB(applied_identification_assignment); + DECL_CONV_STUB(name_assignment); + DECL_CONV_STUB(applied_name_assignment); + DECL_CONV_STUB(organization_assignment); + DECL_CONV_STUB(applied_organization_assignment); + DECL_CONV_STUB(organizational_project_assignment); + DECL_CONV_STUB(applied_organizational_project_assignment); + DECL_CONV_STUB(person_and_organization_assignment); + DECL_CONV_STUB(applied_person_and_organization_assignment); + DECL_CONV_STUB(presented_item); + DECL_CONV_STUB(applied_presented_item); + DECL_CONV_STUB(security_classification_assignment); + DECL_CONV_STUB(applied_security_classification_assignment); + DECL_CONV_STUB(time_interval_assignment); + DECL_CONV_STUB(applied_time_interval_assignment); + DECL_CONV_STUB(applied_usage_right); + DECL_CONV_STUB(area_in_set); + DECL_CONV_STUB(area_measure_with_unit); + DECL_CONV_STUB(area_unit); + DECL_CONV_STUB(product_definition_relationship); + DECL_CONV_STUB(product_definition_usage); + DECL_CONV_STUB(assembly_component_usage); + DECL_CONV_STUB(assigned_requirement); + DECL_CONV_STUB(compound_representation_item); + DECL_CONV_STUB(atomic_formula); + DECL_CONV_STUB(attribute_assertion); + DECL_CONV_STUB(attribute_language_assignment); + DECL_CONV_STUB(attribute_value_assignment); + DECL_CONV_STUB(auxiliary_geometric_representation_item); + DECL_CONV_STUB(placement); + DECL_CONV_STUB(axis1_placement); + DECL_CONV_STUB(axis2_placement_2d); + DECL_CONV_STUB(axis2_placement_3d); + DECL_CONV_STUB(curve); + DECL_CONV_STUB(bounded_curve); + DECL_CONV_STUB(b_spline_curve); + DECL_CONV_STUB(b_spline_curve_with_knots); + DECL_CONV_STUB(surface); + DECL_CONV_STUB(bounded_surface); + DECL_CONV_STUB(b_spline_surface); + DECL_CONV_STUB(b_spline_surface_with_knots); + DECL_CONV_STUB(product_definition); + DECL_CONV_STUB(rule_software_definition); + DECL_CONV_STUB(rule_definition); + DECL_CONV_STUB(back_chaining_rule); + DECL_CONV_STUB(back_chaining_rule_body); + DECL_CONV_STUB(colour); + DECL_CONV_STUB(background_colour); + DECL_CONV_STUB(beveled_sheet_representation); + DECL_CONV_STUB(bezier_curve); + DECL_CONV_STUB(bezier_surface); + DECL_CONV_STUB(generic_expression); + DECL_CONV_STUB(binary_generic_expression); + DECL_CONV_STUB(binary_numeric_expression); + DECL_CONV_STUB(binary_representation_item); + DECL_CONV_STUB(block); + DECL_CONV_STUB(expression); + DECL_CONV_STUB(boolean_expression); + DECL_CONV_STUB(boolean_literal); + DECL_CONV_STUB(boolean_representation_item); + DECL_CONV_STUB(boolean_result); + DECL_CONV_STUB(composite_curve); + DECL_CONV_STUB(composite_curve_on_surface); + DECL_CONV_STUB(boundary_curve); + DECL_CONV_STUB(bounded_pcurve); + DECL_CONV_STUB(bounded_surface_curve); + DECL_CONV_STUB(founded_item); + DECL_CONV_STUB(box_domain); + DECL_CONV_STUB(half_space_solid); + DECL_CONV_STUB(boxed_half_space); + DECL_CONV_STUB(breakdown_context); + DECL_CONV_STUB(breakdown_element_group_assignment); + DECL_CONV_STUB(breakdown_element_realization); + DECL_CONV_STUB(breakdown_element_usage); + DECL_CONV_STUB(breakdown_of); + DECL_CONV_STUB(solid_model); + DECL_CONV_STUB(manifold_solid_brep); + DECL_CONV_STUB(brep_with_voids); + DECL_CONV_STUB(bytes_representation_item); + DECL_CONV_STUB(date); + DECL_CONV_STUB(calendar_date); + DECL_CONV_STUB(camera_image); + DECL_CONV_STUB(camera_image_3d_with_scale); + DECL_CONV_STUB(camera_model); + DECL_CONV_STUB(camera_model_d3); + DECL_CONV_STUB(camera_model_d3_multi_clipping); + DECL_CONV_STUB(camera_model_d3_multi_clipping_intersection); + DECL_CONV_STUB(camera_model_d3_multi_clipping_union); + DECL_CONV_STUB(camera_model_d3_with_hlhsr); + DECL_CONV_STUB(camera_model_with_light_sources); + DECL_CONV_STUB(representation_map); + DECL_CONV_STUB(camera_usage); + DECL_CONV_STUB(capacitance_measure_with_unit); + DECL_CONV_STUB(capacitance_unit); + DECL_CONV_STUB(point); + DECL_CONV_STUB(cartesian_point); + DECL_CONV_STUB(cartesian_transformation_operator); + DECL_CONV_STUB(cartesian_transformation_operator_2d); + DECL_CONV_STUB(cartesian_transformation_operator_3d); + DECL_CONV_STUB(cc_design_approval); + DECL_CONV_STUB(cc_design_certification); + DECL_CONV_STUB(cc_design_contract); + DECL_CONV_STUB(cc_design_date_and_time_assignment); + DECL_CONV_STUB(cc_design_person_and_organization_assignment); + DECL_CONV_STUB(cc_design_security_classification); + DECL_CONV_STUB(cc_design_specification_reference); + DECL_CONV_STUB(celsius_temperature_measure_with_unit); + DECL_CONV_STUB(centre_of_symmetry); + DECL_CONV_STUB(change); + DECL_CONV_STUB(change_request); + DECL_CONV_STUB(character_glyph_style_outline); + DECL_CONV_STUB(character_glyph_style_stroke); + DECL_CONV_STUB(symbol_representation); + DECL_CONV_STUB(generic_character_glyph_symbol); + DECL_CONV_STUB(character_glyph_symbol); + DECL_CONV_STUB(character_glyph_symbol_outline); + DECL_CONV_STUB(character_glyph_symbol_stroke); + DECL_CONV_STUB(general_property); + DECL_CONV_STUB(characteristic_data_column_header); + DECL_CONV_STUB(general_property_relationship); + DECL_CONV_STUB(characteristic_data_column_header_link); + DECL_CONV_STUB(characteristic_data_table_header); + DECL_CONV_STUB(characteristic_data_table_header_decomposition); + DECL_CONV_STUB(group); + DECL_CONV_STUB(characteristic_type); + DECL_CONV_STUB(characterized_class); + DECL_CONV_STUB(characterized_object); + DECL_CONV_STUB(conic); + DECL_CONV_STUB(circle); + DECL_CONV_STUB(circular_runout_tolerance); + DECL_CONV_STUB(class_by_extension); + DECL_CONV_STUB(class_by_intension); + DECL_CONV_STUB(class_system); + DECL_CONV_STUB(effectivity_context_assignment); + DECL_CONV_STUB(class_usage_effectivity_context_assignment); + DECL_CONV_STUB(topological_representation_item); + DECL_CONV_STUB(connected_face_set); + DECL_CONV_STUB(closed_shell); + DECL_CONV_STUB(coaxiality_tolerance); + DECL_CONV_STUB(colour_specification); + DECL_CONV_STUB(colour_rgb); + DECL_CONV_STUB(common_datum); + DECL_CONV_STUB(comparison_expression); + DECL_CONV_STUB(complex_clause); + DECL_CONV_STUB(complex_conjunctive_clause); + DECL_CONV_STUB(complex_disjunctive_clause); + DECL_CONV_STUB(modified_solid); + DECL_CONV_STUB(shelled_solid); + DECL_CONV_STUB(complex_shelled_solid); + DECL_CONV_STUB(composite_assembly_definition); + DECL_CONV_STUB(composite_assembly_sequence_definition); + DECL_CONV_STUB(laminate_table); + DECL_CONV_STUB(part_laminate_table); + DECL_CONV_STUB(composite_assembly_table); + DECL_CONV_STUB(composite_curve_segment); + DECL_CONV_STUB(material_designation); + DECL_CONV_STUB(composite_material_designation); + DECL_CONV_STUB(composite_shape_aspect); + DECL_CONV_STUB(composite_sheet_representation); + DECL_CONV_STUB(composite_text); + DECL_CONV_STUB(composite_text_with_associated_curves); + DECL_CONV_STUB(composite_text_with_blanking_box); + DECL_CONV_STUB(composite_text_with_delineation); + DECL_CONV_STUB(composite_text_with_extent); + DECL_CONV_STUB(compound_shape_representation); + DECL_CONV_STUB(concentricity_tolerance); + DECL_CONV_STUB(concept_feature_relationship); + DECL_CONV_STUB(concept_feature_relationship_with_condition); + DECL_CONV_STUB(product_concept_feature); + DECL_CONV_STUB(conditional_concept_feature); + DECL_CONV_STUB(conductance_measure_with_unit); + DECL_CONV_STUB(conductance_unit); + DECL_CONV_STUB(configuration_item); + DECL_CONV_STUB(configurable_item); + DECL_CONV_STUB(effectivity); + DECL_CONV_STUB(product_definition_effectivity); + DECL_CONV_STUB(configuration_effectivity); + DECL_CONV_STUB(configuration_item_relationship); + DECL_CONV_STUB(configuration_item_hierarchical_relationship); + DECL_CONV_STUB(configuration_item_revision_sequence); + DECL_CONV_STUB(configured_effectivity_assignment); + DECL_CONV_STUB(configured_effectivity_context_assignment); + DECL_CONV_STUB(conical_stepped_hole_transition); + DECL_CONV_STUB(elementary_surface); + DECL_CONV_STUB(conical_surface); + DECL_CONV_STUB(connected_edge_set); + DECL_CONV_STUB(connected_face_sub_set); + DECL_CONV_STUB(constructive_geometry_representation); + DECL_CONV_STUB(representation_relationship); + DECL_CONV_STUB(constructive_geometry_representation_relationship); + DECL_CONV_STUB(contact_ratio_representation); + DECL_CONV_STUB(invisibility); + DECL_CONV_STUB(context_dependent_invisibility); + DECL_CONV_STUB(over_riding_styled_item); + DECL_CONV_STUB(context_dependent_over_riding_styled_item); + DECL_CONV_STUB(context_dependent_unit); + DECL_CONV_STUB(conversion_based_unit); + DECL_CONV_STUB(csg_shape_representation); + DECL_CONV_STUB(csg_solid); + DECL_CONV_STUB(currency); + DECL_CONV_STUB(currency_measure_with_unit); + DECL_CONV_STUB(curve_bounded_surface); + DECL_CONV_STUB(curve_dimension); + DECL_CONV_STUB(curve_replica); + DECL_CONV_STUB(curve_style); + DECL_CONV_STUB(curve_style_font); + DECL_CONV_STUB(curve_style_font_and_scaling); + DECL_CONV_STUB(curve_style_font_pattern); + DECL_CONV_STUB(curve_swept_solid_shape_representation); + DECL_CONV_STUB(cylindrical_surface); + DECL_CONV_STUB(cylindricity_tolerance); + DECL_CONV_STUB(date_representation_item); + DECL_CONV_STUB(date_time_representation_item); + DECL_CONV_STUB(dated_effectivity); + DECL_CONV_STUB(datum); + DECL_CONV_STUB(datum_feature); + DECL_CONV_STUB(datum_feature_callout); + DECL_CONV_STUB(datum_reference); + DECL_CONV_STUB(datum_target); + DECL_CONV_STUB(datum_target_callout); + DECL_CONV_STUB(default_tolerance_table); + DECL_CONV_STUB(default_tolerance_table_cell); + DECL_CONV_STUB(defined_symbol); + DECL_CONV_STUB(definitional_representation); + DECL_CONV_STUB(definitional_representation_relationship); + DECL_CONV_STUB(definitional_representation_relationship_with_same_context); + DECL_CONV_STUB(degenerate_pcurve); + DECL_CONV_STUB(toroidal_surface); + DECL_CONV_STUB(degenerate_toroidal_surface); + DECL_CONV_STUB(descriptive_representation_item); + DECL_CONV_STUB(product_definition_context); + DECL_CONV_STUB(design_context); + DECL_CONV_STUB(design_make_from_relationship); + DECL_CONV_STUB(diameter_dimension); + DECL_CONV_STUB(ratio_measure_with_unit); + DECL_CONV_STUB(dielectric_constant_measure_with_unit); + DECL_CONV_STUB(dimension_callout); + DECL_CONV_STUB(draughting_callout_relationship); + DECL_CONV_STUB(dimension_callout_component_relationship); + DECL_CONV_STUB(dimension_callout_relationship); + DECL_CONV_STUB(dimension_curve); + DECL_CONV_STUB(terminator_symbol); + DECL_CONV_STUB(dimension_curve_terminator); + DECL_CONV_STUB(dimension_curve_terminator_to_projection_curve_associativity); + DECL_CONV_STUB(dimension_pair); + DECL_CONV_STUB(dimension_text_associativity); + DECL_CONV_STUB(dimensional_location_with_path); + DECL_CONV_STUB(dimensional_size_with_path); + DECL_CONV_STUB(executed_action); + DECL_CONV_STUB(directed_action); + DECL_CONV_STUB(directed_dimensional_location); + DECL_CONV_STUB(direction); + DECL_CONV_STUB(document_file); + DECL_CONV_STUB(document_identifier); + DECL_CONV_STUB(document_identifier_assignment); + DECL_CONV_STUB(document_product_association); + DECL_CONV_STUB(document_product_equivalence); + DECL_CONV_STUB(dose_equivalent_measure_with_unit); + DECL_CONV_STUB(dose_equivalent_unit); + DECL_CONV_STUB(double_offset_shelled_solid); + DECL_CONV_STUB(item_defined_transformation); + DECL_CONV_STUB(transformation_with_derived_angle); + DECL_CONV_STUB(draped_defined_transformation); + DECL_CONV_STUB(draughting_annotation_occurrence); + DECL_CONV_STUB(draughting_elements); + DECL_CONV_STUB(draughting_model); + DECL_CONV_STUB(item_identified_representation_usage); + DECL_CONV_STUB(draughting_model_item_association); + DECL_CONV_STUB(pre_defined_colour); + DECL_CONV_STUB(draughting_pre_defined_colour); + DECL_CONV_STUB(pre_defined_item); + DECL_CONV_STUB(pre_defined_curve_font); + DECL_CONV_STUB(draughting_pre_defined_curve_font); + DECL_CONV_STUB(pre_defined_text_font); + DECL_CONV_STUB(draughting_pre_defined_text_font); + DECL_CONV_STUB(draughting_subfigure_representation); + DECL_CONV_STUB(draughting_symbol_representation); + DECL_CONV_STUB(text_literal); + DECL_CONV_STUB(text_literal_with_delineation); + DECL_CONV_STUB(draughting_text_literal_with_delineation); + DECL_CONV_STUB(presentation_set); + DECL_CONV_STUB(drawing_revision); + DECL_CONV_STUB(presentation_representation); + DECL_CONV_STUB(presentation_area); + DECL_CONV_STUB(drawing_sheet_revision); + DECL_CONV_STUB(drawing_sheet_revision_sequence); + DECL_CONV_STUB(drawing_sheet_revision_usage); + DECL_CONV_STUB(edge); + DECL_CONV_STUB(edge_based_wireframe_model); + DECL_CONV_STUB(edge_based_wireframe_shape_representation); + DECL_CONV_STUB(edge_blended_solid); + DECL_CONV_STUB(edge_curve); + DECL_CONV_STUB(edge_loop); + DECL_CONV_STUB(electric_charge_measure_with_unit); + DECL_CONV_STUB(electric_charge_unit); + DECL_CONV_STUB(electric_current_measure_with_unit); + DECL_CONV_STUB(electric_current_unit); + DECL_CONV_STUB(electric_potential_measure_with_unit); + DECL_CONV_STUB(electric_potential_unit); + DECL_CONV_STUB(elementary_brep_shape_representation); + DECL_CONV_STUB(ellipse); + DECL_CONV_STUB(energy_measure_with_unit); + DECL_CONV_STUB(energy_unit); + DECL_CONV_STUB(property_definition); + DECL_CONV_STUB(fact_type); + DECL_CONV_STUB(entity_assertion); + DECL_CONV_STUB(enum_reference_prefix); + DECL_CONV_STUB(evaluated_characteristic); + DECL_CONV_STUB(evaluated_degenerate_pcurve); + DECL_CONV_STUB(evaluation_product_definition); + DECL_CONV_STUB(event_occurrence); + DECL_CONV_STUB(product_concept_feature_category); + DECL_CONV_STUB(exclusive_product_concept_feature_category); + DECL_CONV_STUB(uncertainty_qualifier); + DECL_CONV_STUB(standard_uncertainty); + DECL_CONV_STUB(expanded_uncertainty); + DECL_CONV_STUB(representation_item_relationship); + DECL_CONV_STUB(explicit_procedural_representation_item_relationship); + DECL_CONV_STUB(explicit_procedural_geometric_representation_item_relationship); + DECL_CONV_STUB(explicit_procedural_representation_relationship); + DECL_CONV_STUB(explicit_procedural_shape_representation_relationship); + DECL_CONV_STUB(expression_conversion_based_unit); + DECL_CONV_STUB(extension); + DECL_CONV_STUB(extent); + DECL_CONV_STUB(external_source); + DECL_CONV_STUB(external_class_library); + DECL_CONV_STUB(externally_defined_class); + DECL_CONV_STUB(externally_defined_colour); + DECL_CONV_STUB(externally_defined_context_dependent_unit); + DECL_CONV_STUB(externally_defined_conversion_based_unit); + DECL_CONV_STUB(externally_defined_currency); + DECL_CONV_STUB(externally_defined_item); + DECL_CONV_STUB(externally_defined_curve_font); + DECL_CONV_STUB(externally_defined_dimension_definition); + DECL_CONV_STUB(externally_defined_general_property); + DECL_CONV_STUB(externally_defined_hatch_style); + DECL_CONV_STUB(externally_defined_marker); + DECL_CONV_STUB(picture_representation_item); + DECL_CONV_STUB(externally_defined_picture_representation_item); + DECL_CONV_STUB(externally_defined_representation_item); + DECL_CONV_STUB(externally_defined_string); + DECL_CONV_STUB(externally_defined_symbol); + DECL_CONV_STUB(externally_defined_terminator_symbol); + DECL_CONV_STUB(externally_defined_text_font); + DECL_CONV_STUB(externally_defined_tile); + DECL_CONV_STUB(externally_defined_tile_style); + DECL_CONV_STUB(swept_area_solid); + DECL_CONV_STUB(extruded_area_solid); + DECL_CONV_STUB(swept_face_solid); + DECL_CONV_STUB(extruded_face_solid); + DECL_CONV_STUB(extruded_face_solid_with_trim_conditions); + DECL_CONV_STUB(extruded_face_solid_with_draft_angle); + DECL_CONV_STUB(extruded_face_solid_with_multiple_draft_angles); + DECL_CONV_STUB(face); + DECL_CONV_STUB(face_based_surface_model); + DECL_CONV_STUB(face_bound); + DECL_CONV_STUB(face_outer_bound); + DECL_CONV_STUB(faceted_brep); + DECL_CONV_STUB(faceted_brep_shape_representation); + DECL_CONV_STUB(fill_area_style); + DECL_CONV_STUB(fill_area_style_hatching); + DECL_CONV_STUB(fill_area_style_tile_coloured_region); + DECL_CONV_STUB(fill_area_style_tile_curve_with_style); + DECL_CONV_STUB(fill_area_style_tile_symbol_with_style); + DECL_CONV_STUB(fill_area_style_tiles); + DECL_CONV_STUB(shape_representation_relationship); + DECL_CONV_STUB(flat_pattern_ply_representation_relationship); + DECL_CONV_STUB(flatness_tolerance); + DECL_CONV_STUB(force_measure_with_unit); + DECL_CONV_STUB(force_unit); + DECL_CONV_STUB(forward_chaining_rule); + DECL_CONV_STUB(forward_chaining_rule_premise); + DECL_CONV_STUB(frequency_measure_with_unit); + DECL_CONV_STUB(frequency_unit); + DECL_CONV_STUB(func); + DECL_CONV_STUB(functional_breakdown_context); + DECL_CONV_STUB(functional_element_usage); + DECL_CONV_STUB(general_material_property); + DECL_CONV_STUB(simple_generic_expression); + DECL_CONV_STUB(generic_literal); + DECL_CONV_STUB(generic_variable); + DECL_CONV_STUB(geometric_alignment); + DECL_CONV_STUB(geometric_set); + DECL_CONV_STUB(geometric_curve_set); + DECL_CONV_STUB(geometric_intersection); + DECL_CONV_STUB(geometric_item_specific_usage); + DECL_CONV_STUB(geometric_model_element_relationship); + DECL_CONV_STUB(representation_context); + DECL_CONV_STUB(geometric_representation_context); + DECL_CONV_STUB(geometric_tolerance_with_defined_unit); + DECL_CONV_STUB(geometrical_tolerance_callout); + DECL_CONV_STUB(geometrically_bounded_2d_wireframe_representation); + DECL_CONV_STUB(geometrically_bounded_surface_shape_representation); + DECL_CONV_STUB(geometrically_bounded_wireframe_shape_representation); + DECL_CONV_STUB(global_assignment); + DECL_CONV_STUB(global_uncertainty_assigned_context); + DECL_CONV_STUB(global_unit_assigned_context); + DECL_CONV_STUB(ground_fact); + DECL_CONV_STUB(hardness_representation); + DECL_CONV_STUB(hidden_element_over_riding_styled_item); + DECL_CONV_STUB(hyperbola); + DECL_CONV_STUB(illuminance_measure_with_unit); + DECL_CONV_STUB(illuminance_unit); + DECL_CONV_STUB(included_text_block); + DECL_CONV_STUB(inclusion_product_concept_feature); + DECL_CONV_STUB(user_selected_elements); + DECL_CONV_STUB(indirectly_selected_elements); + DECL_CONV_STUB(indirectly_selected_shape_elements); + DECL_CONV_STUB(inductance_measure_with_unit); + DECL_CONV_STUB(inductance_unit); + DECL_CONV_STUB(information_right); + DECL_CONV_STUB(information_usage_right); + DECL_CONV_STUB(instance_usage_context_assignment); + DECL_CONV_STUB(instanced_feature); + DECL_CONV_STUB(literal_number); + DECL_CONV_STUB(int_literal); + DECL_CONV_STUB(integer_representation_item); + DECL_CONV_STUB(surface_curve); + DECL_CONV_STUB(intersection_curve); + DECL_CONV_STUB(interval_expression); + DECL_CONV_STUB(iso4217_currency); + DECL_CONV_STUB(known_source); + DECL_CONV_STUB(laid_defined_transformation); + DECL_CONV_STUB(language); + DECL_CONV_STUB(leader_curve); + DECL_CONV_STUB(leader_directed_callout); + DECL_CONV_STUB(leader_directed_dimension); + DECL_CONV_STUB(leader_terminator); + DECL_CONV_STUB(length_measure_with_unit); + DECL_CONV_STUB(length_unit); + DECL_CONV_STUB(light_source); + DECL_CONV_STUB(light_source_ambient); + DECL_CONV_STUB(light_source_directional); + DECL_CONV_STUB(light_source_positional); + DECL_CONV_STUB(light_source_spot); + DECL_CONV_STUB(line); + DECL_CONV_STUB(line_profile_tolerance); + DECL_CONV_STUB(linear_dimension); + DECL_CONV_STUB(simple_clause); + DECL_CONV_STUB(literal_conjunction); + DECL_CONV_STUB(literal_disjunction); + DECL_CONV_STUB(logical_literal); + DECL_CONV_STUB(logical_representation_item); + DECL_CONV_STUB(loop); + DECL_CONV_STUB(loss_tangent_measure_with_unit); + DECL_CONV_STUB(lot_effectivity); + DECL_CONV_STUB(luminous_flux_measure_with_unit); + DECL_CONV_STUB(luminous_flux_unit); + DECL_CONV_STUB(luminous_intensity_measure_with_unit); + DECL_CONV_STUB(luminous_intensity_unit); + DECL_CONV_STUB(magnetic_flux_density_measure_with_unit); + DECL_CONV_STUB(magnetic_flux_density_unit); + DECL_CONV_STUB(magnetic_flux_measure_with_unit); + DECL_CONV_STUB(magnetic_flux_unit); + DECL_CONV_STUB(make_from_usage_option); + DECL_CONV_STUB(manifold_subsurface_shape_representation); + DECL_CONV_STUB(manifold_surface_shape_representation); + DECL_CONV_STUB(mass_measure_with_unit); + DECL_CONV_STUB(mass_unit); + DECL_CONV_STUB(material_property); + DECL_CONV_STUB(property_definition_representation); + DECL_CONV_STUB(material_property_representation); + DECL_CONV_STUB(measure_representation_item); + DECL_CONV_STUB(product_context); + DECL_CONV_STUB(mechanical_context); + DECL_CONV_STUB(mechanical_design_and_draughting_relationship); + DECL_CONV_STUB(mechanical_design_geometric_presentation_area); + DECL_CONV_STUB(mechanical_design_geometric_presentation_representation); + DECL_CONV_STUB(mechanical_design_presentation_representation_with_draughting); + DECL_CONV_STUB(mechanical_design_shaded_presentation_area); + DECL_CONV_STUB(mechanical_design_shaded_presentation_representation); + DECL_CONV_STUB(min_and_major_ply_orientation_basis); + DECL_CONV_STUB(modified_geometric_tolerance); + DECL_CONV_STUB(modified_solid_with_placed_configuration); + DECL_CONV_STUB(moments_of_inertia_representation); + DECL_CONV_STUB(multi_language_attribute_assignment); + DECL_CONV_STUB(multiple_arity_boolean_expression); + DECL_CONV_STUB(multiple_arity_generic_expression); + DECL_CONV_STUB(multiple_arity_numeric_expression); + DECL_CONV_STUB(next_assembly_usage_occurrence); + DECL_CONV_STUB(non_manifold_surface_shape_representation); + DECL_CONV_STUB(null_representation_item); + DECL_CONV_STUB(numeric_expression); + DECL_CONV_STUB(offset_curve_2d); + DECL_CONV_STUB(offset_curve_3d); + DECL_CONV_STUB(offset_surface); + DECL_CONV_STUB(one_direction_repeat_factor); + DECL_CONV_STUB(open_shell); + DECL_CONV_STUB(ordinal_date); + DECL_CONV_STUB(projection_directed_callout); + DECL_CONV_STUB(ordinate_dimension); + DECL_CONV_STUB(organizational_address); + DECL_CONV_STUB(oriented_closed_shell); + DECL_CONV_STUB(oriented_edge); + DECL_CONV_STUB(oriented_face); + DECL_CONV_STUB(oriented_open_shell); + DECL_CONV_STUB(path); + DECL_CONV_STUB(oriented_path); + DECL_CONV_STUB(oriented_surface); + DECL_CONV_STUB(outer_boundary_curve); + DECL_CONV_STUB(package_product_concept_feature); + DECL_CONV_STUB(parabola); + DECL_CONV_STUB(parallel_offset); + DECL_CONV_STUB(parallelism_tolerance); + DECL_CONV_STUB(parametric_representation_context); + DECL_CONV_STUB(partial_document_with_structured_text_representation_assignment); + DECL_CONV_STUB(pcurve); + DECL_CONV_STUB(percentage_laminate_definition); + DECL_CONV_STUB(zone_structural_makeup); + DECL_CONV_STUB(percentage_laminate_table); + DECL_CONV_STUB(percentage_ply_definition); + DECL_CONV_STUB(perpendicular_to); + DECL_CONV_STUB(perpendicularity_tolerance); + DECL_CONV_STUB(person_and_organization_address); + DECL_CONV_STUB(personal_address); + DECL_CONV_STUB(physical_breakdown_context); + DECL_CONV_STUB(physical_element_usage); + DECL_CONV_STUB(presentation_view); + DECL_CONV_STUB(picture_representation); + DECL_CONV_STUB(placed_datum_target_feature); + DECL_CONV_STUB(placed_feature); + DECL_CONV_STUB(planar_extent); + DECL_CONV_STUB(planar_box); + DECL_CONV_STUB(plane); + DECL_CONV_STUB(plane_angle_measure_with_unit); + DECL_CONV_STUB(plane_angle_unit); + DECL_CONV_STUB(ply_laminate_definition); + DECL_CONV_STUB(ply_laminate_sequence_definition); + DECL_CONV_STUB(ply_laminate_table); + DECL_CONV_STUB(point_and_vector); + DECL_CONV_STUB(point_on_curve); + DECL_CONV_STUB(point_on_surface); + DECL_CONV_STUB(point_path); + DECL_CONV_STUB(point_replica); + DECL_CONV_STUB(point_style); + DECL_CONV_STUB(polar_complex_number_literal); + DECL_CONV_STUB(poly_loop); + DECL_CONV_STUB(polyline); + DECL_CONV_STUB(position_tolerance); + DECL_CONV_STUB(positioned_sketch); + DECL_CONV_STUB(power_measure_with_unit); + DECL_CONV_STUB(power_unit); + DECL_CONV_STUB(pre_defined_symbol); + DECL_CONV_STUB(pre_defined_dimension_symbol); + DECL_CONV_STUB(pre_defined_geometrical_tolerance_symbol); + DECL_CONV_STUB(pre_defined_marker); + DECL_CONV_STUB(pre_defined_point_marker_symbol); + DECL_CONV_STUB(pre_defined_surface_condition_symbol); + DECL_CONV_STUB(pre_defined_surface_side_style); + DECL_CONV_STUB(pre_defined_terminator_symbol); + DECL_CONV_STUB(pre_defined_tile); + DECL_CONV_STUB(predefined_picture_representation_item); + DECL_CONV_STUB(presentation_style_assignment); + DECL_CONV_STUB(presentation_style_by_context); + DECL_CONV_STUB(pressure_measure_with_unit); + DECL_CONV_STUB(pressure_unit); + DECL_CONV_STUB(procedural_representation); + DECL_CONV_STUB(procedural_representation_sequence); + DECL_CONV_STUB(procedural_shape_representation); + DECL_CONV_STUB(procedural_shape_representation_sequence); + DECL_CONV_STUB(product_category); + DECL_CONV_STUB(product_class); + DECL_CONV_STUB(product_concept_context); + DECL_CONV_STUB(product_concept_feature_category_usage); + DECL_CONV_STUB(product_definition_element_relationship); + DECL_CONV_STUB(product_definition_formation); + DECL_CONV_STUB(product_definition_formation_with_specified_source); + DECL_CONV_STUB(product_definition_group_assignment); + DECL_CONV_STUB(product_definition_shape); + DECL_CONV_STUB(product_definition_with_associated_documents); + DECL_CONV_STUB(product_identification); + DECL_CONV_STUB(product_material_composition_relationship); + DECL_CONV_STUB(product_related_product_category); + DECL_CONV_STUB(product_specification); + DECL_CONV_STUB(tolerance_zone_definition); + DECL_CONV_STUB(projected_zone_definition); + DECL_CONV_STUB(projection_curve); + DECL_CONV_STUB(promissory_usage_occurrence); + DECL_CONV_STUB(qualified_representation_item); + DECL_CONV_STUB(qualitative_uncertainty); + DECL_CONV_STUB(quantified_assembly_component_usage); + DECL_CONV_STUB(quasi_uniform_curve); + DECL_CONV_STUB(quasi_uniform_surface); + DECL_CONV_STUB(radioactivity_measure_with_unit); + DECL_CONV_STUB(radioactivity_unit); + DECL_CONV_STUB(radius_dimension); + DECL_CONV_STUB(range_characteristic); + DECL_CONV_STUB(ratio_unit); + DECL_CONV_STUB(rational_b_spline_curve); + DECL_CONV_STUB(rational_b_spline_surface); + DECL_CONV_STUB(rational_representation_item); + DECL_CONV_STUB(real_literal); + DECL_CONV_STUB(real_representation_item); + DECL_CONV_STUB(rectangular_composite_surface); + DECL_CONV_STUB(rectangular_trimmed_surface); + DECL_CONV_STUB(referenced_modified_datum); + DECL_CONV_STUB(relative_event_occurrence); + DECL_CONV_STUB(rep_item_group); + DECL_CONV_STUB(reparametrised_composite_curve_segment); + DECL_CONV_STUB(representation_relationship_with_transformation); + DECL_CONV_STUB(requirement_assigned_object); + DECL_CONV_STUB(requirement_assignment); + DECL_CONV_STUB(requirement_source); + DECL_CONV_STUB(requirement_view_definition_relationship); + DECL_CONV_STUB(resistance_measure_with_unit); + DECL_CONV_STUB(resistance_unit); + DECL_CONV_STUB(revolved_area_solid); + DECL_CONV_STUB(revolved_face_solid); + DECL_CONV_STUB(revolved_face_solid_with_trim_conditions); + DECL_CONV_STUB(right_angular_wedge); + DECL_CONV_STUB(right_circular_cone); + DECL_CONV_STUB(right_circular_cylinder); + DECL_CONV_STUB(right_to_usage_association); + DECL_CONV_STUB(roundness_tolerance); + DECL_CONV_STUB(row_representation_item); + DECL_CONV_STUB(row_value); + DECL_CONV_STUB(row_variable); + DECL_CONV_STUB(rule_action); + DECL_CONV_STUB(rule_condition); + DECL_CONV_STUB(rule_set); + DECL_CONV_STUB(rule_set_group); + DECL_CONV_STUB(rule_superseded_assignment); + DECL_CONV_STUB(rule_supersedence); + DECL_CONV_STUB(surface_curve_swept_area_solid); + DECL_CONV_STUB(ruled_surface_swept_area_solid); + DECL_CONV_STUB(runout_zone_definition); + DECL_CONV_STUB(runout_zone_orientation); + DECL_CONV_STUB(runout_zone_orientation_reference_direction); + DECL_CONV_STUB(satisfied_requirement); + DECL_CONV_STUB(satisfies_requirement); + DECL_CONV_STUB(satisfying_item); + DECL_CONV_STUB(scalar_variable); + DECL_CONV_STUB(scattering_parameter); + DECL_CONV_STUB(sculptured_solid); + DECL_CONV_STUB(seam_curve); + DECL_CONV_STUB(serial_numbered_effectivity); + DECL_CONV_STUB(shape_aspect_associativity); + DECL_CONV_STUB(shape_aspect_deriving_relationship); + DECL_CONV_STUB(shape_definition_representation); + DECL_CONV_STUB(shape_dimension_representation); + DECL_CONV_STUB(shape_feature_definition); + DECL_CONV_STUB(shape_representation_with_parameters); + DECL_CONV_STUB(shell_based_surface_model); + DECL_CONV_STUB(shell_based_wireframe_model); + DECL_CONV_STUB(shell_based_wireframe_shape_representation); + DECL_CONV_STUB(si_absorbed_dose_unit); + DECL_CONV_STUB(si_capacitance_unit); + DECL_CONV_STUB(si_conductance_unit); + DECL_CONV_STUB(si_dose_equivalent_unit); + DECL_CONV_STUB(si_electric_charge_unit); + DECL_CONV_STUB(si_electric_potential_unit); + DECL_CONV_STUB(si_energy_unit); + DECL_CONV_STUB(si_force_unit); + DECL_CONV_STUB(si_frequency_unit); + DECL_CONV_STUB(si_illuminance_unit); + DECL_CONV_STUB(si_inductance_unit); + DECL_CONV_STUB(si_magnetic_flux_density_unit); + DECL_CONV_STUB(si_magnetic_flux_unit); + DECL_CONV_STUB(si_power_unit); + DECL_CONV_STUB(si_pressure_unit); + DECL_CONV_STUB(si_radioactivity_unit); + DECL_CONV_STUB(si_resistance_unit); + DECL_CONV_STUB(si_unit); + DECL_CONV_STUB(simple_boolean_expression); + DECL_CONV_STUB(simple_numeric_expression); + DECL_CONV_STUB(slash_expression); + DECL_CONV_STUB(smeared_material_definition); + DECL_CONV_STUB(solid_angle_measure_with_unit); + DECL_CONV_STUB(solid_angle_unit); + DECL_CONV_STUB(solid_curve_font); + DECL_CONV_STUB(solid_replica); + DECL_CONV_STUB(solid_with_chamfered_edges); + DECL_CONV_STUB(solid_with_angle_based_chamfer); + DECL_CONV_STUB(solid_with_shape_element_pattern); + DECL_CONV_STUB(solid_with_circular_pattern); + DECL_CONV_STUB(solid_with_depression); + DECL_CONV_STUB(solid_with_pocket); + DECL_CONV_STUB(solid_with_circular_pocket); + DECL_CONV_STUB(solid_with_protrusion); + DECL_CONV_STUB(solid_with_circular_protrusion); + DECL_CONV_STUB(solid_with_hole); + DECL_CONV_STUB(solid_with_stepped_round_hole); + DECL_CONV_STUB(solid_with_conical_bottom_round_hole); + DECL_CONV_STUB(solid_with_constant_radius_edge_blend); + DECL_CONV_STUB(solid_with_slot); + DECL_CONV_STUB(solid_with_curved_slot); + DECL_CONV_STUB(solid_with_double_offset_chamfer); + DECL_CONV_STUB(solid_with_flat_bottom_round_hole); + DECL_CONV_STUB(solid_with_general_pocket); + DECL_CONV_STUB(solid_with_general_protrusion); + DECL_CONV_STUB(solid_with_groove); + DECL_CONV_STUB(solid_with_incomplete_circular_pattern); + DECL_CONV_STUB(solid_with_rectangular_pattern); + DECL_CONV_STUB(solid_with_incomplete_rectangular_pattern); + DECL_CONV_STUB(solid_with_rectangular_pocket); + DECL_CONV_STUB(solid_with_rectangular_protrusion); + DECL_CONV_STUB(solid_with_single_offset_chamfer); + DECL_CONV_STUB(solid_with_spherical_bottom_round_hole); + DECL_CONV_STUB(solid_with_stepped_round_hole_and_conical_transitions); + DECL_CONV_STUB(solid_with_straight_slot); + DECL_CONV_STUB(solid_with_tee_section_slot); + DECL_CONV_STUB(solid_with_through_depression); + DECL_CONV_STUB(solid_with_trapezoidal_section_slot); + DECL_CONV_STUB(solid_with_variable_radius_edge_blend); + DECL_CONV_STUB(source_for_requirement); + DECL_CONV_STUB(sourced_requirement); + DECL_CONV_STUB(specification_definition); + DECL_CONV_STUB(specified_higher_usage_occurrence); + DECL_CONV_STUB(sphere); + DECL_CONV_STUB(spherical_surface); + DECL_CONV_STUB(start_request); + DECL_CONV_STUB(start_work); + DECL_CONV_STUB(straightness_tolerance); + DECL_CONV_STUB(structured_dimension_callout); + DECL_CONV_STUB(structured_text_composition); + DECL_CONV_STUB(structured_text_representation); + DECL_CONV_STUB(subedge); + DECL_CONV_STUB(subface); + DECL_CONV_STUB(supplied_part_relationship); + DECL_CONV_STUB(surface_condition_callout); + DECL_CONV_STUB(swept_surface); + DECL_CONV_STUB(surface_of_linear_extrusion); + DECL_CONV_STUB(surface_of_revolution); + DECL_CONV_STUB(surface_patch); + DECL_CONV_STUB(surface_profile_tolerance); + DECL_CONV_STUB(surface_replica); + DECL_CONV_STUB(surface_side_style); + DECL_CONV_STUB(surface_style_boundary); + DECL_CONV_STUB(surface_style_control_grid); + DECL_CONV_STUB(surface_style_fill_area); + DECL_CONV_STUB(surface_style_parameter_line); + DECL_CONV_STUB(surface_style_reflectance_ambient); + DECL_CONV_STUB(surface_style_reflectance_ambient_diffuse); + DECL_CONV_STUB(surface_style_reflectance_ambient_diffuse_specular); + DECL_CONV_STUB(surface_style_rendering); + DECL_CONV_STUB(surface_style_rendering_with_properties); + DECL_CONV_STUB(surface_style_segmentation_curve); + DECL_CONV_STUB(surface_style_silhouette); + DECL_CONV_STUB(surface_style_usage); + DECL_CONV_STUB(surface_texture_representation); + DECL_CONV_STUB(surfaced_open_shell); + DECL_CONV_STUB(swept_disk_solid); + DECL_CONV_STUB(symbol); + DECL_CONV_STUB(symbol_representation_map); + DECL_CONV_STUB(symbol_style); + DECL_CONV_STUB(symbol_target); + DECL_CONV_STUB(symmetric_shape_aspect); + DECL_CONV_STUB(symmetry_tolerance); + DECL_CONV_STUB(table_representation_item); + DECL_CONV_STUB(tactile_appearance_representation); + DECL_CONV_STUB(tagged_text_format); + DECL_CONV_STUB(tagged_text_item); + DECL_CONV_STUB(tangent); + DECL_CONV_STUB(text_literal_with_associated_curves); + DECL_CONV_STUB(text_literal_with_blanking_box); + DECL_CONV_STUB(text_literal_with_extent); + DECL_CONV_STUB(text_string_representation); + DECL_CONV_STUB(text_style); + DECL_CONV_STUB(text_style_with_box_characteristics); + DECL_CONV_STUB(text_style_with_mirror); + DECL_CONV_STUB(text_style_with_spacing); + DECL_CONV_STUB(thermal_resistance_measure_with_unit); + DECL_CONV_STUB(thermal_resistance_unit); + DECL_CONV_STUB(thermodynamic_temperature_measure_with_unit); + DECL_CONV_STUB(thermodynamic_temperature_unit); + DECL_CONV_STUB(thickened_face_solid); + DECL_CONV_STUB(thickness_laminate_definition); + DECL_CONV_STUB(thickness_laminate_table); + DECL_CONV_STUB(time_interval); + DECL_CONV_STUB(time_interval_based_effectivity); + DECL_CONV_STUB(time_interval_with_bounds); + DECL_CONV_STUB(time_measure_with_unit); + DECL_CONV_STUB(time_unit); + DECL_CONV_STUB(tolerance_zone); + DECL_CONV_STUB(torus); + DECL_CONV_STUB(total_runout_tolerance); + DECL_CONV_STUB(track_blended_solid); + DECL_CONV_STUB(track_blended_solid_with_end_conditions); + DECL_CONV_STUB(trimmed_curve); + DECL_CONV_STUB(two_direction_repeat_factor); + DECL_CONV_STUB(unary_generic_expression); + DECL_CONV_STUB(unary_numeric_expression); + DECL_CONV_STUB(uncertainty_assigned_representation); + DECL_CONV_STUB(uncertainty_measure_with_unit); + DECL_CONV_STUB(uniform_curve); + DECL_CONV_STUB(uniform_resource_identifier); + DECL_CONV_STUB(uniform_surface); + DECL_CONV_STUB(usage_association); + DECL_CONV_STUB(user_defined_curve_font); + DECL_CONV_STUB(user_defined_marker); + DECL_CONV_STUB(user_defined_terminator_symbol); + DECL_CONV_STUB(user_selected_shape_elements); + DECL_CONV_STUB(value_range); + DECL_CONV_STUB(value_representation_item); + DECL_CONV_STUB(variable_semantics); + DECL_CONV_STUB(variational_representation_item); + DECL_CONV_STUB(vector); + DECL_CONV_STUB(vector_style); + DECL_CONV_STUB(velocity_measure_with_unit); + DECL_CONV_STUB(velocity_unit); + DECL_CONV_STUB(vertex); + DECL_CONV_STUB(vertex_loop); + DECL_CONV_STUB(vertex_point); + DECL_CONV_STUB(vertex_shell); + DECL_CONV_STUB(view_volume); + DECL_CONV_STUB(visual_appearance_representation); + DECL_CONV_STUB(volume_measure_with_unit); + DECL_CONV_STUB(volume_unit); + DECL_CONV_STUB(week_of_year_and_day_date); + DECL_CONV_STUB(wire_shell); + DECL_CONV_STUB(year_month); + + +#undef DECL_CONV_STUB + +} //! STEP +} //! Assimp + +#endif // INCLUDED_STEPFILE_READER_GEN_H diff --git a/code/ImporterRegistry.cpp b/code/ImporterRegistry.cpp index 4a8428d25..d3ae53c7d 100644 --- a/code/ImporterRegistry.cpp +++ b/code/ImporterRegistry.cpp @@ -197,6 +197,9 @@ corresponding preprocessor flag to selectively disable formats. #ifndef ASSIMP_BUILD_NO_MMD_IMPORTER # include "MMDImporter.h" #endif +#ifndef ASSIMP_BUILD_NO_STEPFILE_IMPORTER +# include "Importer/StepFile/StepFileImporter.h" +#endif namespace Assimp { @@ -352,6 +355,9 @@ void GetImporterInstanceList(std::vector< BaseImporter* >& out) #ifndef ASSIMP_BUILD_NO_MMD_IMPORTER out.push_back( new MMDImporter() ); #endif +#ifndef ASSIMP_BUILD_NO_STEPFILE_IMPORTER + out.push_back(new StepFile::StepFileImporter()); +#endif } /** will delete all registered importers. */ diff --git a/code/LWOAnimation.h b/code/LWOAnimation.h index 7d7c6d699..f7b0f177b 100644 --- a/code/LWOAnimation.h +++ b/code/LWOAnimation.h @@ -113,14 +113,14 @@ enum PrePostBehaviour // --------------------------------------------------------------------------- /** \brief Data structure for a LWO animation keyframe */ -struct Key -{ - Key() - : time(), - value(), - inter (IT_LINE), - params() - {} +struct Key { + Key() AI_NO_EXCEPT + : time() + , value() + , inter(IT_LINE) + , params() { + // empty + } //! Current time double time; @@ -144,17 +144,16 @@ struct Key // --------------------------------------------------------------------------- /** \brief Data structure for a LWO animation envelope */ -struct Envelope -{ - Envelope() - : index() - , type (EnvelopeType_Unknown) - , pre (PrePostBehaviour_Constant) - , post (PrePostBehaviour_Constant) - - , old_first (0) - , old_last (0) - {} +struct Envelope { + Envelope() AI_NO_EXCEPT + : index() + , type(EnvelopeType_Unknown) + , pre(PrePostBehaviour_Constant) + , post(PrePostBehaviour_Constant) + , old_first(0) + , old_last(0) { + // empty + } //! Index of this envelope unsigned int index; @@ -162,7 +161,7 @@ struct Envelope //! Type of envelope EnvelopeType type; - //! Pre and post-behaviour + //! Pre- and post-behavior PrePostBehaviour pre,post; //! Keyframes for this envelope diff --git a/code/LWOFileData.h b/code/LWOFileData.h index 6e3c476c3..b3a963199 100644 --- a/code/LWOFileData.h +++ b/code/LWOFileData.h @@ -261,14 +261,14 @@ namespace LWO { * \note We can't use the code in SmoothingGroups.inl here - the mesh * structures of 3DS/ASE and LWO are too different. */ -struct Face : public aiFace -{ +struct Face : public aiFace { //! Default construction - Face() - : surfaceIndex (0) - , smoothGroup (0) - , type (AI_LWO_FACE) - {} + Face() AI_NO_EXCEPT + : surfaceIndex( 0 ) + , smoothGroup( 0 ) + , type( AI_LWO_FACE ) { + // empty + } //! Construction from given type explicit Face(uint32_t _type) diff --git a/code/LimitBoneWeightsProcess.h b/code/LimitBoneWeightsProcess.h index 090181982..2161b89a8 100644 --- a/code/LimitBoneWeightsProcess.h +++ b/code/LimitBoneWeightsProcess.h @@ -120,7 +120,7 @@ public: { unsigned int mBone; ///< Index of the bone float mWeight; ///< Weight of that bone on this vertex - Weight() + Weight() AI_NO_EXCEPT : mBone(0) , mWeight(0.0f) { } diff --git a/code/MD3FileData.h b/code/MD3FileData.h index 3f9741366..910813fc4 100644 --- a/code/MD3FileData.h +++ b/code/MD3FileData.h @@ -246,7 +246,7 @@ struct Vertex uint16_t NORMAL; } /*PACK_STRUCT*/; -#include "./../include/assimp/Compiler/poppack1.h" +#include // ------------------------------------------------------------------------------- /** @brief Unpack a Q3 16 bit vector to its full float3 representation diff --git a/code/MD3Loader.h b/code/MD3Loader.h index e2a89afcd..8ac3cdc68 100644 --- a/code/MD3Loader.h +++ b/code/MD3Loader.h @@ -125,7 +125,7 @@ enum AlphaTestFunc */ struct ShaderMapBlock { - ShaderMapBlock() + ShaderMapBlock() AI_NO_EXCEPT : blend_src (BLEND_NONE) , blend_dest (BLEND_NONE) , alpha_test (AT_NONE) @@ -150,7 +150,7 @@ struct ShaderMapBlock */ struct ShaderDataBlock { - ShaderDataBlock() + ShaderDataBlock() AI_NO_EXCEPT : cull (CULL_CW) {} diff --git a/code/MD4FileData.h b/code/MD4FileData.h index e515808ac..ed3dc65e7 100644 --- a/code/MD4FileData.h +++ b/code/MD4FileData.h @@ -46,9 +46,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include -#include "../include/assimp/types.h" -#include "../include/assimp/mesh.h" -#include "../include/assimp/anim.h" +#include +#include +#include #if defined(_MSC_VER) || defined(__BORLANDC__) || defined (__BCPLUSPLUS__) # pragma pack(push,1) diff --git a/code/MD5Loader.cpp b/code/MD5Loader.cpp index fc9c97cf3..a4285ba03 100644 --- a/code/MD5Loader.cpp +++ b/code/MD5Loader.cpp @@ -420,6 +420,9 @@ void MD5Importer::LoadMD5MeshFile () // generate unique vertices in our internal verbose format MakeDataUnique(meshSrc); + std::string name( meshSrc.mShader.C_Str() ); + name += ".msh"; + mesh->mName = name; mesh->mNumVertices = (unsigned int) meshSrc.mVertices.size(); mesh->mVertices = new aiVector3D[mesh->mNumVertices]; mesh->mTextureCoords[0] = new aiVector3D[mesh->mNumVertices]; @@ -471,7 +474,6 @@ void MD5Importer::LoadMD5MeshFile () MD5::ConvertQuaternion( boneSrc.mRotationQuat, boneSrc.mRotationQuatConverted ); } - //unsigned int g = 0; pv = mesh->mVertices; for (MD5::VertexList::const_iterator iter = meshSrc.mVertices.begin();iter != meshSrc.mVertices.end();++iter,++pv) { // compute the final vertex position from all single weights @@ -559,7 +561,9 @@ void MD5Importer::LoadMD5MeshFile () // set this also as material name mat->AddProperty(&meshSrc.mShader,AI_MATKEY_NAME); } - else mat->AddProperty(&meshSrc.mShader,AI_MATKEY_TEXTURE_DIFFUSE(0)); + else { + mat->AddProperty(&meshSrc.mShader, AI_MATKEY_TEXTURE_DIFFUSE(0)); + } mesh->mMaterialIndex = n++; } #endif diff --git a/code/MD5Parser.h b/code/MD5Parser.h index b62df996f..853268424 100644 --- a/code/MD5Parser.h +++ b/code/MD5Parser.h @@ -192,14 +192,14 @@ typedef std::vector< FrameDesc > FrameList; // --------------------------------------------------------------------------- /** Represents a vertex descriptor in a MD5 file */ -struct VertexDesc -{ - VertexDesc() - : mFirstWeight (0) - , mNumWeights (0) - {} +struct VertexDesc { + VertexDesc() AI_NO_EXCEPT + : mFirstWeight(0) + , mNumWeights(0) { + // empty + } - //! UV cordinate of the vertex + //! UV coordinate of the vertex aiVector2D mUV; //! Index of the first weight of the vertex in diff --git a/code/MDCFileData.h b/code/MDCFileData.h index e89433ed7..c599a930a 100644 --- a/code/MDCFileData.h +++ b/code/MDCFileData.h @@ -61,7 +61,6 @@ http://themdcfile.planetwolfenstein.gamespy.com/MDC_File_Format.pdf namespace Assimp { namespace MDC { - // to make it easier for us, we test the magic word against both "endianesses" #define AI_MDC_MAGIC_NUMBER_BE AI_MAKE_MAGIC("CPDI") #define AI_MDC_MAGIC_NUMBER_LE AI_MAKE_MAGIC("IDPC") @@ -79,8 +78,7 @@ namespace MDC { // --------------------------------------------------------------------------- /** \brief Data structure for a MDC file's main header */ -struct Header -{ +struct Header { uint32_t ulIdent ; uint32_t ulVersion ; char ucName [ AI_MDC_MAXQPATH ] ; @@ -100,8 +98,7 @@ struct Header // --------------------------------------------------------------------------- /** \brief Data structure for a MDC file's surface header */ -struct Surface -{ +struct Surface { uint32_t ulIdent ; char ucName [ AI_MDC_MAXQPATH ] ; uint32_t ulFlags ; @@ -118,23 +115,22 @@ struct Surface uint32_t ulOffsetFrameBaseFrames ; uint32_t ulOffsetFrameCompFrames ; uint32_t ulOffsetEnd; - Surface() - : ulIdent(), - ulFlags(), - ulNumCompFrames(), - ulNumBaseFrames(), - ulNumShaders(), - ulNumVertices(), - ulNumTriangles(), - ulOffsetTriangles(), - ulOffsetShaders(), - ulOffsetTexCoords(), - ulOffsetBaseVerts(), - ulOffsetCompVerts(), - ulOffsetFrameBaseFrames(), - ulOffsetFrameCompFrames(), - ulOffsetEnd() - { + Surface() AI_NO_EXCEPT + : ulIdent() + , ulFlags() + , ulNumCompFrames() + , ulNumBaseFrames() + , ulNumShaders() + , ulNumVertices() + , ulNumTriangles() + , ulOffsetTriangles() + , ulOffsetShaders() + , ulOffsetTexCoords() + , ulOffsetBaseVerts() + , ulOffsetCompVerts() + , ulOffsetFrameBaseFrames() + , ulOffsetFrameCompFrames() + , ulOffsetEnd() { ucName[AI_MDC_MAXQPATH-1] = '\0'; } } PACK_STRUCT; @@ -142,8 +138,7 @@ struct Surface // --------------------------------------------------------------------------- /** \brief Data structure for a MDC frame */ -struct Frame -{ +struct Frame { //! bounding box minimum coords aiVector3D bboxMin ; @@ -163,24 +158,21 @@ struct Frame // --------------------------------------------------------------------------- /** \brief Data structure for a MDC triangle */ -struct Triangle -{ +struct Triangle { uint32_t aiIndices[3]; } PACK_STRUCT; // --------------------------------------------------------------------------- /** \brief Data structure for a MDC texture coordinate */ -struct TexturCoord -{ +struct TexturCoord { float u,v; } PACK_STRUCT; // --------------------------------------------------------------------------- /** \brief Data structure for a MDC base vertex */ -struct BaseVertex -{ +struct BaseVertex { int16_t x,y,z; uint16_t normal; } PACK_STRUCT; @@ -188,25 +180,20 @@ struct BaseVertex // --------------------------------------------------------------------------- /** \brief Data structure for a MDC compressed vertex */ -struct CompressedVertex -{ +struct CompressedVertex { uint8_t xd,yd,zd,nd; } PACK_STRUCT; - // --------------------------------------------------------------------------- /** \brief Data structure for a MDC shader */ -struct Shader -{ +struct Shader { char ucName [ AI_MDC_MAXQPATH ] ; uint32_t ulPath; - } PACK_STRUCT; #include - // --------------------------------------------------------------------------- /** Build a floating point vertex from the compressed data in MDC files */ @@ -215,6 +202,7 @@ void BuildVertex(const Frame& frame, const CompressedVertex& cvert, aiVector3D& vXYZOut, aiVector3D& vNorOut); -}} +} +} #endif // !! AI_MDCFILEHELPER_H_INC diff --git a/code/MDCLoader.cpp b/code/MDCLoader.cpp index e294a1912..03b3336de 100644 --- a/code/MDCLoader.cpp +++ b/code/MDCLoader.cpp @@ -434,10 +434,12 @@ void MDCImporter::InternReadFile( else if (1 == pScene->mNumMeshes) { pScene->mRootNode = new aiNode(); - pScene->mRootNode->mName = pScene->mMeshes[0]->mName; - pScene->mRootNode->mNumMeshes = 1; - pScene->mRootNode->mMeshes = new unsigned int[1]; - pScene->mRootNode->mMeshes[0] = 0; + if ( nullptr != pScene->mMeshes[0] ) { + pScene->mRootNode->mName = pScene->mMeshes[0]->mName; + pScene->mRootNode->mNumMeshes = 1; + pScene->mRootNode->mMeshes = new unsigned int[1]; + pScene->mRootNode->mMeshes[0] = 0; + } } else { diff --git a/code/MDLFileData.h b/code/MDLFileData.h index ba732add0..f9be6761b 100644 --- a/code/MDLFileData.h +++ b/code/MDLFileData.h @@ -709,7 +709,7 @@ struct GroupFrame SimpleFrame *frames; } PACK_STRUCT; -#include "./../include/assimp/Compiler/poppack1.h" +#include // ------------------------------------------------------------------------------------- /** \struct IntFace_MDL7 @@ -717,11 +717,9 @@ struct GroupFrame */ struct IntFace_MDL7 { // provide a constructor for our own convenience - IntFace_MDL7() - { - // set everything to zero - mIndices[0] = mIndices[1] = mIndices[2] = 0; - iMatIndex[0] = iMatIndex[1] = 0; + IntFace_MDL7() AI_NO_EXCEPT { + ::memset( mIndices, 0, sizeof(uint32_t) *3); + ::memset( iMatIndex, 0, sizeof( unsigned int) *2); } //! Vertex indices @@ -737,13 +735,11 @@ struct IntFace_MDL7 { * which has been created from two single materials along with the * original material indices. */ -struct IntMaterial_MDL7 -{ +struct IntMaterial_MDL7 { // provide a constructor for our own convenience - IntMaterial_MDL7() - { - pcMat = NULL; - iOldMatIndices[0] = iOldMatIndices[1] = 0; + IntMaterial_MDL7() AI_NO_EXCEPT + : pcMat( nullptr ) { + ::memset( iOldMatIndices, 0, sizeof(unsigned int) *2); } //! Material instance @@ -761,7 +757,7 @@ struct IntMaterial_MDL7 struct IntBone_MDL7 : aiBone { //! Default constructor - IntBone_MDL7() : iParent (0xffff) + IntBone_MDL7() AI_NO_EXCEPT : iParent (0xffff) { pkeyPositions.reserve(30); pkeyScalings.reserve(30); @@ -806,12 +802,12 @@ struct IntFrameInfo_MDL7 struct IntGroupInfo_MDL7 { //! Default constructor - IntGroupInfo_MDL7() + IntGroupInfo_MDL7() AI_NO_EXCEPT : iIndex(0) - , pcGroup(NULL) - , pcGroupUVs(NULL) - , pcGroupTris(NULL) - , pcGroupVerts(NULL) + , pcGroup(nullptr) + , pcGroupUVs(nullptr) + , pcGroupTris(nullptr) + , pcGroupVerts(nullptr) {} //! Construction from an existing group header @@ -843,7 +839,7 @@ struct IntGroupInfo_MDL7 //! Holds the data that belongs to a MDL7 mesh group struct IntGroupData_MDL7 { - IntGroupData_MDL7() + IntGroupData_MDL7() AI_NO_EXCEPT : bNeed2UV(false) {} @@ -872,10 +868,9 @@ struct IntGroupData_MDL7 // ------------------------------------------------------------------------------------- //! Holds data from an MDL7 file that is shared by all mesh groups -struct IntSharedData_MDL7 -{ +struct IntSharedData_MDL7 { //! Default constructor - IntSharedData_MDL7() + IntSharedData_MDL7() AI_NO_EXCEPT : apcOutBones(), iNum() { diff --git a/code/MDLLoader.cpp b/code/MDLLoader.cpp index dfe1c1311..eb067a1c9 100644 --- a/code/MDLLoader.cpp +++ b/code/MDLLoader.cpp @@ -413,8 +413,9 @@ void MDLImporter::InternReadFile_Quake1() { #if 1 // FIXME: the cast is wrong and cause a warning on clang 5.0 - // disable thi code for now, fix it later + // disable this code for now, fix it later ai_assert(false && "Bad pointer cast"); + pcFirstFrame = nullptr; // Workaround: msvc++ C4703 error #else BE_NCONST MDL::GroupFrame* pcFrames2 = (BE_NCONST MDL::GroupFrame*)pcFrames; pcFirstFrame = (BE_NCONST MDL::SimpleFrame*)(&pcFrames2->time + pcFrames->type); diff --git a/code/MMDImporter.cpp b/code/MMDImporter.cpp index 3d7f3c794..84b9e35a6 100644 --- a/code/MMDImporter.cpp +++ b/code/MMDImporter.cpp @@ -72,18 +72,16 @@ using namespace std; // ------------------------------------------------------------------------------------------------ // Default constructor MMDImporter::MMDImporter() - : m_Buffer(), - // m_pRootObject( NULL ), - m_strAbsPath("") { - DefaultIOSystem io; - m_strAbsPath = io.getOsSeparator(); +: m_Buffer() +, m_strAbsPath("") { + DefaultIOSystem io; + m_strAbsPath = io.getOsSeparator(); } // ------------------------------------------------------------------------------------------------ // Destructor. MMDImporter::~MMDImporter() { - // delete m_pRootObject; - // m_pRootObject = NULL; + // empty } // ------------------------------------------------------------------------------------------------ @@ -96,8 +94,7 @@ bool MMDImporter::CanRead(const std::string &pFile, IOSystem *pIOHandler, } else // Check file Header { static const char *pTokens[] = {"PMX "}; - return BaseImporter::SearchFileHeaderForToken(pIOHandler, pFile, pTokens, - 1); + return BaseImporter::SearchFileHeaderForToken(pIOHandler, pFile, pTokens, 1); } } @@ -354,8 +351,11 @@ aiMaterial *MMDImporter::CreateMaterial(const pmx::PmxMaterial *pMat, float shininess = pMat->specularlity; mat->AddProperty(&shininess, 1, AI_MATKEY_SHININESS_STRENGTH); - aiString texture_path(pModel->textures[pMat->diffuse_texture_index]); - mat->AddProperty(&texture_path, AI_MATKEY_TEXTURE(aiTextureType_DIFFUSE, 0)); + if(pMat->diffuse_texture_index >= 0) { + aiString texture_path(pModel->textures[pMat->diffuse_texture_index]); + mat->AddProperty(&texture_path, AI_MATKEY_TEXTURE(aiTextureType_DIFFUSE, 0)); + } + int mapping_uvwsrc = 0; mat->AddProperty(&mapping_uvwsrc, 1, AI_MATKEY_UVWSRC(aiTextureType_DIFFUSE, 0)); diff --git a/code/MMDPmxParser.cpp b/code/MMDPmxParser.cpp index 93163404d..2c5bd9a8d 100644 --- a/code/MMDPmxParser.cpp +++ b/code/MMDPmxParser.cpp @@ -94,16 +94,15 @@ namespace pmx if (encoding == 0) { // UTF16 to UTF8 - std::string result; - - const char* sourceStart = buffer.data(); + const uint16_t* sourceStart = (uint16_t*)buffer.data(); const unsigned int targetSize = size * 3; // enough to encode - char* targetStart = new char[targetSize](); - const char* targetReserved = targetStart; - utf8::utf16to8( sourceStart, sourceStart + size, targetStart ); + char *targetStart = new char[targetSize]; + std::memset(targetStart, 0, targetSize * sizeof(char)); + + utf8::utf16to8( sourceStart, sourceStart + size/2, targetStart ); - result.assign(targetReserved, targetStart - targetReserved); - delete[] targetReserved; + std::string result(targetStart); + delete [] targetStart; return result; } else @@ -475,7 +474,6 @@ namespace pmx void PmxSoftBody::Read(std::istream * /*stream*/, PmxSetting * /*setting*/) { - // 未実装 std::cerr << "Not Implemented Exception" << std::endl; throw DeadlyImportError("MMD: Not Implemented Exception"); } @@ -511,31 +509,27 @@ namespace pmx void PmxModel::Read(std::istream *stream) { - // マジック char magic[4]; stream->read((char*) magic, sizeof(char) * 4); if (magic[0] != 0x50 || magic[1] != 0x4d || magic[2] != 0x58 || magic[3] != 0x20) { std::cerr << "invalid magic number." << std::endl; - throw DeadlyImportError("MMD: invalid magic number."); - } - // バージョン + throw DeadlyImportError("MMD: invalid magic number."); + } stream->read((char*) &version, sizeof(float)); if (version != 2.0f && version != 2.1f) { std::cerr << "this is not ver2.0 or ver2.1 but " << version << "." << std::endl; throw DeadlyImportError("MMD: this is not ver2.0 or ver2.1 but " + to_string(version)); - } - // ファイル設定 + } this->setting.Read(stream); - // モデル情報 this->model_name = ReadString(stream, setting.encoding); this->model_english_name = ReadString(stream, setting.encoding); this->model_comment = ReadString(stream, setting.encoding); this->model_english_comment = ReadString(stream, setting.encoding); - // 頂点 + // read vertices stream->read((char*) &vertex_count, sizeof(int)); this->vertices = mmd::make_unique(vertex_count); for (int i = 0; i < vertex_count; i++) @@ -543,7 +537,7 @@ namespace pmx vertices[i].Read(stream, &setting); } - // 面 + // read indices stream->read((char*) &index_count, sizeof(int)); this->indices = mmd::make_unique(index_count); for (int i = 0; i < index_count; i++) @@ -551,7 +545,7 @@ namespace pmx this->indices[i] = ReadIndex(stream, setting.vertex_index_size); } - // テクスチャ + // read texture names stream->read((char*) &texture_count, sizeof(int)); this->textures = mmd::make_unique(texture_count); for (int i = 0; i < texture_count; i++) @@ -559,7 +553,7 @@ namespace pmx this->textures[i] = ReadString(stream, setting.encoding); } - // マテリアル + // read materials stream->read((char*) &material_count, sizeof(int)); this->materials = mmd::make_unique(material_count); for (int i = 0; i < material_count; i++) @@ -567,7 +561,7 @@ namespace pmx this->materials[i].Read(stream, &setting); } - // ボーン + // read bones stream->read((char*) &this->bone_count, sizeof(int)); this->bones = mmd::make_unique(this->bone_count); for (int i = 0; i < this->bone_count; i++) @@ -575,7 +569,7 @@ namespace pmx this->bones[i].Read(stream, &setting); } - // モーフ + // read morphs stream->read((char*) &this->morph_count, sizeof(int)); this->morphs = mmd::make_unique(this->morph_count); for (int i = 0; i < this->morph_count; i++) @@ -583,7 +577,7 @@ namespace pmx this->morphs[i].Read(stream, &setting); } - // 表示枠 + // read display frames stream->read((char*) &this->frame_count, sizeof(int)); this->frames = mmd::make_unique(this->frame_count); for (int i = 0; i < this->frame_count; i++) @@ -591,7 +585,7 @@ namespace pmx this->frames[i].Read(stream, &setting); } - // 剛体 + // read rigid bodies stream->read((char*) &this->rigid_body_count, sizeof(int)); this->rigid_bodies = mmd::make_unique(this->rigid_body_count); for (int i = 0; i < this->rigid_body_count; i++) @@ -599,7 +593,7 @@ namespace pmx this->rigid_bodies[i].Read(stream, &setting); } - // ジョイント + // read joints stream->read((char*) &this->joint_count, sizeof(int)); this->joints = mmd::make_unique(this->joint_count); for (int i = 0; i < this->joint_count; i++) diff --git a/code/MS3DLoader.cpp b/code/MS3DLoader.cpp index b06bea31c..c659d2ec7 100644 --- a/code/MS3DLoader.cpp +++ b/code/MS3DLoader.cpp @@ -181,8 +181,7 @@ void MS3DImporter :: CollectChildJoints(const std::vector& joints, ch->mParent = nd; ch->mTransformation = aiMatrix4x4::Translation(joints[i].position,aiMatrix4x4()=aiMatrix4x4())* - // XXX actually, I don't *know* why we need the inverse here. Probably column vs. row order? - aiMatrix4x4().FromEulerAnglesXYZ(joints[i].rotation).Transpose(); + aiMatrix4x4().FromEulerAnglesXYZ(joints[i].rotation); const aiMatrix4x4 abs = absTrafo*ch->mTransformation; for(unsigned int a = 0; a < mScene->mNumMeshes; ++a) { @@ -639,11 +638,8 @@ void MS3DImporter::InternReadFile( const std::string& pFile, aiQuatKey& q = nd->mRotationKeys[nd->mNumRotationKeys++]; q.mTime = (*rot).time*animfps; - - // XXX it seems our matrix&quaternion code has faults in its conversion routines -- - // aiQuaternion(x,y,z) seems to besomething different as quat(matrix.fromeuler(x,y,z)). - q.mValue = aiQuaternion(aiMatrix3x3(aiMatrix4x4().FromEulerAnglesXYZ((*rot).value)* - aiMatrix4x4().FromEulerAnglesXYZ((*it).rotation)).Transpose()); + q.mValue = aiQuaternion(aiMatrix3x3(aiMatrix4x4().FromEulerAnglesXYZ((*it).rotation)* + aiMatrix4x4().FromEulerAnglesXYZ((*rot).value))); } } diff --git a/code/MaterialSystem.cpp b/code/MaterialSystem.cpp index 3679c93c7..e9ca475fb 100644 --- a/code/MaterialSystem.cpp +++ b/code/MaterialSystem.cpp @@ -194,12 +194,18 @@ aiReturn aiGetMaterialIntegerArray(const aiMaterial* pMat, // data is given in ints, simply copy it unsigned int iWrite = 0; if( aiPTI_Integer == prop->mType || aiPTI_Buffer == prop->mType) { - iWrite = prop->mDataLength / sizeof(int32_t); + iWrite = std::max(static_cast(prop->mDataLength / sizeof(int32_t)), 1u); if (pMax) { - iWrite = std::min(*pMax,iWrite); ; + iWrite = std::min(*pMax,iWrite); } - for (unsigned int a = 0; a < iWrite;++a) { - pOut[a] = static_cast(reinterpret_cast(prop->mData)[a]); + if (1 == prop->mDataLength) { + // bool type, 1 byte + *pOut = static_cast(*prop->mData); + } + else { + for (unsigned int a = 0; a < iWrite;++a) { + pOut[a] = static_cast(reinterpret_cast(prop->mData)[a]); + } } if (pMax) { *pMax = iWrite; @@ -387,26 +393,6 @@ aiReturn aiGetMaterialTexture(const C_STRUCT aiMaterial* mat, return AI_SUCCESS; } -static aiMaterial *DefaultMaterial = nullptr; - -// ------------------------------------------------------------------------------------------------ -// Will return the default material. -aiMaterial *aiCreateAndRegisterDefaultMaterial() { - if (nullptr == DefaultMaterial) { - DefaultMaterial = new aiMaterial; - aiString s; - s.Set(AI_DEFAULT_MATERIAL_NAME); - DefaultMaterial->AddProperty(&s, AI_MATKEY_NAME); - } - - return DefaultMaterial; -} - -// ------------------------------------------------------------------------------------------------ -// Will return the default material. -void aiReleaseDefaultMaterial() { - DefaultMaterial = nullptr; -} static const unsigned int DefaultNumAllocated = 5; diff --git a/code/OFFLoader.cpp b/code/OFFLoader.cpp index 81f9c9916..a72e6d9d4 100644 --- a/code/OFFLoader.cpp +++ b/code/OFFLoader.cpp @@ -106,15 +106,23 @@ const aiImporterDesc* OFFImporter::GetInfo () const return &desc; } + +// skip blank space, lines and comments +static void NextToken(const char **car, const char* end) { + SkipSpacesAndLineEnd(car); + while (*car < end && (**car == '#' || **car == '\n' || **car == '\r')) { + SkipLine(car); + SkipSpacesAndLineEnd(car); + } +} + // ------------------------------------------------------------------------------------------------ // Imports the given file into the given scene structure. -void OFFImporter::InternReadFile( const std::string& pFile, - aiScene* pScene, IOSystem* pIOHandler) -{ +void OFFImporter::InternReadFile( const std::string& pFile, aiScene* pScene, IOSystem* pIOHandler) { std::unique_ptr file( pIOHandler->Open( pFile, "rb")); // Check whether we can read from the file - if( file.get() == NULL) { + if( file.get() == nullptr) { throw DeadlyImportError( "Failed to open OFF file " + pFile + "."); } @@ -123,15 +131,61 @@ void OFFImporter::InternReadFile( const std::string& pFile, TextFileToBuffer(file.get(),mBuffer2); const char* buffer = &mBuffer2[0]; - char line[4096]; - GetNextLine(buffer,line); - if ('O' == line[0]) { - GetNextLine(buffer,line); // skip the 'OFF' line + // Proper OFF header parser. We only implement normal loading for now. + bool hasTexCoord = false, hasNormals = false, hasColors = false; + bool hasHomogenous = false, hasDimension = false; + unsigned int dimensions = 3; + const char* car = buffer; + const char* end = buffer + mBuffer2.size(); + NextToken(&car, end); + + if (car < end - 2 && car[0] == 'S' && car[1] == 'T') { + hasTexCoord = true; car += 2; + } + if (car < end - 1 && car[0] == 'C') { + hasColors = true; car++; + } + if (car < end- 1 && car[0] == 'N') { + hasNormals = true; car++; + } + if (car < end - 1 && car[0] == '4') { + hasHomogenous = true; car++; + } + if (car < end - 1 && car[0] == 'n') { + hasDimension = true; car++; + } + if (car < end - 3 && car[0] == 'O' && car[1] == 'F' && car[2] == 'F') { + car += 3; + NextToken(&car, end); + } else { + // in case there is no OFF header (which is allowed by the + // specification...), then we might have unintentionally read an + // additional dimension from the primitive count fields + dimensions = 3; + hasHomogenous = false; + NextToken(&car, end); + + // at this point the next token should be an integer number + if (car >= end - 1 || *car < '0' || *car > '9') { + throw DeadlyImportError("OFF: Header is invalid"); + } + } + if (hasDimension) { + dimensions = strtoul10(car, &car); + NextToken(&car, end); + } + if (dimensions > 3) { + throw DeadlyImportError + ("OFF: Number of vertex coordinates higher than 3 unsupported"); } - const char* sz = line; SkipSpaces(&sz); - const unsigned int numVertices = strtoul10(sz,&sz);SkipSpaces(&sz); - const unsigned int numFaces = strtoul10(sz,&sz); + NextToken(&car, end); + const unsigned int numVertices = strtoul10(car, &car); + NextToken(&car, end); + const unsigned int numFaces = strtoul10(car, &car); + NextToken(&car, end); + strtoul10(car, &car); // skip edge count + NextToken(&car, end); if (!numVertices) { throw DeadlyImportError("OFF: There are no valid vertices"); @@ -147,91 +201,127 @@ void OFFImporter::InternReadFile( const std::string& pFile, pScene->mMeshes[0] = mesh; mesh->mNumFaces = numFaces; - aiFace* faces = new aiFace [mesh->mNumFaces]; + aiFace* faces = new aiFace[mesh->mNumFaces]; mesh->mFaces = faces; - std::vector tempPositions(numVertices); + mesh->mNumVertices = numVertices; + mesh->mVertices = new aiVector3D[numVertices]; + mesh->mNormals = hasNormals ? new aiVector3D[numVertices] : nullptr; + mesh->mColors[0] = hasColors ? new aiColor4D[numVertices] : nullptr; + + if (hasTexCoord) { + mesh->mNumUVComponents[0] = 2; + mesh->mTextureCoords[0] = new aiVector3D[numVertices]; + } + char line[4096]; + buffer = car; + const char *sz = car; // now read all vertex lines - for (unsigned int i = 0; i< numVertices;++i) - { - if(!GetNextLine(buffer,line)) - { + for (unsigned int i = 0; i < numVertices; ++i) { + if(!GetNextLine(buffer, line)) { ASSIMP_LOG_ERROR("OFF: The number of verts in the header is incorrect"); break; } - aiVector3D& v = tempPositions[i]; + aiVector3D& v = mesh->mVertices[i]; + sz = line; - sz = line; SkipSpaces(&sz); - sz = fast_atoreal_move(sz,(ai_real&)v.x); SkipSpaces(&sz); - sz = fast_atoreal_move(sz,(ai_real&)v.y); SkipSpaces(&sz); - fast_atoreal_move(sz,(ai_real&)v.z); + // helper array to write a for loop over possible dimension values + ai_real* vec[3] = {&v.x, &v.y, &v.z}; + + // stop at dimensions: this allows loading 1D or 2D coordinate vertices + for (unsigned int dim = 0; dim < dimensions; ++dim ) { + SkipSpaces(&sz); + sz = fast_atoreal_move(sz, *vec[dim]); + } + + // if has homogenous coordinate, divide others by this one + if (hasHomogenous) { + SkipSpaces(&sz); + ai_real w = 1.; + sz = fast_atoreal_move(sz, w); + for (unsigned int dim = 0; dim < dimensions; ++dim ) { + *(vec[dim]) /= w; + } + } + + // read optional normals + if (hasNormals) { + aiVector3D& n = mesh->mNormals[i]; + SkipSpaces(&sz); + sz = fast_atoreal_move(sz,(ai_real&)n.x); + SkipSpaces(&sz); + sz = fast_atoreal_move(sz,(ai_real&)n.y); + SkipSpaces(&sz); + fast_atoreal_move(sz,(ai_real&)n.z); + } + + // reading colors is a pain because the specification says it can be + // integers or floats, and any number of them between 1 and 4 included, + // until the next comment or end of line + // in theory should be testing type ! + if (hasColors) { + aiColor4D& c = mesh->mColors[0][i]; + SkipSpaces(&sz); + sz = fast_atoreal_move(sz,(ai_real&)c.r); + if (*sz != '#' && *sz != '\n' && *sz != '\r') { + SkipSpaces(&sz); + sz = fast_atoreal_move(sz,(ai_real&)c.g); + } else { + c.g = 0.; + } + if (*sz != '#' && *sz != '\n' && *sz != '\r') { + SkipSpaces(&sz); + sz = fast_atoreal_move(sz,(ai_real&)c.b); + } else { + c.b = 0.; + } + if (*sz != '#' && *sz != '\n' && *sz != '\r') { + SkipSpaces(&sz); + sz = fast_atoreal_move(sz,(ai_real&)c.a); + } else { + c.a = 1.; + } + } + if (hasTexCoord) { + aiVector3D& t = mesh->mTextureCoords[0][i]; + SkipSpaces(&sz); + sz = fast_atoreal_move(sz,(ai_real&)t.x); + SkipSpaces(&sz); + fast_atoreal_move(sz,(ai_real&)t.y); + } } - - // First find out how many vertices we'll need - const char* old = buffer; - for (unsigned int i = 0; i< mesh->mNumFaces;++i) - { - if(!GetNextLine(buffer,line)) - { + // load faces with their indices + faces = mesh->mFaces; + for (unsigned int i = 0; i < numFaces; ) { + if(!GetNextLine(buffer,line)) { ASSIMP_LOG_ERROR("OFF: The number of faces in the header is incorrect"); break; } - sz = line;SkipSpaces(&sz); - faces->mNumIndices = strtoul10(sz,&sz); - if(!(faces->mNumIndices) || faces->mNumIndices > 9) - { - ASSIMP_LOG_ERROR("OFF: Faces with zero indices aren't allowed"); + unsigned int idx; + sz = line; SkipSpaces(&sz); + idx = strtoul10(sz,&sz); + if(!idx || idx > 9) { + ASSIMP_LOG_ERROR("OFF: Faces with zero indices aren't allowed"); --mesh->mNumFaces; continue; - } - mesh->mNumVertices += faces->mNumIndices; - ++faces; - } - - if (!mesh->mNumVertices) - throw DeadlyImportError("OFF: There are no valid faces"); - - // allocate storage for the output vertices - std::vector verts; - verts.reserve(mesh->mNumVertices); - - // second: now parse all face indices - buffer = old; - faces = mesh->mFaces; - for (unsigned int i = 0, p = 0; i< mesh->mNumFaces;) - { - if(!GetNextLine(buffer,line))break; - - unsigned int idx; - sz = line;SkipSpaces(&sz); - idx = strtoul10(sz,&sz); - if(!(idx) || idx > 9) - continue; - - faces->mIndices = new unsigned int [faces->mNumIndices]; - for (unsigned int m = 0; m < faces->mNumIndices;++m) - { + } + faces->mNumIndices = idx; + faces->mIndices = new unsigned int[faces->mNumIndices]; + for (unsigned int m = 0; m < faces->mNumIndices;++m) { SkipSpaces(&sz); idx = strtoul10(sz,&sz); - if ((idx) >= numVertices) - { + if (idx >= numVertices) { ASSIMP_LOG_ERROR("OFF: Vertex index is out of range"); - idx = numVertices-1; + idx = numVertices - 1; } - faces->mIndices[m] = p++; - verts.push_back(tempPositions[idx]); + faces->mIndices[m] = idx; } ++i; ++faces; } - - if (mesh->mNumVertices != verts.size()) { - throw DeadlyImportError("OFF: Vertex count mismatch"); - } - mesh->mVertices = new aiVector3D[verts.size()]; - memcpy(mesh->mVertices, &verts[0], verts.size() * sizeof(aiVector3D)); + // generate the output node graph pScene->mRootNode = new aiNode(); pScene->mRootNode->mName.Set(""); @@ -248,8 +338,8 @@ void OFFImporter::InternReadFile( const std::string& pFile, pcMat->AddProperty(&clr,1,AI_MATKEY_COLOR_DIFFUSE); pScene->mMaterials[0] = pcMat; - const int twosided =1; - pcMat->AddProperty(&twosided,1,AI_MATKEY_TWOSIDED); + const int twosided = 1; + pcMat->AddProperty(&twosided, 1, AI_MATKEY_TWOSIDED); } #endif // !! ASSIMP_BUILD_NO_OFF_IMPORTER diff --git a/code/ObjFileImporter.cpp b/code/ObjFileImporter.cpp index 2b6730e4e..6fd48cfa1 100644 --- a/code/ObjFileImporter.cpp +++ b/code/ObjFileImporter.cpp @@ -105,7 +105,7 @@ bool ObjFileImporter::CanRead( const std::string& pFile, IOSystem* pIOHandler , } // ------------------------------------------------------------------------------------------------ -const aiImporterDesc* ObjFileImporter::GetInfo () const { +const aiImporterDesc* ObjFileImporter::GetInfo() const { return &desc; } @@ -211,12 +211,29 @@ void ObjFileImporter::CreateDataFromImport(const ObjFile::Model* pModel, aiScene } if (pModel->m_Objects.size() > 0) { + + unsigned int meshCount = 0; + unsigned int childCount = 0; + + for(size_t index = 0; index < pModel->m_Objects.size(); ++index) { + if(pModel->m_Objects[index]) { + ++childCount; + meshCount += (unsigned int)pModel->m_Objects[index]->m_Meshes.size(); + } + } + + // Allocate space for the child nodes on the root node + pScene->mRootNode->mChildren = new aiNode*[ childCount ]; + // Create nodes for the whole scene std::vector MeshArray; + MeshArray.reserve(meshCount); for (size_t index = 0; index < pModel->m_Objects.size(); ++index) { createNodes(pModel, pModel->m_Objects[index], pScene->mRootNode, pScene, MeshArray); } + ai_assert(pScene->mRootNode->mNumChildren == childCount); + // Create mesh pointer buffer for this scene if (pScene->mNumMeshes > 0) { pScene->mMeshes = new aiMesh*[MeshArray.size()]; @@ -234,7 +251,7 @@ void ObjFileImporter::CreateDataFromImport(const ObjFile::Model* pModel, aiScene std::unique_ptr mesh( new aiMesh ); mesh->mPrimitiveTypes = aiPrimitiveType_POINT; - unsigned int n = pModel->m_Vertices.size(); + unsigned int n = (unsigned int)pModel->m_Vertices.size(); mesh->mNumVertices = n; mesh->mVertices = new aiVector3D[n]; @@ -287,9 +304,8 @@ aiNode *ObjFileImporter::createNodes(const ObjFile::Model* pModel, const ObjFile pNode->mName = pObject->m_strObjName; // If we have a parent node, store it - if( pParent != NULL ) { - appendChildToParentNode( pParent, pNode ); - } + ai_assert( NULL != pParent ); + appendChildToParentNode( pParent, pNode ); for ( size_t i=0; i< pObject->m_Meshes.size(); ++i ) { unsigned int meshId = pObject->m_Meshes[ i ]; @@ -442,8 +458,8 @@ void ObjFileImporter::createVertexArray(const ObjFile::Model* pModel, pMesh->mNumVertices = numIndices; if (pMesh->mNumVertices == 0) { throw DeadlyImportError( "OBJ: no vertices" ); - } else if (pMesh->mNumVertices > AI_MAX_ALLOC(aiVector3D)) { - throw DeadlyImportError( "OBJ: Too many vertices, would run out of memory" ); + } else if (pMesh->mNumVertices > AI_MAX_VERTICES) { + throw DeadlyImportError( "OBJ: Too many vertices" ); } pMesh->mVertices = new aiVector3D[ pMesh->mNumVertices ]; @@ -770,25 +786,8 @@ void ObjFileImporter::appendChildToParentNode(aiNode *pParent, aiNode *pChild) // Assign parent to child pChild->mParent = pParent; - // If already children was assigned to the parent node, store them in a - std::vector temp; - if (pParent->mChildren != NULL) - { - ai_assert( 0 != pParent->mNumChildren ); - for (size_t index = 0; index < pParent->mNumChildren; index++) - { - temp.push_back(pParent->mChildren [ index ] ); - } - delete [] pParent->mChildren; - } - // Copy node instances into parent node pParent->mNumChildren++; - pParent->mChildren = new aiNode*[ pParent->mNumChildren ]; - for (size_t index = 0; index < pParent->mNumChildren-1; index++) - { - pParent->mChildren[ index ] = temp [ index ]; - } pParent->mChildren[ pParent->mNumChildren-1 ] = pChild; } diff --git a/code/OptimizeMeshes.h b/code/OptimizeMeshes.h index f57447ccd..3ebe60cd8 100644 --- a/code/OptimizeMeshes.h +++ b/code/OptimizeMeshes.h @@ -67,20 +67,22 @@ namespace Assimp { class OptimizeMeshesProcess : public BaseProcess { public: - + /// @brief The class constructor. OptimizeMeshesProcess(); + + /// @brief The class destcructor, ~OptimizeMeshesProcess(); /** @brief Internal utility to store additional mesh info */ - struct MeshInfo - { - MeshInfo() - : instance_cnt (0) - , vertex_format (0) - , output_id (0xffffffff) - {} + struct MeshInfo { + MeshInfo() AI_NO_EXCEPT + : instance_cnt(0) + , vertex_format(0) + , output_id(0xffffffff) { + // empty + } //! Number of times this mesh is referenced unsigned int instance_cnt; diff --git a/code/PlyParser.h b/code/PlyParser.h index 261ac7b82..b544c3b04 100644 --- a/code/PlyParser.h +++ b/code/PlyParser.h @@ -209,7 +209,7 @@ enum EElementSemantic { class Property { public: //! Default constructor - Property() + Property() AI_NO_EXCEPT : eType (EDT_Int) , Semantic() , bIsList(false) @@ -257,7 +257,7 @@ public: class Element { public: //! Default constructor - Element() + Element() AI_NO_EXCEPT : eSemantic (EEST_INVALID) , NumOccur(0) { // empty @@ -297,8 +297,9 @@ class PropertyInstance public: //! Default constructor - PropertyInstance () - {} + PropertyInstance() AI_NO_EXCEPT { + // empty + } union ValueUnion { @@ -356,13 +357,13 @@ public: // --------------------------------------------------------------------------------- /** \brief Class for an element instance in a PLY file */ -class ElementInstance -{ +class ElementInstance { public: - //! Default constructor - ElementInstance () - {} + ElementInstance() AI_NO_EXCEPT + : alProperties() { + // empty + } //! List of all parsed properties std::vector< PropertyInstance > alProperties; @@ -386,8 +387,10 @@ class ElementInstanceList public: //! Default constructor - ElementInstanceList () - {} + ElementInstanceList() AI_NO_EXCEPT + : alInstances() { + // empty + } //! List of all element instances std::vector< ElementInstance > alInstances; @@ -411,8 +414,11 @@ class DOM public: //! Default constructor - DOM() - {} + DOM() AI_NO_EXCEPT + : alElements() + , alElementData() { + + } //! Contains all elements of the file format diff --git a/code/PostStepRegistry.cpp b/code/PostStepRegistry.cpp index 6c25b9361..646aeaeb0 100644 --- a/code/PostStepRegistry.cpp +++ b/code/PostStepRegistry.cpp @@ -62,6 +62,9 @@ corresponding preprocessor flag to selectively disable steps. #ifndef ASSIMP_BUILD_NO_TRIANGULATE_PROCESS # include "TriangulateProcess.h" #endif +#ifndef ASSIMP_BUILD_NO_DROPFACENORMALS_PROCESS +# include "DropFaceNormalsProcess.h" +#endif #ifndef ASSIMP_BUILD_NO_GENFACENORMALS_PROCESS # include "GenFaceNormalsProcess.h" #endif @@ -200,6 +203,9 @@ void GetPostProcessingStepInstanceList(std::vector< BaseProcess* >& out) #if (!defined ASSIMP_BUILD_NO_SPLITLARGEMESHES_PROCESS) out.push_back( new SplitLargeMeshesProcess_Triangle()); #endif +#if (!defined ASSIMP_BUILD_NO_GENFACENORMALS_PROCESS) + out.push_back( new DropFaceNormalsProcess()); +#endif #if (!defined ASSIMP_BUILD_NO_GENFACENORMALS_PROCESS) out.push_back( new GenFaceNormalsProcess()); #endif diff --git a/code/Q3BSPFileData.h b/code/Q3BSPFileData.h index eb3a1444a..d814837c2 100644 --- a/code/Q3BSPFileData.h +++ b/code/Q3BSPFileData.h @@ -43,7 +43,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define ASSIMP_Q3BSPFILEDATA_H_INC #include -#include //memset +#include #include namespace Assimp { @@ -77,25 +77,21 @@ struct sQ3BSPHeader { }; /// Describes an entry. -struct sQ3BSPLump -{ +struct sQ3BSPLump { int iOffset; ///< Offset from start pointer of file int iSize; ///< Size of part }; -struct vec2f -{ +struct vec2f { float x,y; }; -struct vec3f -{ +struct vec3f { float x, y, z; }; /// Vertex of a Q3 level -struct sQ3BSPVertex -{ +struct sQ3BSPVertex { vec3f vPosition; ///< Position of vertex vec2f vTexCoord; ///< (u,v) Texturecoordinate of detailtexture vec2f vLightmap; ///< (u,v) Texturecoordinate of lightmap @@ -104,8 +100,7 @@ struct sQ3BSPVertex }; /// A face in bsp format info -struct sQ3BSPFace -{ +struct sQ3BSPFace { int iTextureID; ///< Index in texture array int iEffect; ///< Index in effect array (-1 = no effect) int iType; ///< 1=Polygon, 2=Patch, 3=Mesh, 4=Billboard diff --git a/code/Q3BSPFileImporter.cpp b/code/Q3BSPFileImporter.cpp index aad2bf93c..58fbef985 100644 --- a/code/Q3BSPFileImporter.cpp +++ b/code/Q3BSPFileImporter.cpp @@ -47,6 +47,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "Q3BSPFileParser.h" #include "Q3BSPFileData.h" +#include + #ifdef ASSIMP_BUILD_NO_OWN_ZLIB # include #else @@ -82,39 +84,39 @@ using namespace Q3BSP; // ------------------------------------------------------------------------------------------------ // Local function to create a material key name. -static void createKey( int id1, int id2, std::string &rKey ) -{ +static void createKey( int id1, int id2, std::string &key ) { std::ostringstream str; str << id1 << "." << id2; - rKey = str.str(); + key = str.str(); } // ------------------------------------------------------------------------------------------------ // Local function to extract the texture ids from a material key-name. -static void extractIds( const std::string &rKey, int &rId1, int &rId2 ) -{ - rId1 = -1; - rId2 = -1; - if ( rKey.empty() ) +static void extractIds( const std::string &key, int &id1, int &id2 ) { + id1 = -1; + id2 = -1; + if (key.empty()) { return; + } - std::string::size_type pos = rKey.find( "." ); - if ( std::string::npos == pos ) + const std::string::size_type pos = key.find( "." ); + if (std::string::npos == pos) { return; + } - std::string tmp1 = rKey.substr( 0, pos ); - std::string tmp2 = rKey.substr( pos + 1, rKey.size() - pos - 1 ); - rId1 = atoi( tmp1.c_str() ); - rId2 = atoi( tmp2.c_str() ); + std::string tmp1 = key.substr( 0, pos ); + std::string tmp2 = key.substr( pos + 1, key.size() - pos - 1 ); + id1 = atoi( tmp1.c_str() ); + id2 = atoi( tmp2.c_str() ); } // ------------------------------------------------------------------------------------------------ // Local helper function to normalize filenames. -static void normalizePathName( const std::string &rPath, std::string &rNormalizedPath ) -{ - rNormalizedPath = ""; - if ( rPath.empty() ) +static void normalizePathName( const std::string &rPath, std::string &normalizedPath ) { + normalizedPath = ""; + if (rPath.empty()) { return; + } #ifdef _WIN32 std::string sep = "\\"; @@ -124,14 +126,11 @@ static void normalizePathName( const std::string &rPath, std::string &rNormalize static const unsigned int numDelimiters = 2; const char delimiters[ numDelimiters ] = { '/', '\\' }; - rNormalizedPath = rPath; - for (const char delimiter : delimiters) - { - for ( size_t j=0; j fileList; - rArchive.getFileList( fileList ); - if ( fileList.empty() ) + bspArchive.getFileList( fileList ); + if (fileList.empty()) { return false; + } - for ( std::vector::iterator it = fileList.begin(); it != fileList.end(); - ++it ) - { - std::string::size_type pos = (*it).find( "maps/" ); - if ( std::string::npos != pos ) - { + std::vector::iterator it( fileList.begin() ); + for ( ; it != fileList.end(); ++it ) { + const std::string::size_type pos = (*it).find( "maps/" ); + if ( std::string::npos != pos ) { std::string::size_type extPos = (*it).find( ".bsp" ); - if ( std::string::npos != extPos ) - { - rMapName = *it; + if ( std::string::npos != extPos ) { + mapName = *it; return true; } } @@ -263,14 +249,13 @@ bool Q3BSPFileImporter::findFirstMapInArchive( Q3BSPZipArchive &rArchive, std::s // ------------------------------------------------------------------------------------------------ // Creates the assimp specific data. void Q3BSPFileImporter::CreateDataFromImport( const Q3BSP::Q3BSPModel *pModel, aiScene* pScene, - Q3BSPZipArchive *pArchive ) -{ - if ( NULL == pModel || NULL == pScene ) + Q3BSPZipArchive *pArchive ) { + if (nullptr == pModel || nullptr == pScene) { return; + } pScene->mRootNode = new aiNode; - if ( !pModel->m_ModelName.empty() ) - { + if ( !pModel->m_ModelName.empty() ) { pScene->mRootNode->mName.Set( pModel->m_ModelName ); } @@ -287,47 +272,34 @@ void Q3BSPFileImporter::CreateDataFromImport( const Q3BSP::Q3BSPModel *pModel, a // ------------------------------------------------------------------------------------------------ // Creates all assimp nodes. void Q3BSPFileImporter::CreateNodes( const Q3BSP::Q3BSPModel *pModel, aiScene* pScene, - aiNode *pParent ) -{ - ai_assert( NULL != pModel ); - if ( NULL == pModel ) - { + aiNode *pParent ) { + if ( nullptr == pModel ) { return; } - unsigned int matIdx = 0; + unsigned int matIdx( 0 ); std::vector MeshArray; std::vector NodeArray; - for ( FaceMapIt it = m_MaterialLookupMap.begin(); it != m_MaterialLookupMap.end(); ++it ) - { + for ( FaceMapIt it = m_MaterialLookupMap.begin(); it != m_MaterialLookupMap.end(); ++it ) { std::vector *pArray = (*it).second; size_t numVerts = countData( *pArray ); - if ( 0 != numVerts ) - { - aiMesh* pMesh = new aiMesh; - aiNode *pNode = CreateTopology( pModel, matIdx, *pArray, pMesh ); - if ( NULL != pNode ) - { + if ( 0 != numVerts ) { + aiMesh *pMesh( nullptr ); + aiNode *pNode = CreateTopology( pModel, matIdx, *pArray, &pMesh ); + if ( nullptr != pNode ) { NodeArray.push_back( pNode ); MeshArray.push_back( pMesh ); } - else - { - delete pMesh; - } } matIdx++; } pScene->mNumMeshes = static_cast( MeshArray.size() ); - if ( pScene->mNumMeshes > 0 ) - { + if ( pScene->mNumMeshes > 0 ) { pScene->mMeshes = new aiMesh*[ pScene->mNumMeshes ]; - for ( size_t i = 0; i < MeshArray.size(); i++ ) - { + for ( size_t i = 0; i < MeshArray.size(); i++ ) { aiMesh *pMesh = MeshArray[ i ]; - if ( NULL != pMesh ) - { + if ( nullptr != pMesh ) { pScene->mMeshes[ i ] = pMesh; } } @@ -335,8 +307,7 @@ void Q3BSPFileImporter::CreateNodes( const Q3BSP::Q3BSPModel *pModel, aiScene* p pParent->mNumChildren = static_cast(MeshArray.size()); pParent->mChildren = new aiNode*[ pScene->mRootNode->mNumChildren ]; - for ( size_t i=0; imParent = pParent; pParent->mChildren[ i ] = pNode; @@ -346,54 +317,46 @@ void Q3BSPFileImporter::CreateNodes( const Q3BSP::Q3BSPModel *pModel, aiScene* p // ------------------------------------------------------------------------------------------------ // Creates the topology. -aiNode *Q3BSPFileImporter::CreateTopology( const Q3BSP::Q3BSPModel *pModel, - unsigned int materialIdx, - std::vector &rArray, - aiMesh* pMesh ) -{ +aiNode *Q3BSPFileImporter::CreateTopology( const Q3BSP::Q3BSPModel *pModel, unsigned int materialIdx, + std::vector &rArray, aiMesh **pMesh ) { size_t numVerts = countData( rArray ); - if ( 0 == numVerts ) - { - return NULL; + if ( 0 == numVerts ) { + return nullptr; } size_t numFaces = countFaces( rArray ); - if ( 0 == numFaces ) - { - return NULL; + if ( 0 == numFaces ) { + return nullptr; } + aiMesh *mesh = new aiMesh; size_t numTriangles = countTriangles( rArray ); - pMesh->mPrimitiveTypes = aiPrimitiveType_TRIANGLE; + mesh->mPrimitiveTypes = aiPrimitiveType_TRIANGLE; - pMesh->mFaces = new aiFace[ numTriangles ]; - pMesh->mNumFaces = static_cast(numTriangles); + mesh->mFaces = new aiFace[ numTriangles ]; + mesh->mNumFaces = static_cast(numTriangles); - pMesh->mNumVertices = static_cast(numVerts); - pMesh->mVertices = new aiVector3D[ numVerts ]; - pMesh->mNormals = new aiVector3D[ numVerts ]; - pMesh->mTextureCoords[ 0 ] = new aiVector3D[ numVerts ]; - pMesh->mTextureCoords[ 1 ] = new aiVector3D[ numVerts ]; - pMesh->mMaterialIndex = materialIdx; + mesh->mNumVertices = static_cast(numVerts); + mesh->mVertices = new aiVector3D[ numVerts ]; + mesh->mNormals = new aiVector3D[ numVerts ]; + mesh->mTextureCoords[ 0 ] = new aiVector3D[ numVerts ]; + mesh->mTextureCoords[ 1 ] = new aiVector3D[ numVerts ]; + mesh->mMaterialIndex = materialIdx; unsigned int faceIdx = 0; unsigned int vertIdx = 0; - pMesh->mNumUVComponents[ 0 ] = 2; - pMesh->mNumUVComponents[ 1 ] = 2; - for ( std::vector::const_iterator it = rArray.begin(); it != rArray.end(); ++it ) - { + mesh->mNumUVComponents[ 0 ] = 2; + mesh->mNumUVComponents[ 1 ] = 2; + for ( std::vector::const_iterator it = rArray.begin(); it != rArray.end(); ++it ) { Q3BSP::sQ3BSPFace *pQ3BSPFace = *it; ai_assert( NULL != pQ3BSPFace ); - if ( NULL == pQ3BSPFace ) - { + if ( nullptr == pQ3BSPFace ) { continue; } - if ( pQ3BSPFace->iNumOfFaceVerts > 0 ) - { - if ( pQ3BSPFace->iType == Polygon || pQ3BSPFace->iType == TriangleMesh ) - { - createTriangleTopology( pModel, pQ3BSPFace, pMesh, faceIdx, vertIdx ); + if ( pQ3BSPFace->iNumOfFaceVerts > 0 ) { + if ( pQ3BSPFace->iType == Polygon || pQ3BSPFace->iType == TriangleMesh ) { + createTriangleTopology( pModel, pQ3BSPFace, mesh, faceIdx, vertIdx ); } } } @@ -401,79 +364,63 @@ aiNode *Q3BSPFileImporter::CreateTopology( const Q3BSP::Q3BSPModel *pModel, aiNode *pNode = new aiNode; pNode->mNumMeshes = 1; pNode->mMeshes = new unsigned int[ 1 ]; + *pMesh = mesh; return pNode; } // ------------------------------------------------------------------------------------------------ // Creates the triangle topology from a face array. -void Q3BSPFileImporter::createTriangleTopology( const Q3BSP::Q3BSPModel *pModel, - Q3BSP::sQ3BSPFace *pQ3BSPFace, - aiMesh* pMesh, - unsigned int &rFaceIdx, - unsigned int &rVertIdx ) -{ - ai_assert( rFaceIdx < pMesh->mNumFaces ); +void Q3BSPFileImporter::createTriangleTopology( const Q3BSP::Q3BSPModel *pModel, sQ3BSPFace *pQ3BSPFace, + aiMesh* pMesh, unsigned int &faceIdx, unsigned int &vertIdx ) { + ai_assert( faceIdx < pMesh->mNumFaces ); - m_pCurrentFace = getNextFace( pMesh, rFaceIdx ); - ai_assert( NULL != m_pCurrentFace ); - if ( NULL == m_pCurrentFace ) - { + m_pCurrentFace = getNextFace( pMesh, faceIdx ); + if ( nullptr == m_pCurrentFace ) { return; } m_pCurrentFace->mNumIndices = 3; m_pCurrentFace->mIndices = new unsigned int[ m_pCurrentFace->mNumIndices ]; - size_t idx = 0; - for ( size_t i = 0; i < (size_t) pQ3BSPFace->iNumOfFaceVerts; i++ ) - { + size_t idx( 0 ); + for ( size_t i = 0; i < (size_t) pQ3BSPFace->iNumOfFaceVerts; ++i ) { const size_t index = pQ3BSPFace->iVertexIndex + pModel->m_Indices[ pQ3BSPFace->iFaceVertexIndex + i ]; - ai_assert( index < pModel->m_Vertices.size() ); - if ( index >= pModel->m_Vertices.size() ) - { + if ( index >= pModel->m_Vertices.size() ) { continue; } sQ3BSPVertex *pVertex = pModel->m_Vertices[ index ]; - ai_assert( NULL != pVertex ); - if ( NULL == pVertex ) - { + if ( nullptr == pVertex ) { continue; } - - pMesh->mVertices[ rVertIdx ].Set( pVertex->vPosition.x, pVertex->vPosition.y, pVertex->vPosition.z ); - pMesh->mNormals[ rVertIdx ].Set( pVertex->vNormal.x, pVertex->vNormal.y, pVertex->vNormal.z ); - - pMesh->mTextureCoords[ 0 ][ rVertIdx ].Set( pVertex->vTexCoord.x, pVertex->vTexCoord.y, 0.0f ); - pMesh->mTextureCoords[ 1 ][ rVertIdx ].Set( pVertex->vLightmap.x, pVertex->vLightmap.y, 0.0f ); - - ai_assert( m_pCurrentFace ); - m_pCurrentFace->mIndices[ idx ] = rVertIdx; - rVertIdx++; - - idx++; - if ( idx > 2 ) - { + if (idx > 2) { idx = 0; - m_pCurrentFace = getNextFace( pMesh, rFaceIdx ); - if ( NULL != m_pCurrentFace ) - { + m_pCurrentFace = getNextFace(pMesh, faceIdx); + if (nullptr != m_pCurrentFace) { m_pCurrentFace->mNumIndices = 3; - m_pCurrentFace->mIndices = new unsigned int[ 3 ]; + m_pCurrentFace->mIndices = new unsigned int[3]; } } + + pMesh->mVertices[ vertIdx ].Set( pVertex->vPosition.x, pVertex->vPosition.y, pVertex->vPosition.z ); + pMesh->mNormals[ vertIdx ].Set( pVertex->vNormal.x, pVertex->vNormal.y, pVertex->vNormal.z ); + + pMesh->mTextureCoords[ 0 ][ vertIdx ].Set( pVertex->vTexCoord.x, pVertex->vTexCoord.y, 0.0f ); + pMesh->mTextureCoords[ 1 ][ vertIdx ].Set( pVertex->vLightmap.x, pVertex->vLightmap.y, 0.0f ); + + m_pCurrentFace->mIndices[ idx ] = vertIdx; + vertIdx++; + + idx++; } - rFaceIdx--; } // ------------------------------------------------------------------------------------------------ // Creates all referenced materials. void Q3BSPFileImporter::createMaterials( const Q3BSP::Q3BSPModel *pModel, aiScene* pScene, - Q3BSPZipArchive *pArchive ) -{ - if ( m_MaterialLookupMap.empty() ) - { + Q3BSPZipArchive *pArchive ) { + if ( m_MaterialLookupMap.empty() ) { return; } @@ -481,11 +428,9 @@ void Q3BSPFileImporter::createMaterials( const Q3BSP::Q3BSPModel *pModel, aiScen aiString aiMatName; int textureId( -1 ), lightmapId( -1 ); for ( FaceMapIt it = m_MaterialLookupMap.begin(); it != m_MaterialLookupMap.end(); - ++it ) - { - const std::string matName = (*it).first; - if ( matName.empty() ) - { + ++it ) { + const std::string matName( it->first ); + if ( matName.empty() ) { continue; } @@ -496,18 +441,16 @@ void Q3BSPFileImporter::createMaterials( const Q3BSP::Q3BSPModel *pModel, aiScen extractIds( matName, textureId, lightmapId ); // Adding the texture - if ( -1 != textureId ) - { + if ( -1 != textureId ) { sQ3BSPTexture *pTexture = pModel->m_Textures[ textureId ]; - if ( NULL != pTexture ) - { + if ( nullptr != pTexture ) { std::string tmp( "*" ), texName( "" ); tmp += pTexture->strName; tmp += ".jpg"; normalizePathName( tmp, texName ); - if ( !importTextureFromArchive( pModel, pArchive, pScene, pMatHelper, textureId ) ) - { + if ( !importTextureFromArchive( pModel, pArchive, pScene, pMatHelper, textureId ) ) { + ASSIMP_LOG_ERROR("Cannot import texture from archive " + texName); } } @@ -526,17 +469,16 @@ void Q3BSPFileImporter::createMaterials( const Q3BSP::Q3BSPModel *pModel, aiScen // ------------------------------------------------------------------------------------------------ // Counts the number of referenced vertices. -size_t Q3BSPFileImporter::countData( const std::vector &rArray ) const -{ - size_t numVerts = 0; - for ( std::vector::const_iterator it = rArray.begin(); it != rArray.end(); +size_t Q3BSPFileImporter::countData( const std::vector &faceArray ) const { + size_t numVerts( 0 ); + for ( std::vector::const_iterator it = faceArray.begin(); it != faceArray.end(); ++it ) { sQ3BSPFace *pQ3BSPFace = *it; if ( pQ3BSPFace->iType == Polygon || pQ3BSPFace->iType == TriangleMesh ) { Q3BSP::sQ3BSPFace *pQ3BSPFace = *it; - ai_assert( NULL != pQ3BSPFace ); + ai_assert( nullptr != pQ3BSPFace ); numVerts += pQ3BSPFace->iNumOfFaceVerts; } } @@ -582,8 +524,7 @@ size_t Q3BSPFileImporter::countTriangles( const std::vector // ------------------------------------------------------------------------------------------------ // Creates the faces-to-material map. -void Q3BSPFileImporter::createMaterialMap( const Q3BSP::Q3BSPModel *pModel ) -{ +void Q3BSPFileImporter::createMaterialMap( const Q3BSP::Q3BSPModel *pModel ) { std::string key( "" ); std::vector *pCurFaceArray = NULL; for ( size_t idx = 0; idx < pModel->m_Faces.size(); idx++ ) @@ -593,8 +534,7 @@ void Q3BSPFileImporter::createMaterialMap( const Q3BSP::Q3BSPModel *pModel ) const int lightMapId = pQ3BSPFace->iLightmapID; createKey( texId, lightMapId, key ); FaceMapIt it = m_MaterialLookupMap.find( key ); - if ( m_MaterialLookupMap.end() == it ) - { + if ( m_MaterialLookupMap.end() == it ) { pCurFaceArray = new std::vector; m_MaterialLookupMap[ key ] = pCurFaceArray; } @@ -602,8 +542,8 @@ void Q3BSPFileImporter::createMaterialMap( const Q3BSP::Q3BSPModel *pModel ) { pCurFaceArray = (*it).second; } - ai_assert( NULL != pCurFaceArray ); - if ( NULL != pCurFaceArray ) + ai_assert( nullptr != pCurFaceArray ); + if (nullptr != pCurFaceArray ) { pCurFaceArray->push_back( pQ3BSPFace ); } @@ -612,32 +552,31 @@ void Q3BSPFileImporter::createMaterialMap( const Q3BSP::Q3BSPModel *pModel ) // ------------------------------------------------------------------------------------------------ // Returns the next face. -aiFace *Q3BSPFileImporter::getNextFace( aiMesh *pMesh, unsigned int &rFaceIdx ) -{ - aiFace *pFace( NULL ); - if ( rFaceIdx < pMesh->mNumFaces ) { - pFace = &pMesh->mFaces[ rFaceIdx ]; - rFaceIdx++; +aiFace *Q3BSPFileImporter::getNextFace( aiMesh *mesh, unsigned int &faceIdx ) { + aiFace *face( nullptr ); + if ( faceIdx < mesh->mNumFaces ) { + face = &mesh->mFaces[ faceIdx ]; + ++faceIdx; } - return pFace; + return face; } // ------------------------------------------------------------------------------------------------ // Imports a texture file. -bool Q3BSPFileImporter::importTextureFromArchive( const Q3BSP::Q3BSPModel *pModel, - Q3BSP::Q3BSPZipArchive *pArchive, aiScene*, +bool Q3BSPFileImporter::importTextureFromArchive( const Q3BSP::Q3BSPModel *model, + Q3BSP::Q3BSPZipArchive *archive, aiScene*, aiMaterial *pMatHelper, int textureId ) { - if ( NULL == pArchive || NULL == pMatHelper ) { + if (nullptr == archive || nullptr == pMatHelper ) { return false; } - if ( textureId < 0 || textureId >= static_cast( pModel->m_Textures.size() ) ) { + if ( textureId < 0 || textureId >= static_cast( model->m_Textures.size() ) ) { return false; } bool res = true; - sQ3BSPTexture *pTexture = pModel->m_Textures[ textureId ]; + sQ3BSPTexture *pTexture = model->m_Textures[ textureId ]; if ( !pTexture ) { return false; } @@ -647,8 +586,8 @@ bool Q3BSPFileImporter::importTextureFromArchive( const Q3BSP::Q3BSPModel *pMode supportedExtensions.push_back( ".png" ); supportedExtensions.push_back( ".tga" ); std::string textureName, ext; - if ( expandFile( pArchive, pTexture->strName, supportedExtensions, textureName, ext ) ) { - IOStream *pTextureStream = pArchive->Open( textureName.c_str() ); + if ( expandFile( archive, pTexture->strName, supportedExtensions, textureName, ext ) ) { + IOStream *pTextureStream = archive->Open( textureName.c_str() ); if ( pTextureStream ) { size_t texSize = pTextureStream->FileSize(); aiTexture *pTexture = new aiTexture; @@ -669,7 +608,7 @@ bool Q3BSPFileImporter::importTextureFromArchive( const Q3BSP::Q3BSPModel *pMode name.data[ 0 ] = '*'; name.length = 1 + ASSIMP_itoa10( name.data + 1, static_cast(MAXLEN-1), static_cast(mTextures.size()) ); - pArchive->Close( pTextureStream ); + archive->Close( pTextureStream ); pMatHelper->AddProperty( &name, AI_MATKEY_TEXTURE_DIFFUSE( 0 ) ); mTextures.push_back( pTexture ); @@ -691,19 +630,16 @@ bool Q3BSPFileImporter::importTextureFromArchive( const Q3BSP::Q3BSPModel *pMode bool Q3BSPFileImporter::importLightmap( const Q3BSP::Q3BSPModel *pModel, aiScene* pScene, aiMaterial *pMatHelper, int lightmapId ) { - if ( NULL == pModel || NULL == pScene || NULL == pMatHelper ) - { + if (nullptr == pModel || nullptr == pScene || nullptr == pMatHelper ) { return false; } - if ( lightmapId < 0 || lightmapId >= static_cast( pModel->m_Lightmaps.size() ) ) - { + if ( lightmapId < 0 || lightmapId >= static_cast( pModel->m_Lightmaps.size() ) ) { return false; } sQ3BSPLightmap *pLightMap = pModel->m_Lightmaps[ lightmapId ]; - if ( NULL == pLightMap ) - { + if (nullptr == pLightMap ) { return false; } @@ -715,8 +651,7 @@ bool Q3BSPFileImporter::importLightmap( const Q3BSP::Q3BSPModel *pModel, aiScene ::memcpy( pTexture->pcData, pLightMap->bLMapData, pTexture->mWidth ); size_t p = 0; - for ( size_t i = 0; i < CE_BSP_LIGHTMAPWIDTH * CE_BSP_LIGHTMAPHEIGHT; ++i ) - { + for ( size_t i = 0; i < CE_BSP_LIGHTMAPWIDTH * CE_BSP_LIGHTMAPHEIGHT; ++i ) { pTexture->pcData[ i ].r = pLightMap->bLMapData[ p++ ]; pTexture->pcData[ i ].g = pLightMap->bLMapData[ p++ ]; pTexture->pcData[ i ].b = pLightMap->bLMapData[ p++ ]; @@ -733,7 +668,6 @@ bool Q3BSPFileImporter::importLightmap( const Q3BSP::Q3BSPModel *pModel, aiScene return true; } - // ------------------------------------------------------------------------------------------------ // Will search for a supported extension. bool Q3BSPFileImporter::expandFile( Q3BSP::Q3BSPZipArchive *pArchive, const std::string &rFilename, diff --git a/code/Q3BSPFileImporter.h b/code/Q3BSPFileImporter.h index 7d26d2c55..5f3e31157 100644 --- a/code/Q3BSPFileImporter.h +++ b/code/Q3BSPFileImporter.h @@ -45,6 +45,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include +#include struct aiMesh; struct aiNode; @@ -53,6 +54,7 @@ struct aiMaterial; struct aiTexture; namespace Assimp { + namespace Q3BSP { class Q3BSPZipArchive; struct Q3BSPModel; @@ -71,12 +73,11 @@ public: /// @brief Destructor. ~Q3BSPFileImporter(); -public: /// @brief Returns whether the class can handle the format of the given file. /// @remark See BaseImporter::CanRead() for details. bool CanRead( const std::string& pFile, IOSystem* pIOHandler, bool checkSig ) const; -private: +protected: typedef std::map*> FaceMap; typedef std::map* >::iterator FaceMapIt; typedef std::map*>::const_iterator FaceMapConstIt; @@ -88,7 +89,7 @@ private: void CreateDataFromImport( const Q3BSP::Q3BSPModel *pModel, aiScene* pScene, Q3BSP::Q3BSPZipArchive *pArchive ); void CreateNodes( const Q3BSP::Q3BSPModel *pModel, aiScene* pScene, aiNode *pParent ); aiNode *CreateTopology( const Q3BSP::Q3BSPModel *pModel, unsigned int materialIdx, - std::vector &rArray, aiMesh* pMesh ); + std::vector &rArray, aiMesh **pMesh ); void createTriangleTopology( const Q3BSP::Q3BSPModel *pModel, Q3BSP::sQ3BSPFace *pQ3BSPFace, aiMesh* pMesh, unsigned int &rFaceIdx, unsigned int &rVertIdx ); void createMaterials( const Q3BSP::Q3BSPModel *pModel, aiScene* pScene, Q3BSP::Q3BSPZipArchive *pArchive ); @@ -115,5 +116,4 @@ private: } // Namespace Assimp - #endif // ASSIMP_Q3BSPFILEIMPORTER_H_INC diff --git a/code/Q3BSPFileParser.cpp b/code/Q3BSPFileParser.cpp index c53280cb5..f7038adeb 100644 --- a/code/Q3BSPFileParser.cpp +++ b/code/Q3BSPFileParser.cpp @@ -55,56 +55,51 @@ namespace Assimp { using namespace Q3BSP; // ------------------------------------------------------------------------------------------------ -Q3BSPFileParser::Q3BSPFileParser( const std::string &rMapName, Q3BSPZipArchive *pZipArchive ) : +Q3BSPFileParser::Q3BSPFileParser( const std::string &mapName, Q3BSPZipArchive *pZipArchive ) : m_sOffset( 0 ), m_Data(), - m_pModel( NULL ), + m_pModel(nullptr), m_pZipArchive( pZipArchive ) { - ai_assert( NULL != m_pZipArchive ); - ai_assert( !rMapName.empty() ); + ai_assert(nullptr != m_pZipArchive ); + ai_assert( !mapName.empty() ); - if ( !readData( rMapName ) ) + if ( !readData( mapName ) ) return; m_pModel = new Q3BSPModel; - m_pModel->m_ModelName = rMapName; - if ( !parseFile() ) - { + m_pModel->m_ModelName = mapName; + if ( !parseFile() ) { delete m_pModel; - m_pModel = NULL; + m_pModel = nullptr; } } // ------------------------------------------------------------------------------------------------ -Q3BSPFileParser::~Q3BSPFileParser() -{ +Q3BSPFileParser::~Q3BSPFileParser() { delete m_pModel; - m_pModel = NULL; + m_pModel = nullptr; } // ------------------------------------------------------------------------------------------------ -Q3BSP::Q3BSPModel *Q3BSPFileParser::getModel() const -{ +Q3BSP::Q3BSPModel *Q3BSPFileParser::getModel() const { return m_pModel; } // ------------------------------------------------------------------------------------------------ -bool Q3BSPFileParser::readData( const std::string &rMapName ) -{ +bool Q3BSPFileParser::readData( const std::string &rMapName ) { if ( !m_pZipArchive->Exists( rMapName.c_str() ) ) return false; IOStream *pMapFile = m_pZipArchive->Open( rMapName.c_str() ); - if ( NULL == pMapFile ) + if ( nullptr == pMapFile ) return false; const size_t size = pMapFile->FileSize(); m_Data.resize( size ); const size_t readSize = pMapFile->Read( &m_Data[0], sizeof( char ), size ); - if ( readSize != size ) - { + if ( readSize != size ) { m_Data.clear(); return false; } @@ -114,10 +109,8 @@ bool Q3BSPFileParser::readData( const std::string &rMapName ) } // ------------------------------------------------------------------------------------------------ -bool Q3BSPFileParser::parseFile() -{ - if ( m_Data.empty() ) - { +bool Q3BSPFileParser::parseFile() { + if ( m_Data.empty() ) { return false; } @@ -129,7 +122,7 @@ bool Q3BSPFileParser::parseFile() // Imports the dictionary of the level getLumps(); - // Conunt data and prepare model data + // Count data and prepare model data countLumps(); // Read in Vertices @@ -209,7 +202,7 @@ void Q3BSPFileParser::getVertices() // ------------------------------------------------------------------------------------------------ void Q3BSPFileParser::getIndices() { - ai_assert( NULL != m_pModel ); + ai_assert(nullptr != m_pModel ); sQ3BSPLump *lump = m_pModel->m_Lumps[ kMeshVerts ]; size_t Offset = (size_t) lump->iOffset; @@ -221,7 +214,7 @@ void Q3BSPFileParser::getIndices() // ------------------------------------------------------------------------------------------------ void Q3BSPFileParser::getFaces() { - ai_assert( NULL != m_pModel ); + ai_assert(nullptr != m_pModel ); size_t Offset = m_pModel->m_Lumps[ kFaces ]->iOffset; for ( size_t idx = 0; idx < m_pModel->m_Faces.size(); idx++ ) @@ -236,7 +229,7 @@ void Q3BSPFileParser::getFaces() // ------------------------------------------------------------------------------------------------ void Q3BSPFileParser::getTextures() { - ai_assert( NULL != m_pModel ); + ai_assert(nullptr != m_pModel ); size_t Offset = m_pModel->m_Lumps[ kTextures ]->iOffset; for ( size_t idx=0; idx < m_pModel->m_Textures.size(); idx++ ) @@ -251,7 +244,7 @@ void Q3BSPFileParser::getTextures() // ------------------------------------------------------------------------------------------------ void Q3BSPFileParser::getLightMaps() { - ai_assert( NULL != m_pModel ); + ai_assert(nullptr != m_pModel ); size_t Offset = m_pModel->m_Lumps[kLightmaps]->iOffset; for ( size_t idx=0; idx < m_pModel->m_Lightmaps.size(); idx++ ) @@ -264,12 +257,10 @@ void Q3BSPFileParser::getLightMaps() } // ------------------------------------------------------------------------------------------------ -void Q3BSPFileParser::getEntities() -{ - int size = m_pModel->m_Lumps[ kEntities ]->iSize; +void Q3BSPFileParser::getEntities() { + const int size = m_pModel->m_Lumps[ kEntities ]->iSize; m_pModel->m_EntityData.resize( size ); - if ( size > 0 ) - { + if ( size > 0 ) { size_t Offset = m_pModel->m_Lumps[ kEntities ]->iOffset; memcpy( &m_pModel->m_EntityData[ 0 ], &m_Data[ Offset ], sizeof( char ) * size ); } diff --git a/code/Q3BSPZipArchive.cpp b/code/Q3BSPZipArchive.cpp index 5c9209512..3e1087b9a 100644 --- a/code/Q3BSPZipArchive.cpp +++ b/code/Q3BSPZipArchive.cpp @@ -183,7 +183,7 @@ Q3BSPZipArchive::Q3BSPZipArchive(IOSystem* pIOHandler, const std::string& rFile) m_ZipFileHandle = unzOpen2(rFile.c_str(), &mapping); - if(m_ZipFileHandle != NULL) { + if(m_ZipFileHandle != nullptr) { mapArchive(); } } @@ -197,26 +197,23 @@ Q3BSPZipArchive::~Q3BSPZipArchive() { } m_ArchiveMap.clear(); - if(m_ZipFileHandle != NULL) { + if(m_ZipFileHandle != nullptr) { unzClose(m_ZipFileHandle); - m_ZipFileHandle = NULL; + m_ZipFileHandle = nullptr; } } // ------------------------------------------------------------------------------------------------ // Returns true, if the archive is already open. bool Q3BSPZipArchive::isOpen() const { - return (m_ZipFileHandle != NULL); + return (m_ZipFileHandle != nullptr); } // ------------------------------------------------------------------------------------------------ // Returns true, if the filename is part of the archive. bool Q3BSPZipArchive::Exists(const char* pFile) const { - ai_assert(pFile != NULL); - bool exist = false; - - if (pFile != NULL) { + if (pFile != nullptr) { std::string rFile(pFile); std::map::const_iterator it = m_ArchiveMap.find(rFile); @@ -241,9 +238,9 @@ char Q3BSPZipArchive::getOsSeparator() const { // ------------------------------------------------------------------------------------------------ // Opens a file, which is part of the archive. IOStream *Q3BSPZipArchive::Open(const char* pFile, const char* /*pMode*/) { - ai_assert(pFile != NULL); + ai_assert(pFile != nullptr); - IOStream* result = NULL; + IOStream* result = nullptr; std::map::iterator it = m_ArchiveMap.find(pFile); @@ -258,7 +255,7 @@ IOStream *Q3BSPZipArchive::Open(const char* pFile, const char* /*pMode*/) { // Close a filestream. void Q3BSPZipArchive::Close(IOStream *pFile) { (void)(pFile); - ai_assert(pFile != NULL); + ai_assert(pFile != nullptr); // We don't do anything in case the file would be opened again in the future } @@ -277,7 +274,7 @@ void Q3BSPZipArchive::getFileList(std::vector &rFileList) { bool Q3BSPZipArchive::mapArchive() { bool success = false; - if(m_ZipFileHandle != NULL) { + if(m_ZipFileHandle != nullptr) { if(m_ArchiveMap.empty()) { // At first ensure file is already open if(unzGoToFirstFile(m_ZipFileHandle) == UNZ_OK) { diff --git a/code/SGSpatialSort.h b/code/SGSpatialSort.h deleted file mode 100644 index f087ad8b5..000000000 --- a/code/SGSpatialSort.h +++ /dev/null @@ -1,141 +0,0 @@ -/* -Open Asset Import Library (assimp) ----------------------------------------------------------------------- - -Copyright (c) 2006-2017, assimp team - -All rights reserved. - -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the -following conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of the assimp team, nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of the assimp team. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - ----------------------------------------------------------------------- -*/ - -/** Small helper classes to optimize finding vertices close to a given location - */ -#ifndef AI_D3DSSPATIALSORT_H_INC -#define AI_D3DSSPATIALSORT_H_INC - -#include -#include -#include - -namespace Assimp { - -// ---------------------------------------------------------------------------------- -/** Specialized version of SpatialSort to support smoothing groups - * This is used in by the 3DS, ASE and LWO loaders. 3DS and ASE share their - * normal computation code in SmoothingGroups.inl, the LWO loader has its own - * implementation to handle all details of its file format correctly. - */ -// ---------------------------------------------------------------------------------- -class ASSIMP_API SGSpatialSort -{ -public: - - SGSpatialSort(); - - // ------------------------------------------------------------------- - /** Construction from a given face array, handling smoothing groups - * properly - */ - explicit SGSpatialSort(const std::vector& vPositions); - - // ------------------------------------------------------------------- - /** Add a vertex to the spatial sort - * @param vPosition Vertex position to be added - * @param index Index of the vrtex - * @param smoothingGroup SmoothingGroup for this vertex - */ - void Add(const aiVector3D& vPosition, unsigned int index, - unsigned int smoothingGroup); - - // ------------------------------------------------------------------- - /** Prepare the spatial sorter for use. This step runs in O(logn) - */ - void Prepare(); - - /** Destructor */ - ~SGSpatialSort(); - - // ------------------------------------------------------------------- - /** Returns an iterator for all positions close to the given position. - * @param pPosition The position to look for vertices. - * @param pSG Only included vertices with at least one shared smooth group - * @param pRadius Maximal distance from the position a vertex may have - * to be counted in. - * @param poResults The container to store the indices of the found - * positions. Will be emptied by the call so it may contain anything. - * @param exactMatch Specifies whether smoothing groups are bit masks - * (false) or integral values (true). In the latter case, a vertex - * cannot belong to more than one smoothing group. - * @return An iterator to iterate over all vertices in the given area. - */ - // ------------------------------------------------------------------- - void FindPositions( const aiVector3D& pPosition, uint32_t pSG, - float pRadius, std::vector& poResults, - bool exactMatch = false) const; - -protected: - /** Normal of the sorting plane, normalized. The center is always at (0, 0, 0) */ - aiVector3D mPlaneNormal; - - // ------------------------------------------------------------------- - /** An entry in a spatially sorted position array. Consists of a - * vertex index, its position and its precalculated distance from - * the reference plane */ - // ------------------------------------------------------------------- - struct Entry - { - unsigned int mIndex; ///< The vertex referred by this entry - aiVector3D mPosition; ///< Position - uint32_t mSmoothGroups; - float mDistance; ///< Distance of this vertex to the sorting plane - - Entry() { /** intentionally not initialized.*/ } - Entry( unsigned int pIndex, const aiVector3D& pPosition, float pDistance,uint32_t pSG) - : - mIndex( pIndex), - mPosition( pPosition), - mSmoothGroups (pSG), - mDistance( pDistance) - { } - - bool operator < (const Entry& e) const { return mDistance < e.mDistance; } - }; - - // all positions, sorted by distance to the sorting plane - std::vector mPositions; -}; - -} // end of namespace Assimp - -#endif // AI_SPATIALSORT_H_INC diff --git a/code/SMDLoader.cpp b/code/SMDLoader.cpp index dc6706934..c6ec61624 100644 --- a/code/SMDLoader.cpp +++ b/code/SMDLoader.cpp @@ -5,8 +5,6 @@ Open Asset Import Library (assimp) Copyright (c) 2006-2018, assimp team - - All rights reserved. Redistribution and use of this software in source and binary forms, @@ -48,8 +46,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef ASSIMP_BUILD_NO_SMD_IMPORTER -// internal headers -#include "SMDLoader.h" #include #include #include @@ -58,6 +54,15 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include +#include + +// internal headers +#include "SMDLoader.h" + +#ifndef _WIN32 +#define strtok_s strtok_r +#endif using namespace Assimp; @@ -77,14 +82,14 @@ static const aiImporterDesc desc = { // ------------------------------------------------------------------------------------------------ // Constructor to be privately used by Importer SMDImporter::SMDImporter() -: configFrameID(), -mBuffer(), -pScene( nullptr ), -iFileSize( 0 ), -iSmallestFrame( -1 ), -dLengthOfAnim( 0.0 ), -bHasUVs(false ), -iLineNumber(-1) { +: configFrameID() +, mBuffer() +, pScene( nullptr ) +, iFileSize( 0 ) +, iSmallestFrame( INT_MAX ) +, dLengthOfAnim( 0.0 ) +, bHasUVs(false ) +, iLineNumber(-1) { // empty } @@ -96,23 +101,20 @@ SMDImporter::~SMDImporter() { // ------------------------------------------------------------------------------------------------ // Returns whether the class can handle the format of the given file. -bool SMDImporter::CanRead( const std::string& pFile, IOSystem* /*pIOHandler*/, bool) const -{ +bool SMDImporter::CanRead( const std::string& pFile, IOSystem* /*pIOHandler*/, bool) const { // fixme: auto format detection return SimpleExtensionCheck(pFile,"smd","vta"); } // ------------------------------------------------------------------------------------------------ // Get a list of all supported file extensions -const aiImporterDesc* SMDImporter::GetInfo () const -{ +const aiImporterDesc* SMDImporter::GetInfo () const { return &desc; } // ------------------------------------------------------------------------------------------------ // Setup configuration properties -void SMDImporter::SetupProperties(const Importer* pImp) -{ +void SMDImporter::SetupProperties(const Importer* pImp) { // The // AI_CONFIG_IMPORT_SMD_KEYFRAME option overrides the // AI_CONFIG_IMPORT_GLOBAL_KEYFRAME option. @@ -120,50 +122,21 @@ void SMDImporter::SetupProperties(const Importer* pImp) if(static_cast(-1) == configFrameID) { configFrameID = pImp->GetPropertyInteger(AI_CONFIG_IMPORT_GLOBAL_KEYFRAME,0); } + + bLoadAnimationList = pImp->GetPropertyBool(AI_CONFIG_IMPORT_SMD_LOAD_ANIMATION_LIST, true); + noSkeletonMesh = pImp->GetPropertyBool(AI_CONFIG_IMPORT_NO_SKELETON_MESHES, false); } // ------------------------------------------------------------------------------------------------ // Imports the given file into the given scene structure. -void SMDImporter::InternReadFile( const std::string& pFile, aiScene* pScene, IOSystem* pIOHandler) -{ - std::unique_ptr file( pIOHandler->Open( pFile, "rb")); - - // Check whether we can read from the file - if( file.get() == NULL) { - throw DeadlyImportError( "Failed to open SMD/VTA file " + pFile + "."); - } - - iFileSize = (unsigned int)file->FileSize(); - - // Allocate storage and copy the contents of the file to a memory buffer +void SMDImporter::InternReadFile( const std::string& pFile, aiScene* pScene, IOSystem* pIOHandler) { this->pScene = pScene; - - mBuffer.resize( iFileSize + 1 ); - TextFileToBuffer(file.get(), mBuffer ); - - iSmallestFrame = (1 << 31); - bHasUVs = true; - iLineNumber = 1; - - // Reserve enough space for ... hm ... 10 textures - aszTextures.reserve(10); - - // Reserve enough space for ... hm ... 1000 triangles - asTriangles.reserve(1000); - - // Reserve enough space for ... hm ... 20 bones - asBones.reserve(20); - - - // parse the file ... - ParseFile(); + ReadSmd(pFile, pIOHandler); // If there are no triangles it seems to be an animation SMD, // containing only the animation skeleton. - if (asTriangles.empty()) - { - if (asBones.empty()) - { + if (asTriangles.empty()) { + if (asBones.empty()) { throw DeadlyImportError("SMD: No triangles and no bones have " "been found in the file. This file seems to be invalid."); } @@ -173,15 +146,12 @@ void SMDImporter::InternReadFile( const std::string& pFile, aiScene* pScene, IOS pScene->mFlags |= AI_SCENE_FLAGS_INCOMPLETE; } - if (!asBones.empty()) - { + if (!asBones.empty()) { // Check whether all bones have been initialized for (std::vector::const_iterator - i = asBones.begin(); - i != asBones.end();++i) - { - if (!(*i).mName.length()) - { + i = asBones.begin(); + i != asBones.end();++i) { + if (!(*i).mName.length()) { ASSIMP_LOG_WARN("SMD: Not all bones have been initialized"); break; } @@ -189,64 +159,64 @@ void SMDImporter::InternReadFile( const std::string& pFile, aiScene* pScene, IOS // now fix invalid time values and make sure the animation starts at frame 0 FixTimeValues(); - - // compute absolute bone transformation matrices - // ComputeAbsoluteBoneTransformations(); } - if (!(pScene->mFlags & AI_SCENE_FLAGS_INCOMPLETE)) - { + // build output nodes (bones are added as empty dummy nodes) + CreateOutputNodes(); + + if (!(pScene->mFlags & AI_SCENE_FLAGS_INCOMPLETE)) { // create output meshes CreateOutputMeshes(); // build an output material list CreateOutputMaterials(); + + // use root node that renders all meshes + pScene->mRootNode->mNumMeshes = pScene->mNumMeshes; + pScene->mRootNode->mMeshes = new unsigned int[pScene->mNumMeshes]; + for (unsigned int i = 0; i < pScene->mNumMeshes; ++i) { + pScene->mRootNode->mMeshes[i] = i; + } } // build the output animation - CreateOutputAnimations(); + CreateOutputAnimations(pFile, pIOHandler); - // build output nodes (bones are added as empty dummy nodes) - CreateOutputNodes(); - - if (pScene->mFlags & AI_SCENE_FLAGS_INCOMPLETE) - { + if ((pScene->mFlags & AI_SCENE_FLAGS_INCOMPLETE) && !noSkeletonMesh) { SkeletonMeshBuilder skeleton(pScene); } } + // ------------------------------------------------------------------------------------------------ // Write an error message with line number to the log file -void SMDImporter::LogErrorNoThrow(const char* msg) -{ - char szTemp[1024]; - ai_snprintf(szTemp,1024,"Line %u: %s",iLineNumber,msg); +void SMDImporter::LogErrorNoThrow(const char* msg) { + const size_t BufferSize = 1024; + char szTemp[BufferSize]; + ai_snprintf(szTemp,BufferSize,"Line %u: %s",iLineNumber,msg); DefaultLogger::get()->error(szTemp); } // ------------------------------------------------------------------------------------------------ // Write a warning with line number to the log file -void SMDImporter::LogWarning(const char* msg) -{ - char szTemp[1024]; +void SMDImporter::LogWarning(const char* msg) { + const size_t BufferSize = 1024; + char szTemp[BufferSize]; ai_assert(strlen(msg) < 1000); - ai_snprintf(szTemp,1024,"Line %u: %s",iLineNumber,msg); + ai_snprintf(szTemp,BufferSize,"Line %u: %s",iLineNumber,msg); ASSIMP_LOG_WARN(szTemp); } // ------------------------------------------------------------------------------------------------ // Fix invalid time values in the file -void SMDImporter::FixTimeValues() -{ +void SMDImporter::FixTimeValues() { double dDelta = (double)iSmallestFrame; double dMax = 0.0f; for (std::vector::iterator - iBone = asBones.begin(); - iBone != asBones.end();++iBone) - { + iBone = asBones.begin(); + iBone != asBones.end();++iBone) { for (std::vector::iterator - iKey = (*iBone).sAnim.asKeys.begin(); - iKey != (*iBone).sAnim.asKeys.end();++iKey) - { + iKey = (*iBone).sAnim.asKeys.begin(); + iKey != (*iBone).sAnim.asKeys.end();++iKey) { (*iKey).dTime -= dDelta; dMax = std::max(dMax, (*iKey).dTime); } @@ -256,10 +226,10 @@ void SMDImporter::FixTimeValues() // ------------------------------------------------------------------------------------------------ // create output meshes -void SMDImporter::CreateOutputMeshes() -{ - if (aszTextures.empty()) +void SMDImporter::CreateOutputMeshes() { + if (aszTextures.empty()) { aszTextures.push_back(std::string()); + } // we need to sort all faces by their material index // in opposition to other loaders we can be sure that each @@ -273,28 +243,27 @@ void SMDImporter::CreateOutputMeshes() // approximate the space that will be required unsigned int iNum = (unsigned int)asTriangles.size() / pScene->mNumMeshes; iNum += iNum >> 1; - for (unsigned int i = 0; i < pScene->mNumMeshes;++i) + for (unsigned int i = 0; i < pScene->mNumMeshes;++i) { aaiFaces[i].reserve(iNum); - + } // collect all faces iNum = 0; for (std::vector::const_iterator - iFace = asTriangles.begin(); - iFace != asTriangles.end();++iFace,++iNum) - { - if (UINT_MAX == (*iFace).iTexture)aaiFaces[(*iFace).iTexture].push_back( 0 ); - else if ((*iFace).iTexture >= aszTextures.size()) - { + iFace = asTriangles.begin(); + iFace != asTriangles.end();++iFace,++iNum) { + if (UINT_MAX == (*iFace).iTexture) { + aaiFaces[(*iFace).iTexture].push_back( 0 ); + } else if ((*iFace).iTexture >= aszTextures.size()) { ASSIMP_LOG_INFO("[SMD/VTA] Material index overflow in face"); aaiFaces[(*iFace).iTexture].push_back((unsigned int)aszTextures.size()-1); + } else { + aaiFaces[(*iFace).iTexture].push_back(iNum); } - else aaiFaces[(*iFace).iTexture].push_back(iNum); } // now create the output meshes - for (unsigned int i = 0; i < pScene->mNumMeshes;++i) - { + for (unsigned int i = 0; i < pScene->mNumMeshes;++i) { aiMesh*& pcMesh = pScene->mMeshes[i] = new aiMesh(); ai_assert(!aaiFaces[i].empty()); // should not be empty ... @@ -310,8 +279,7 @@ void SMDImporter::CreateOutputMeshes() TempBoneWeightList* aaiBones = new TempBoneWeightList[asBones.size()](); // try to reserve enough memory without wasting too much - for (unsigned int iBone = 0; iBone < asBones.size();++iBone) - { + for (unsigned int iBone = 0; iBone < asBones.size();++iBone) { aaiBones[iBone].reserve(pcMesh->mNumVertices/asBones.size()); } @@ -320,16 +288,14 @@ void SMDImporter::CreateOutputMeshes() aiVector3D* pcNormals = pcMesh->mNormals = new aiVector3D[pcMesh->mNumVertices]; aiVector3D* pcVerts = pcMesh->mVertices = new aiVector3D[pcMesh->mNumVertices]; - aiVector3D* pcUVs = NULL; - if (bHasUVs) - { + aiVector3D* pcUVs = nullptr; + if (bHasUVs) { pcUVs = pcMesh->mTextureCoords[0] = new aiVector3D[pcMesh->mNumVertices]; pcMesh->mNumUVComponents[0] = 2; } iNum = 0; - for (unsigned int iFace = 0; iFace < pcMesh->mNumFaces;++iFace) - { + for (unsigned int iFace = 0; iFace < pcMesh->mNumFaces;++iFace) { pcMesh->mFaces[iFace].mIndices = new unsigned int[3]; pcMesh->mFaces[iFace].mNumIndices = 3; @@ -347,25 +313,20 @@ void SMDImporter::CreateOutputMeshes() *pcNormals++ = face.avVertices[2].nor; // fill the texture coordinates - if (pcUVs) - { + if (pcUVs) { *pcUVs++ = face.avVertices[0].uv; *pcUVs++ = face.avVertices[1].uv; *pcUVs++ = face.avVertices[2].uv; } - for (unsigned int iVert = 0; iVert < 3;++iVert) - { + for (unsigned int iVert = 0; iVert < 3;++iVert) { float fSum = 0.0f; - for (unsigned int iBone = 0;iBone < face.avVertices[iVert].aiBoneLinks.size();++iBone) - { + for (unsigned int iBone = 0;iBone < face.avVertices[iVert].aiBoneLinks.size();++iBone) { TempWeightListEntry& pairval = face.avVertices[iVert].aiBoneLinks[iBone]; // FIX: The second check is here just to make sure we won't // assign more than one weight to a single vertex index - if (pairval.first >= asBones.size() || - pairval.first == face.avVertices[iVert].iParentNode) - { + if (pairval.first >= asBones.size() || pairval.first == face.avVertices[iVert].iParentNode) { ASSIMP_LOG_ERROR("[SMD/VTA] Bone index overflow. " "The bone index will be ignored, the weight will be assigned " "to the vertex' parent node"); @@ -383,27 +344,23 @@ void SMDImporter::CreateOutputMeshes() // that the parent of a vertex is 0xffffffff (if the corresponding // entry in the file was unreadable) // ****************************************************************** - if (fSum < 0.975f && face.avVertices[iVert].iParentNode != UINT_MAX) - { - if (face.avVertices[iVert].iParentNode >= asBones.size()) - { + if (fSum < 0.975f && face.avVertices[iVert].iParentNode != UINT_MAX) { + if (face.avVertices[iVert].iParentNode >= asBones.size()) { ASSIMP_LOG_ERROR("[SMD/VTA] Bone index overflow. " "The index of the vertex parent bone is invalid. " "The remaining weights will be normalized to 1.0"); - if (fSum) - { + if (fSum) { fSum = 1 / fSum; - for (unsigned int iBone = 0;iBone < face.avVertices[iVert].aiBoneLinks.size();++iBone) - { + for (unsigned int iBone = 0;iBone < face.avVertices[iVert].aiBoneLinks.size();++iBone) { TempWeightListEntry& pairval = face.avVertices[iVert].aiBoneLinks[iBone]; - if (pairval.first >= asBones.size())continue; + if (pairval.first >= asBones.size()) { + continue; + } aaiBones[pairval.first].back().second *= fSum; } } - } - else - { + } else { aaiBones[face.avVertices[iVert].iParentNode].push_back( TempWeightListEntry(iNum,1.0f-fSum)); } @@ -414,17 +371,18 @@ void SMDImporter::CreateOutputMeshes() // now build all bones of the mesh iNum = 0; - for (unsigned int iBone = 0; iBone < asBones.size();++iBone) + for (unsigned int iBone = 0; iBone < asBones.size();++iBone) { if (!aaiBones[iBone].empty())++iNum; + } - if (false && iNum) - { + if (iNum) { pcMesh->mNumBones = iNum; pcMesh->mBones = new aiBone*[pcMesh->mNumBones]; iNum = 0; - for (unsigned int iBone = 0; iBone < asBones.size();++iBone) - { - if (aaiBones[iBone].empty())continue; + for (unsigned int iBone = 0; iBone < asBones.size();++iBone) { + if (aaiBones[iBone].empty()) { + continue; + } aiBone*& bone = pcMesh->mBones[iNum] = new aiBone(); bone->mNumWeights = (unsigned int)aaiBones[iBone].size(); @@ -434,8 +392,7 @@ void SMDImporter::CreateOutputMeshes() asBones[iBone].bIsUsed = true; - for (unsigned int iWeight = 0; iWeight < bone->mNumWeights;++iWeight) - { + for (unsigned int iWeight = 0; iWeight < bone->mNumWeights;++iWeight) { bone->mWeights[iWeight].mVertexId = aaiBones[iBone][iWeight].first; bone->mWeights[iWeight].mWeight = aaiBones[iBone][iWeight].second; } @@ -449,34 +406,44 @@ void SMDImporter::CreateOutputMeshes() // ------------------------------------------------------------------------------------------------ // add bone child nodes -void SMDImporter::AddBoneChildren(aiNode* pcNode, uint32_t iParent) -{ - ai_assert( NULL != pcNode ); +void SMDImporter::AddBoneChildren(aiNode* pcNode, uint32_t iParent) { + ai_assert( nullptr != pcNode ); ai_assert( 0 == pcNode->mNumChildren ); - ai_assert( NULL == pcNode->mChildren); + ai_assert( nullptr == pcNode->mChildren); // first count ... - for (unsigned int i = 0; i < asBones.size();++i) - { + for (unsigned int i = 0; i < asBones.size();++i) { SMD::Bone& bone = asBones[i]; - if (bone.iParent == iParent)++pcNode->mNumChildren; + if (bone.iParent == iParent) { + ++pcNode->mNumChildren; + } } // now allocate the output array pcNode->mChildren = new aiNode*[pcNode->mNumChildren]; // and fill all subnodes - unsigned int qq = 0; - for (unsigned int i = 0; i < asBones.size();++i) - { + unsigned int qq( 0 ); + for (unsigned int i = 0; i < asBones.size();++i) { SMD::Bone& bone = asBones[i]; - if (bone.iParent != iParent)continue; + if (bone.iParent != iParent) { + continue; + } aiNode* pc = pcNode->mChildren[qq++] = new aiNode(); pc->mName.Set(bone.mName); // store the local transformation matrix of the bind pose - pc->mTransformation = bone.sAnim.asKeys[bone.sAnim.iFirstTimeKey].matrix; + if (bone.sAnim.asKeys.size()) { + pc->mTransformation = bone.sAnim.asKeys[0].matrix; + } + + if (bone.iParent == static_cast(-1)) { + bone.mOffsetMatrix = pc->mTransformation; + } else { + bone.mOffsetMatrix = asBones[bone.iParent].mOffsetMatrix * pc->mTransformation; + } + pc->mParent = pcNode; // add children to this node, too @@ -486,31 +453,23 @@ void SMDImporter::AddBoneChildren(aiNode* pcNode, uint32_t iParent) // ------------------------------------------------------------------------------------------------ // create output nodes -void SMDImporter::CreateOutputNodes() -{ +void SMDImporter::CreateOutputNodes() { pScene->mRootNode = new aiNode(); - if (!(pScene->mFlags & AI_SCENE_FLAGS_INCOMPLETE)) - { - // create one root node that renders all meshes - pScene->mRootNode->mNumMeshes = pScene->mNumMeshes; - pScene->mRootNode->mMeshes = new unsigned int[pScene->mNumMeshes]; - for (unsigned int i = 0; i < pScene->mNumMeshes;++i) - pScene->mRootNode->mMeshes[i] = i; - } // now add all bones as dummy sub nodes to the graph - // AddBoneChildren(pScene->mRootNode,(uint32_t)-1); + AddBoneChildren(pScene->mRootNode,(uint32_t)-1); + for (auto &bone : asBones) { + bone.mOffsetMatrix.Inverse(); + } // if we have only one bone we can even remove the root node - if (pScene->mFlags & AI_SCENE_FLAGS_INCOMPLETE && - 1 == pScene->mRootNode->mNumChildren) - { + if (pScene->mFlags & AI_SCENE_FLAGS_INCOMPLETE && 1 == pScene->mRootNode->mNumChildren) { aiNode* pcOldRoot = pScene->mRootNode; pScene->mRootNode = pcOldRoot->mChildren[0]; - pcOldRoot->mChildren[0] = NULL; + pcOldRoot->mChildren[0] = nullptr; delete pcOldRoot; - pScene->mRootNode->mParent = NULL; + pScene->mRootNode->mParent = nullptr; } else { @@ -521,60 +480,63 @@ void SMDImporter::CreateOutputNodes() // ------------------------------------------------------------------------------------------------ // create output animations -void SMDImporter::CreateOutputAnimations() -{ - unsigned int iNumBones = 0; - for (std::vector::const_iterator - i = asBones.begin(); - i != asBones.end();++i) - { - if ((*i).bIsUsed)++iNumBones; - } - if (!iNumBones) - { - // just make sure this case doesn't occur ... (it could occur - // if the file was invalid) - return; - } +void SMDImporter::CreateOutputAnimations(const std::string &pFile, IOSystem* pIOHandler) { + std::vector> animFileList; + if (bLoadAnimationList) { + GetAnimationFileList(pFile, pIOHandler, animFileList); + } + int animCount = animFileList.size() + 1; pScene->mNumAnimations = 1; - pScene->mAnimations = new aiAnimation*[1]; - aiAnimation*& anim = pScene->mAnimations[0] = new aiAnimation(); + pScene->mAnimations = new aiAnimation*[animCount]; + memset(pScene->mAnimations, 0, sizeof(aiAnimation*)*animCount); + CreateOutputAnimation(0, ""); + for (auto &animFile : animFileList) { + ReadSmd(std::get<1>(animFile), pIOHandler); + if (asBones.empty()) { + continue; + } + + FixTimeValues(); + CreateOutputAnimation(pScene->mNumAnimations++, std::get<0>(animFile)); + } +} + +void SMDImporter::CreateOutputAnimation(int index, const std::string &name) { + aiAnimation*& anim = pScene->mAnimations[index] = new aiAnimation(); + + if (name.length()) { + anim->mName.Set(name.c_str()); + } anim->mDuration = dLengthOfAnim; - anim->mNumChannels = iNumBones; + anim->mNumChannels = asBones.size(); anim->mTicksPerSecond = 25.0; // FIXME: is this correct? aiNodeAnim** pp = anim->mChannels = new aiNodeAnim*[anim->mNumChannels]; // now build valid keys unsigned int a = 0; - for (std::vector::const_iterator - i = asBones.begin(); - i != asBones.end();++i) - { - if (!(*i).bIsUsed)continue; - + for (std::vector::const_iterator i = asBones.begin(); i != asBones.end(); ++i) { aiNodeAnim* p = pp[a] = new aiNodeAnim(); // copy the name of the bone - p->mNodeName.Set( i->mName); + p->mNodeName.Set(i->mName); - p->mNumRotationKeys = (unsigned int) (*i).sAnim.asKeys.size(); - if (p->mNumRotationKeys) - { + p->mNumRotationKeys = (unsigned int)(*i).sAnim.asKeys.size(); + if (p->mNumRotationKeys){ p->mNumPositionKeys = p->mNumRotationKeys; aiVectorKey* pVecKeys = p->mPositionKeys = new aiVectorKey[p->mNumRotationKeys]; aiQuatKey* pRotKeys = p->mRotationKeys = new aiQuatKey[p->mNumRotationKeys]; for (std::vector::const_iterator - qq = (*i).sAnim.asKeys.begin(); - qq != (*i).sAnim.asKeys.end(); ++qq) - { + qq = (*i).sAnim.asKeys.begin(); + qq != (*i).sAnim.asKeys.end(); ++qq) { pRotKeys->mTime = pVecKeys->mTime = (*qq).dTime; // compute the rotation quaternion from the euler angles - pRotKeys->mValue = aiQuaternion( (*qq).vRot.x, (*qq).vRot.y, (*qq).vRot.z ); + // aiQuaternion: The order of the parameters is yzx? + pRotKeys->mValue = aiQuaternion((*qq).vRot.y, (*qq).vRot.z, (*qq).vRot.x); pVecKeys->mValue = (*qq).vPos; ++pVecKeys; ++pRotKeys; @@ -586,71 +548,57 @@ void SMDImporter::CreateOutputAnimations() } } -// ------------------------------------------------------------------------------------------------ -void SMDImporter::ComputeAbsoluteBoneTransformations() -{ - // For each bone: determine the key with the lowest time value - // theoretically the SMD format should have all keyframes - // in order. However, I've seen a file where this wasn't true. - for (unsigned int i = 0; i < asBones.size();++i) - { - SMD::Bone& bone = asBones[i]; +void SMDImporter::GetAnimationFileList(const std::string &pFile, IOSystem* pIOHandler, std::vector>& outList) { + auto base = DefaultIOSystem::absolutePath(pFile); + auto name = DefaultIOSystem::completeBaseName(pFile); + auto path = base + "/" + name + "_animation.txt"; - uint32_t iIndex = 0; - double dMin = 10e10; - for (unsigned int i = 0; i < bone.sAnim.asKeys.size();++i) - { - double d = std::min(bone.sAnim.asKeys[i].dTime,dMin); - if (d < dMin) - { - dMin = d; - iIndex = i; - } - } - bone.sAnim.iFirstTimeKey = iIndex; + std::unique_ptr file(pIOHandler->Open(path.c_str(), "rb")); + if (file.get() == nullptr) { + return; } - unsigned int iParent = 0; - while (iParent < asBones.size()) - { - for (unsigned int iBone = 0; iBone < asBones.size();++iBone) - { - SMD::Bone& bone = asBones[iBone]; + // Allocate storage and copy the contents of the file to a memory buffer + std::vector buf; + size_t fileSize = file->FileSize(); + buf.resize(fileSize + 1); + TextFileToBuffer(file.get(), buf); - if (iParent == bone.iParent) - { - SMD::Bone& parentBone = asBones[iParent]; + /* + *_animation.txt format: + name path + idle idle.smd + jump anim/jump.smd + walk.smd + ... + */ + std::string animName, animPath; + char *tok1, *tok2; + char *context1, *context2; - - uint32_t iIndex = bone.sAnim.iFirstTimeKey; - const aiMatrix4x4& mat = bone.sAnim.asKeys[iIndex].matrix; - aiMatrix4x4& matOut = bone.sAnim.asKeys[iIndex].matrixAbsolute; - - // The same for the parent bone ... - iIndex = parentBone.sAnim.iFirstTimeKey; - const aiMatrix4x4& mat2 = parentBone.sAnim.asKeys[iIndex].matrixAbsolute; - - // Compute the absolute transformation matrix - matOut = mat * mat2; + tok1 = strtok_s(&buf[0], "\r\n", &context1); + while (tok1 != NULL) { + tok2 = strtok_s(tok1, " \t", &context2); + if (tok2) { + char *p = tok2; + tok2 = strtok_s(nullptr, " \t", &context2); + if (tok2) { + animPath = tok2; + animName = p; + } else { + // No name + animPath = p; + animName = DefaultIOSystem::completeBaseName(animPath); } + outList.push_back(std::make_tuple(animName, base + "/" + animPath)); } - ++iParent; - } - - // Store the inverse of the absolute transformation matrix - // of the first key as bone offset matrix - for (iParent = 0; iParent < asBones.size();++iParent) - { - SMD::Bone& bone = asBones[iParent]; - bone.mOffsetMatrix = bone.sAnim.asKeys[bone.sAnim.iFirstTimeKey].matrixAbsolute; - bone.mOffsetMatrix.Inverse(); + tok1 = strtok_s(nullptr, "\r\n", &context1); } } -\ + // ------------------------------------------------------------------------------------------------ // create output materials -void SMDImporter::CreateOutputMaterials() -{ +void SMDImporter::CreateOutputMaterials() { ai_assert( nullptr != pScene ); pScene->mNumMaterials = (unsigned int)aszTextures.size(); @@ -674,14 +622,13 @@ void SMDImporter::CreateOutputMaterials() } // create a default material if necessary - if (0 == pScene->mNumMaterials) - { + if (0 == pScene->mNumMaterials) { pScene->mNumMaterials = 1; aiMaterial* pcHelper = new aiMaterial(); pScene->mMaterials[0] = pcHelper; - int iMode = (int)aiShadingMode_Gouraud; + int iMode = static_cast(aiShadingMode_Gouraud); pcHelper->AddProperty(&iMode, 1, AI_MATKEY_SHADING_MODEL); aiColor3D clr; @@ -700,66 +647,94 @@ void SMDImporter::CreateOutputMaterials() // ------------------------------------------------------------------------------------------------ // Parse the file -void SMDImporter::ParseFile() -{ +void SMDImporter::ParseFile() { const char* szCurrent = &mBuffer[0]; // read line per line ... - for ( ;; ) - { - if(!SkipSpacesAndLineEnd(szCurrent,&szCurrent)) break; + for ( ;; ) { + if(!SkipSpacesAndLineEnd(szCurrent,&szCurrent)) { + break; + } // "version \n", should be 1 for hl and hl2 SMD files - if (TokenMatch(szCurrent,"version",7)) - { + if (TokenMatch(szCurrent,"version",7)) { if(!SkipSpaces(szCurrent,&szCurrent)) break; - if (1 != strtoul10(szCurrent,&szCurrent)) - { + if (1 != strtoul10(szCurrent,&szCurrent)) { ASSIMP_LOG_WARN("SMD.version is not 1. This " "file format is not known. Continuing happily ..."); } continue; } // "nodes\n" - Starts the node section - if (TokenMatch(szCurrent,"nodes",5)) - { + if (TokenMatch(szCurrent,"nodes",5)) { ParseNodesSection(szCurrent,&szCurrent); continue; } // "triangles\n" - Starts the triangle section - if (TokenMatch(szCurrent,"triangles",9)) - { + if (TokenMatch(szCurrent,"triangles",9)) { ParseTrianglesSection(szCurrent,&szCurrent); continue; } // "vertexanimation\n" - Starts the vertex animation section - if (TokenMatch(szCurrent,"vertexanimation",15)) - { + if (TokenMatch(szCurrent,"vertexanimation",15)) { bHasUVs = false; ParseVASection(szCurrent,&szCurrent); continue; } // "skeleton\n" - Starts the skeleton section - if (TokenMatch(szCurrent,"skeleton",8)) - { + if (TokenMatch(szCurrent,"skeleton",8)) { ParseSkeletonSection(szCurrent,&szCurrent); continue; } SkipLine(szCurrent,&szCurrent); } - return; +} + +void SMDImporter::ReadSmd(const std::string &pFile, IOSystem* pIOHandler) { + std::unique_ptr file(pIOHandler->Open(pFile, "rb")); + + // Check whether we can read from the file + if (file.get() == nullptr) { + throw DeadlyImportError("Failed to open SMD/VTA file " + pFile + "."); + } + + iFileSize = (unsigned int)file->FileSize(); + + // Allocate storage and copy the contents of the file to a memory buffer + mBuffer.resize(iFileSize + 1); + TextFileToBuffer(file.get(), mBuffer); + + iSmallestFrame = INT_MAX; + bHasUVs = true; + iLineNumber = 1; + + // Reserve enough space for ... hm ... 10 textures + aszTextures.reserve(10); + + // Reserve enough space for ... hm ... 1000 triangles + asTriangles.reserve(1000); + + // Reserve enough space for ... hm ... 20 bones + asBones.reserve(20); + + aszTextures.clear(); + asTriangles.clear(); + asBones.clear(); + + // parse the file ... + ParseFile(); } // ------------------------------------------------------------------------------------------------ -unsigned int SMDImporter::GetTextureIndex(const std::string& filename) -{ +unsigned int SMDImporter::GetTextureIndex(const std::string& filename) { unsigned int iIndex = 0; for (std::vector::const_iterator - i = aszTextures.begin(); - i != aszTextures.end();++i,++iIndex) - { + i = aszTextures.begin(); + i != aszTextures.end();++i,++iIndex) { // case-insensitive ... it's a path - if (0 == ASSIMP_stricmp ( filename.c_str(),(*i).c_str()))return iIndex; + if (0 == ASSIMP_stricmp ( filename.c_str(),(*i).c_str())) { + return iIndex; + } } iIndex = (unsigned int)aszTextures.size(); aszTextures.push_back(filename); @@ -768,15 +743,10 @@ unsigned int SMDImporter::GetTextureIndex(const std::string& filename) // ------------------------------------------------------------------------------------------------ // Parse the nodes section of the file -void SMDImporter::ParseNodesSection(const char* szCurrent, - const char** szCurrentOut) -{ - for ( ;; ) - { +void SMDImporter::ParseNodesSection(const char* szCurrent, const char** szCurrentOut) { + for ( ;; ) { // "end\n" - Ends the nodes section - if (0 == ASSIMP_strincmp(szCurrent,"end",3) && - IsSpaceOrNewLine(*(szCurrent+3))) - { + if (0 == ASSIMP_strincmp(szCurrent,"end",3) && IsSpaceOrNewLine(*(szCurrent+3))) { szCurrent += 4; break; } @@ -788,18 +758,18 @@ void SMDImporter::ParseNodesSection(const char* szCurrent, // ------------------------------------------------------------------------------------------------ // Parse the triangles section of the file -void SMDImporter::ParseTrianglesSection(const char* szCurrent, - const char** szCurrentOut) -{ +void SMDImporter::ParseTrianglesSection(const char* szCurrent, const char** szCurrentOut) { // Parse a triangle, parse another triangle, parse the next triangle ... // and so on until we reach a token that looks quite similar to "end" - for ( ;; ) - { - if(!SkipSpacesAndLineEnd(szCurrent,&szCurrent)) break; + for ( ;; ) { + if(!SkipSpacesAndLineEnd(szCurrent,&szCurrent)) { + break; + } // "end\n" - Ends the triangles section - if (TokenMatch(szCurrent,"end",3)) + if (TokenMatch(szCurrent,"end",3)) { break; + } ParseTriangle(szCurrent,&szCurrent); } SkipSpacesAndLineEnd(szCurrent,&szCurrent); @@ -807,40 +777,39 @@ void SMDImporter::ParseTrianglesSection(const char* szCurrent, } // ------------------------------------------------------------------------------------------------ // Parse the vertex animation section of the file -void SMDImporter::ParseVASection(const char* szCurrent, - const char** szCurrentOut) -{ +void SMDImporter::ParseVASection(const char* szCurrent, const char** szCurrentOut) { unsigned int iCurIndex = 0; - for ( ;; ) - { - if(!SkipSpacesAndLineEnd(szCurrent,&szCurrent)) break; + for ( ;; ) { + if (!SkipSpacesAndLineEnd(szCurrent,&szCurrent)) { + break; + } // "end\n" - Ends the "vertexanimation" section - if (TokenMatch(szCurrent,"end",3)) + if (TokenMatch(szCurrent,"end",3)) { break; + } // "time \n" - if (TokenMatch(szCurrent,"time",4)) - { + if (TokenMatch(szCurrent,"time",4)) { // NOTE: The doc says that time values COULD be negative ... // NOTE2: this is the shape key -> valve docs int iTime = 0; - if(!ParseSignedInt(szCurrent,&szCurrent,iTime) || configFrameID != (unsigned int)iTime)break; + if(!ParseSignedInt(szCurrent,&szCurrent,iTime) || configFrameID != (unsigned int)iTime) { + break; + } SkipLine(szCurrent,&szCurrent); - } - else - { - if(0 == iCurIndex) - { + } else { + if(0 == iCurIndex) { asTriangles.push_back(SMD::Face()); } - if (++iCurIndex == 3)iCurIndex = 0; + if (++iCurIndex == 3) { + iCurIndex = 0; + } ParseVertex(szCurrent,&szCurrent,asTriangles.back().avVertices[iCurIndex],true); } } - if (iCurIndex != 2 && !asTriangles.empty()) - { + if (iCurIndex != 2 && !asTriangles.empty()) { // we want to no degenerates, so throw this triangle away asTriangles.pop_back(); } @@ -848,30 +817,30 @@ void SMDImporter::ParseVASection(const char* szCurrent, SkipSpacesAndLineEnd(szCurrent,&szCurrent); *szCurrentOut = szCurrent; } + // ------------------------------------------------------------------------------------------------ // Parse the skeleton section of the file -void SMDImporter::ParseSkeletonSection(const char* szCurrent, - const char** szCurrentOut) -{ +void SMDImporter::ParseSkeletonSection(const char* szCurrent, const char** szCurrentOut) { int iTime = 0; - for ( ;; ) - { - if(!SkipSpacesAndLineEnd(szCurrent,&szCurrent)) break; + for ( ;; ) { + if (!SkipSpacesAndLineEnd(szCurrent,&szCurrent)) { + break; + } // "end\n" - Ends the skeleton section - if (TokenMatch(szCurrent,"end",3)) + if (TokenMatch(szCurrent,"end",3)) { break; - + } else if (TokenMatch(szCurrent,"time",4)) { // "time \n" - Specifies the current animation frame - else if (TokenMatch(szCurrent,"time",4)) - { - // NOTE: The doc says that time values COULD be negative ... - if(!ParseSignedInt(szCurrent,&szCurrent,iTime))break; + if(!ParseSignedInt(szCurrent,&szCurrent,iTime)) { + break; + } iSmallestFrame = std::min(iSmallestFrame,iTime); SkipLine(szCurrent,&szCurrent); + } else { + ParseSkeletonElement(szCurrent,&szCurrent,iTime); } - else ParseSkeletonElement(szCurrent,&szCurrent,iTime); } *szCurrentOut = szCurrent; } @@ -884,45 +853,38 @@ void SMDImporter::ParseSkeletonSection(const char* szCurrent, } // ------------------------------------------------------------------------------------------------ // Parse a node line -void SMDImporter::ParseNodeInfo(const char* szCurrent, - const char** szCurrentOut) -{ +void SMDImporter::ParseNodeInfo(const char* szCurrent, const char** szCurrentOut) { unsigned int iBone = 0; SkipSpacesAndLineEnd(szCurrent,&szCurrent); - if(!ParseUnsignedInt(szCurrent,&szCurrent,iBone) || !SkipSpaces(szCurrent,&szCurrent)) - { + if ( !ParseUnsignedInt(szCurrent,&szCurrent,iBone) || !SkipSpaces(szCurrent,&szCurrent)) { LogErrorNoThrow("Unexpected EOF/EOL while parsing bone index"); SMDI_PARSE_RETURN; } // add our bone to the list - if (iBone >= asBones.size())asBones.resize(iBone+1); + if (iBone >= asBones.size()) { + asBones.resize(iBone+1); + } SMD::Bone& bone = asBones[iBone]; bool bQuota = true; - if ('\"' != *szCurrent) - { + if ('\"' != *szCurrent) { LogWarning("Bone name is expcted to be enclosed in " "double quotation marks. "); bQuota = false; + } else { + ++szCurrent; } - else ++szCurrent; const char* szEnd = szCurrent; - for ( ;; ) - { - if (bQuota && '\"' == *szEnd) - { + for ( ;; ) { + if (bQuota && '\"' == *szEnd) { iBone = (unsigned int)(szEnd - szCurrent); ++szEnd; break; - } - else if (IsSpaceOrNewLine(*szEnd)) - { + } else if (!bQuota && IsSpaceOrNewLine(*szEnd)) { iBone = (unsigned int)(szEnd - szCurrent); break; - } - else if (!(*szEnd)) - { + } else if (!(*szEnd)) { LogErrorNoThrow("Unexpected EOF/EOL while parsing bone name"); SMDI_PARSE_RETURN; } @@ -932,8 +894,7 @@ void SMDImporter::ParseNodeInfo(const char* szCurrent, szCurrent = szEnd; // the only negative bone parent index that could occur is -1 AFAIK - if(!ParseSignedInt(szCurrent,&szCurrent,(int&)bone.iParent)) - { + if(!ParseSignedInt(szCurrent,&szCurrent,(int&)bone.iParent)) { LogErrorNoThrow("Unexpected EOF/EOL while parsing bone parent index. Assuming -1"); SMDI_PARSE_RETURN; } @@ -944,20 +905,16 @@ void SMDImporter::ParseNodeInfo(const char* szCurrent, // ------------------------------------------------------------------------------------------------ // Parse a skeleton element -void SMDImporter::ParseSkeletonElement(const char* szCurrent, - const char** szCurrentOut,int iTime) -{ +void SMDImporter::ParseSkeletonElement(const char* szCurrent, const char** szCurrentOut,int iTime) { aiVector3D vPos; aiVector3D vRot; unsigned int iBone = 0; - if(!ParseUnsignedInt(szCurrent,&szCurrent,iBone)) - { + if(!ParseUnsignedInt(szCurrent,&szCurrent,iBone)) { ASSIMP_LOG_ERROR("Unexpected EOF/EOL while parsing bone index"); SMDI_PARSE_RETURN; } - if (iBone >= asBones.size()) - { + if (iBone >= asBones.size()) { LogErrorNoThrow("Bone index in skeleton section is out of range"); SMDI_PARSE_RETURN; } @@ -967,60 +924,51 @@ void SMDImporter::ParseSkeletonElement(const char* szCurrent, SMD::Bone::Animation::MatrixKey& key = bone.sAnim.asKeys.back(); key.dTime = (double)iTime; - if(!ParseFloat(szCurrent,&szCurrent,(float&)vPos.x)) - { + if(!ParseFloat(szCurrent,&szCurrent,(float&)vPos.x)) { LogErrorNoThrow("Unexpected EOF/EOL while parsing bone.pos.x"); SMDI_PARSE_RETURN; } - if(!ParseFloat(szCurrent,&szCurrent,(float&)vPos.y)) - { + if(!ParseFloat(szCurrent,&szCurrent,(float&)vPos.y)) { LogErrorNoThrow("Unexpected EOF/EOL while parsing bone.pos.y"); SMDI_PARSE_RETURN; } - if(!ParseFloat(szCurrent,&szCurrent,(float&)vPos.z)) - { + if(!ParseFloat(szCurrent,&szCurrent,(float&)vPos.z)) { LogErrorNoThrow("Unexpected EOF/EOL while parsing bone.pos.z"); SMDI_PARSE_RETURN; } - if(!ParseFloat(szCurrent,&szCurrent,(float&)vRot.x)) - { + if(!ParseFloat(szCurrent,&szCurrent,(float&)vRot.x)) { LogErrorNoThrow("Unexpected EOF/EOL while parsing bone.rot.x"); SMDI_PARSE_RETURN; } - if(!ParseFloat(szCurrent,&szCurrent,(float&)vRot.y)) - { + if(!ParseFloat(szCurrent,&szCurrent,(float&)vRot.y)) { LogErrorNoThrow("Unexpected EOF/EOL while parsing bone.rot.y"); SMDI_PARSE_RETURN; } - if(!ParseFloat(szCurrent,&szCurrent,(float&)vRot.z)) - { + if(!ParseFloat(szCurrent,&szCurrent,(float&)vRot.z)) { LogErrorNoThrow("Unexpected EOF/EOL while parsing bone.rot.z"); SMDI_PARSE_RETURN; } // build the transformation matrix of the key - key.matrix.FromEulerAnglesXYZ(vRot.x,vRot.y,vRot.z); - { + key.matrix.FromEulerAnglesXYZ(vRot.x,vRot.y,vRot.z); { aiMatrix4x4 mTemp; mTemp.a4 = vPos.x; mTemp.b4 = vPos.y; mTemp.c4 = vPos.z; - key.matrix = key.matrix * mTemp; + key.matrix = mTemp * key.matrix; } - + key.vPos = vPos; + key.vRot = vRot; // go to the beginning of the next line SMDI_PARSE_RETURN; } // ------------------------------------------------------------------------------------------------ // Parse a triangle -void SMDImporter::ParseTriangle(const char* szCurrent, - const char** szCurrentOut) -{ +void SMDImporter::ParseTriangle(const char* szCurrent, const char** szCurrentOut) { asTriangles.push_back(SMD::Face()); SMD::Face& face = asTriangles.back(); - if(!SkipSpaces(szCurrent,&szCurrent)) - { + if(!SkipSpaces(szCurrent,&szCurrent)) { LogErrorNoThrow("Unexpected EOF/EOL while parsing a triangle"); return; } @@ -1035,21 +983,18 @@ void SMDImporter::ParseTriangle(const char* szCurrent, SkipSpacesAndLineEnd(szCurrent,&szCurrent); // load three vertices - for (unsigned int iVert = 0; iVert < 3;++iVert) - { - ParseVertex(szCurrent,&szCurrent, - face.avVertices[iVert]); + for (unsigned int iVert = 0; iVert < 3;++iVert) { + ParseVertex(szCurrent,&szCurrent, face.avVertices[iVert]); } *szCurrentOut = szCurrent; } // ------------------------------------------------------------------------------------------------ // Parse a float -bool SMDImporter::ParseFloat(const char* szCurrent, - const char** szCurrentOut, float& out) -{ - if(!SkipSpaces(&szCurrent)) +bool SMDImporter::ParseFloat(const char* szCurrent, const char** szCurrentOut, float& out) { + if(!SkipSpaces(&szCurrent)) { return false; + } *szCurrentOut = fast_atoreal_move(szCurrent,out); return true; @@ -1057,11 +1002,10 @@ bool SMDImporter::ParseFloat(const char* szCurrent, // ------------------------------------------------------------------------------------------------ // Parse an unsigned int -bool SMDImporter::ParseUnsignedInt(const char* szCurrent, - const char** szCurrentOut, unsigned int& out) -{ - if(!SkipSpaces(&szCurrent)) +bool SMDImporter::ParseUnsignedInt(const char* szCurrent, const char** szCurrentOut, unsigned int& out) { + if(!SkipSpaces(&szCurrent)) { return false; + } out = strtoul10(szCurrent,szCurrentOut); return true; @@ -1069,11 +1013,10 @@ bool SMDImporter::ParseUnsignedInt(const char* szCurrent, // ------------------------------------------------------------------------------------------------ // Parse a signed int -bool SMDImporter::ParseSignedInt(const char* szCurrent, - const char** szCurrentOut, int& out) -{ - if(!SkipSpaces(&szCurrent)) +bool SMDImporter::ParseSignedInt(const char* szCurrent, const char** szCurrentOut, int& out) { + if(!SkipSpaces(&szCurrent)) { return false; + } out = strtol10(szCurrent,szCurrentOut); return true; @@ -1082,59 +1025,50 @@ bool SMDImporter::ParseSignedInt(const char* szCurrent, // ------------------------------------------------------------------------------------------------ // Parse a vertex void SMDImporter::ParseVertex(const char* szCurrent, - const char** szCurrentOut, SMD::Vertex& vertex, - bool bVASection /*= false*/) -{ - if (SkipSpaces(&szCurrent) && IsLineEnd(*szCurrent)) - { + const char** szCurrentOut, SMD::Vertex& vertex, + bool bVASection /*= false*/) { + if (SkipSpaces(&szCurrent) && IsLineEnd(*szCurrent)) { SkipSpacesAndLineEnd(szCurrent,&szCurrent); return ParseVertex(szCurrent,szCurrentOut,vertex,bVASection); } - if(!ParseSignedInt(szCurrent,&szCurrent,(int&)vertex.iParentNode)) - { + if(!ParseSignedInt(szCurrent,&szCurrent,(int&)vertex.iParentNode)) { LogErrorNoThrow("Unexpected EOF/EOL while parsing vertex.parent"); SMDI_PARSE_RETURN; } - if(!ParseFloat(szCurrent,&szCurrent,(float&)vertex.pos.x)) - { + if(!ParseFloat(szCurrent,&szCurrent,(float&)vertex.pos.x)) { LogErrorNoThrow("Unexpected EOF/EOL while parsing vertex.pos.x"); SMDI_PARSE_RETURN; } - if(!ParseFloat(szCurrent,&szCurrent,(float&)vertex.pos.y)) - { + if(!ParseFloat(szCurrent,&szCurrent,(float&)vertex.pos.y)) { LogErrorNoThrow("Unexpected EOF/EOL while parsing vertex.pos.y"); SMDI_PARSE_RETURN; } - if(!ParseFloat(szCurrent,&szCurrent,(float&)vertex.pos.z)) - { + if(!ParseFloat(szCurrent,&szCurrent,(float&)vertex.pos.z)) { LogErrorNoThrow("Unexpected EOF/EOL while parsing vertex.pos.z"); SMDI_PARSE_RETURN; } - if(!ParseFloat(szCurrent,&szCurrent,(float&)vertex.nor.x)) - { + if(!ParseFloat(szCurrent,&szCurrent,(float&)vertex.nor.x)) { LogErrorNoThrow("Unexpected EOF/EOL while parsing vertex.nor.x"); SMDI_PARSE_RETURN; } - if(!ParseFloat(szCurrent,&szCurrent,(float&)vertex.nor.y)) - { + if(!ParseFloat(szCurrent,&szCurrent,(float&)vertex.nor.y)) { LogErrorNoThrow("Unexpected EOF/EOL while parsing vertex.nor.y"); SMDI_PARSE_RETURN; } - if(!ParseFloat(szCurrent,&szCurrent,(float&)vertex.nor.z)) - { + if(!ParseFloat(szCurrent,&szCurrent,(float&)vertex.nor.z)) { LogErrorNoThrow("Unexpected EOF/EOL while parsing vertex.nor.z"); SMDI_PARSE_RETURN; } - if (bVASection)SMDI_PARSE_RETURN; + if (bVASection) { + SMDI_PARSE_RETURN; + } - if(!ParseFloat(szCurrent,&szCurrent,(float&)vertex.uv.x)) - { + if(!ParseFloat(szCurrent,&szCurrent,(float&)vertex.uv.x)) { LogErrorNoThrow("Unexpected EOF/EOL while parsing vertex.uv.x"); SMDI_PARSE_RETURN; } - if(!ParseFloat(szCurrent,&szCurrent,(float&)vertex.uv.y)) - { + if(!ParseFloat(szCurrent,&szCurrent,(float&)vertex.uv.y)) { LogErrorNoThrow("Unexpected EOF/EOL while parsing vertex.uv.y"); SMDI_PARSE_RETURN; } @@ -1142,17 +1076,20 @@ void SMDImporter::ParseVertex(const char* szCurrent, // now read the number of bones affecting this vertex // all elements from now are fully optional, we don't need them unsigned int iSize = 0; - if(!ParseUnsignedInt(szCurrent,&szCurrent,iSize))SMDI_PARSE_RETURN; + if(!ParseUnsignedInt(szCurrent,&szCurrent,iSize)) { + SMDI_PARSE_RETURN; + } vertex.aiBoneLinks.resize(iSize,std::pair(0,0.0f)); for (std::vector >::iterator - i = vertex.aiBoneLinks.begin(); - i != vertex.aiBoneLinks.end();++i) - { - if(!ParseUnsignedInt(szCurrent,&szCurrent,(*i).first)) + i = vertex.aiBoneLinks.begin(); + i != vertex.aiBoneLinks.end();++i) { + if(!ParseUnsignedInt(szCurrent,&szCurrent,(*i).first)) { SMDI_PARSE_RETURN; - if(!ParseFloat(szCurrent,&szCurrent,(*i).second)) + } + if(!ParseFloat(szCurrent,&szCurrent,(*i).second)) { SMDI_PARSE_RETURN; + } } // go to the beginning of the next line diff --git a/code/SMDLoader.h b/code/SMDLoader.h index adc596a63..a791e7dde 100644 --- a/code/SMDLoader.h +++ b/code/SMDLoader.h @@ -62,17 +62,17 @@ struct aiNode; // STL headers #include -namespace Assimp { - -namespace SMD { +namespace Assimp { +namespace SMD { // --------------------------------------------------------------------------- /** Data structure for a vertex in a SMD file */ -struct Vertex -{ - Vertex() : iParentNode(UINT_MAX) - {} +struct Vertex { + Vertex() AI_NO_EXCEPT + : iParentNode(UINT_MAX) { + // empty + } //! Vertex position, normal and texture coordinate aiVector3D pos,nor,uv; @@ -90,10 +90,12 @@ struct Vertex // --------------------------------------------------------------------------- /** Data structure for a face in a SMD file */ -struct Face -{ - Face() : iTexture(0x0) - {} +struct Face { + Face() AI_NO_EXCEPT + : iTexture(0x0) + , avVertices{} { + // empty + } //! Texture index for the face unsigned int iTexture; @@ -105,11 +107,12 @@ struct Face // --------------------------------------------------------------------------- /** Data structure for a bone in a SMD file */ -struct Bone -{ +struct Bone { //! Default constructor - Bone() : iParent(UINT_MAX), bIsUsed(false) - { + Bone() AI_NO_EXCEPT + : iParent(UINT_MAX) + , bIsUsed(false) { + // empty } //! Destructor @@ -124,12 +127,10 @@ struct Bone uint32_t iParent; //! Animation of the bone - struct Animation - { + struct Animation { //! Public default constructor - Animation() - : iFirstTimeKey() - { + Animation() AI_NO_EXCEPT + : iFirstTimeKey() { asKeys.reserve(20); } @@ -218,6 +219,7 @@ protected: /** Parse the SMD file and create the output scene */ void ParseFile(); + void ReadSmd(const std::string &pFile, IOSystem* pIOHandler); // ------------------------------------------------------------------- /** Parse the triangles section of the SMD file @@ -288,13 +290,6 @@ protected: */ unsigned int GetTextureIndex(const std::string& filename); - // ------------------------------------------------------------------- - /** Computes absolute bone transformations - * All output transformations are in worldspace. - */ - void ComputeAbsoluteBoneTransformations(); - - // ------------------------------------------------------------------- /** Parse a line in the skeleton section */ @@ -343,7 +338,9 @@ protected: */ void CreateOutputMeshes(); void CreateOutputNodes(); - void CreateOutputAnimations(); + void CreateOutputAnimations(const std::string &pFile, IOSystem* pIOHandler); + void CreateOutputAnimation(int index, const std::string &name); + void GetAnimationFileList(const std::string &pFile, IOSystem* pIOHandler, std::vector>& outList); void CreateOutputMaterials(); @@ -412,6 +409,8 @@ private: */ unsigned int iLineNumber; + bool bLoadAnimationList = true; + bool noSkeletonMesh = false; }; } // end of namespace Assimp diff --git a/code/STEPFile.h b/code/STEPFile.h index 492150658..f5b56c31f 100644 --- a/code/STEPFile.h +++ b/code/STEPFile.h @@ -139,10 +139,10 @@ namespace STEP { * error (i.e. an entity expects a string but receives a bool) occurs. * It is typically coupled with both an entity id and a line number.*/ // ------------------------------------------------------------------------------- - struct TypeError : DeadlyImportError - { + struct TypeError : DeadlyImportError { enum { - ENTITY_NOT_SPECIFIED = 0xffffffffffffffffLL + ENTITY_NOT_SPECIFIED = 0xffffffffffffffffLL, + ENTITY_NOT_SPECIFIED_32 = 0x00000000ffffffff }; TypeError (const std::string& s,uint64_t entity = ENTITY_NOT_SPECIFIED, uint64_t line = SyntaxError::LINE_NOT_SPECIFIED); @@ -164,7 +164,6 @@ namespace STEP { class DataType { public: - typedef std::shared_ptr Out; public: @@ -357,14 +356,25 @@ namespace STEP { MemberList members; }; + class BINARY : public PrimitiveDataType { + public: + BINARY(uint32_t val) + : PrimitiveDataType(val) { + // empty + } + + BINARY() + : PrimitiveDataType(TypeError::ENTITY_NOT_SPECIFIED_32) { + // empty + } + }; // ------------------------------------------------------------------------------- /* Not exactly a full EXPRESS schema but rather a list of conversion functions * to extract valid C++ objects out of a STEP file. Those conversion functions * may, however, perform further schema validations. */ // ------------------------------------------------------------------------------- - class ConversionSchema - { + class ConversionSchema { public: struct SchemaEntry { SchemaEntry( const char *name, ConvertObjectProc func ) @@ -379,30 +389,27 @@ namespace STEP { typedef std::map ConverterMap; - public: - template explicit ConversionSchema( const SchemaEntry (& schemas)[N]) { *this = schemas; } - ConversionSchema() {} + ConversionSchema() { - public: + } ConvertObjectProc GetConverterProc(const std::string& name) const { ConverterMap::const_iterator it = converters.find(name); - return it == converters.end() ? NULL : (*it).second; + return it == converters.end() ? nullptr : (*it).second; } - bool IsKnownToken(const std::string& name) const { return converters.find(name) != converters.end(); } const char* GetStaticStringForToken(const std::string& token) const { ConverterMap::const_iterator it = converters.find(token); - return it == converters.end() ? NULL : (*it).first.c_str(); + return it == converters.end() ? nullptr : (*it).first.c_str(); } @@ -416,7 +423,6 @@ namespace STEP { } private: - ConverterMap converters; }; } @@ -451,8 +457,6 @@ namespace STEP { // empty } - public: - // utilities to simplify casting to concrete types template const T& To() const { @@ -474,7 +478,6 @@ namespace STEP { return dynamic_cast(this); } - public: uint64_t GetID() const { return id; } @@ -501,9 +504,11 @@ namespace STEP { /** CRTP shared base class for use by concrete entity implementation classes */ // ------------------------------------------------------------------------------ template - struct ObjectHelper : virtual Object - { - ObjectHelper() : aux_is_derived(0) {} + struct ObjectHelper : virtual Object { + ObjectHelper() + : aux_is_derived(0) { + // empty + } static Object* Construct(const STEP::DB& db, const EXPRESS::LIST& params) { // make sure we don't leak if Fill() throws an exception @@ -532,10 +537,16 @@ namespace STEP { /** Class template used to represent OPTIONAL data members in the converted schema */ // ------------------------------------------------------------------------------ template - struct Maybe - { - Maybe() : have() {} - explicit Maybe(const T& ptr) : ptr(ptr), have(true) { + struct Maybe { + Maybe() + : have() { + // empty + } + + explicit Maybe(const T& ptr) + : ptr(ptr) + , have(true) { + // empty } @@ -572,7 +583,6 @@ namespace STEP { } private: - template friend struct InternGenericConvert; operator T&() { @@ -587,16 +597,13 @@ namespace STEP { /** A LazyObject is created when needed. Before this happens, we just keep the text line that contains the object definition. */ // ------------------------------------------------------------------------------- - class LazyObject - { + class LazyObject { friend class DB; - public: + public: LazyObject(DB& db, uint64_t id, uint64_t line, const char* type,const char* args); ~LazyObject(); - public: - Object& operator * () { if (!obj) { LazyInit(); @@ -654,38 +661,37 @@ namespace STEP { } private: - void LazyInit() const; private: - mutable uint64_t id; const char* const type; DB& db; - mutable const char* args; mutable Object* obj; }; template - inline bool operator==( std::shared_ptr lo, T whatever ) { + inline + bool operator==( std::shared_ptr lo, T whatever ) { return *lo == whatever; // XXX use std::forward if we have 0x } template - inline bool operator==( const std::pair >& lo, T whatever ) { + inline + bool operator==( const std::pair >& lo, T whatever ) { return *(lo.second) == whatever; // XXX use std::forward if we have 0x } - // ------------------------------------------------------------------------------ /** Class template used to represent lazily evaluated object references in the converted schema */ // ------------------------------------------------------------------------------ template - struct Lazy - { + struct Lazy { typedef Lazy Out; - Lazy(const LazyObject* obj = NULL) : obj(obj) { + Lazy(const LazyObject* obj = nullptr) + : obj(obj) { + // empty } operator const T*() const { @@ -711,19 +717,15 @@ namespace STEP { /** Class template used to represent LIST and SET data members in the converted schema */ // ------------------------------------------------------------------------------ template - struct ListOf : public std::vector - { + struct ListOf : public std::vector { typedef typename T::Out OutScalar; typedef ListOf Out; - ListOf() { static_assert(min_cnt <= max_cnt || !max_cnt, "min_cnt <= max_cnt || !max_cnt"); } - }; - // ------------------------------------------------------------------------------ template struct PickBaseType { @@ -735,7 +737,8 @@ namespace STEP { typedef EXPRESS::ENTITY Type; }; - template <> struct PickBaseType< std::shared_ptr< const EXPRESS::DataType > >; + template<> + struct PickBaseType< std::shared_ptr< const EXPRESS::DataType > >; // ------------------------------------------------------------------------------ template @@ -743,8 +746,7 @@ namespace STEP { void operator()(T& out, const std::shared_ptr< const EXPRESS::DataType >& in, const STEP::DB& /*db*/) { try{ out = dynamic_cast< const typename PickBaseType::Type& > ( *in ); - } - catch(std::bad_cast&) { + } catch(std::bad_cast&) { throw TypeError("type error reading literal field"); } } @@ -817,7 +819,6 @@ namespace STEP { return InternGenericConvertList()(a,b,db); } - // ------------------------------------------------------------------------------ /** Lightweight manager class that holds the map of all objects in a * STEP file. DB's are exclusively maintained by the functions in @@ -834,7 +835,6 @@ namespace STEP { friend class LazyObject; public: - // objects indexed by ID - this can grow pretty large (i.e some hundred million // entries), so use raw pointers to avoid *any* overhead. typedef std::map ObjectMap; @@ -859,19 +859,16 @@ namespace STEP { : reader(reader) , splitter(*reader,true,true) , evaluated_count() - , schema( NULL ) + , schema( nullptr ) {} public: - ~DB() { for(ObjectMap::value_type& o : objects) { delete o.second; } } - public: - uint64_t GetObjectCount() const { return objects.size(); } @@ -900,7 +897,6 @@ namespace STEP { return refs; } - bool KeepInverseIndicesForType(const char* const type) const { return inv_whitelist.find(type) != inv_whitelist.end(); } @@ -912,7 +908,7 @@ namespace STEP { if (it != objects.end()) { return (*it).second; } - return NULL; + return nullptr; } diff --git a/code/STLLoader.cpp b/code/STLLoader.cpp index 3f8c810fa..fb866bb7a 100644 --- a/code/STLLoader.cpp +++ b/code/STLLoader.cpp @@ -214,11 +214,10 @@ void STLImporter::InternReadFile( const std::string& pFile, aiScene* pScene, IOS // create a single default material, using a white diffuse color for consistency with // other geometric types (e.g., PLY). - aiMaterial* pcMat = aiCreateAndRegisterDefaultMaterial(); - /*aiMaterial* pcMat = new aiMaterial(); + aiMaterial* pcMat = new aiMaterial(); aiString s; s.Set(AI_DEFAULT_MATERIAL_NAME); - pcMat->AddProperty(&s, AI_MATKEY_NAME);*/ + pcMat->AddProperty(&s, AI_MATKEY_NAME); aiColor4D clrDiffuse(ai_real(1.0),ai_real(1.0),ai_real(1.0),ai_real(1.0)); if (bMatClr) { diff --git a/code/ScenePrivate.h b/code/ScenePrivate.h index 751b007d8..775b9cb52 100644 --- a/code/ScenePrivate.h +++ b/code/ScenePrivate.h @@ -56,7 +56,7 @@ class Importer; struct ScenePrivateData { // The struct constructor. - ScenePrivateData(); + ScenePrivateData() AI_NO_EXCEPT; // Importer that originally loaded the scene though the C-API // If set, this object is owned by this private data instance. @@ -74,7 +74,7 @@ struct ScenePrivateData { }; inline -ScenePrivateData::ScenePrivateData() +ScenePrivateData::ScenePrivateData() AI_NO_EXCEPT : mOrigImporter( nullptr ) , mPPStepsApplied( 0 ) , mIsCopy( false ) { diff --git a/code/SplitLargeMeshes.cpp b/code/SplitLargeMeshes.cpp index 28b655fa4..5cd3afe48 100644 --- a/code/SplitLargeMeshes.cpp +++ b/code/SplitLargeMeshes.cpp @@ -40,11 +40,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------- */ - -/** @file Implementation of the SplitLargeMeshes postprocessing step -*/ - - +/** + * @file Implementation of the SplitLargeMeshes postprocessing step + */ // internal headers of the post-processing framework #include "SplitLargeMeshes.h" @@ -52,61 +50,57 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. using namespace Assimp; - // ------------------------------------------------------------------------------------------------ -SplitLargeMeshesProcess_Triangle::SplitLargeMeshesProcess_Triangle() -{ +SplitLargeMeshesProcess_Triangle::SplitLargeMeshesProcess_Triangle() { LIMIT = AI_SLM_DEFAULT_MAX_TRIANGLES; } // ------------------------------------------------------------------------------------------------ -SplitLargeMeshesProcess_Triangle::~SplitLargeMeshesProcess_Triangle() -{ +SplitLargeMeshesProcess_Triangle::~SplitLargeMeshesProcess_Triangle() { // nothing to do here } // ------------------------------------------------------------------------------------------------ // Returns whether the processing step is present in the given flag field. -bool SplitLargeMeshesProcess_Triangle::IsActive( unsigned int pFlags) const -{ +bool SplitLargeMeshesProcess_Triangle::IsActive( unsigned int pFlags) const { return (pFlags & aiProcess_SplitLargeMeshes) != 0; } // ------------------------------------------------------------------------------------------------ // Executes the post processing step on the given imported data. -void SplitLargeMeshesProcess_Triangle::Execute( aiScene* pScene) -{ - if (0xffffffff == this->LIMIT)return; +void SplitLargeMeshesProcess_Triangle::Execute( aiScene* pScene) { + if (0xffffffff == this->LIMIT || nullptr == pScene ) { + return; + } ASSIMP_LOG_DEBUG("SplitLargeMeshesProcess_Triangle begin"); std::vector > avList; - for( unsigned int a = 0; a < pScene->mNumMeshes; a++) + for( unsigned int a = 0; a < pScene->mNumMeshes; ++a) { this->SplitMesh(a, pScene->mMeshes[a],avList); + } - if (avList.size() != pScene->mNumMeshes) - { + if (avList.size() != pScene->mNumMeshes) { // it seems something has been split. rebuild the mesh list delete[] pScene->mMeshes; pScene->mNumMeshes = (unsigned int)avList.size(); pScene->mMeshes = new aiMesh*[avList.size()]; - for (unsigned int i = 0; i < avList.size();++i) + for (unsigned int i = 0; i < avList.size();++i) { pScene->mMeshes[i] = avList[i].first; + } // now we need to update all nodes this->UpdateNode(pScene->mRootNode,avList); ASSIMP_LOG_INFO("SplitLargeMeshesProcess_Triangle finished. Meshes have been split"); - } - else { + } else { ASSIMP_LOG_DEBUG("SplitLargeMeshesProcess_Triangle finished. There was nothing to do"); } } // ------------------------------------------------------------------------------------------------ // Setup properties -void SplitLargeMeshesProcess_Triangle::SetupProperties( const Importer* pImp) -{ +void SplitLargeMeshesProcess_Triangle::SetupProperties( const Importer* pImp) { // get the current value of the split property this->LIMIT = pImp->GetPropertyInteger(AI_CONFIG_PP_SLM_TRIANGLE_LIMIT,AI_SLM_DEFAULT_MAX_TRIANGLES); } @@ -114,17 +108,13 @@ void SplitLargeMeshesProcess_Triangle::SetupProperties( const Importer* pImp) // ------------------------------------------------------------------------------------------------ // Update a node after some meshes have been split void SplitLargeMeshesProcess_Triangle::UpdateNode(aiNode* pcNode, - const std::vector >& avList) -{ + const std::vector >& avList) { // for every index in out list build a new entry std::vector aiEntries; aiEntries.reserve(pcNode->mNumMeshes + 1); - for (unsigned int i = 0; i < pcNode->mNumMeshes;++i) - { - for (unsigned int a = 0; a < avList.size();++a) - { - if (avList[a].second == pcNode->mMeshes[i]) - { + for (unsigned int i = 0; i < pcNode->mNumMeshes;++i) { + for (unsigned int a = 0; a < avList.size();++a) { + if (avList[a].second == pcNode->mMeshes[i]) { aiEntries.push_back(a); } } @@ -135,26 +125,23 @@ void SplitLargeMeshesProcess_Triangle::UpdateNode(aiNode* pcNode, pcNode->mNumMeshes = (unsigned int)aiEntries.size(); pcNode->mMeshes = new unsigned int[pcNode->mNumMeshes]; - for (unsigned int b = 0; b < pcNode->mNumMeshes;++b) + for (unsigned int b = 0; b < pcNode->mNumMeshes;++b) { pcNode->mMeshes[b] = aiEntries[b]; + } // recusively update all other nodes - for (unsigned int i = 0; i < pcNode->mNumChildren;++i) - { + for (unsigned int i = 0; i < pcNode->mNumChildren;++i) { UpdateNode ( pcNode->mChildren[i], avList ); } - return; } // ------------------------------------------------------------------------------------------------ // Executes the post processing step on the given imported data. void SplitLargeMeshesProcess_Triangle::SplitMesh( - unsigned int a, - aiMesh* pMesh, - std::vector >& avList) -{ - if (pMesh->mNumFaces > SplitLargeMeshesProcess_Triangle::LIMIT) - { + unsigned int a, + aiMesh* pMesh, + std::vector >& avList) { + if (pMesh->mNumFaces > SplitLargeMeshesProcess_Triangle::LIMIT) { ASSIMP_LOG_INFO("Mesh exceeds the triangle limit. It will be split ..."); // we need to split this mesh into sub meshes @@ -165,8 +152,7 @@ void SplitLargeMeshesProcess_Triangle::SplitMesh( const unsigned int iOutVertexNum = iOutFaceNum * 3; // now generate all submeshes - for (unsigned int i = 0; i < iSubMeshes;++i) - { + for (unsigned int i = 0; i < iSubMeshes;++i) { aiMesh* pcMesh = new aiMesh; pcMesh->mNumFaces = iOutFaceNum; pcMesh->mMaterialIndex = pMesh->mMaterialIndex; @@ -174,8 +160,7 @@ void SplitLargeMeshesProcess_Triangle::SplitMesh( // the name carries the adjacency information between the meshes pcMesh->mName = pMesh->mName; - if (i == iSubMeshes-1) - { + if (i == iSubMeshes-1) { pcMesh->mNumFaces = iOutFaceNum + ( pMesh->mNumFaces - iOutFaceNum * iSubMeshes); } @@ -186,71 +171,62 @@ void SplitLargeMeshesProcess_Triangle::SplitMesh( // get the total number of indices unsigned int iCnt = 0; - for (unsigned int p = iBase; p < pcMesh->mNumFaces + iBase;++p) - { + for (unsigned int p = iBase; p < pcMesh->mNumFaces + iBase;++p) { iCnt += pMesh->mFaces[p].mNumIndices; } pcMesh->mNumVertices = iCnt; // allocate storage - if (pMesh->mVertices != NULL) + if (pMesh->mVertices != nullptr) { pcMesh->mVertices = new aiVector3D[iCnt]; + } - if (pMesh->HasNormals()) + if (pMesh->HasNormals()) { pcMesh->mNormals = new aiVector3D[iCnt]; + } - if (pMesh->HasTangentsAndBitangents()) - { + if (pMesh->HasTangentsAndBitangents()) { pcMesh->mTangents = new aiVector3D[iCnt]; pcMesh->mBitangents = new aiVector3D[iCnt]; } // texture coordinates - for (unsigned int c = 0; c < AI_MAX_NUMBER_OF_TEXTURECOORDS;++c) - { + for (unsigned int c = 0; c < AI_MAX_NUMBER_OF_TEXTURECOORDS;++c) { pcMesh->mNumUVComponents[c] = pMesh->mNumUVComponents[c]; - if (pMesh->HasTextureCoords( c)) - { + if (pMesh->HasTextureCoords( c)) { pcMesh->mTextureCoords[c] = new aiVector3D[iCnt]; } } // vertex colors - for (unsigned int c = 0; c < AI_MAX_NUMBER_OF_COLOR_SETS;++c) - { - if (pMesh->HasVertexColors( c)) - { + for (unsigned int c = 0; c < AI_MAX_NUMBER_OF_COLOR_SETS;++c) { + if (pMesh->HasVertexColors( c)) { pcMesh->mColors[c] = new aiColor4D[iCnt]; } } - if (pMesh->HasBones()) - { + if (pMesh->HasBones()) { // assume the number of bones won't change in most cases pcMesh->mBones = new aiBone*[pMesh->mNumBones]; // iterate through all bones of the mesh and find those which // need to be copied to the split mesh std::vector avTempWeights; - for (unsigned int p = 0; p < pcMesh->mNumBones;++p) - { + for (unsigned int p = 0; p < pcMesh->mNumBones;++p) { aiBone* const bone = pcMesh->mBones[p]; avTempWeights.clear(); avTempWeights.reserve(bone->mNumWeights / iSubMeshes); - for (unsigned int q = 0; q < bone->mNumWeights;++q) - { + for (unsigned int q = 0; q < bone->mNumWeights;++q) { aiVertexWeight& weight = bone->mWeights[q]; - if(weight.mVertexId >= iBase && weight.mVertexId < iBase + iOutVertexNum) - { + if(weight.mVertexId >= iBase && weight.mVertexId < iBase + iOutVertexNum) { avTempWeights.push_back(weight); weight = avTempWeights.back(); weight.mVertexId -= iBase; } } - if (!avTempWeights.empty()) - { + if (!avTempWeights.empty()) { // we'll need this bone. Copy it ... aiBone* pc = new aiBone(); pcMesh->mBones[pcMesh->mNumBones++] = pc; @@ -261,12 +237,12 @@ void SplitLargeMeshesProcess_Triangle::SplitMesh( // no need to reallocate the array for the last submesh. // Here we can reuse the (large) source array, although // we'll waste some memory - if (iSubMeshes-1 == i) - { + if (iSubMeshes-1 == i) { pc->mWeights = bone->mWeights; - bone->mWeights = NULL; + bone->mWeights = nullptr; + } else { + pc->mWeights = new aiVertexWeight[pc->mNumWeights]; } - else pc->mWeights = new aiVertexWeight[pc->mNumWeights]; // copy the weights ::memcpy(pc->mWeights,&avTempWeights[0],sizeof(aiVertexWeight)*pc->mNumWeights); @@ -276,8 +252,7 @@ void SplitLargeMeshesProcess_Triangle::SplitMesh( // (we will also need to copy the array of indices) unsigned int iCurrent = 0; - for (unsigned int p = 0; p < pcMesh->mNumFaces;++p) - { + for (unsigned int p = 0; p < pcMesh->mNumFaces;++p) { pcMesh->mFaces[p].mNumIndices = 3; // allocate a new array const unsigned int iTemp = p + iBase; @@ -289,8 +264,7 @@ void SplitLargeMeshesProcess_Triangle::SplitMesh( unsigned int* piOut = pcMesh->mFaces[p].mIndices = new unsigned int[iNumIndices]; // need to update the output primitive types - switch (iNumIndices) - { + switch (iNumIndices) { case 1: pcMesh->mPrimitiveTypes |= aiPrimitiveType_POINT; break; @@ -305,38 +279,38 @@ void SplitLargeMeshesProcess_Triangle::SplitMesh( } // and copy the contents of the old array, offset by current base - for (unsigned int v = 0; v < iNumIndices;++v) - { + for (unsigned int v = 0; v < iNumIndices;++v) { unsigned int iIndex = pi[v]; unsigned int iIndexOut = iCurrent++; piOut[v] = iIndexOut; // copy positions - if (pMesh->mVertices != NULL) + if (pMesh->mVertices != nullptr) { pcMesh->mVertices[iIndexOut] = pMesh->mVertices[iIndex]; + } // copy normals - if (pMesh->HasNormals()) + if (pMesh->HasNormals()) { pcMesh->mNormals[iIndexOut] = pMesh->mNormals[iIndex]; + } // copy tangents/bitangents - if (pMesh->HasTangentsAndBitangents()) - { + if (pMesh->HasTangentsAndBitangents()) { pcMesh->mTangents[iIndexOut] = pMesh->mTangents[iIndex]; pcMesh->mBitangents[iIndexOut] = pMesh->mBitangents[iIndex]; } // texture coordinates - for (unsigned int c = 0; c < AI_MAX_NUMBER_OF_TEXTURECOORDS;++c) - { - if (pMesh->HasTextureCoords( c)) + for (unsigned int c = 0; c < AI_MAX_NUMBER_OF_TEXTURECOORDS;++c) { + if (pMesh->HasTextureCoords( c ) ) { pcMesh->mTextureCoords[c][iIndexOut] = pMesh->mTextureCoords[c][iIndex]; + } } // vertex colors - for (unsigned int c = 0; c < AI_MAX_NUMBER_OF_COLOR_SETS;++c) - { - if (pMesh->HasVertexColors( c)) + for (unsigned int c = 0; c < AI_MAX_NUMBER_OF_COLOR_SETS;++c) { + if (pMesh->HasVertexColors( c)) { pcMesh->mColors[c][iIndexOut] = pMesh->mColors[c][iIndex]; + } } } } @@ -347,51 +321,59 @@ void SplitLargeMeshesProcess_Triangle::SplitMesh( // now delete the old mesh data delete pMesh; + } else { + avList.push_back(std::pair(pMesh,a)); } - else avList.push_back(std::pair(pMesh,a)); - return; } // ------------------------------------------------------------------------------------------------ -SplitLargeMeshesProcess_Vertex::SplitLargeMeshesProcess_Vertex() -{ +SplitLargeMeshesProcess_Vertex::SplitLargeMeshesProcess_Vertex() { LIMIT = AI_SLM_DEFAULT_MAX_VERTICES; } // ------------------------------------------------------------------------------------------------ -SplitLargeMeshesProcess_Vertex::~SplitLargeMeshesProcess_Vertex() -{ +SplitLargeMeshesProcess_Vertex::~SplitLargeMeshesProcess_Vertex() { // nothing to do here } // ------------------------------------------------------------------------------------------------ // Returns whether the processing step is present in the given flag field. -bool SplitLargeMeshesProcess_Vertex::IsActive( unsigned int pFlags) const -{ +bool SplitLargeMeshesProcess_Vertex::IsActive( unsigned int pFlags) const { return (pFlags & aiProcess_SplitLargeMeshes) != 0; } // ------------------------------------------------------------------------------------------------ // Executes the post processing step on the given imported data. -void SplitLargeMeshesProcess_Vertex::Execute( aiScene* pScene) -{ - std::vector > avList; - - if (0xffffffff == this->LIMIT)return; +void SplitLargeMeshesProcess_Vertex::Execute( aiScene* pScene) { + if (0xffffffff == this->LIMIT || nullptr == pScene ) { + return; + } ASSIMP_LOG_DEBUG("SplitLargeMeshesProcess_Vertex begin"); - for( unsigned int a = 0; a < pScene->mNumMeshes; a++) - this->SplitMesh(a, pScene->mMeshes[a],avList); - if (avList.size() != pScene->mNumMeshes) - { + std::vector > avList; + + //Check for point cloud first, + //Do not process point cloud, splitMesh works only with faces data + for (unsigned int a = 0; a < pScene->mNumMeshes; a++) { + if ( pScene->mMeshes[a]->mPrimitiveTypes == aiPrimitiveType_POINT ) { + return; + } + } + + for( unsigned int a = 0; a < pScene->mNumMeshes; ++a ) { + this->SplitMesh(a, pScene->mMeshes[a], avList); + } + + if (avList.size() != pScene->mNumMeshes) { // it seems something has been split. rebuild the mesh list delete[] pScene->mMeshes; pScene->mNumMeshes = (unsigned int)avList.size(); pScene->mMeshes = new aiMesh*[avList.size()]; - for (unsigned int i = 0; i < avList.size();++i) + for (unsigned int i = 0; i < avList.size();++i) { pScene->mMeshes[i] = avList[i].first; + } // now we need to update all nodes SplitLargeMeshesProcess_Triangle::UpdateNode(pScene->mRootNode,avList); @@ -403,20 +385,17 @@ void SplitLargeMeshesProcess_Vertex::Execute( aiScene* pScene) // ------------------------------------------------------------------------------------------------ // Setup properties -void SplitLargeMeshesProcess_Vertex::SetupProperties( const Importer* pImp) -{ +void SplitLargeMeshesProcess_Vertex::SetupProperties( const Importer* pImp) { this->LIMIT = pImp->GetPropertyInteger(AI_CONFIG_PP_SLM_VERTEX_LIMIT,AI_SLM_DEFAULT_MAX_VERTICES); } // ------------------------------------------------------------------------------------------------ // Executes the post processing step on the given imported data. void SplitLargeMeshesProcess_Vertex::SplitMesh( - unsigned int a, - aiMesh* pMesh, - std::vector >& avList) -{ - if (pMesh->mNumVertices > SplitLargeMeshesProcess_Vertex::LIMIT) - { + unsigned int a, + aiMesh* pMesh, + std::vector >& avList) { + if (pMesh->mNumVertices > SplitLargeMeshesProcess_Vertex::LIMIT) { typedef std::vector< std::pair > VertexWeightTable; // build a per-vertex weight list if necessary @@ -426,7 +405,6 @@ void SplitLargeMeshesProcess_Vertex::SplitMesh( // determine the estimated size of a submesh // (this could be too large. Max waste is a single digit percentage) const unsigned int iSubMeshes = (pMesh->mNumVertices / SplitLargeMeshesProcess_Vertex::LIMIT) + 1; - //const unsigned int iOutVertexNum2 = pMesh->mNumVertices /iSubMeshes; // create a std::vector to indicate which vertices // have already been copied @@ -439,11 +417,9 @@ void SplitLargeMeshesProcess_Vertex::SplitMesh( iEstimatedSize += iEstimatedSize >> 3; // now generate all submeshes - unsigned int iBase = 0; - while (true) - { + unsigned int iBase( 0 ); + while (true) { const unsigned int iOutVertexNum = SplitLargeMeshesProcess_Vertex::LIMIT; - aiMesh* pcMesh = new aiMesh; pcMesh->mNumVertices = 0; pcMesh->mMaterialIndex = pMesh->mMaterialIndex; @@ -452,18 +428,15 @@ void SplitLargeMeshesProcess_Vertex::SplitMesh( pcMesh->mName = pMesh->mName; typedef std::vector BoneWeightList; - if (pMesh->HasBones()) - { + if (pMesh->HasBones()) { pcMesh->mBones = new aiBone*[pMesh->mNumBones]; ::memset(pcMesh->mBones,0,sizeof(void*)*pMesh->mNumBones); } // clear the temporary helper array - if (iBase) - { + if (iBase) { // we can't use memset here we unsigned int needn' be 32 bits - for (auto &elem : avWasCopied) - { + for (auto &elem : avWasCopied) { elem = 0xffffffff; } } @@ -472,50 +445,41 @@ void SplitLargeMeshesProcess_Vertex::SplitMesh( std::vector vFaces; // reserve enough storage for most cases - if (pMesh->HasPositions()) - { + if (pMesh->HasPositions()) { pcMesh->mVertices = new aiVector3D[iOutVertexNum]; } - if (pMesh->HasNormals()) - { + if (pMesh->HasNormals()) { pcMesh->mNormals = new aiVector3D[iOutVertexNum]; } - if (pMesh->HasTangentsAndBitangents()) - { + if (pMesh->HasTangentsAndBitangents()) { pcMesh->mTangents = new aiVector3D[iOutVertexNum]; pcMesh->mBitangents = new aiVector3D[iOutVertexNum]; } - for (unsigned int c = 0; pMesh->HasVertexColors(c);++c) - { + for (unsigned int c = 0; pMesh->HasVertexColors(c);++c) { pcMesh->mColors[c] = new aiColor4D[iOutVertexNum]; } - for (unsigned int c = 0; pMesh->HasTextureCoords(c);++c) - { + for (unsigned int c = 0; pMesh->HasTextureCoords(c);++c) { pcMesh->mNumUVComponents[c] = pMesh->mNumUVComponents[c]; pcMesh->mTextureCoords[c] = new aiVector3D[iOutVertexNum]; } vFaces.reserve(iEstimatedSize); // (we will also need to copy the array of indices) - while (iBase < pMesh->mNumFaces) - { + while (iBase < pMesh->mNumFaces) { // allocate a new array const unsigned int iNumIndices = pMesh->mFaces[iBase].mNumIndices; // doesn't catch degenerates but is quite fast unsigned int iNeed = 0; - for (unsigned int v = 0; v < iNumIndices;++v) - { + for (unsigned int v = 0; v < iNumIndices;++v) { unsigned int iIndex = pMesh->mFaces[iBase].mIndices[v]; // check whether we do already have this vertex - if (0xFFFFFFFF == avWasCopied[iIndex]) - { + if (0xFFFFFFFF == avWasCopied[iIndex]) { iNeed++; } } - if (pcMesh->mNumVertices + iNeed > iOutVertexNum) - { + if (pcMesh->mNumVertices + iNeed > iOutVertexNum) { // don't use this face break; } @@ -528,8 +492,7 @@ void SplitLargeMeshesProcess_Vertex::SplitMesh( rFace.mIndices = new unsigned int[iNumIndices]; // need to update the output primitive types - switch (rFace.mNumIndices) - { + switch (rFace.mNumIndices) { case 1: pcMesh->mPrimitiveTypes |= aiPrimitiveType_POINT; break; @@ -544,13 +507,11 @@ void SplitLargeMeshesProcess_Vertex::SplitMesh( } // and copy the contents of the old array, offset by current base - for (unsigned int v = 0; v < iNumIndices;++v) - { + for (unsigned int v = 0; v < iNumIndices;++v) { unsigned int iIndex = pMesh->mFaces[iBase].mIndices[v]; // check whether we do already have this vertex - if (0xFFFFFFFF != avWasCopied[iIndex]) - { + if (0xFFFFFFFF != avWasCopied[iIndex]) { rFace.mIndices[v] = avWasCopied[iIndex]; continue; } @@ -559,49 +520,38 @@ void SplitLargeMeshesProcess_Vertex::SplitMesh( pcMesh->mVertices[pcMesh->mNumVertices] = (pMesh->mVertices[iIndex]); // copy normals - if (pMesh->HasNormals()) - { + if (pMesh->HasNormals()) { pcMesh->mNormals[pcMesh->mNumVertices] = (pMesh->mNormals[iIndex]); } // copy tangents/bitangents - if (pMesh->HasTangentsAndBitangents()) - { + if (pMesh->HasTangentsAndBitangents()) { pcMesh->mTangents[pcMesh->mNumVertices] = (pMesh->mTangents[iIndex]); pcMesh->mBitangents[pcMesh->mNumVertices] = (pMesh->mBitangents[iIndex]); } // texture coordinates - for (unsigned int c = 0; c < AI_MAX_NUMBER_OF_TEXTURECOORDS;++c) - { - if (pMesh->HasTextureCoords( c)) - { + for (unsigned int c = 0; c < AI_MAX_NUMBER_OF_TEXTURECOORDS;++c) { + if (pMesh->HasTextureCoords( c)) { pcMesh->mTextureCoords[c][pcMesh->mNumVertices] = pMesh->mTextureCoords[c][iIndex]; } } // vertex colors - for (unsigned int c = 0; c < AI_MAX_NUMBER_OF_COLOR_SETS;++c) - { - if (pMesh->HasVertexColors( c)) - { + for (unsigned int c = 0; c < AI_MAX_NUMBER_OF_COLOR_SETS;++c) { + if (pMesh->HasVertexColors( c)) { pcMesh->mColors[c][pcMesh->mNumVertices] = pMesh->mColors[c][iIndex]; } } // check whether we have bone weights assigned to this vertex rFace.mIndices[v] = pcMesh->mNumVertices; - if (avPerVertexWeights) - { + if (avPerVertexWeights) { VertexWeightTable& table = avPerVertexWeights[ pcMesh->mNumVertices ]; - if( !table.empty() ) - { - for (VertexWeightTable::const_iterator - iter = table.begin(); - iter != table.end();++iter) - { + if( !table.empty() ) { + for (VertexWeightTable::const_iterator iter = table.begin(); + iter != table.end();++iter) { // allocate the bone weight array if necessary BoneWeightList* pcWeightList = (BoneWeightList*)pcMesh->mBones[(*iter).first]; - if (!pcWeightList) - { + if (nullptr == pcWeightList) { pcMesh->mBones[(*iter).first] = (aiBone*)(pcWeightList = new BoneWeightList()); } pcWeightList->push_back(aiVertexWeight(pcMesh->mNumVertices,(*iter).second)); @@ -612,26 +562,22 @@ void SplitLargeMeshesProcess_Vertex::SplitMesh( avWasCopied[iIndex] = pcMesh->mNumVertices; pcMesh->mNumVertices++; } - iBase++; - if(pcMesh->mNumVertices == iOutVertexNum) - { + ++iBase; + if(pcMesh->mNumVertices == iOutVertexNum) { // break here. The face is only added if it was complete break; } } // check which bones we'll need to create for this submesh - if (pMesh->HasBones()) - { + if (pMesh->HasBones()) { aiBone** ppCurrent = pcMesh->mBones; - for (unsigned int k = 0; k < pMesh->mNumBones;++k) - { + for (unsigned int k = 0; k < pMesh->mNumBones;++k) { // check whether the bone is existing BoneWeightList* pcWeightList; - if ((pcWeightList = (BoneWeightList*)pcMesh->mBones[k])) - { + if ((pcWeightList = (BoneWeightList*)pcMesh->mBones[k])) { aiBone* pcOldBone = pMesh->mBones[k]; - aiBone* pcOut; + aiBone* pcOut( nullptr ); *ppCurrent++ = pcOut = new aiBone(); pcOut->mName = aiString(pcOldBone->mName); pcOut->mOffsetMatrix = pcOldBone->mOffsetMatrix; @@ -653,14 +599,14 @@ void SplitLargeMeshesProcess_Vertex::SplitMesh( pcMesh->mFaces = new aiFace[vFaces.size()]; pcMesh->mNumFaces = (unsigned int)vFaces.size(); - for (unsigned int p = 0; p < pcMesh->mNumFaces;++p) + for (unsigned int p = 0; p < pcMesh->mNumFaces;++p) { pcMesh->mFaces[p] = vFaces[p]; + } // add the newly created mesh to the list avList.push_back(std::pair(pcMesh,a)); - if (iBase == pMesh->mNumFaces) - { + if (iBase == pMesh->mNumFaces) { // have all faces ... finish the outer loop, too break; } @@ -674,5 +620,4 @@ void SplitLargeMeshesProcess_Vertex::SplitMesh( return; } avList.push_back(std::pair(pMesh,a)); - return; } diff --git a/code/TextureTransform.h b/code/TextureTransform.h index fafa48178..99d5acf1e 100644 --- a/code/TextureTransform.h +++ b/code/TextureTransform.h @@ -65,14 +65,14 @@ namespace Assimp { /** Small helper structure representing a shortcut into the material list * to be able to update some values quickly. */ -struct TTUpdateInfo -{ - TTUpdateInfo() : - directShortcut (NULL) - , mat (NULL) - , semantic (0) - , index (0) - {} +struct TTUpdateInfo { + TTUpdateInfo() AI_NO_EXCEPT + : directShortcut(nullptr) + , mat(nullptr) + , semantic(0) + , index(0) { + // empty + } //! Direct shortcut, if available unsigned int* directShortcut; @@ -88,15 +88,14 @@ struct TTUpdateInfo // --------------------------------------------------------------------------- /** Helper class representing texture coordinate transformations */ -struct STransformVecInfo : public aiUVTransform -{ - - STransformVecInfo() - : uvIndex (0) - , mapU (aiTextureMapMode_Wrap) - , mapV (aiTextureMapMode_Wrap) - , lockedPos (AI_TT_UV_IDX_LOCK_NONE) - {} +struct STransformVecInfo : public aiUVTransform { + STransformVecInfo() AI_NO_EXCEPT + : uvIndex(0) + , mapU(aiTextureMapMode_Wrap) + , mapV(aiTextureMapMode_Wrap) + , lockedPos(AI_TT_UV_IDX_LOCK_NONE) { + // empty + } //! Source texture coordinate index unsigned int uvIndex; diff --git a/code/ValidateDataStructure.cpp b/code/ValidateDataStructure.cpp index ed6bde724..931c52822 100644 --- a/code/ValidateDataStructure.cpp +++ b/code/ValidateDataStructure.cpp @@ -491,8 +491,12 @@ void ValidateDSProcess::Validate( const aiMesh* pMesh) { if (pMesh->mBones[i]->mName == pMesh->mBones[a]->mName) { - ReportError("aiMesh::mBones[%i] has the same name as " - "aiMesh::mBones[%i]",i,a); + const char *name = "unknown"; + if (nullptr != pMesh->mBones[ i ]->mName.C_Str()) { + name = pMesh->mBones[ i ]->mName.C_Str(); + } + ReportError("aiMesh::mBones[%i], name = \"%s\" has the same name as " + "aiMesh::mBones[%i]", i, name, a ); } } } diff --git a/code/XFileHelper.h b/code/XFileHelper.h index 582466689..c51e2eba9 100644 --- a/code/XFileHelper.h +++ b/code/XFileHelper.h @@ -55,32 +55,33 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include -namespace Assimp -{ -namespace XFile -{ +namespace Assimp { +namespace XFile { /** Helper structure representing a XFile mesh face */ -struct Face -{ +struct Face { std::vector mIndices; }; /** Helper structure representing a texture filename inside a material and its potential source */ -struct TexEntry -{ +struct TexEntry { std::string mName; bool mIsNormalMap; // true if the texname was specified in a NormalmapFilename tag - TexEntry() { mIsNormalMap = false; } - TexEntry( const std::string& pName, bool pIsNormalMap = false) - : mName( pName), mIsNormalMap( pIsNormalMap) - { /* done */ } + TexEntry() AI_NO_EXCEPT + : mName() + , mIsNormalMap(false) { + // empty + } + TexEntry(const std::string& pName, bool pIsNormalMap = false) + : mName(pName) + , mIsNormalMap(pIsNormalMap) { + // empty + } }; /** Helper structure representing a XFile material */ -struct Material -{ +struct Material { std::string mName; bool mIsReference; // if true, mName holds a name by which the actual material can be found in the material list aiColor4D mDiffuse; @@ -88,19 +89,18 @@ struct Material aiColor3D mSpecular; aiColor3D mEmissive; std::vector mTextures; - size_t sceneIndex; ///< the index under which it was stored in the scene's material list - Material() - : mIsReference(false), - mSpecularExponent(), - sceneIndex(SIZE_MAX) - {} + Material() AI_NO_EXCEPT + : mIsReference(false) + , mSpecularExponent() + , sceneIndex(SIZE_MAX) { + // empty + } }; /** Helper structure to represent a bone weight */ -struct BoneWeight -{ +struct BoneWeight { unsigned int mVertex; ai_real mWeight; }; @@ -114,8 +114,7 @@ struct Bone }; /** Helper structure to represent an XFile mesh */ -struct Mesh -{ +struct Mesh { std::string mName; std::vector mPositions; std::vector mPosFaces; @@ -131,38 +130,65 @@ struct Mesh std::vector mBones; - explicit Mesh(const std::string &pName = "") { mName = pName; mNumTextures = 0; mNumColorSets = 0; } + explicit Mesh(const std::string &pName = "") AI_NO_EXCEPT + : mName( pName ) + , mPositions() + , mPosFaces() + , mNormals() + , mNormFaces() + , mNumTextures(0) + , mTexCoords{} + , mNumColorSets(0) + , mColors{} + , mFaceMaterials() + , mMaterials() + , mBones() { + // empty + } }; /** Helper structure to represent a XFile frame */ -struct Node -{ +struct Node { std::string mName; aiMatrix4x4 mTrafoMatrix; Node* mParent; std::vector mChildren; std::vector mMeshes; - Node() { mParent = NULL; } - explicit Node( Node* pParent) { mParent = pParent; } - ~Node() - { - for( unsigned int a = 0; a < mChildren.size(); a++) + Node() AI_NO_EXCEPT + : mName() + , mTrafoMatrix() + , mParent(nullptr) + , mChildren() + , mMeshes() { + // empty + } + explicit Node( Node* pParent) + : mName() + , mTrafoMatrix() + , mParent(pParent) + , mChildren() + , mMeshes() { + // empty + } + + ~Node() { + for (unsigned int a = 0; a < mChildren.size(); ++a ) { delete mChildren[a]; - for( unsigned int a = 0; a < mMeshes.size(); a++) + } + for (unsigned int a = 0; a < mMeshes.size(); ++a) { delete mMeshes[a]; + } } }; -struct MatrixKey -{ +struct MatrixKey { double mTime; aiMatrix4x4 mMatrix; }; /** Helper structure representing a single animated bone in a XFile */ -struct AnimBone -{ +struct AnimBone { std::string mBoneName; std::vector mPosKeys; // either three separate key sequences for position, rotation, scaling std::vector mRotKeys; @@ -194,14 +220,22 @@ struct Scene std::vector mAnims; unsigned int mAnimTicksPerSecond; - Scene() { mRootNode = NULL; mAnimTicksPerSecond = 0; } - ~Scene() - { + Scene() AI_NO_EXCEPT + : mRootNode(nullptr) + , mGlobalMeshes() + , mGlobalMaterials() + , mAnimTicksPerSecond(0) { + // empty + } + ~Scene() { delete mRootNode; - for( unsigned int a = 0; a < mGlobalMeshes.size(); a++) + mRootNode = nullptr; + for (unsigned int a = 0; a < mGlobalMeshes.size(); ++a ) { delete mGlobalMeshes[a]; - for( unsigned int a = 0; a < mAnims.size(); a++) + } + for (unsigned int a = 0; a < mAnims.size(); ++a ) { delete mAnims[a]; + } } }; diff --git a/code/glTF2Asset.h b/code/glTF2Asset.h index b4545baa2..92be82f3b 100644 --- a/code/glTF2Asset.h +++ b/code/glTF2Asset.h @@ -170,7 +170,7 @@ namespace glTF2 #include #ifdef ASSIMP_API - #include "./../include/assimp/Compiler/pushpack1.h" + #include #endif //! For binary .glb files @@ -189,7 +189,7 @@ namespace glTF2 } PACK_STRUCT; #ifdef ASSIMP_API - #include "./../include/assimp/Compiler/poppack1.h" + #include #endif @@ -303,6 +303,20 @@ namespace glTF2 TextureType_UNSIGNED_SHORT_5_5_5_1 = 32820 }; + //! Values for the Animation::Target::path field + enum AnimationPath { + AnimationPath_TRANSLATION, + AnimationPath_ROTATION, + AnimationPath_SCALE, + AnimationPath_WEIGHTS, + }; + + //! Values for the Animation::Sampler::interpolation field + enum Interpolation { + Interpolation_LINEAR, + Interpolation_STEP, + Interpolation_CUBICSPLINE, + }; //! Values for the Accessor::type field (helper class) class AttribType @@ -659,7 +673,7 @@ namespace glTF2 int width, height; private: - uint8_t* mData; + std::unique_ptr mData; size_t mDataLength; public: @@ -674,7 +688,7 @@ namespace glTF2 { return mDataLength; } inline const uint8_t* GetData() const - { return mData; } + { return mData.get(); } inline uint8_t* StealData(); @@ -742,7 +756,7 @@ namespace glTF2 //extension: KHR_materials_pbrSpecularGlossiness Nullable pbrSpecularGlossiness; - //extension: KHR_materials_unlit + //extension: KHR_materials_unlit bool unlit; Material() { SetDefaults(); } @@ -870,56 +884,35 @@ namespace glTF2 struct Animation : public Object { - struct AnimSampler { - std::string id; //!< The ID of this sampler. - std::string input; //!< The ID of a parameter in this animation to use as key-frame input. - std::string interpolation; //!< Type of interpolation algorithm to use between key-frames. - std::string output; //!< The ID of a parameter in this animation to use as key-frame output. + struct Sampler { + Sampler() : interpolation(Interpolation_LINEAR) {} + + Ref input; //!< Accessor reference to the buffer storing the key-frame times. + Ref output; //!< Accessor reference to the buffer storing the key-frame values. + Interpolation interpolation; //!< Type of interpolation algorithm to use between key-frames. }; - struct AnimChannel { - int sampler; //!< The index of a sampler in the containing animation's samplers property. + struct Target { + Target() : path(AnimationPath_TRANSLATION) {} - struct AnimTarget { - Ref node; //!< The node to animate. - std::string path; //!< The name of property of the node to animate ("translation", "rotation", or "scale"). - } target; + Ref node; //!< The node to animate. + AnimationPath path; //!< The property of the node to animate. }; - struct AnimParameters { - Ref TIME; //!< Accessor reference to a buffer storing a array of floating point scalar values. - Ref rotation; //!< Accessor reference to a buffer storing a array of four-component floating-point vectors. - Ref scale; //!< Accessor reference to a buffer storing a array of three-component floating-point vectors. - Ref translation; //!< Accessor reference to a buffer storing a array of three-component floating-point vectors. + struct Channel { + Channel() : sampler(-1) {} + + int sampler; //!< The sampler index containing the animation data. + Target target; //!< The node and property to animate. }; - // AnimChannel Channels[3]; //!< Connect the output values of the key-frame animation to a specific node in the hierarchy. - // AnimParameters Parameters; //!< The samplers that interpolate between the key-frames. - // AnimSampler Samplers[3]; //!< The parameterized inputs representing the key-frame data. - - std::vector Channels; //!< Connect the output values of the key-frame animation to a specific node in the hierarchy. - AnimParameters Parameters; //!< The samplers that interpolate between the key-frames. - std::vector Samplers; //!< The parameterized inputs representing the key-frame data. + std::vector samplers; //!< All the key-frame data for this animation. + std::vector channels; //!< Data to connect nodes to key-frames. Animation() {} void Read(Value& obj, Asset& r); - - //! Get accessor given an animation parameter name. - Ref GetAccessor(std::string name) { - if (name == "TIME") { - return Parameters.TIME; - } else if (name == "rotation") { - return Parameters.rotation; - } else if (name == "scale") { - return Parameters.scale; - } else if (name == "translation") { - return Parameters.translation; - } - return Ref(); - } }; - //! Base class for LazyDict that acts as an interface class LazyDictBase { diff --git a/code/glTF2Asset.inl b/code/glTF2Asset.inl old mode 100644 new mode 100755 index 5a87715ce..ed37937f4 --- a/code/glTF2Asset.inl +++ b/code/glTF2Asset.inl @@ -461,7 +461,7 @@ inline void Buffer::EncodedRegion_SetCurrent(const std::string& pID) throw DeadlyImportError("GLTF: EncodedRegion with ID: \"" + pID + "\" not found."); } -inline +inline bool Buffer::ReplaceData(const size_t pBufferData_Offset, const size_t pBufferData_Count, const uint8_t* pReplace_Data, const size_t pReplace_Count) { @@ -483,8 +483,8 @@ bool Buffer::ReplaceData(const size_t pBufferData_Offset, const size_t pBufferDa return true; } - -inline + +inline bool Buffer::ReplaceData_joint(const size_t pBufferData_Offset, const size_t pBufferData_Count, const uint8_t* pReplace_Data, const size_t pReplace_Count) { if((pBufferData_Count == 0) || (pReplace_Count == 0) || (pReplace_Data == nullptr)) { @@ -688,7 +688,6 @@ T Accessor::Indexer::GetValue(int i) inline Image::Image() : width(0) , height(0) - , mData(0) , mDataLength(0) { @@ -704,7 +703,9 @@ inline void Image::Read(Value& obj, Asset& r) if (ParseDataURI(uristr, uri->GetStringLength(), dataURI)) { mimeType = dataURI.mediaType; if (dataURI.base64) { - mDataLength = Util::DecodeBase64(dataURI.data, dataURI.dataLength, mData); + uint8_t *ptr = nullptr; + mDataLength = Util::DecodeBase64(dataURI.data, dataURI.dataLength, ptr); + mData.reset(ptr); } } else { @@ -717,8 +718,9 @@ inline void Image::Read(Value& obj, Asset& r) this->mDataLength = this->bufferView->byteLength; // maybe this memcpy could be avoided if aiTexture does not delete[] pcData at destruction. - this->mData = new uint8_t [this->mDataLength]; - memcpy(this->mData, buffer->GetPointer() + this->bufferView->byteOffset, this->mDataLength); + + this->mData.reset(new uint8_t[this->mDataLength]); + memcpy(this->mData.get(), buffer->GetPointer() + this->bufferView->byteOffset, this->mDataLength); if (Value* mtype = FindString(obj, "mimeType")) { this->mimeType = mtype->GetString(); @@ -729,10 +731,8 @@ inline void Image::Read(Value& obj, Asset& r) inline uint8_t* Image::StealData() { - uint8_t* data = mData; - mDataLength = 0; - mData = 0; - return data; + mDataLength = 0; + return mData.release(); } inline void Image::SetData(uint8_t* data, size_t length, Asset& r) @@ -747,8 +747,8 @@ inline void Image::SetData(uint8_t* data, size_t length, Asset& r) bufferView->byteOffset = b->AppendData(data, length); } else { // text file: will be stored as a data uri - this->mData = data; - this->mDataLength = length; + this->mData.reset(data); + this->mDataLength = length; } } @@ -1023,7 +1023,12 @@ inline void Mesh::Read(Value& pJSON_Object, Asset& pAsset_Root) inline void Camera::Read(Value& obj, Asset& /*r*/) { - type = MemberOrDefault(obj, "type", Camera::Perspective); + std::string type_string = std::string(MemberOrDefault(obj, "type", "perspective")); + if (type_string == "orthographic") { + type = Camera::Orthographic; + } else { + type = Camera::Perspective; + } const char* subobjId = (type == Camera::Orthographic) ? "orthographic" : "perspective"; @@ -1078,6 +1083,10 @@ inline void Node::Read(Value& obj, Asset& r) if (meshRef) this->meshes.push_back(meshRef); } + if (Value* skin = FindUInt(obj, "skin")) { + this->skin = r.skins.Retrieve(skin->GetUint()); + } + if (Value* camera = FindUInt(obj, "camera")) { this->camera = r.cameras.Retrieve(camera->GetUint()); if (this->camera) @@ -1097,6 +1106,82 @@ inline void Scene::Read(Value& obj, Asset& r) } } +inline void Skin::Read(Value& obj, Asset& r) +{ + if (Value* matrices = FindUInt(obj, "inverseBindMatrices")) { + inverseBindMatrices = r.accessors.Retrieve(matrices->GetUint()); + } + + if (Value* joints = FindArray(obj, "joints")) { + for (unsigned i = 0; i < joints->Size(); ++i) { + if (!(*joints)[i].IsUint()) continue; + Ref node = r.nodes.Retrieve((*joints)[i].GetUint()); + if (node) { + this->jointNames.push_back(node); + } + } + } +} + +inline void Animation::Read(Value& obj, Asset& r) +{ + if (Value* samplers = FindArray(obj, "samplers")) { + for (unsigned i = 0; i < samplers->Size(); ++i) { + Value& sampler = (*samplers)[i]; + + Sampler s; + if (Value* input = FindUInt(sampler, "input")) { + s.input = r.accessors.Retrieve(input->GetUint()); + } + if (Value* output = FindUInt(sampler, "output")) { + s.output = r.accessors.Retrieve(output->GetUint()); + } + s.interpolation = Interpolation_LINEAR; + if (Value* interpolation = FindString(sampler, "interpolation")) { + const std::string interp = interpolation->GetString(); + if (interp == "LINEAR") { + s.interpolation = Interpolation_LINEAR; + } else if (interp == "STEP") { + s.interpolation = Interpolation_STEP; + } else if (interp == "CUBICSPLINE") { + s.interpolation = Interpolation_CUBICSPLINE; + } + } + this->samplers.push_back(s); + } + } + + if (Value* channels = FindArray(obj, "channels")) { + for (unsigned i = 0; i < channels->Size(); ++i) { + Value& channel = (*channels)[i]; + + Channel c; + if (Value* sampler = FindUInt(channel, "sampler")) { + c.sampler = sampler->GetUint(); + } + + if (Value* target = FindObject(channel, "target")) { + if (Value* node = FindUInt(*target, "node")) { + c.target.node = r.nodes.Retrieve(node->GetUint()); + } + if (Value* path = FindString(*target, "path")) { + const std::string p = path->GetString(); + if (p == "translation") { + c.target.path = AnimationPath_TRANSLATION; + } else if (p == "rotation") { + c.target.path = AnimationPath_ROTATION; + } else if (p == "scale") { + c.target.path = AnimationPath_SCALE; + } else if (p == "weights") { + c.target.path = AnimationPath_WEIGHTS; + } + } + } + this->channels.push_back(c); + } + } +} + inline void AssetMetadata::Read(Document& doc) { if (Value* obj = FindObject(doc, "asset")) { @@ -1272,6 +1357,19 @@ inline void Asset::Load(const std::string& pFile, bool isBinary) } } + // Force reading of skins since they're not always directly referenced + if (Value* skinsArray = FindArray(doc, "skins")) { + for (unsigned int i = 0; i < skinsArray->Size(); ++i) { + skins.Retrieve(i); + } + } + + if (Value* animsArray = FindArray(doc, "animations")) { + for (unsigned int i = 0; i < animsArray->Size(); ++i) { + animations.Retrieve(i); + } + } + // Clean up for (size_t i = 0; i < mDicts.size(); ++i) { mDicts[i]->DetachFromDocument(); diff --git a/code/glTF2AssetWriter.inl b/code/glTF2AssetWriter.inl index 0579dfdac..50d855aaa 100644 --- a/code/glTF2AssetWriter.inl +++ b/code/glTF2AssetWriter.inl @@ -113,10 +113,10 @@ namespace glTF2 { /****************** Channels *******************/ Value channels; channels.SetArray(); - channels.Reserve(unsigned(a.Channels.size()), w.mAl); + channels.Reserve(unsigned(a.channels.size()), w.mAl); - for (size_t i = 0; i < unsigned(a.Channels.size()); ++i) { - Animation::AnimChannel& c = a.Channels[i]; + for (size_t i = 0; i < unsigned(a.channels.size()); ++i) { + Animation::Channel& c = a.channels[i]; Value valChannel; valChannel.SetObject(); { @@ -126,7 +126,20 @@ namespace glTF2 { valTarget.SetObject(); { valTarget.AddMember("node", c.target.node->index, w.mAl); - valTarget.AddMember("path", c.target.path, w.mAl); + switch (c.target.path) { + case AnimationPath_TRANSLATION: + valTarget.AddMember("path", "translation", w.mAl); + break; + case AnimationPath_ROTATION: + valTarget.AddMember("path", "rotation", w.mAl); + break; + case AnimationPath_SCALE: + valTarget.AddMember("path", "scale", w.mAl); + break; + case AnimationPath_WEIGHTS: + valTarget.AddMember("path", "weights", w.mAl); + break; + } } valChannel.AddMember("target", valTarget, w.mAl); } @@ -138,16 +151,24 @@ namespace glTF2 { Value valSamplers; valSamplers.SetArray(); - for (size_t i = 0; i < unsigned(a.Samplers.size()); ++i) { - Animation::AnimSampler& s = a.Samplers[i]; + for (size_t i = 0; i < unsigned(a.samplers.size()); ++i) { + Animation::Sampler& s = a.samplers[i]; Value valSampler; valSampler.SetObject(); { - Ref inputAccessor = a.GetAccessor(s.input); - Ref outputAccessor = a.GetAccessor(s.output); - valSampler.AddMember("input", inputAccessor->index, w.mAl); - valSampler.AddMember("interpolation", s.interpolation, w.mAl); - valSampler.AddMember("output", outputAccessor->index, w.mAl); + valSampler.AddMember("input", s.input->index, w.mAl); + switch (s.interpolation) { + case Interpolation_LINEAR: + valSampler.AddMember("path", "LINEAR", w.mAl); + break; + case Interpolation_STEP: + valSampler.AddMember("path", "STEP", w.mAl); + break; + case Interpolation_CUBICSPLINE: + valSampler.AddMember("path", "CUBICSPLINE", w.mAl); + break; + } + valSampler.AddMember("output", s.output->index, w.mAl); } valSamplers.PushBack(valSampler, w.mAl); } diff --git a/code/glTF2Exporter.cpp b/code/glTF2Exporter.cpp index 0a7f5c415..40db27264 100644 --- a/code/glTF2Exporter.cpp +++ b/code/glTF2Exporter.cpp @@ -641,7 +641,7 @@ void ExportSkin(Asset& mAsset, const aiMesh* aimesh, Ref& meshRef, RefcomponentType); size_t s_bytesLen = bytesLen * s_bytesPerComp / bytesPerComp; Ref buf = vertexJointAccessor->bufferView->buffer; - uint8_t* arrys = new uint8_t[s_bytesLen]; + uint8_t* arrys = new uint8_t[bytesLen]; unsigned int i = 0; for ( unsigned int j = 0; j <= bytesLen; j += bytesPerComp ){ size_t len_p = offset + j; @@ -652,8 +652,9 @@ void ExportSkin(Asset& mAsset, const aiMesh* aimesh, Ref& meshRef, RefReplaceData_joint(offset, bytesLen, arrys, s_bytesLen); + buf->ReplaceData_joint(offset, bytesLen, arrys, bytesLen); vertexJointAccessor->componentType = ComponentType_UNSIGNED_SHORT; + vertexJointAccessor->bufferView->byteLength = s_bytesLen; p.attributes.joint.push_back( vertexJointAccessor ); } @@ -960,92 +961,89 @@ void glTF2Exporter::ExportMetadata() asset.generator = buffer; } -inline void ExtractAnimationData(Asset& mAsset, std::string& animId, Ref& animRef, Ref& buffer, const aiNodeAnim* nodeChannel, float ticksPerSecond) +inline Ref GetSamplerInputRef(Asset& asset, std::string& animId, Ref& buffer, std::vector& times) { - // Loop over the data and check to see if it exactly matches an existing buffer. - // If yes, then reference the existing corresponding accessor. - // Otherwise, add to the buffer and create a new accessor. + return ExportData(asset, animId, buffer, times.size(), ×[0], AttribType::SCALAR, AttribType::SCALAR, ComponentType_FLOAT); +} - size_t counts[3] = { - nodeChannel->mNumPositionKeys, - nodeChannel->mNumScalingKeys, - nodeChannel->mNumRotationKeys, - }; - size_t numKeyframes = 1; - for (int i = 0; i < 3; ++i) { - if (counts[i] > numKeyframes) { - numKeyframes = counts[i]; - } +inline void ExtractTranslationSampler(Asset& asset, std::string& animId, Ref& buffer, const aiNodeAnim* nodeChannel, float ticksPerSecond, Animation::Sampler& sampler) +{ + const unsigned int numKeyframes = nodeChannel->mNumPositionKeys; + if (numKeyframes == 0) { + return; } - //------------------------------------------------------- - // Extract TIME parameter data. - // Check if the timeStamps are the same for mPositionKeys, mRotationKeys, and mScalingKeys. - if(nodeChannel->mNumPositionKeys > 0) { - typedef float TimeType; - std::vector timeData; - timeData.resize(numKeyframes); - for (size_t i = 0; i < numKeyframes; ++i) { - size_t frameIndex = i * nodeChannel->mNumPositionKeys / numKeyframes; - // mTime is measured in ticks, but GLTF time is measured in seconds, so convert. - // Check if we have to cast type here. e.g. uint16_t() - timeData[i] = static_cast(nodeChannel->mPositionKeys[frameIndex].mTime / ticksPerSecond); - } - - Ref timeAccessor = ExportData(mAsset, animId, buffer, static_cast(numKeyframes), &timeData[0], AttribType::SCALAR, AttribType::SCALAR, ComponentType_FLOAT); - if (timeAccessor) animRef->Parameters.TIME = timeAccessor; + std::vector times(numKeyframes); + std::vector values(numKeyframes * 3); + for (unsigned int i = 0; i < numKeyframes; ++i) { + const aiVectorKey& key = nodeChannel->mPositionKeys[i]; + // mTime is measured in ticks, but GLTF time is measured in seconds, so convert. + times[i] = static_cast(key.mTime / ticksPerSecond); + values[(i * 3) + 0] = key.mValue.x; + values[(i * 3) + 1] = key.mValue.y; + values[(i * 3) + 2] = key.mValue.z; } - //------------------------------------------------------- - // Extract translation parameter data - if(nodeChannel->mNumPositionKeys > 0) { - C_STRUCT aiVector3D* translationData = new aiVector3D[numKeyframes]; - for (size_t i = 0; i < numKeyframes; ++i) { - size_t frameIndex = i * nodeChannel->mNumPositionKeys / numKeyframes; - translationData[i] = nodeChannel->mPositionKeys[frameIndex].mValue; - } + sampler.input = GetSamplerInputRef(asset, animId, buffer, times); + sampler.output = ExportData(asset, animId, buffer, numKeyframes, &values[0], AttribType::VEC3, AttribType::VEC3, ComponentType_FLOAT); + sampler.interpolation = Interpolation_LINEAR; +} - Ref tranAccessor = ExportData(mAsset, animId, buffer, static_cast(numKeyframes), translationData, AttribType::VEC3, AttribType::VEC3, ComponentType_FLOAT); - if ( tranAccessor ) { - animRef->Parameters.translation = tranAccessor; - } - delete[] translationData; +inline void ExtractScaleSampler(Asset& asset, std::string& animId, Ref& buffer, const aiNodeAnim* nodeChannel, float ticksPerSecond, Animation::Sampler& sampler) +{ + const unsigned int numKeyframes = nodeChannel->mNumScalingKeys; + if (numKeyframes == 0) { + return; } - //------------------------------------------------------- - // Extract scale parameter data - if(nodeChannel->mNumScalingKeys > 0) { - C_STRUCT aiVector3D* scaleData = new aiVector3D[numKeyframes]; - for (size_t i = 0; i < numKeyframes; ++i) { - size_t frameIndex = i * nodeChannel->mNumScalingKeys / numKeyframes; - scaleData[i] = nodeChannel->mScalingKeys[frameIndex].mValue; - } - - Ref scaleAccessor = ExportData(mAsset, animId, buffer, static_cast(numKeyframes), scaleData, AttribType::VEC3, AttribType::VEC3, ComponentType_FLOAT); - if ( scaleAccessor ) { - animRef->Parameters.scale = scaleAccessor; - } - delete[] scaleData; + std::vector times(numKeyframes); + std::vector values(numKeyframes * 3); + for (unsigned int i = 0; i < numKeyframes; ++i) { + const aiVectorKey& key = nodeChannel->mScalingKeys[i]; + // mTime is measured in ticks, but GLTF time is measured in seconds, so convert. + times[i] = static_cast(key.mTime / ticksPerSecond); + values[(i * 3) + 0] = key.mValue.x; + values[(i * 3) + 1] = key.mValue.y; + values[(i * 3) + 2] = key.mValue.z; } - //------------------------------------------------------- - // Extract rotation parameter data - if(nodeChannel->mNumRotationKeys > 0) { - vec4* rotationData = new vec4[numKeyframes]; - for (size_t i = 0; i < numKeyframes; ++i) { - size_t frameIndex = i * nodeChannel->mNumRotationKeys / numKeyframes; - rotationData[i][0] = nodeChannel->mRotationKeys[frameIndex].mValue.x; - rotationData[i][1] = nodeChannel->mRotationKeys[frameIndex].mValue.y; - rotationData[i][2] = nodeChannel->mRotationKeys[frameIndex].mValue.z; - rotationData[i][3] = nodeChannel->mRotationKeys[frameIndex].mValue.w; - } + sampler.input = GetSamplerInputRef(asset, animId, buffer, times); + sampler.output = ExportData(asset, animId, buffer, numKeyframes, &values[0], AttribType::VEC3, AttribType::VEC3, ComponentType_FLOAT); + sampler.interpolation = Interpolation_LINEAR; +} - Ref rotAccessor = ExportData(mAsset, animId, buffer, static_cast(numKeyframes), rotationData, AttribType::VEC4, AttribType::VEC4, ComponentType_FLOAT); - if ( rotAccessor ) { - animRef->Parameters.rotation = rotAccessor; - } - delete[] rotationData; +inline void ExtractRotationSampler(Asset& asset, std::string& animId, Ref& buffer, const aiNodeAnim* nodeChannel, float ticksPerSecond, Animation::Sampler& sampler) +{ + const unsigned int numKeyframes = nodeChannel->mNumRotationKeys; + if (numKeyframes == 0) { + return; } + + std::vector times(numKeyframes); + std::vector values(numKeyframes * 4); + for (unsigned int i = 0; i < numKeyframes; ++i) { + const aiQuatKey& key = nodeChannel->mRotationKeys[i]; + // mTime is measured in ticks, but GLTF time is measured in seconds, so convert. + times[i] = static_cast(key.mTime / ticksPerSecond); + values[(i * 4) + 0] = key.mValue.x; + values[(i * 4) + 1] = key.mValue.y; + values[(i * 4) + 2] = key.mValue.z; + values[(i * 4) + 3] = key.mValue.w; + } + + sampler.input = GetSamplerInputRef(asset, animId, buffer, times); + sampler.output = ExportData(asset, animId, buffer, numKeyframes, &values[0], AttribType::VEC4, AttribType::VEC4, ComponentType_FLOAT); + sampler.interpolation = Interpolation_LINEAR; +} + +static void AddSampler(Ref& animRef, Ref& nodeRef, Animation::Sampler& sampler, AnimationPath path) +{ + Animation::Channel channel; + channel.sampler = static_cast(animRef->samplers.size()); + channel.target.path = path; + channel.target.node = nodeRef; + animRef->channels.push_back(channel); + animRef->samplers.push_back(sampler); } void glTF2Exporter::ExportAnimations() @@ -1054,6 +1052,7 @@ void glTF2Exporter::ExportAnimations() for (unsigned int i = 0; i < mScene->mNumAnimations; ++i) { const aiAnimation* anim = mScene->mAnimations[i]; + const float ticksPerSecond = static_cast(anim->mTicksPerSecond); std::string nameAnim = "anim"; if (anim->mName.length > 0) { @@ -1069,46 +1068,19 @@ void glTF2Exporter::ExportAnimations() name = mAsset->FindUniqueID(name, "animation"); Ref animRef = mAsset->animations.Create(name); - // Parameters - ExtractAnimationData(*mAsset, name, animRef, bufferRef, nodeChannel, static_cast(anim->mTicksPerSecond)); + Ref animNode = mAsset->nodes.Get(nodeChannel->mNodeName.C_Str()); - for (unsigned int j = 0; j < 3; ++j) { - std::string channelType; - int channelSize; - switch (j) { - case 0: - channelType = "rotation"; - channelSize = nodeChannel->mNumRotationKeys; - break; - case 1: - channelType = "scale"; - channelSize = nodeChannel->mNumScalingKeys; - break; - case 2: - channelType = "translation"; - channelSize = nodeChannel->mNumPositionKeys; - break; - } + Animation::Sampler translationSampler; + ExtractTranslationSampler(*mAsset, name, bufferRef, nodeChannel, ticksPerSecond, translationSampler); + AddSampler(animRef, animNode, translationSampler, AnimationPath_TRANSLATION); - if (channelSize < 1) { continue; } - - Animation::AnimChannel tmpAnimChannel; - Animation::AnimSampler tmpAnimSampler; - - tmpAnimChannel.sampler = static_cast(animRef->Samplers.size()); - tmpAnimChannel.target.path = channelType; - tmpAnimSampler.output = channelType; - tmpAnimSampler.id = name + "_" + channelType; - - tmpAnimChannel.target.node = mAsset->nodes.Get(nodeChannel->mNodeName.C_Str()); - - tmpAnimSampler.input = "TIME"; - tmpAnimSampler.interpolation = "LINEAR"; - - animRef->Channels.push_back(tmpAnimChannel); - animRef->Samplers.push_back(tmpAnimSampler); - } + Animation::Sampler rotationSampler; + ExtractRotationSampler(*mAsset, name, bufferRef, nodeChannel, ticksPerSecond, rotationSampler); + AddSampler(animRef, animNode, rotationSampler, AnimationPath_ROTATION); + Animation::Sampler scaleSampler; + ExtractScaleSampler(*mAsset, name, bufferRef, nodeChannel, ticksPerSecond, scaleSampler); + AddSampler(animRef, animNode, scaleSampler, AnimationPath_SCALE); } // Assimp documentation staes this is not used (not implemented) diff --git a/code/glTF2Importer.cpp b/code/glTF2Importer.cpp index 8581d25fe..f6a664e5e 100755 --- a/code/glTF2Importer.cpp +++ b/code/glTF2Importer.cpp @@ -54,6 +54,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include +#include #include "MakeVerboseFormat.h" @@ -272,7 +273,8 @@ static aiMaterial* ImportMaterial(std::vector& embeddedTexIdxs, Asset& r, M aimat->AddProperty(&mat.pbrMetallicRoughness.metallicFactor, 1, AI_MATKEY_GLTF_PBRMETALLICROUGHNESS_METALLIC_FACTOR); aimat->AddProperty(&mat.pbrMetallicRoughness.roughnessFactor, 1, AI_MATKEY_GLTF_PBRMETALLICROUGHNESS_ROUGHNESS_FACTOR); - float roughnessAsShininess = (1 - mat.pbrMetallicRoughness.roughnessFactor) * 1000; + float roughnessAsShininess = 1 - mat.pbrMetallicRoughness.roughnessFactor; + roughnessAsShininess *= roughnessAsShininess * 1000; aimat->AddProperty(&roughnessAsShininess, 1, AI_MATKEY_SHININESS); SetMaterialTextureProperty(embeddedTexIdxs, r, mat.normalTexture, aimat, aiTextureType_NORMALS); @@ -454,7 +456,7 @@ void glTF2Importer::ImportMeshes(glTF2::Asset& r) std::vector& targets = prim.targets; if (targets.size() > 0) { - aim->mNumAnimMeshes = targets.size(); + aim->mNumAnimMeshes = (unsigned int)targets.size(); aim->mAnimMeshes = new aiAnimMesh*[aim->mNumAnimMeshes]; for (size_t i = 0; i < targets.size(); i++) { aim->mAnimMeshes[i] = aiCreateAnimMesh(aim); @@ -579,7 +581,7 @@ void glTF2Importer::ImportMeshes(glTF2::Asset& r) } else { // no indices provided so directly generate from counts - // use the already determined count as it includes checks + // use the already determined count as it includes checks unsigned int count = aim->mNumVertices; switch (prim.mode) { @@ -701,26 +703,7 @@ void glTF2Importer::ImportCameras(glTF2::Asset& r) } } -aiNode* ImportNode(aiScene* pScene, glTF2::Asset& r, std::vector& meshOffsets, glTF2::Ref& ptr) -{ - Node& node = *ptr; - - std::string nameOrId = node.name.empty() ? node.id : node.name; - - aiNode* ainode = new aiNode(nameOrId); - - if (!node.children.empty()) { - ainode->mNumChildren = unsigned(node.children.size()); - ainode->mChildren = new aiNode*[ainode->mNumChildren]; - - for (unsigned int i = 0; i < ainode->mNumChildren; ++i) { - aiNode* child = ImportNode(pScene, r, meshOffsets, node.children[i]); - child->mParent = ainode; - ainode->mChildren[i] = child; - } - } - - aiMatrix4x4& matrix = ainode->mTransformation; +static void GetNodeTransform(aiMatrix4x4& matrix, const glTF2::Node& node) { if (node.matrix.isPresent) { CopyValue(node.matrix.value, matrix); } @@ -747,24 +730,121 @@ aiNode* ImportNode(aiScene* pScene, glTF2::Asset& r, std::vector& matrix = matrix * s; } } +} + +static void BuildVertexWeightMapping(Mesh::Primitive& primitive, std::vector>& map) +{ + Mesh::Primitive::Attributes& attr = primitive.attributes; + if (attr.weight.empty() || attr.joint.empty()) { + return; + } + if (attr.weight[0]->count != attr.joint[0]->count) { + return; + } + + const int num_vertices = attr.weight[0]->count; + + struct Weights { float values[4]; }; + Weights* weights = nullptr; + attr.weight[0]->ExtractData(weights); + + struct Indices8 { uint8_t values[4]; }; + struct Indices16 { uint16_t values[4]; }; + Indices8* indices8 = nullptr; + Indices16* indices16 = nullptr; + if (attr.joint[0]->GetElementSize() == 4) { + attr.joint[0]->ExtractData(indices8); + }else { + attr.joint[0]->ExtractData(indices16); + } + + for (int i = 0; i < num_vertices; ++i) { + for (int j = 0; j < 4; ++j) { + const unsigned int bone = (indices8!=nullptr) ? indices8[i].values[j] : indices16[i].values[j]; + const float weight = weights[i].values[j]; + if (weight > 0 && bone < map.size()) { + map[bone].reserve(8); + map[bone].emplace_back(i, weight); + } + } + } + + delete[] weights; + delete[] indices8; + delete[] indices16; +} + +aiNode* ImportNode(aiScene* pScene, glTF2::Asset& r, std::vector& meshOffsets, glTF2::Ref& ptr) +{ + Node& node = *ptr; + + std::string nameOrId = node.name.empty() ? node.id : node.name; + + aiNode* ainode = new aiNode(nameOrId); + + if (!node.children.empty()) { + ainode->mNumChildren = unsigned(node.children.size()); + ainode->mChildren = new aiNode*[ainode->mNumChildren]; + + for (unsigned int i = 0; i < ainode->mNumChildren; ++i) { + aiNode* child = ImportNode(pScene, r, meshOffsets, node.children[i]); + child->mParent = ainode; + ainode->mChildren[i] = child; + } + } + + GetNodeTransform(ainode->mTransformation, node); if (!node.meshes.empty()) { - int count = 0; - for (size_t i = 0; i < node.meshes.size(); ++i) { - int idx = node.meshes[i].GetIndex(); - count += meshOffsets[idx + 1] - meshOffsets[idx]; - } - ainode->mNumMeshes = count; + // GLTF files contain at most 1 mesh per node. + assert(node.meshes.size() == 1); + int mesh_idx = node.meshes[0].GetIndex(); + int count = meshOffsets[mesh_idx + 1] - meshOffsets[mesh_idx]; + ainode->mNumMeshes = count; ainode->mMeshes = new unsigned int[count]; - int k = 0; - for (size_t i = 0; i < node.meshes.size(); ++i) { - int idx = node.meshes[i].GetIndex(); - for (unsigned int j = meshOffsets[idx]; j < meshOffsets[idx + 1]; ++j, ++k) { - ainode->mMeshes[k] = j; + if (node.skin) { + for (int primitiveNo = 0; primitiveNo < count; ++primitiveNo) { + aiMesh* mesh = pScene->mMeshes[meshOffsets[mesh_idx]+primitiveNo]; + mesh->mNumBones = node.skin->jointNames.size(); + mesh->mBones = new aiBone*[mesh->mNumBones]; + + // GLTF and Assimp choose to store bone weights differently. + // GLTF has each vertex specify which bones influence the vertex. + // Assimp has each bone specify which vertices it has influence over. + // To convert this data, we first read over the vertex data and pull + // out the bone-to-vertex mapping. Then, when creating the aiBones, + // we copy the bone-to-vertex mapping into the bone. This is unfortunate + // both because it's somewhat slow and because, for many applications, + // we then need to reconvert the data back into the vertex-to-bone + // mapping which makes things doubly-slow. + std::vector> weighting(mesh->mNumBones); + BuildVertexWeightMapping(node.meshes[0]->primitives[primitiveNo], weighting); + + for (size_t i = 0; i < mesh->mNumBones; ++i) { + aiBone* bone = new aiBone(); + + Ref joint = node.skin->jointNames[i]; + bone->mName = joint->name; + GetNodeTransform(bone->mOffsetMatrix, *joint); + + std::vector& weights = weighting[i]; + + bone->mNumWeights = weights.size(); + if (bone->mNumWeights > 0) { + bone->mWeights = new aiVertexWeight[bone->mNumWeights]; + memcpy(bone->mWeights, weights.data(), bone->mNumWeights * sizeof(aiVertexWeight)); + } + mesh->mBones[i] = bone; + } } } + + int k = 0; + for (unsigned int j = meshOffsets[mesh_idx]; j < meshOffsets[mesh_idx + 1]; ++j, ++k) { + ainode->mMeshes[k] = j; + } } if (node.camera) { @@ -801,6 +881,177 @@ void glTF2Importer::ImportNodes(glTF2::Asset& r) //} } +struct AnimationSamplers { + AnimationSamplers() : translation(nullptr), rotation(nullptr), scale(nullptr) {} + + Animation::Sampler* translation; + Animation::Sampler* rotation; + Animation::Sampler* scale; +}; + +aiNodeAnim* CreateNodeAnim(glTF2::Asset& r, Node& node, AnimationSamplers& samplers) +{ + aiNodeAnim* anim = new aiNodeAnim(); + anim->mNodeName = node.name; + + static const float kMillisecondsFromSeconds = 1000.f; + + if (samplers.translation) { + float* times = nullptr; + samplers.translation->input->ExtractData(times); + aiVector3D* values = nullptr; + samplers.translation->output->ExtractData(values); + anim->mNumPositionKeys = samplers.translation->input->count; + anim->mPositionKeys = new aiVectorKey[anim->mNumPositionKeys]; + for (unsigned int i = 0; i < anim->mNumPositionKeys; ++i) { + anim->mPositionKeys[i].mTime = times[i] * kMillisecondsFromSeconds; + anim->mPositionKeys[i].mValue = values[i]; + } + delete[] times; + delete[] values; + } else if (node.translation.isPresent) { + anim->mNumPositionKeys = 1; + anim->mPositionKeys = new aiVectorKey(); + anim->mPositionKeys->mTime = 0.f; + anim->mPositionKeys->mValue.x = node.translation.value[0]; + anim->mPositionKeys->mValue.y = node.translation.value[1]; + anim->mPositionKeys->mValue.z = node.translation.value[2]; + } + + if (samplers.rotation) { + float* times = nullptr; + samplers.rotation->input->ExtractData(times); + aiQuaternion* values = nullptr; + samplers.rotation->output->ExtractData(values); + anim->mNumRotationKeys = samplers.rotation->input->count; + anim->mRotationKeys = new aiQuatKey[anim->mNumRotationKeys]; + for (unsigned int i = 0; i < anim->mNumRotationKeys; ++i) { + anim->mRotationKeys[i].mTime = times[i] * kMillisecondsFromSeconds; + anim->mRotationKeys[i].mValue.x = values[i].w; + anim->mRotationKeys[i].mValue.y = values[i].x; + anim->mRotationKeys[i].mValue.z = values[i].y; + anim->mRotationKeys[i].mValue.w = values[i].z; + } + delete[] times; + delete[] values; + } else if (node.rotation.isPresent) { + anim->mNumRotationKeys = 1; + anim->mRotationKeys = new aiQuatKey(); + anim->mRotationKeys->mTime = 0.f; + anim->mRotationKeys->mValue.x = node.rotation.value[0]; + anim->mRotationKeys->mValue.y = node.rotation.value[1]; + anim->mRotationKeys->mValue.z = node.rotation.value[2]; + anim->mRotationKeys->mValue.w = node.rotation.value[3]; + } + + if (samplers.scale) { + float* times = nullptr; + samplers.scale->input->ExtractData(times); + aiVector3D* values = nullptr; + samplers.scale->output->ExtractData(values); + anim->mNumScalingKeys = samplers.scale->input->count; + anim->mScalingKeys = new aiVectorKey[anim->mNumScalingKeys]; + for (unsigned int i = 0; i < anim->mNumScalingKeys; ++i) { + anim->mScalingKeys[i].mTime = times[i] * kMillisecondsFromSeconds; + anim->mScalingKeys[i].mValue = values[i]; + } + delete[] times; + delete[] values; + } else if (node.scale.isPresent) { + anim->mNumScalingKeys = 1; + anim->mScalingKeys = new aiVectorKey(); + anim->mScalingKeys->mTime = 0.f; + anim->mScalingKeys->mValue.x = node.scale.value[0]; + anim->mScalingKeys->mValue.y = node.scale.value[1]; + anim->mScalingKeys->mValue.z = node.scale.value[2]; + } + + return anim; +} + +std::unordered_map GatherSamplers(Animation& anim) +{ + std::unordered_map samplers; + for (unsigned int c = 0; c < anim.channels.size(); ++c) { + Animation::Channel& channel = anim.channels[c]; + if (channel.sampler >= static_cast(anim.samplers.size())) { + continue; + } + + const unsigned int node_index = channel.target.node.GetIndex(); + + AnimationSamplers& sampler = samplers[node_index]; + if (channel.target.path == AnimationPath_TRANSLATION) { + sampler.translation = &anim.samplers[channel.sampler]; + } else if (channel.target.path == AnimationPath_ROTATION) { + sampler.rotation = &anim.samplers[channel.sampler]; + } else if (channel.target.path == AnimationPath_SCALE) { + sampler.scale = &anim.samplers[channel.sampler]; + } + } + + return samplers; +} + +void glTF2Importer::ImportAnimations(glTF2::Asset& r) +{ + if (!r.scene) return; + + mScene->mNumAnimations = r.animations.Size(); + if (mScene->mNumAnimations == 0) { + return; + } + + mScene->mAnimations = new aiAnimation*[mScene->mNumAnimations]; + for (unsigned int i = 0; i < r.animations.Size(); ++i) { + Animation& anim = r.animations[i]; + + aiAnimation* ai_anim = new aiAnimation(); + ai_anim->mName = anim.name; + ai_anim->mDuration = 0; + ai_anim->mTicksPerSecond = 0; + + std::unordered_map samplers = GatherSamplers(anim); + + ai_anim->mNumChannels = r.skins[0].jointNames.size(); + if (ai_anim->mNumChannels > 0) { + ai_anim->mChannels = new aiNodeAnim*[ai_anim->mNumChannels]; + int j = 0; + for (auto& iter : r.skins[0].jointNames) { + ai_anim->mChannels[j] = CreateNodeAnim(r, *iter, samplers[iter.GetIndex()]); + ++j; + } + } + + // Use the latest keyframe for the duration of the animation + double maxDuration = 0; + for (unsigned int j = 0; j < ai_anim->mNumChannels; ++j) { + auto chan = ai_anim->mChannels[j]; + if (chan->mNumPositionKeys) { + auto lastPosKey = chan->mPositionKeys[chan->mNumPositionKeys - 1]; + if (lastPosKey.mTime > maxDuration) { + maxDuration = lastPosKey.mTime; + } + } + if (chan->mNumRotationKeys) { + auto lastRotKey = chan->mRotationKeys[chan->mNumRotationKeys - 1]; + if (lastRotKey.mTime > maxDuration) { + maxDuration = lastRotKey.mTime; + } + } + if (chan->mNumScalingKeys) { + auto lastScaleKey = chan->mScalingKeys[chan->mNumScalingKeys - 1]; + if (lastScaleKey.mTime > maxDuration) { + maxDuration = lastScaleKey.mTime; + } + } + } + ai_anim->mDuration = maxDuration; + + mScene->mAnimations[i] = ai_anim; + } +} + void glTF2Importer::ImportEmbeddedTextures(glTF2::Asset& r) { embeddedTexIdxs.resize(r.images.Size(), -1); @@ -818,7 +1069,7 @@ void glTF2Importer::ImportEmbeddedTextures(glTF2::Asset& r) // Add the embedded textures for (size_t i = 0; i < r.images.Size(); ++i) { - Image img = r.images[i]; + Image &img = r.images[i]; if (!img.HasData()) continue; int idx = mScene->mNumTextures++; @@ -868,6 +1119,8 @@ void glTF2Importer::InternReadFile(const std::string& pFile, aiScene* pScene, IO ImportNodes(asset); + ImportAnimations(asset); + if (pScene->mNumMeshes == 0) { pScene->mFlags |= AI_SCENE_FLAGS_INCOMPLETE; } diff --git a/code/glTF2Importer.h b/code/glTF2Importer.h index 31d935da4..7414e2f95 100644 --- a/code/glTF2Importer.h +++ b/code/glTF2Importer.h @@ -83,7 +83,7 @@ private: void ImportCameras(glTF2::Asset& a); void ImportLights(glTF2::Asset& a); void ImportNodes(glTF2::Asset& a); - + void ImportAnimations(glTF2::Asset& a); }; } // Namespace assimp diff --git a/code/glTFAsset.h b/code/glTFAsset.h index bc79f72ec..b04692901 100644 --- a/code/glTFAsset.h +++ b/code/glTFAsset.h @@ -170,7 +170,7 @@ namespace glTF #define AI_GLB_MAGIC_NUMBER "glTF" #ifdef ASSIMP_API - #include "./../include/assimp/Compiler/pushpack1.h" + #include #endif //! For the KHR_binary_glTF extension (binary .glb file) @@ -185,7 +185,7 @@ namespace glTF } PACK_STRUCT; #ifdef ASSIMP_API - #include "./../include/assimp/Compiler/poppack1.h" + #include #endif diff --git a/contrib/irrXML/irrArray.h b/contrib/irrXML/irrArray.h index 40c822590..51302680e 100644 --- a/contrib/irrXML/irrArray.h +++ b/contrib/irrXML/irrArray.h @@ -21,8 +21,7 @@ class array { public: - - array() + array() : data(0), allocated(0), used(0), free_when_destroyed(true), is_sorted(true) { diff --git a/contrib/openddlparser/include/openddlparser/OpenDDLParserUtils.h b/contrib/openddlparser/include/openddlparser/OpenDDLParserUtils.h index 64897436e..f0762ac67 100644 --- a/contrib/openddlparser/include/openddlparser/OpenDDLParserUtils.h +++ b/contrib/openddlparser/include/openddlparser/OpenDDLParserUtils.h @@ -59,32 +59,10 @@ bool isSeparator( T in ) { return false; } -static const unsigned char chartype_table[ 256 ] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0-15 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16-31 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 32-47 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, // 48-63 - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 64-79 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 80-95 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 96-111 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 112-127 - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // > 127 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -}; - template inline bool isNumeric( const T in ) { - return ( chartype_table[ static_cast( in ) ] == 1 ); + return ( in >= '0' && in <= '9' ); } template diff --git a/doc/dox.h b/doc/dox.h index af9eeb609..d63c8a806 100644 --- a/doc/dox.h +++ b/doc/dox.h @@ -1486,9 +1486,8 @@ Just copy'n'paste the template from Appendix A and adapt it for your needs. with DefaultLogger::get()->[error, warn, debug, info].
  • -Make sure that your loader compiles against all build configurations on all supported platforms. This includes -noboost! To avoid problems, -see the boost section on this page for a list of all 'allowed' boost classes (again, this grew historically when we had to accept that boost -is not THAT widely spread that one could rely on it being available everywhere). +Make sure that your loader compiles against all build configurations on all supported platforms. You can use our CI-build to check several platforms +like Windows and Linux ( 32 bit and 64 bit ).
  • Provide some _free_ test models in <root>/test/models/<FormatName>/ and credit their authors. @@ -1567,22 +1566,6 @@ NewMaterial->AddProperty(&aiString(MaterialName.c_str()), AI_MATKEY_NAME);//Mate NewMaterial->AddProperty(&aiString(Texturename.c_str()), AI_MATKEY_TEXTURE(aiTextureType_DIFFUSE, 0));//again, Texturename is a std::string @endcode -@section boost Boost - -The boost whitelist: -
      -
    • boost.scoped_ptr
    • -
    • boost.scoped_array
    • -
    • boost.format
    • -
    • boost.random
    • -
    • boost.common_factor
    • -
    • boost.foreach
    • -
    • boost.tuple
    • -
    - -(if you happen to need something else, i.e. boost::thread, make this an optional feature. -assimp_BUILD_BOOST_WORKAROUND is defined for -noboost builds) - @section appa Appendix A - Template for BaseImporter's abstract methods @code diff --git a/include/assimp/BaseImporter.h b/include/assimp/BaseImporter.h index 7546f9912..b218d06ff 100644 --- a/include/assimp/BaseImporter.h +++ b/include/assimp/BaseImporter.h @@ -77,19 +77,17 @@ class IOStream; * imports the given file. ReadFile is not overridable, it just calls * InternReadFile() and catches any ImportErrorException that might occur. */ -class ASSIMP_API BaseImporter -{ +class ASSIMP_API BaseImporter { friend class Importer; public: /** Constructor to be privately used by #Importer */ - BaseImporter(); + BaseImporter() AI_NO_EXCEPT; /** Destructor, private as well */ virtual ~BaseImporter(); -public: // ------------------------------------------------------------------- /** Returns whether the class can handle the format of the given file. * diff --git a/include/assimp/ByteSwapper.h b/include/assimp/ByteSwapper.h index 136944f24..322a242de 100644 --- a/include/assimp/ByteSwapper.h +++ b/include/assimp/ByteSwapper.h @@ -60,9 +60,8 @@ namespace Assimp { * This is required to read big-endian model formats on little-endian machines, * and vice versa. Direct use of this class is DEPRECATED. Use #StreamReader instead. */ // -------------------------------------------------------------------------------------- -class ByteSwap -{ - ByteSwap() {} +class ByteSwap { + ByteSwap() AI_NO_EXCEPT {} public: diff --git a/include/assimp/Compiler/pushpack1.h b/include/assimp/Compiler/pushpack1.h index 94ee1e474..4c9fbb857 100644 --- a/include/assimp/Compiler/pushpack1.h +++ b/include/assimp/Compiler/pushpack1.h @@ -25,7 +25,7 @@ #if defined(_MSC_VER) || defined(__BORLANDC__) || defined (__BCPLUSPLUS__) # pragma pack(push,1) # define PACK_STRUCT -#elif defined( __GNUC__ ) +#elif defined( __GNUC__ ) || defined(__clang__) # if !defined(HOST_MINGW) # define PACK_STRUCT __attribute__((__packed__)) # else diff --git a/include/assimp/DefaultIOStream.h b/include/assimp/DefaultIOStream.h index fcd6061b3..e0e010ecb 100644 --- a/include/assimp/DefaultIOStream.h +++ b/include/assimp/DefaultIOStream.h @@ -69,7 +69,7 @@ class ASSIMP_API DefaultIOStream : public IOStream #endif // __ANDROID__ protected: - DefaultIOStream(); + DefaultIOStream() AI_NO_EXCEPT; DefaultIOStream(FILE* pFile, const std::string &strFilename); public: @@ -111,27 +111,25 @@ private: FILE* mFile; // Filename std::string mFilename; - // Cached file size mutable size_t mCachedSize; }; // ---------------------------------------------------------------------------------- -inline DefaultIOStream::DefaultIOStream () : - mFile (NULL), - mFilename (""), - mCachedSize(SIZE_MAX) -{ +inline +DefaultIOStream::DefaultIOStream() AI_NO_EXCEPT +: mFile(nullptr) +, mFilename("") +, mCachedSize(SIZE_MAX) { // empty } // ---------------------------------------------------------------------------------- -inline DefaultIOStream::DefaultIOStream (FILE* pFile, - const std::string &strFilename) : - mFile(pFile), - mFilename(strFilename), - mCachedSize(SIZE_MAX) -{ +inline +DefaultIOStream::DefaultIOStream (FILE* pFile, const std::string &strFilename) +: mFile(pFile) +, mFilename(strFilename) +, mCachedSize(SIZE_MAX) { // empty } // ---------------------------------------------------------------------------------- diff --git a/include/assimp/DefaultIOSystem.h b/include/assimp/DefaultIOSystem.h index 23471d25a..a5d45c692 100644 --- a/include/assimp/DefaultIOSystem.h +++ b/include/assimp/DefaultIOSystem.h @@ -50,8 +50,7 @@ namespace Assimp { // --------------------------------------------------------------------------- /** Default implementation of IOSystem using the standard C file functions */ -class ASSIMP_API DefaultIOSystem : public IOSystem -{ +class ASSIMP_API DefaultIOSystem : public IOSystem { public: // ------------------------------------------------------------------- /** Tests for the existence of a file at the given path. */ diff --git a/include/assimp/Exporter.hpp b/include/assimp/Exporter.hpp index 3d1a9ea85..4e0843b60 100644 --- a/include/assimp/Exporter.hpp +++ b/include/assimp/Exporter.hpp @@ -57,6 +57,7 @@ namespace Assimp { class ExporterPimpl; class IOSystem; +class ProgressHandler; // ---------------------------------------------------------------------------------- /** CPP-API: The Exporter class forms an C++ interface to the export functionality @@ -84,8 +85,7 @@ public: typedef void (*fpExportFunc)(const char*, IOSystem*, const aiScene*, const ExportProperties*); /** Internal description of an Assimp export format option */ - struct ExportFormatEntry - { + struct ExportFormatEntry { /// Public description structure to be returned by aiGetExportFormatDescription() aiExportFormatDesc mDescription; @@ -158,6 +158,19 @@ public: * @return true by default */ bool IsDefaultIOHandler() const; + // ------------------------------------------------------------------- + /** Supplies a custom progress handler to the exporter. This + * interface exposes an #Update() callback, which is called + * more or less periodically (please don't sue us if it + * isn't as periodically as you'd like it to have ...). + * This can be used to implement progress bars and loading + * timeouts. + * @param pHandler Progress callback interface. Pass nullptr to + * disable progress reporting. + * @note Progress handlers can be used to abort the loading + * at almost any time.*/ + void SetProgressHandler(ProgressHandler* pHandler); + // ------------------------------------------------------------------- /** Exports the given scene to a chosen file format. Returns the exported * data as a binary blob which you can write into a file or something. diff --git a/include/assimp/IOStream.hpp b/include/assimp/IOStream.hpp index eb2a0f21c..52b80cc15 100644 --- a/include/assimp/IOStream.hpp +++ b/include/assimp/IOStream.hpp @@ -71,7 +71,7 @@ class ASSIMP_API IOStream { protected: /** Constructor protected, use IOSystem::Open() to create an instance. */ - IOStream(); + IOStream() AI_NO_EXCEPT; public: // ------------------------------------------------------------------- @@ -126,7 +126,7 @@ public: // ---------------------------------------------------------------------------------- inline -IOStream::IOStream() { +IOStream::IOStream() AI_NO_EXCEPT { // empty } diff --git a/include/assimp/IOSystem.hpp b/include/assimp/IOSystem.hpp index 1530492c0..a36e22508 100644 --- a/include/assimp/IOSystem.hpp +++ b/include/assimp/IOSystem.hpp @@ -95,7 +95,7 @@ public: * Create an instance of your derived class and assign it to an * #Assimp::Importer instance by calling Importer::SetIOHandler(). */ - IOSystem(); + IOSystem() AI_NO_EXCEPT; // ------------------------------------------------------------------- /** @brief Virtual destructor. @@ -105,9 +105,6 @@ public: */ virtual ~IOSystem(); - -public: - // ------------------------------------------------------------------- /** @brief For backward compatibility * @see Exists(const char*) @@ -233,7 +230,7 @@ private: // ---------------------------------------------------------------------------- AI_FORCE_INLINE -IOSystem::IOSystem() +IOSystem::IOSystem() AI_NO_EXCEPT : m_pathStack() { // empty } diff --git a/include/assimp/Importer.hpp b/include/assimp/Importer.hpp index 7445c9797..1d1dac19f 100644 --- a/include/assimp/Importer.hpp +++ b/include/assimp/Importer.hpp @@ -330,7 +330,7 @@ public: // ------------------------------------------------------------------- /** Supplies a custom progress handler to the importer. This - * interface exposes a #Update() callback, which is called + * interface exposes an #Update() callback, which is called * more or less periodically (please don't sue us if it * isn't as periodically as you'd like it to have ...). * This can be used to implement progress bars and loading diff --git a/include/assimp/LineSplitter.h b/include/assimp/LineSplitter.h index e5ac98d85..eb6b6e46c 100644 --- a/include/assimp/LineSplitter.h +++ b/include/assimp/LineSplitter.h @@ -44,11 +44,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * @brief LineSplitter, a helper class to iterate through all lines * of a file easily. Works with StreamReader. */ +#pragma once #ifndef INCLUDED_LINE_SPLITTER_H #define INCLUDED_LINE_SPLITTER_H #include - #include "StreamReader.h" #include "ParsingUtils.h" @@ -81,164 +81,205 @@ public: /** construct from existing stream reader note: trim is *always* assumed true if skyp_empty_lines==true */ - LineSplitter(StreamReaderLE& stream, bool skip_empty_lines = true, bool trim = true) - : idx( 0 ) - , stream(stream) - , swallow() - , skip_empty_lines(skip_empty_lines) - , trim(trim) { - cur.reserve(1024); - operator++(); + LineSplitter(StreamReaderLE& stream, bool skip_empty_lines = true, bool trim = true); - idx = 0; - } - - ~LineSplitter() { - // empty - } - -public: + ~LineSplitter(); // ----------------------------------------- /** pseudo-iterator increment */ - LineSplitter& operator++() { - if(swallow) { - swallow = false; - return *this; - } - if (!*this) { - throw std::logic_error("End of file, no more lines to be retrieved."); - } - char s; - cur.clear(); - while(stream.GetRemainingSize() && (s = stream.GetI1(),1)) { - if (s == '\n' || s == '\r') { - if (skip_empty_lines) { - while (stream.GetRemainingSize() && ((s = stream.GetI1()) == ' ' || s == '\r' || s == '\n')); - if (stream.GetRemainingSize()) { - stream.IncPtr(-1); - } - } - else { - // skip both potential line terminators but don't read past this line. - if (stream.GetRemainingSize() && (s == '\r' && stream.GetI1() != '\n')) { - stream.IncPtr(-1); - } - if (trim) { - while (stream.GetRemainingSize() && ((s = stream.GetI1()) == ' ' || s == '\t')); - if (stream.GetRemainingSize()) { - stream.IncPtr(-1); - } - } - } - break; - } - cur += s; - } - ++idx; - return *this; - } + LineSplitter& operator++(); // ----------------------------------------- - LineSplitter& operator++(int) { - return ++(*this); - } + LineSplitter& operator++(int); // ----------------------------------------- /** get a pointer to the beginning of a particular token */ - const char* operator[] (size_t idx) const { - const char* s = operator->()->c_str(); - - SkipSpaces(&s); - for(size_t i = 0; i < idx; ++i) { - - for(;!IsSpace(*s); ++s) { - if(IsLineEnd(*s)) { - throw std::range_error("Token index out of range, EOL reached"); - } - } - SkipSpaces(&s); - } - return s; - } + const char* operator[] (size_t idx) const; // ----------------------------------------- /** extract the start positions of N tokens from the current line*/ template - void get_tokens(const char* (&tokens)[N]) const { - const char* s = operator->()->c_str(); - - SkipSpaces(&s); - for(size_t i = 0; i < N; ++i) { - if(IsLineEnd(*s)) { - - throw std::range_error("Token count out of range, EOL reached"); - - } - tokens[i] = s; - - for(;*s && !IsSpace(*s); ++s); - SkipSpaces(&s); - } - } + void get_tokens(const char* (&tokens)[N]) const; // ----------------------------------------- /** member access */ - const std::string* operator -> () const { - return &cur; - } + const std::string* operator -> () const; - std::string operator* () const { - return cur; - } + std::string operator* () const; // ----------------------------------------- /** boolean context */ - operator bool() const { - return stream.GetRemainingSize()>0; - } + operator bool() const; // ----------------------------------------- /** line indices are zero-based, empty lines are included */ - operator line_idx() const { - return idx; - } + operator line_idx() const; - line_idx get_index() const { - return idx; - } + line_idx get_index() const; // ----------------------------------------- /** access the underlying stream object */ - StreamReaderLE& get_stream() { - return stream; - } + StreamReaderLE& get_stream(); // ----------------------------------------- /** !strcmp((*this)->substr(0,strlen(check)),check) */ - bool match_start(const char* check) { - const size_t len = strlen(check); - - return len <= cur.length() && std::equal(check,check+len,cur.begin()); - } - + bool match_start(const char* check); // ----------------------------------------- /** swallow the next call to ++, return the previous value. */ - void swallow_next_increment() { - swallow = true; - } + void swallow_next_increment(); + + LineSplitter( const LineSplitter & ) = delete; + LineSplitter(LineSplitter &&) = delete; + LineSplitter &operator = ( const LineSplitter & ) = delete; private: - LineSplitter( const LineSplitter & ); - LineSplitter &operator = ( const LineSplitter & ); - -private: - line_idx idx; - std::string cur; - StreamReaderLE& stream; - bool swallow, skip_empty_lines, trim; + line_idx mIdx; + std::string mCur; + StreamReaderLE& mStream; + bool mSwallow, mSkip_empty_lines, mTrim; }; +inline +LineSplitter::LineSplitter(StreamReaderLE& stream, bool skip_empty_lines, bool trim ) +: mIdx(0) +, mCur() +, mStream(stream) +, mSwallow() +, mSkip_empty_lines(skip_empty_lines) +, mTrim(trim) { + mCur.reserve(1024); + operator++(); + mIdx = 0; } + +inline +LineSplitter::~LineSplitter() { + // empty +} + +inline +LineSplitter& LineSplitter::operator++() { + if (mSwallow) { + mSwallow = false; + return *this; + } + + if (!*this) { + throw std::logic_error("End of file, no more lines to be retrieved."); + } + + char s; + mCur.clear(); + while (mStream.GetRemainingSize() && (s = mStream.GetI1(), 1)) { + if (s == '\n' || s == '\r') { + if (mSkip_empty_lines) { + while (mStream.GetRemainingSize() && ((s = mStream.GetI1()) == ' ' || s == '\r' || s == '\n')); + if (mStream.GetRemainingSize()) { + mStream.IncPtr(-1); + } + } else { + // skip both potential line terminators but don't read past this line. + if (mStream.GetRemainingSize() && (s == '\r' && mStream.GetI1() != '\n')) { + mStream.IncPtr(-1); + } + if (mTrim) { + while (mStream.GetRemainingSize() && ((s = mStream.GetI1()) == ' ' || s == '\t')); + if (mStream.GetRemainingSize()) { + mStream.IncPtr(-1); + } + } + } + break; + } + mCur += s; + } + ++mIdx; + + return *this; +} + +inline +LineSplitter &LineSplitter::operator++(int) { + return ++(*this); +} + +inline +const char *LineSplitter::operator[] (size_t idx) const { + const char* s = operator->()->c_str(); + + SkipSpaces(&s); + for (size_t i = 0; i < idx; ++i) { + + for (; !IsSpace(*s); ++s) { + if (IsLineEnd(*s)) { + throw std::range_error("Token index out of range, EOL reached"); + } + } + SkipSpaces(&s); + } + return s; +} + +template +inline +void LineSplitter::get_tokens(const char* (&tokens)[N]) const { + const char* s = operator->()->c_str(); + + SkipSpaces(&s); + for (size_t i = 0; i < N; ++i) { + if (IsLineEnd(*s)) { + throw std::range_error("Token count out of range, EOL reached"); + } + tokens[i] = s; + + for (; *s && !IsSpace(*s); ++s); + SkipSpaces(&s); + } +} + +inline +const std::string* LineSplitter::operator -> () const { + return &mCur; +} + +inline +std::string LineSplitter::operator* () const { + return mCur; +} + +inline +LineSplitter::operator bool() const { + return mStream.GetRemainingSize() > 0; +} + +inline +LineSplitter::operator line_idx() const { + return mIdx; +} + +inline +LineSplitter::line_idx LineSplitter::get_index() const { + return mIdx; +} + +inline +StreamReaderLE &LineSplitter::get_stream() { + return mStream; +} + +inline +bool LineSplitter::match_start(const char* check) { + const size_t len = ::strlen(check); + + return len <= mCur.length() && std::equal(check, check + len, mCur.begin()); +} + +inline +void LineSplitter::swallow_next_increment() { + mSwallow = true; +} + +} // Namespace Assimp + #endif // INCLUDED_LINE_SPLITTER_H diff --git a/include/assimp/LogStream.hpp b/include/assimp/LogStream.hpp index 00a979da3..e0eb8d505 100644 --- a/include/assimp/LogStream.hpp +++ b/include/assimp/LogStream.hpp @@ -65,7 +65,7 @@ class ASSIMP_API LogStream { protected: /** @brief Default constructor */ - LogStream(); + LogStream() AI_NO_EXCEPT; public: /** @brief Virtual destructor */ @@ -91,12 +91,12 @@ public: * @return New LogStream instance. */ static LogStream* createDefaultStream(aiDefaultLogStream stream, const char* name = "AssimpLog.txt", - IOSystem* io = NULL); + IOSystem* io = nullptr ); }; // !class LogStream inline -LogStream::LogStream() { +LogStream::LogStream() AI_NO_EXCEPT { // empty } diff --git a/include/assimp/Logger.hpp b/include/assimp/Logger.hpp index 303f841ce..6a9928735 100644 --- a/include/assimp/Logger.hpp +++ b/include/assimp/Logger.hpp @@ -161,7 +161,7 @@ protected: /** * Default constructor */ - Logger(); + Logger() AI_NO_EXCEPT; /** * Construction with a given log severity @@ -215,8 +215,9 @@ protected: // ---------------------------------------------------------------------------------- // Default constructor inline -Logger::Logger() { - setLogSeverity(NORMAL); +Logger::Logger() AI_NO_EXCEPT +: m_Severity(NORMAL) { + // empty } // ---------------------------------------------------------------------------------- @@ -229,8 +230,9 @@ Logger::~Logger() { // ---------------------------------------------------------------------------------- // Construction with given logging severity inline -Logger::Logger(LogSeverity severity) { - setLogSeverity(severity); +Logger::Logger(LogSeverity severity) +: m_Severity(severity) { + // empty } // ---------------------------------------------------------------------------------- diff --git a/include/assimp/MemoryIOWrapper.h b/include/assimp/MemoryIOWrapper.h index bfcfff9c2..5260cb2b2 100644 --- a/include/assimp/MemoryIOWrapper.h +++ b/include/assimp/MemoryIOWrapper.h @@ -80,7 +80,9 @@ public: // ------------------------------------------------------------------- // Read from stream size_t Read(void* pvBuffer, size_t pSize, size_t pCount) { - const size_t cnt = std::min(pCount,(length-pos)/pSize),ofs = pSize*cnt; + ai_assert(pvBuffer); + ai_assert(pSize); + const size_t cnt = std::min(pCount,(length-pos)/pSize), ofs = pSize*cnt; memcpy(pvBuffer,buffer+pos,ofs); pos += ofs; diff --git a/include/assimp/ProgressHandler.hpp b/include/assimp/ProgressHandler.hpp index b1d095b7f..f295eac39 100644 --- a/include/assimp/ProgressHandler.hpp +++ b/include/assimp/ProgressHandler.hpp @@ -62,11 +62,13 @@ class ASSIMP_API ProgressHandler #endif { protected: - /** @brief Default constructor */ - ProgressHandler () { + /// @brief Default constructor + ProgressHandler () AI_NO_EXCEPT { + // empty } + public: - /** @brief Virtual destructor */ + /// @brief Virtual destructor. virtual ~ProgressHandler () { } @@ -120,8 +122,24 @@ public: Update( f * 0.5f + 0.5f ); } + + // ------------------------------------------------------------------- + /** @brief Progress callback for export steps. + * @param numberOfSteps The number of total processing + * steps + * @param currentStep The index of the current post-processing + * step that will run, or equal to numberOfSteps if all of + * them has finished. This number is always strictly monotone + * increasing, although not necessarily linearly. + * */ + virtual void UpdateFileWrite(int currentStep /*= 0*/, int numberOfSteps /*= 0*/) { + float f = numberOfSteps ? currentStep / (float)numberOfSteps : 1.0f; + Update(f * 0.5f); + } }; // !class ProgressHandler + // ------------------------------------------------------------------------------------ + } // Namespace Assimp #endif // AI_PROGRESSHANDLER_H_INC diff --git a/include/assimp/SGSpatialSort.h b/include/assimp/SGSpatialSort.h index 203e32512..3c95d0b51 100644 --- a/include/assimp/SGSpatialSort.h +++ b/include/assimp/SGSpatialSort.h @@ -111,26 +111,34 @@ protected: // ------------------------------------------------------------------- /** An entry in a spatially sorted position array. Consists of a - * vertex index, its position and its precalculated distance from + * vertex index, its position and its pre-calculated distance from * the reference plane */ // ------------------------------------------------------------------- - struct Entry - { + struct Entry { unsigned int mIndex; ///< The vertex referred by this entry aiVector3D mPosition; ///< Position uint32_t mSmoothGroups; float mDistance; ///< Distance of this vertex to the sorting plane - Entry() { /** intentionally not initialized.*/ } - Entry( unsigned int pIndex, const aiVector3D& pPosition, float pDistance,uint32_t pSG) - : - mIndex( pIndex), - mPosition( pPosition), - mSmoothGroups (pSG), - mDistance( pDistance) - { } + Entry() AI_NO_EXCEPT + : mIndex(0) + , mPosition() + , mSmoothGroups(0) + , mDistance(0.0f) { + // empty + } - bool operator < (const Entry& e) const { return mDistance < e.mDistance; } + Entry( unsigned int pIndex, const aiVector3D& pPosition, float pDistance,uint32_t pSG) + : mIndex( pIndex) + , mPosition( pPosition) + , mSmoothGroups(pSG) + , mDistance( pDistance) { + // empty + } + + bool operator < (const Entry& e) const { + return mDistance < e.mDistance; + } }; // all positions, sorted by distance to the sorting plane diff --git a/include/assimp/SmoothingGroups.h b/include/assimp/SmoothingGroups.h index cdae578df..88345c66a 100644 --- a/include/assimp/SmoothingGroups.h +++ b/include/assimp/SmoothingGroups.h @@ -52,12 +52,10 @@ http://www.jalix.org/ressources/graphics/3DS/_unofficials/3ds-unofficial.txt */ // --------------------------------------------------------------------------- /** Helper structure representing a face with smoothing groups assigned */ -struct FaceWithSmoothingGroup -{ - FaceWithSmoothingGroup() - : mIndices(), - iSmoothGroup(0) - { +struct FaceWithSmoothingGroup { + FaceWithSmoothingGroup() AI_NO_EXCEPT + : mIndices() + , iSmoothGroup(0) { // in debug builds set all indices to a common magic value #ifdef ASSIMP_BUILD_DEBUG this->mIndices[0] = 0xffffffff; diff --git a/include/assimp/SpatialSort.h b/include/assimp/SpatialSort.h index 4c45e95ad..8fb450841 100644 --- a/include/assimp/SpatialSort.h +++ b/include/assimp/SpatialSort.h @@ -153,7 +153,7 @@ protected: aiVector3D mPosition; ///< Position ai_real mDistance; ///< Distance of this vertex to the sorting plane - Entry() + Entry() AI_NO_EXCEPT : mIndex( 999999999 ), mPosition(), mDistance( 99999. ) { // empty } diff --git a/include/assimp/StreamReader.h b/include/assimp/StreamReader.h index 3fab00ad2..b01ee4b66 100644 --- a/include/assimp/StreamReader.h +++ b/include/assimp/StreamReader.h @@ -67,16 +67,13 @@ namespace Assimp { * XXX switch from unsigned int for size types to size_t? or ptrdiff_t?*/ // -------------------------------------------------------------------------------------------- template -class StreamReader -{ +class StreamReader { public: // FIXME: use these data types throughout the whole library, // then change them to 64 bit values :-) + using diff = int; + using pos = unsigned int; - typedef int diff; - typedef unsigned int pos; - -public: // --------------------------------------------------------------------- /** Construction from a given stream with a well-defined endianness. * @@ -111,8 +108,6 @@ public: delete[] buffer; } -public: - // deprecated, use overloaded operator>> instead // --------------------------------------------------------------------- @@ -176,7 +171,6 @@ public: return Get(); } -public: // --------------------------------------------------------------------- /** Get the remaining stream size (to the end of the stream) */ unsigned int GetRemainingSize() const { diff --git a/include/assimp/anim.h b/include/assimp/anim.h index 5ed51af0c..8a0984192 100644 --- a/include/assimp/anim.h +++ b/include/assimp/anim.h @@ -70,7 +70,7 @@ struct aiVectorKey #ifdef __cplusplus /// @brief The default constructor. - aiVectorKey() + aiVectorKey() AI_NO_EXCEPT : mTime( 0.0 ) , mValue() { // empty @@ -116,7 +116,7 @@ struct aiQuatKey C_STRUCT aiQuaternion mValue; #ifdef __cplusplus - aiQuatKey() + aiQuatKey() AI_NO_EXCEPT : mTime( 0.0 ) , mValue() { // empty @@ -163,7 +163,7 @@ struct aiMeshKey #ifdef __cplusplus - aiMeshKey() + aiMeshKey() AI_NO_EXCEPT : mTime(0.0) , mValue(0) { @@ -210,10 +210,10 @@ struct aiMeshMorphKey /** The number of values and weights */ unsigned int mNumValuesAndWeights; #ifdef __cplusplus - aiMeshMorphKey() + aiMeshMorphKey() AI_NO_EXCEPT : mTime(0.0) - , mValues(NULL) - , mWeights(NULL) + , mValues(nullptr) + , mWeights(nullptr) , mNumValuesAndWeights(0) { @@ -324,13 +324,13 @@ struct aiNodeAnim { C_ENUM aiAnimBehaviour mPostState; #ifdef __cplusplus - aiNodeAnim() + aiNodeAnim() AI_NO_EXCEPT : mNumPositionKeys( 0 ) - , mPositionKeys( NULL ) + , mPositionKeys( nullptr ) , mNumRotationKeys( 0 ) - , mRotationKeys( NULL ) + , mRotationKeys( nullptr ) , mNumScalingKeys( 0 ) - , mScalingKeys( NULL ) + , mScalingKeys( nullptr ) , mPreState( aiAnimBehaviour_DEFAULT ) , mPostState( aiAnimBehaviour_DEFAULT ) { // empty @@ -366,7 +366,7 @@ struct aiMeshAnim #ifdef __cplusplus - aiMeshAnim() + aiMeshAnim() AI_NO_EXCEPT : mNumKeys() , mKeys() {} @@ -397,7 +397,7 @@ struct aiMeshMorphAnim #ifdef __cplusplus - aiMeshMorphAnim() + aiMeshMorphAnim() AI_NO_EXCEPT : mNumKeys() , mKeys() {} @@ -451,15 +451,15 @@ struct aiAnimation { C_STRUCT aiMeshMorphAnim **mMorphMeshChannels; #ifdef __cplusplus - aiAnimation() + aiAnimation() AI_NO_EXCEPT : mDuration(-1.) , mTicksPerSecond(0.) , mNumChannels(0) - , mChannels(NULL) + , mChannels(nullptr) , mNumMeshChannels(0) - , mMeshChannels(NULL) + , mMeshChannels(nullptr) , mNumMorphMeshChannels(0) - , mMorphMeshChannels(NULL) { + , mMorphMeshChannels(nullptr) { // empty } diff --git a/include/assimp/camera.h b/include/assimp/camera.h index 8073d84ae..6fea5a7d7 100644 --- a/include/assimp/camera.h +++ b/include/assimp/camera.h @@ -174,7 +174,7 @@ struct aiCamera #ifdef __cplusplus - aiCamera() + aiCamera() AI_NO_EXCEPT : mUp (0.f,1.f,0.f) , mLookAt (0.f,0.f,1.f) , mHorizontalFOV (0.25f * (float)AI_MATH_PI) diff --git a/include/assimp/color4.h b/include/assimp/color4.h index ced470b28..fddd1b638 100644 --- a/include/assimp/color4.h +++ b/include/assimp/color4.h @@ -59,12 +59,11 @@ template class aiColor4t { public: - aiColor4t () : r(), g(), b(), a() {} + aiColor4t() AI_NO_EXCEPT : r(), g(), b(), a() {} aiColor4t (TReal _r, TReal _g, TReal _b, TReal _a) : r(_r), g(_g), b(_b), a(_a) {} explicit aiColor4t (TReal _r) : r(_r), g(_r), b(_r), a(_r) {} - aiColor4t (const aiColor4t& o) - : r(o.r), g(o.g), b(o.b), a(o.a) {} + aiColor4t (const aiColor4t& o) = default; public: // combined operators diff --git a/include/assimp/config.h.in b/include/assimp/config.h.in index 8de2ea43e..fd828bc6e 100644 --- a/include/assimp/config.h.in +++ b/include/assimp/config.h.in @@ -673,6 +673,12 @@ enum aiComponent #define AI_CONFIG_IMPORT_SMD_KEYFRAME "IMPORT_SMD_KEYFRAME" #define AI_CONFIG_IMPORT_UNREAL_KEYFRAME "IMPORT_UNREAL_KEYFRAME" +// --------------------------------------------------------------------------- +/** Smd load multiple animations + * + * Property type: bool. Default value: true. + */ +#define AI_CONFIG_IMPORT_SMD_LOAD_ANIMATION_LIST "IMPORT_SMD_LOAD_ANIMATION_LIST" // --------------------------------------------------------------------------- /** @brief Configures the AC loader to collect all surfaces which have the diff --git a/include/assimp/defs.h b/include/assimp/defs.h index b587396bf..e651a1f7b 100644 --- a/include/assimp/defs.h +++ b/include/assimp/defs.h @@ -97,6 +97,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * CALCTANGENTS * JOINVERTICES * TRIANGULATE + * DROPFACENORMALS * GENFACENORMALS * GENVERTEXNORMALS * REMOVEVC @@ -289,4 +290,14 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define AI_MAX_ALLOC(type) ((256U * 1024 * 1024) / sizeof(type)) +#ifndef _MSC_VER +# define AI_NO_EXCEPT noexcept +#else +# if (_MSC_VER == 1915 ) +# define AI_NO_EXCEPT noexcept +# else +# define AI_NO_EXCEPT +# endif +#endif + #endif // !! AI_DEFINES_H_INC diff --git a/include/assimp/fast_atof.h b/include/assimp/fast_atof.h index 735cfe2da..62ea969e9 100644 --- a/include/assimp/fast_atof.h +++ b/include/assimp/fast_atof.h @@ -195,7 +195,7 @@ uint64_t strtoul10_64( const char* in, const char** out=0, unsigned int* max_ino break; } - const uint64_t new_value = ( value * 10 ) + ( *in - '0' ); + const uint64_t new_value = ( value * (uint64_t) 10 ) + ( (uint64_t) ( *in - '0' ) ); // numeric overflow, we rely on you if ( new_value < value ) { diff --git a/include/assimp/irrXMLWrapper.h b/include/assimp/irrXMLWrapper.h index 70b20ebd3..296f26a32 100644 --- a/include/assimp/irrXMLWrapper.h +++ b/include/assimp/irrXMLWrapper.h @@ -45,7 +45,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // some long includes .... #include -#include "./../include/assimp/IOStream.hpp" +#include "IOStream.hpp" #include "BaseImporter.h" #include diff --git a/include/assimp/light.h b/include/assimp/light.h index 8a306009f..dc0b8a4b6 100644 --- a/include/assimp/light.h +++ b/include/assimp/light.h @@ -237,7 +237,7 @@ struct aiLight #ifdef __cplusplus - aiLight() + aiLight() AI_NO_EXCEPT : mType (aiLightSource_UNDEFINED) , mAttenuationConstant (0.f) , mAttenuationLinear (1.f) diff --git a/include/assimp/material.h b/include/assimp/material.h index 6564e047b..45b4844a3 100644 --- a/include/assimp/material.h +++ b/include/assimp/material.h @@ -483,7 +483,7 @@ struct aiUVTransform #ifdef __cplusplus - aiUVTransform() + aiUVTransform() AI_NO_EXCEPT : mTranslation (0.0,0.0) , mScaling (1.0,1.0) , mRotation (0.0) @@ -607,7 +607,7 @@ struct aiMaterialProperty #ifdef __cplusplus - aiMaterialProperty() + aiMaterialProperty() AI_NO_EXCEPT : mSemantic( 0 ) , mIndex( 0 ) , mDataLength( 0 ) @@ -1565,26 +1565,6 @@ C_ENUM aiReturn aiGetMaterialTexture(const C_STRUCT aiMaterial* mat, unsigned int* flags /*= NULL*/); #endif // !#ifdef __cplusplus -// --------------------------------------------------------------------------- -/** @brief Helper function to get all values pertaining to a particular -* texture slot from a material structure. -* -* @return Pointer showing to the default material. -*/ -// --------------------------------------------------------------------------- -#ifdef __cplusplus -ASSIMP_API aiMaterial *aiCreateAndRegisterDefaultMaterial(void); -#else -C_STRUCT aiMaterial *aiCreateAndRegisterDefaultMaterial(void); -#endif // !#ifdef __cplusplus - -// --------------------------------------------------------------------------- -/** - * @brief Helper function to release the default material instance, the - * instance will not be destroyed. - */ -// --------------------------------------------------------------------------- -ASSIMP_API void aiReleaseDefaultMaterial(); #ifdef __cplusplus } diff --git a/include/assimp/matrix3x3.h b/include/assimp/matrix3x3.h index 3f50a0bc2..4bb55ad21 100644 --- a/include/assimp/matrix3x3.h +++ b/include/assimp/matrix3x3.h @@ -69,7 +69,7 @@ class aiMatrix3x3t { public: - aiMatrix3x3t () : + aiMatrix3x3t() AI_NO_EXCEPT : a1(static_cast(1.0f)), a2(), a3(), b1(), b2(static_cast(1.0f)), b3(), c1(), c2(), c3(static_cast(1.0f)) {} diff --git a/include/assimp/matrix4x4.h b/include/assimp/matrix4x4.h index 851050316..bfa9d3865 100644 --- a/include/assimp/matrix4x4.h +++ b/include/assimp/matrix4x4.h @@ -71,7 +71,7 @@ class aiMatrix4x4t public: /** set to identity */ - aiMatrix4x4t (); + aiMatrix4x4t() AI_NO_EXCEPT; /** construction from single values */ aiMatrix4x4t ( TReal _a1, TReal _a2, TReal _a3, TReal _a4, diff --git a/include/assimp/matrix4x4.inl b/include/assimp/matrix4x4.inl index 6f96d5a6b..680d7666d 100644 --- a/include/assimp/matrix4x4.inl +++ b/include/assimp/matrix4x4.inl @@ -60,7 +60,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // ---------------------------------------------------------------------------------------- template -aiMatrix4x4t ::aiMatrix4x4t () : +aiMatrix4x4t::aiMatrix4x4t() AI_NO_EXCEPT : a1(1.0f), a2(), a3(), a4(), b1(), b2(1.0f), b3(), b4(), c1(), c2(), c3(1.0f), c4(), @@ -71,7 +71,7 @@ aiMatrix4x4t ::aiMatrix4x4t () : // ---------------------------------------------------------------------------------------- template -aiMatrix4x4t ::aiMatrix4x4t (TReal _a1, TReal _a2, TReal _a3, TReal _a4, +aiMatrix4x4t::aiMatrix4x4t (TReal _a1, TReal _a2, TReal _a3, TReal _a4, TReal _b1, TReal _b2, TReal _b3, TReal _b4, TReal _c1, TReal _c2, TReal _c3, TReal _c4, TReal _d1, TReal _d2, TReal _d3, TReal _d4) : @@ -527,27 +527,25 @@ inline aiMatrix4x4t& aiMatrix4x4t::FromEulerAnglesXYZ(TReal x, TRe { aiMatrix4x4t& _this = *this; - TReal cr = std::cos( x ); - TReal sr = std::sin( x ); - TReal cp = std::cos( y ); - TReal sp = std::sin( y ); - TReal cy = std::cos( z ); - TReal sy = std::sin( z ); + TReal cx = std::cos(x); + TReal sx = std::sin(x); + TReal cy = std::cos(y); + TReal sy = std::sin(y); + TReal cz = std::cos(z); + TReal sz = std::sin(z); - _this.a1 = cp*cy ; - _this.a2 = cp*sy; - _this.a3 = -sp ; + // mz*my*mx + _this.a1 = cz * cy; + _this.a2 = cz * sy * sx - sz * cx; + _this.a3 = sz * sx + cz * sy * cx; - TReal srsp = sr*sp; - TReal crsp = cr*sp; + _this.b1 = sz * cy; + _this.b2 = cz * cx + sz * sy * sx; + _this.b3 = sz * sy * cx - cz * sx; - _this.b1 = srsp*cy-cr*sy ; - _this.b2 = srsp*sy+cr*cy ; - _this.b3 = sr*cp ; - - _this.c1 = crsp*cy+sr*sy ; - _this.c2 = crsp*sy-sr*cy ; - _this.c3 = cr*cp ; + _this.c1 = -sy; + _this.c2 = cy * sx; + _this.c3 = cy * cx; return *this; } diff --git a/include/assimp/mesh.h b/include/assimp/mesh.h index 731053614..f47d5fd00 100644 --- a/include/assimp/mesh.h +++ b/include/assimp/mesh.h @@ -136,10 +136,10 @@ struct aiFace #ifdef __cplusplus //! Default constructor - aiFace() - : mNumIndices( 0 ) - , mIndices( NULL ) - { + aiFace() AI_NO_EXCEPT + : mNumIndices( 0 ) + , mIndices( nullptr ) { + // empty } //! Default destructor. Delete the index array @@ -150,47 +150,56 @@ struct aiFace //! Copy constructor. Copy the index array aiFace( const aiFace& o) - : mIndices( NULL ) - { + : mNumIndices(0) + , mIndices( nullptr ) { *this = o; } //! Assignment operator. Copy the index array - aiFace& operator = ( const aiFace& o) - { - if (&o == this) + aiFace& operator = ( const aiFace& o) { + if (&o == this) { return *this; + } delete[] mIndices; mNumIndices = o.mNumIndices; if (mNumIndices) { mIndices = new unsigned int[mNumIndices]; ::memcpy( mIndices, o.mIndices, mNumIndices * sizeof( unsigned int)); + } else { + mIndices = nullptr; } - else { - mIndices = NULL; - } + return *this; } //! Comparison operator. Checks whether the index array //! of two faces is identical - bool operator== (const aiFace& o) const - { - if (mIndices == o.mIndices)return true; - else if (mIndices && mNumIndices == o.mNumIndices) - { - for (unsigned int i = 0;i < this->mNumIndices;++i) - if (mIndices[i] != o.mIndices[i])return false; + bool operator== (const aiFace& o) const { + if (mIndices == o.mIndices) { return true; } - return false; + + if (nullptr != mIndices && mNumIndices != o.mNumIndices) { + return false; + } + + if (nullptr == mIndices) { + return false; + } + + for (unsigned int i = 0; i < this->mNumIndices; ++i) { + if (mIndices[i] != o.mIndices[i]) { + return false; + } + } + + return true; } //! Inverse comparison operator. Checks whether the index //! array of two faces is NOT identical - bool operator != (const aiFace& o) const - { + bool operator != (const aiFace& o) const { return !(*this == o); } #endif // __cplusplus @@ -211,13 +220,13 @@ struct aiVertexWeight { #ifdef __cplusplus //! Default constructor - aiVertexWeight() + aiVertexWeight() AI_NO_EXCEPT : mVertexId(0) , mWeight(0.0f) { // empty } - //! Initialisation from a given index and vertex weight factor + //! Initialization from a given index and vertex weight factor //! \param pID ID //! \param pWeight Vertex weight factor aiVertexWeight( unsigned int pID, float pWeight ) @@ -273,21 +282,21 @@ struct aiBone { #ifdef __cplusplus //! Default constructor - aiBone() + aiBone() AI_NO_EXCEPT : mName() , mNumWeights( 0 ) - , mWeights( nullptr ) { + , mWeights( nullptr ) + , mOffsetMatrix() { // empty } //! Copy constructor aiBone(const aiBone& other) - : mName( other.mName ) - , mNumWeights( other.mNumWeights ) - , mOffsetMatrix( other.mOffsetMatrix ) - { - if (other.mWeights && other.mNumWeights) - { + : mName( other.mName ) + , mNumWeights( other.mNumWeights ) + , mWeights(nullptr) + , mOffsetMatrix( other.mOffsetMatrix ) { + if (other.mWeights && other.mNumWeights) { mWeights = new aiVertexWeight[mNumWeights]; ::memcpy(mWeights,other.mWeights,mNumWeights * sizeof(aiVertexWeight)); } @@ -295,8 +304,7 @@ struct aiBone { //! Assignment operator - aiBone &operator=(const aiBone& other) - { + aiBone &operator=(const aiBone& other) { if (this == &other) { return *this; } @@ -332,8 +340,7 @@ struct aiBone { return true; } //! Destructor - deletes the array of vertex weights - ~aiBone() - { + ~aiBone() { delete [] mWeights; } #endif // __cplusplus @@ -447,11 +454,13 @@ struct aiAnimMesh #ifdef __cplusplus - aiAnimMesh() - : mVertices( NULL ) - , mNormals( NULL ) - , mTangents( NULL ) - , mBitangents( NULL ) + aiAnimMesh() AI_NO_EXCEPT + : mVertices( nullptr ) + , mNormals(nullptr) + , mTangents(nullptr) + , mBitangents(nullptr) + , mColors() + , mTextureCoords() , mNumVertices( 0 ) , mWeight( 0.0f ) { @@ -706,35 +715,36 @@ struct aiMesh #ifdef __cplusplus //! Default constructor. Initializes all members to 0 - aiMesh() - : mPrimitiveTypes( 0 ) - , mNumVertices( 0 ) - , mNumFaces( 0 ) - , mVertices( NULL ) - , mNormals( NULL ) - , mTangents( NULL ) - , mBitangents( NULL ) - , mFaces( NULL ) - , mNumBones( 0 ) - , mBones( NULL ) - , mMaterialIndex( 0 ) - , mNumAnimMeshes( 0 ) - , mAnimMeshes( NULL ) - , mMethod( 0 ) - { - for( unsigned int a = 0; a < AI_MAX_NUMBER_OF_TEXTURECOORDS; a++) - { + aiMesh() AI_NO_EXCEPT + : mPrimitiveTypes( 0 ) + , mNumVertices( 0 ) + , mNumFaces( 0 ) + , mVertices( nullptr ) + , mNormals(nullptr) + , mTangents(nullptr) + , mBitangents(nullptr) + , mColors() + , mTextureCoords() + , mNumUVComponents() + , mFaces(nullptr) + , mNumBones( 0 ) + , mBones(nullptr) + , mMaterialIndex( 0 ) + , mNumAnimMeshes( 0 ) + , mAnimMeshes(nullptr) + , mMethod( 0 ) { + for( unsigned int a = 0; a < AI_MAX_NUMBER_OF_TEXTURECOORDS; ++a ) { mNumUVComponents[a] = 0; - mTextureCoords[a] = NULL; + mTextureCoords[a] = nullptr; } - for( unsigned int a = 0; a < AI_MAX_NUMBER_OF_COLOR_SETS; a++) - mColors[a] = NULL; + for (unsigned int a = 0; a < AI_MAX_NUMBER_OF_COLOR_SETS; ++a) { + mColors[a] = nullptr; + } } //! Deletes all storage allocated for the mesh - ~aiMesh() - { + ~aiMesh() { delete [] mVertices; delete [] mNormals; delete [] mTangents; @@ -767,63 +777,67 @@ struct aiMesh //! Check whether the mesh contains positions. Provided no special //! scene flags are set, this will always be true bool HasPositions() const - { return mVertices != NULL && mNumVertices > 0; } + { return mVertices != nullptr && mNumVertices > 0; } //! Check whether the mesh contains faces. If no special scene flags //! are set this should always return true bool HasFaces() const - { return mFaces != NULL && mNumFaces > 0; } + { return mFaces != nullptr && mNumFaces > 0; } //! Check whether the mesh contains normal vectors bool HasNormals() const - { return mNormals != NULL && mNumVertices > 0; } + { return mNormals != nullptr && mNumVertices > 0; } //! Check whether the mesh contains tangent and bitangent vectors //! It is not possible that it contains tangents and no bitangents //! (or the other way round). The existence of one of them //! implies that the second is there, too. bool HasTangentsAndBitangents() const - { return mTangents != NULL && mBitangents != NULL && mNumVertices > 0; } + { return mTangents != nullptr && mBitangents != nullptr && mNumVertices > 0; } //! Check whether the mesh contains a vertex color set //! \param pIndex Index of the vertex color set - bool HasVertexColors( unsigned int pIndex) const - { - if( pIndex >= AI_MAX_NUMBER_OF_COLOR_SETS) + bool HasVertexColors( unsigned int pIndex) const { + if (pIndex >= AI_MAX_NUMBER_OF_COLOR_SETS) { return false; - else - return mColors[pIndex] != NULL && mNumVertices > 0; + } else { + return mColors[pIndex] != nullptr && mNumVertices > 0; + } } //! Check whether the mesh contains a texture coordinate set //! \param pIndex Index of the texture coordinates set - bool HasTextureCoords( unsigned int pIndex) const - { - if( pIndex >= AI_MAX_NUMBER_OF_TEXTURECOORDS) + bool HasTextureCoords( unsigned int pIndex) const { + if (pIndex >= AI_MAX_NUMBER_OF_TEXTURECOORDS) { return false; - else - return mTextureCoords[pIndex] != NULL && mNumVertices > 0; + } else { + return mTextureCoords[pIndex] != nullptr && mNumVertices > 0; + } } //! Get the number of UV channels the mesh contains - unsigned int GetNumUVChannels() const - { - unsigned int n = 0; - while (n < AI_MAX_NUMBER_OF_TEXTURECOORDS && mTextureCoords[n])++n; + unsigned int GetNumUVChannels() const { + unsigned int n( 0 ); + while (n < AI_MAX_NUMBER_OF_TEXTURECOORDS && mTextureCoords[n]) { + ++n; + } + return n; } //! Get the number of vertex color channels the mesh contains - unsigned int GetNumColorChannels() const - { - unsigned int n = 0; - while (n < AI_MAX_NUMBER_OF_COLOR_SETS && mColors[n])++n; + unsigned int GetNumColorChannels() const { + unsigned int n(0); + while (n < AI_MAX_NUMBER_OF_COLOR_SETS && mColors[n]) { + ++n; + } return n; } //! Check whether the mesh contains bones - inline bool HasBones() const - { return mBones != NULL && mNumBones > 0; } + bool HasBones() const { + return mBones != nullptr && mNumBones > 0; + } #endif // __cplusplus }; diff --git a/include/assimp/metadata.h b/include/assimp/metadata.h index 8ac8e250a..498e2f6d1 100644 --- a/include/assimp/metadata.h +++ b/include/assimp/metadata.h @@ -129,7 +129,7 @@ struct aiMetadata { /** * @brief The default constructor, set all members to zero by default. */ - aiMetadata() + aiMetadata() AI_NO_EXCEPT : mNumProperties(0) , mKeys(nullptr) , mValues(nullptr) { @@ -141,11 +141,11 @@ struct aiMetadata { , mKeys( nullptr ) , mValues( nullptr ) { mKeys = new aiString[ mNumProperties ]; - for ( unsigned int i = 0; i < mNumProperties; ++i ) { + for ( size_t i = 0; i < static_cast( mNumProperties ); ++i ) { mKeys[ i ] = rhs.mKeys[ i ]; } mValues = new aiMetadataEntry[ mNumProperties ]; - for ( unsigned int i = 0; i < mNumProperties; ++i ) { + for ( size_t i = 0; i < static_cast(mNumProperties); ++i ) { mValues[ i ].mType = rhs.mValues[ i ].mType; switch ( rhs.mValues[ i ].mType ) { case AI_BOOL: diff --git a/include/assimp/postprocess.h b/include/assimp/postprocess.h index 1cb9c72f8..a0ae0a1bc 100644 --- a/include/assimp/postprocess.h +++ b/include/assimp/postprocess.h @@ -562,6 +562,18 @@ enum aiPostProcessSteps aiProcess_ForceGenNormals = 0x20000000, + + // ------------------------------------------------------------------------- + /**
    Drops normals for all faces of all meshes. + * + * This is ignored if no normals are present. + * Face normals are shared between all points of a single face, + * so a single point can have multiple normals, which + * forces the library to duplicate vertices in some cases. + * #aiProcess_JoinIdenticalVertices is *senseless* then. + * This process gives sense back to aiProcess_JoinIdenticalVertices + */ + aiProcess_DropNormals = 0x40000000, }; diff --git a/include/assimp/quaternion.h b/include/assimp/quaternion.h index 3c8ab50af..e2479f2ed 100644 --- a/include/assimp/quaternion.h +++ b/include/assimp/quaternion.h @@ -60,7 +60,7 @@ template class aiQuaterniont { public: - aiQuaterniont() : w(1.0), x(), y(), z() {} + aiQuaterniont() AI_NO_EXCEPT : w(1.0), x(), y(), z() {} aiQuaterniont(TReal pw, TReal px, TReal py, TReal pz) : w(pw), x(px), y(py), z(pz) {} diff --git a/include/assimp/texture.h b/include/assimp/texture.h index e55c8bc41..5be7229ec 100644 --- a/include/assimp/texture.h +++ b/include/assimp/texture.h @@ -131,8 +131,7 @@ struct aiTexel * as the texture paths (a single asterisk character followed by the * zero-based index of the texture in the aiScene::mTextures array). */ -struct aiTexture -{ +struct aiTexture { /** Width of the texture, in pixels * * If mHeight is zero the texture is compressed in a format @@ -193,24 +192,26 @@ struct aiTexture //! @param s Input string. 3 characters are maximally processed. //! Example values: "jpg", "png" //! @return true if the given string matches the format hint - bool CheckFormat(const char* s) const - { + bool CheckFormat(const char* s) const { + if (nullptr == s) { + return false; + } + return (0 == ::strncmp(achFormatHint, s, sizeof(achFormatHint))); } // Construction - aiTexture () - : mWidth (0) - , mHeight (0) - , pcData (NULL) - { + aiTexture() AI_NO_EXCEPT + : mWidth(0) + , mHeight(0) + , pcData(nullptr) + , mFilename() { achFormatHint[0] = achFormatHint[1] = 0; achFormatHint[2] = achFormatHint[3] = 0; } // Destruction - ~aiTexture () - { + ~aiTexture () { delete[] pcData; } #endif diff --git a/include/assimp/types.h b/include/assimp/types.h index 9868f657c..660479f8a 100644 --- a/include/assimp/types.h +++ b/include/assimp/types.h @@ -119,10 +119,9 @@ extern "C" { // ---------------------------------------------------------------------------------- /** Represents a plane in a three-dimensional, euclidean space */ -struct aiPlane -{ +struct aiPlane { #ifdef __cplusplus - aiPlane () : a(0.f), b(0.f), c(0.f), d(0.f) {} + aiPlane () AI_NO_EXCEPT : a(0.f), b(0.f), c(0.f), d(0.f) {} aiPlane (ai_real _a, ai_real _b, ai_real _c, ai_real _d) : a(_a), b(_b), c(_c), d(_d) {} @@ -137,10 +136,9 @@ struct aiPlane // ---------------------------------------------------------------------------------- /** Represents a ray */ -struct aiRay -{ +struct aiRay { #ifdef __cplusplus - aiRay () {} + aiRay () AI_NO_EXCEPT {} aiRay (const aiVector3D& _pos, const aiVector3D& _dir) : pos(_pos), dir(_dir) {} @@ -158,7 +156,7 @@ struct aiRay struct aiColor3D { #ifdef __cplusplus - aiColor3D () : r(0.0f), g(0.0f), b(0.0f) {} + aiColor3D () AI_NO_EXCEPT : r(0.0f), g(0.0f), b(0.0f) {} aiColor3D (ai_real _r, ai_real _g, ai_real _b) : r(_r), g(_g), b(_b) {} explicit aiColor3D (ai_real _r) : r(_r), g(_r), b(_r) {} aiColor3D (const aiColor3D& o) : r(o.r), g(o.g), b(o.b) {} @@ -253,9 +251,8 @@ struct aiString { #ifdef __cplusplus /** Default constructor, the string is set to have zero length */ - aiString() : - length(0) - { + aiString() AI_NO_EXCEPT + : length( 0 ) { data[0] = '\0'; #ifdef ASSIMP_BUILD_DEBUG @@ -305,7 +302,7 @@ struct aiString } - /** Assigment operator */ + /** Assignment operator */ aiString& operator = (const aiString &rOther) { if (this == &rOther) { return *this; @@ -373,7 +370,7 @@ struct aiString #endif // !__cplusplus /** Binary length of the string excluding the terminal 0. This is NOT the - * logical length of strings containing UTF-8 multibyte sequences! It's + * logical length of strings containing UTF-8 multi-byte sequences! It's * the number of bytes from the beginning of the string to its end.*/ size_t length; @@ -479,7 +476,7 @@ struct aiMemoryInfo #ifdef __cplusplus /** Default constructor */ - aiMemoryInfo() + aiMemoryInfo() AI_NO_EXCEPT : textures (0) , materials (0) , meshes (0) diff --git a/include/assimp/vector2.h b/include/assimp/vector2.h index d290945c9..85ca6d0a4 100644 --- a/include/assimp/vector2.h +++ b/include/assimp/vector2.h @@ -53,7 +53,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # include #endif -#include "./Compiler/pushpack1.h" #include "defs.h" // ---------------------------------------------------------------------------------- @@ -62,24 +61,18 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifdef __cplusplus template -class aiVector2t -{ +class aiVector2t { public: - aiVector2t () : x(), y() {} aiVector2t (TReal _x, TReal _y) : x(_x), y(_y) {} explicit aiVector2t (TReal _xyz) : x(_xyz), y(_xyz) {} - aiVector2t (const aiVector2t& o) : x(o.x), y(o.y) {} - -public: + aiVector2t (const aiVector2t& o) = default; void Set( TReal pX, TReal pY); TReal SquareLength() const ; TReal Length() const ; aiVector2t& Normalize(); -public: - const aiVector2t& operator += (const aiVector2t& o); const aiVector2t& operator -= (const aiVector2t& o); const aiVector2t& operator *= (TReal f); @@ -111,6 +104,4 @@ struct aiVector2D { #endif // __cplusplus -#include "./Compiler/poppack1.h" - #endif // AI_VECTOR2D_H_INC diff --git a/include/assimp/vector3.h b/include/assimp/vector3.h index 292da8248..33ae7d22f 100644 --- a/include/assimp/vector3.h +++ b/include/assimp/vector3.h @@ -66,10 +66,10 @@ template class aiVector3t { public: - aiVector3t() : x(), y(), z() {} + aiVector3t() AI_NO_EXCEPT : x(), y(), z() {} aiVector3t(TReal _x, TReal _y, TReal _z) : x(_x), y(_y), z(_z) {} explicit aiVector3t (TReal _xyz ) : x(_xyz), y(_xyz), z(_xyz) {} - aiVector3t( const aiVector3t& o ) : x(o.x), y(o.y), z(o.z) {} + aiVector3t( const aiVector3t& o ) = default; public: diff --git a/port/AssimpNET/Readme.md b/port/AssimpNET/Readme.md index dca57470c..bcbfebab1 100644 --- a/port/AssimpNET/Readme.md +++ b/port/AssimpNET/Readme.md @@ -1 +1 @@ -Please check the following github-repo for the source: https://github.com/kebby/assimp-net +Please check the following git-repo for the source: https://bitbucket.org/Starnick/assimpnet diff --git a/port/PyAssimp/pyassimp/core.py b/port/PyAssimp/pyassimp/core.py index 64d6d69c6..64dd351a7 100644 --- a/port/PyAssimp/pyassimp/core.py +++ b/port/PyAssimp/pyassimp/core.py @@ -35,7 +35,7 @@ class AssimpLib(object): """ Assimp-Singleton """ - load, load_mem, export, release, dll = helper.search_library() + load, load_mem, export, export_blob, release, dll = helper.search_library() _assimp_lib = AssimpLib() def make_tuple(ai_obj, type = None): @@ -66,6 +66,13 @@ def make_tuple(ai_obj, type = None): return res +# Returns unicode object for Python 2, and str object for Python 3. +def _convert_assimp_string(assimp_string): + try: + return unicode(assimp_string.data, errors='ignore') + except: + return str(assimp_string.data, errors='ignore') + # It is faster and more correct to have an init function for each assimp class def _init_face(aiFace): aiFace.indices = [aiFace.mIndices[i] for i in range(aiFace.mNumIndices)] @@ -118,14 +125,9 @@ def _init(self, target = None, parent = None): continue if m == 'mName': - obj = self.mName - try: - uni = unicode(obj.data, errors='ignore') - except: - uni = str(obj.data, errors='ignore') - target.name = str( uni ) - target.__class__.__repr__ = lambda x: str(x.__class__) + "(" + getattr(x, 'name','') + ")" - target.__class__.__str__ = lambda x: getattr(x, 'name', '') + target.name = str(_convert_assimp_string(self.mName)) + target.__class__.__repr__ = lambda x: str(x.__class__) + "(" + getattr(x, 'name','') + ")" + target.__class__.__str__ = lambda x: getattr(x, 'name', '') continue name = m[1:].lower() @@ -220,6 +222,9 @@ def _init(self, target = None, parent = None): if isinstance(self, structs.Texture): _finalize_texture(self, target) + if isinstance(self, structs.Metadata): + _finalize_metadata(self, target) + return self @@ -347,6 +352,33 @@ def export(scene, if exportStatus != 0: raise AssimpError('Could not export scene!') +def export_blob(scene, + file_type = None, + processing = postprocess.aiProcess_Triangulate): + ''' + Export a scene and return a blob in the correct format. On failure throws AssimpError. + + Arguments + --------- + scene: scene to export. + file_type: string of file exporter to use. For example "collada". + processing: assimp postprocessing parameters. Verbose keywords are imported + from postprocessing, and the parameters can be combined bitwise to + generate the final processing value. Note that the default value will + triangulate quad faces. Example of generating other possible values: + processing = (pyassimp.postprocess.aiProcess_Triangulate | + pyassimp.postprocess.aiProcess_OptimizeMeshes) + Returns + --------- + Pointer to structs.ExportDataBlob + ''' + from ctypes import pointer + exportBlobPtr = _assimp_lib.export_blob(pointer(scene), file_type.encode("ascii"), processing) + + if exportBlobPtr == 0: + raise AssimpError('Could not export scene to blob!') + return exportBlobPtr + def release(scene): from ctypes import pointer _assimp_lib.release(pointer(scene)) @@ -412,6 +444,43 @@ def _finalize_mesh(mesh, target): faces = [f.indices for f in target.faces] setattr(target, 'faces', faces) +def _init_metadata_entry(entry): + from ctypes import POINTER, c_bool, c_int32, c_uint64, c_float, c_double, cast + + entry.type = entry.mType + if entry.type == structs.MetadataEntry.AI_BOOL: + entry.data = cast(entry.mData, POINTER(c_bool)).contents.value + elif entry.type == structs.MetadataEntry.AI_INT32: + entry.data = cast(entry.mData, POINTER(c_int32)).contents.value + elif entry.type == structs.MetadataEntry.AI_UINT64: + entry.data = cast(entry.mData, POINTER(c_uint64)).contents.value + elif entry.type == structs.MetadataEntry.AI_FLOAT: + entry.data = cast(entry.mData, POINTER(c_float)).contents.value + elif entry.type == structs.MetadataEntry.AI_DOUBLE: + entry.data = cast(entry.mData, POINTER(c_double)).contents.value + elif entry.type == structs.MetadataEntry.AI_AISTRING: + assimp_string = cast(entry.mData, POINTER(structs.String)).contents + entry.data = _convert_assimp_string(assimp_string) + elif entry.type == structs.MetadataEntry.AI_AIVECTOR3D: + assimp_vector = cast(entry.mData, POINTER(structs.Vector3D)).contents + entry.data = make_tuple(assimp_vector) + + return entry + +def _finalize_metadata(metadata, target): + """ Building the metadata object is a bit specific. + + Firstly, there are two separate arrays: one with metadata keys and one + with metadata values, and there are no corresponding mNum* attributes, + so the C arrays are not converted to Python arrays using the generic + code in the _init function. + + Secondly, a metadata entry value has to be cast according to declared + metadata entry type. + """ + length = metadata.mNumProperties + setattr(target, 'keys', [str(_convert_assimp_string(metadata.mKeys[i])) for i in range(length)]) + setattr(target, 'values', [_init_metadata_entry(metadata.mValues[i]) for i in range(length)]) class PropertyGetter(dict): def __getitem__(self, key): @@ -443,11 +512,8 @@ def _get_properties(properties, length): for p in [properties[i] for i in range(length)]: #the name p = p.contents - try: - uni = unicode(p.mKey.data, errors='ignore') - except: - uni = str(p.mKey.data, errors='ignore') - key = (str(uni).split('.')[1], p.mSemantic) + key = str(_convert_assimp_string(p.mKey)) + key = (key.split('.')[1], p.mSemantic) #the data from ctypes import POINTER, cast, c_int, c_float, sizeof @@ -455,11 +521,7 @@ def _get_properties(properties, length): arr = cast(p.mData, POINTER(c_float * int(p.mDataLength/sizeof(c_float)) )).contents value = [x for x in arr] elif p.mType == 3: #string can't be an array - try: - uni = unicode(cast(p.mData, POINTER(structs.MaterialPropertyString)).contents.data, errors='ignore') - except: - uni = str(cast(p.mData, POINTER(structs.MaterialPropertyString)).contents.data, errors='ignore') - value = uni + value = _convert_assimp_string(cast(p.mData, POINTER(structs.MaterialPropertyString)).contents) elif p.mType == 4: arr = cast(p.mData, POINTER(c_int * int(p.mDataLength/sizeof(c_int)) )).contents diff --git a/port/PyAssimp/pyassimp/helper.py b/port/PyAssimp/pyassimp/helper.py index f9163de2a..4e9f10e94 100644 --- a/port/PyAssimp/pyassimp/helper.py +++ b/port/PyAssimp/pyassimp/helper.py @@ -176,6 +176,7 @@ def try_load_functions(library_path, dll): load from filename function, load from memory function, export to filename function, + export to blob function, release function, ctypes handle to assimp library) ''' @@ -185,15 +186,17 @@ def try_load_functions(library_path, dll): release = dll.aiReleaseImport load_mem = dll.aiImportFileFromMemory export = dll.aiExportScene + export2blob = dll.aiExportSceneToBlob except AttributeError: #OK, this is a library, but it doesn't have the functions we need return None # library found! - from .structs import Scene + from .structs import Scene, ExportDataBlob load.restype = POINTER(Scene) load_mem.restype = POINTER(Scene) - return (library_path, load, load_mem, export, release, dll) + export2blob.restype = POINTER(ExportDataBlob) + return (library_path, load, load_mem, export, export2blob, release, dll) def search_library(): ''' @@ -203,6 +206,7 @@ def search_library(): Returns: tuple, (load from filename function, load from memory function, export to filename function, + export to blob function, release function, dll) ''' diff --git a/port/PyAssimp/pyassimp/structs.py b/port/PyAssimp/pyassimp/structs.py index 0a7742705..ddfd87f8a 100644 --- a/port/PyAssimp/pyassimp/structs.py +++ b/port/PyAssimp/pyassimp/structs.py @@ -5,7 +5,7 @@ from ctypes import POINTER, c_void_p, c_int, c_uint, c_char, c_float, Structure, class Vector2D(Structure): """ - See 'aiVector2D.h' for details. + See 'vector2.h' for details. """ @@ -15,7 +15,7 @@ class Vector2D(Structure): class Matrix3x3(Structure): """ - See 'aiMatrix3x3.h' for details. + See 'matrix3x3.h' for details. """ @@ -27,7 +27,7 @@ class Matrix3x3(Structure): class Texel(Structure): """ - See 'aiTexture.h' for details. + See 'texture.h' for details. """ _fields_ = [ @@ -36,7 +36,7 @@ class Texel(Structure): class Color4D(Structure): """ - See 'aiColor4D.h' for details. + See 'color4.h' for details. """ @@ -47,7 +47,7 @@ class Color4D(Structure): class Plane(Structure): """ - See 'aiTypes.h' for details. + See 'types.h' for details. """ _fields_ = [ @@ -57,7 +57,7 @@ class Plane(Structure): class Color3D(Structure): """ - See 'aiTypes.h' for details. + See 'types.h' for details. """ _fields_ = [ @@ -67,7 +67,7 @@ class Color3D(Structure): class String(Structure): """ - See 'aiTypes.h' for details. + See 'types.h' for details. """ MAXLEN = 1024 @@ -84,7 +84,7 @@ class String(Structure): class MaterialPropertyString(Structure): """ - See 'aiTypes.h' for details. + See 'MaterialSystem.cpp' for details. The size of length is truncated to 4 bytes on 64-bit platforms when used as a material property (see MaterialSystem.cpp aiMaterial::AddProperty() for details). @@ -104,7 +104,7 @@ class MaterialPropertyString(Structure): class MemoryInfo(Structure): """ - See 'aiTypes.h' for details. + See 'types.h' for details. """ _fields_ = [ @@ -135,7 +135,7 @@ class MemoryInfo(Structure): class Quaternion(Structure): """ - See 'aiQuaternion.h' for details. + See 'quaternion.h' for details. """ @@ -146,7 +146,7 @@ class Quaternion(Structure): class Face(Structure): """ - See 'aiMesh.h' for details. + See 'mesh.h' for details. """ _fields_ = [ @@ -161,7 +161,7 @@ class Face(Structure): class VertexWeight(Structure): """ - See 'aiMesh.h' for details. + See 'mesh.h' for details. """ _fields_ = [ @@ -175,7 +175,7 @@ class VertexWeight(Structure): class Matrix4x4(Structure): """ - See 'aiMatrix4x4.h' for details. + See 'matrix4x4.h' for details. """ @@ -188,7 +188,7 @@ class Matrix4x4(Structure): class Vector3D(Structure): """ - See 'aiVector3D.h' for details. + See 'vector3.h' for details. """ @@ -198,7 +198,7 @@ class Vector3D(Structure): class MeshKey(Structure): """ - See 'aiAnim.h' for details. + See 'anim.h' for details. """ _fields_ = [ @@ -251,7 +251,7 @@ class Metadata(Structure): class Node(Structure): """ - See 'aiScene.h' for details. + See 'scene.h' for details. """ @@ -291,12 +291,12 @@ Node._fields_ = [ # Metadata associated with this node or NULL if there is no metadata. # Whether any metadata is generated depends on the source file format. - ("mMetadata", POINTER(POINTER(Metadata))), + ("mMetadata", POINTER(Metadata)), ] class Light(Structure): """ - See 'aiLight.h' for details. + See 'light.h' for details. """ @@ -322,6 +322,13 @@ class Light(Structure): # may be normalized, but it needn't. ("mDirection", Vector3D), + # Up direction of the light source in space. Relative to the + # transformation of the node corresponding to the light. + # + # The direction is undefined for point lights. The vector + # may be normalized, but it needn't. + ("mUp", Vector3D), + # Constant light attenuation factor. # The intensity of the light source at a given distance 'd' from # the light's position is @@ -393,11 +400,14 @@ class Light(Structure): # interpolation between the inner and the outer cone of the # spot light. ("mAngleOuterCone", c_float), + + # Size of area light source. + ("mSize", Vector2D), ] class Texture(Structure): """ - See 'aiTexture.h' for details. + See 'texture.h' for details. """ @@ -414,16 +424,25 @@ class Texture(Structure): ("mHeight", c_uint), # A hint from the loader to make it easier for applications - # to determine the type of embedded compressed textures. - # If mHeight != 0 this member is undefined. Otherwise it - # is set set to '\\0\\0\\0\\0' if the loader has no additional + # to determine the type of embedded textures. + # + # If mHeight != 0 this member is show how data is packed. Hint will consist of + # two parts: channel order and channel bitness (count of the bits for every + # color channel). For simple parsing by the viewer it's better to not omit + # absent color channel and just use 0 for bitness. For example: + # 1. Image contain RGBA and 8 bit per channel, achFormatHint == "rgba8888"; + # 2. Image contain ARGB and 8 bit per channel, achFormatHint == "argb8888"; + # 3. Image contain RGB and 5 bit for R and B channels and 6 bit for G channel, + # achFormatHint == "rgba5650"; + # 4. One color image with B channel and 1 bit for it, achFormatHint == "rgba0010"; + # If mHeight == 0 then achFormatHint is set set to '\\0\\0\\0\\0' if the loader has no additional # information about the texture file format used OR the # file extension of the format without a trailing dot. If there # are multiple file extensions for a format, the shortest # extension is chosen (JPEG maps to 'jpg', not to 'jpeg'). # E.g. 'dds\\0', 'pcx\\0', 'jpg\\0'. All characters are lower-case. # The fourth character will always be '\\0'. - ("achFormatHint", c_char*4), + ("achFormatHint", c_char*9), # Data of the texture. # Points to an array of mWidth @@ -434,11 +453,15 @@ class Texture(Structure): # buffer of size mWidth containing the compressed texture # data. Good luck, have fun! ("pcData", POINTER(Texel)), + + # Texture original filename + # Used to get the texture reference + ("mFilename", String), ] class Ray(Structure): """ - See 'aiTypes.h' for details. + See 'types.h' for details. """ _fields_ = [ @@ -448,7 +471,7 @@ class Ray(Structure): class UVTransform(Structure): """ - See 'aiMaterial.h' for details. + See 'material.h' for details. """ _fields_ = [ @@ -469,7 +492,7 @@ class UVTransform(Structure): class MaterialProperty(Structure): """ - See 'aiMaterial.h' for details. + See 'material.h' for details. """ _fields_ = [ @@ -505,7 +528,7 @@ class MaterialProperty(Structure): class Material(Structure): """ - See 'aiMaterial.h' for details. + See 'material.h' for details. """ _fields_ = [ @@ -521,7 +544,7 @@ class Material(Structure): class Bone(Structure): """ - See 'aiMesh.h' for details. + See 'mesh.h' for details. """ _fields_ = [ @@ -540,20 +563,66 @@ class Bone(Structure): ("mOffsetMatrix", Matrix4x4), ] -class Mesh(Structure): + +class AnimMesh(Structure): """ - See 'aiMesh.h' for details. + See 'mesh.h' for details. """ - AI_MAX_FACE_INDICES = 0x7fff - AI_MAX_BONE_WEIGHTS = 0x7fffffff - AI_MAX_VERTICES = 0x7fffffff - AI_MAX_FACES = 0x7fffffff - AI_MAX_NUMBER_OF_COLOR_SETS = 0x8 - AI_MAX_NUMBER_OF_TEXTURECOORDS = 0x8 + AI_MAX_NUMBER_OF_TEXTURECOORDS = 0x8 + AI_MAX_NUMBER_OF_COLOR_SETS = 0x8 _fields_ = [ - # Bitwise combination of the members of the + # Replacement for aiMesh::mVertices. If this array is non-NULL, + # it *must* contain mNumVertices entries. The corresponding + # array in the host mesh must be non-NULL as well - animation + # meshes may neither add or nor remove vertex components (if + # a replacement array is NULL and the corresponding source + # array is not, the source data is taken instead) + ("mVertices", POINTER(Vector3D)), + + # Replacement for aiMesh::mNormals. + ("mNormals", POINTER(Vector3D)), + + # Replacement for aiMesh::mTangents. + ("mTangents", POINTER(Vector3D)), + + # Replacement for aiMesh::mBitangents. + ("mBitangents", POINTER(Vector3D)), + + # Replacement for aiMesh::mColors + ("mColors", POINTER(Color4D) * AI_MAX_NUMBER_OF_COLOR_SETS), + + # Replacement for aiMesh::mTextureCoords + ("mTextureCoords", POINTER(Vector3D) * AI_MAX_NUMBER_OF_TEXTURECOORDS), + + # The number of vertices in the aiAnimMesh, and thus the length of all + # the member arrays. + # + # This has always the same value as the mNumVertices property in the + # corresponding aiMesh. It is duplicated here merely to make the length + # of the member arrays accessible even if the aiMesh is not known, e.g. + # from language bindings. + ("mNumVertices", c_uint), + + # Weight of the AnimMesh. + ("mWeight", c_float), + ] + + +class Mesh(Structure): + """ + See 'mesh.h' for details. + """ + + AI_MAX_FACE_INDICES = 0x7fff + AI_MAX_BONE_WEIGHTS = 0x7fffffff + AI_MAX_VERTICES = 0x7fffffff + AI_MAX_FACES = 0x7fffffff + AI_MAX_NUMBER_OF_COLOR_SETS = 0x8 + AI_MAX_NUMBER_OF_TEXTURECOORDS = 0x8 + + _fields_ = [ # Bitwise combination of the members of the #aiPrimitiveType enum. # This specifies which types of primitives are present in the mesh. # The "SortByPrimitiveType"-Step can be used to make sure the @@ -676,17 +745,23 @@ class Mesh(Structure): # - Vertex animations refer to meshes by their names. ("mName", String), - # NOT CURRENTLY IN USE. The number of attachment meshes + # The number of attachment meshes. Note! Currently only works with Collada loader. ("mNumAnimMeshes", c_uint), - # NOT CURRENTLY IN USE. Attachment meshes for this mesh, for vertex-based animation. - # Attachment meshes carry replacement data for some of the - # mesh'es vertex components (usually positions, normals). + # Attachment meshes for this mesh, for vertex-based animation. + # Attachment meshes carry replacement data for some of the + # mesh'es vertex components (usually positions, normals). + # Note! Currently only works with Collada loader. + ("mAnimMesh", POINTER(POINTER(AnimMesh))), + + # Method of morphing when animeshes are specified. + ("mMethod", c_uint), + ] class Camera(Structure): """ - See 'aiCamera.h' for details. + See 'camera.h' for details. """ @@ -746,7 +821,7 @@ class Camera(Structure): class VectorKey(Structure): """ - See 'aiAnim.h' for details. + See 'anim.h' for details. """ _fields_ = [ @@ -759,7 +834,7 @@ class VectorKey(Structure): class QuatKey(Structure): """ - See 'aiAnim.h' for details. + See 'anim.h' for details. """ _fields_ = [ @@ -770,9 +845,27 @@ class QuatKey(Structure): ("mValue", Quaternion), ] +class MeshMorphKey(Structure): + """ + See 'anim.h' for details. + """ + + _fields_ = [ + # The time of this key + ("mTime", c_double), + + # The values and weights at the time of this key + ("mValues", POINTER(c_uint)), + ("mWeights", POINTER(c_double)), + + # The number of values and weights + ("mNumValuesAndWeights", c_uint), + + ] + class NodeAnim(Structure): """ - See 'aiAnim.h' for details. + See 'anim.h' for details. """ _fields_ = [ @@ -821,9 +914,48 @@ class NodeAnim(Structure): ("mPostState", c_uint), ] +class MeshAnim(Structure): + """ + See 'anim.h' for details. + """ + + _fields_ = [ + # Name of the mesh to be animated. An empty string is not allowed, + # animated meshes need to be named (not necessarily uniquely, + # the name can basically serve as wild-card to select a group + # of meshes with similar animation setup) + ("mName", String), + + # Size of the #mKeys array. Must be 1, at least. + ("mNumKeys", c_uint), + + # Key frames of the animation. May not be NULL. + ("mKeys", POINTER(MeshKey)), + ] + +class MeshMorphAnim(Structure): + """ + See 'anim.h' for details. + """ + + _fields_ = [ + # Name of the mesh to be animated. An empty string is not allowed, + # animated meshes need to be named (not necessarily uniquely, + # the name can basically serve as wildcard to select a group + # of meshes with similar animation setup) + ("mName", String), + + # Size of the #mKeys array. Must be 1, at least. + ("mNumKeys", c_uint), + + # Key frames of the animation. May not be NULL. + ("mKeys", POINTER(MeshMorphKey)), + ] + + class Animation(Structure): """ - See 'aiAnim.h' for details. + See 'anim.h' for details. """ _fields_ = [ @@ -852,18 +984,62 @@ class Animation(Structure): # The mesh animation channels. Each channel affects a single mesh. # The array is mNumMeshChannels in size. + ("mMeshChannels", POINTER(POINTER(MeshAnim))), + + # The number of mesh animation channels. Each channel affects + # a single mesh and defines morphing animation. + ("mNumMorphMeshChannels", c_uint), + + # The morph mesh animation channels. Each channel affects a single mesh. + # The array is mNumMorphMeshChannels in size. + ("mMorphMeshChannels", POINTER(POINTER(MeshMorphAnim))), + ] +class ExportDataBlob(Structure): + """ + See 'cexport.h' for details. + + Note that the '_fields_' definition is outside the class to allow the 'next' field to be recursive + """ + pass + +ExportDataBlob._fields_ = [ + # Size of the data in bytes + ("size", c_size_t), + + # The data. + ("data", c_void_p), + + # Name of the blob. An empty string always + # indicates the first (and primary) blob, + # which contains the actual file data. + # Any other blobs are auxiliary files produced + # by exporters (i.e. material files). Existence + # of such files depends on the file format. Most + # formats don't split assets across multiple files. + # + # If used, blob names usually contain the file + # extension that should be used when writing + # the data to disc. + ("name", String), + + # Pointer to the next blob in the chain or NULL if there is none. + ("next", POINTER(ExportDataBlob)), + ] + + class Scene(Structure): """ See 'aiScene.h' for details. """ - AI_SCENE_FLAGS_INCOMPLETE = 0x1 - AI_SCENE_FLAGS_VALIDATED = 0x2 - AI_SCENE_FLAGS_VALIDATION_WARNING = 0x4 - AI_SCENE_FLAGS_NON_VERBOSE_FORMAT = 0x8 - AI_SCENE_FLAGS_TERRAIN = 0x10 + AI_SCENE_FLAGS_INCOMPLETE = 0x1 + AI_SCENE_FLAGS_VALIDATED = 0x2 + AI_SCENE_FLAGS_VALIDATION_WARNING = 0x4 + AI_SCENE_FLAGS_NON_VERBOSE_FORMAT = 0x8 + AI_SCENE_FLAGS_TERRAIN = 0x10 + AI_SCENE_FLAGS_ALLOW_SHARED = 0x20 _fields_ = [ # Any combination of the AI_SCENE_FLAGS_XXX flags. By default @@ -939,7 +1115,10 @@ class Scene(Structure): # This data contains global metadata which belongs to the scene like # unit-conversions, versions, vendors or other model-specific data. This # can be used to store format-specific metadata as well. - ("mMetadata", POINTER(POINTER(Metadata))), + ("mMetadata", POINTER(Metadata)), + + # Internal data, do not touch + ("mPrivate", c_char_p), ] assimp_structs_as_tuple = (Matrix4x4, diff --git a/scripts/IFCImporter/schema_ifc4.exp b/scripts/IFCImporter/schema_ifc4.exp deleted file mode 100644 index cf1fe155e..000000000 --- a/scripts/IFCImporter/schema_ifc4.exp +++ /dev/null @@ -1,12401 +0,0 @@ -(* -Copyright by: -buildingSMART International Limited, 1996-2016 - -Any technical documentation made available by buildingSMART International Limited -is the copyrighted work of buildingSMART International Limited and is owned by the -buildingSMART International Limited. It may be photocopied, used in software development, -or translated into another computer language without prior written consent from -buildingSMART International Limited provided that full attribution is given. -Prior written consent is required if changes are made to the technical specification. - -This material is delivered to you as is and buildingSMART International Limited makes -no warranty of any kind with regard to it, including, but not limited to, the implied -warranties as to its accuracy or fitness for a particular purpose. Any use of the -technical documentation or the information contained therein is at the risk of the user. -Documentation may include technical or other inaccuracies or typographical errors. -buildingSMART International Limited shall not be liable for errors contained therein or -for incidental consequential damages in connection with the furnishing, performance or use -of the material. The information contained in this document is subject to change without notice. - -Issue date: -Montag, 11. Juli 2016 - -*) - -SCHEMA IFC4; - -TYPE IfcStrippedOptional = BOOLEAN; -END_TYPE; - -TYPE IfcAbsorbedDoseMeasure = REAL; -END_TYPE; - -TYPE IfcAccelerationMeasure = REAL; -END_TYPE; - -TYPE IfcAmountOfSubstanceMeasure = REAL; -END_TYPE; - -TYPE IfcAngularVelocityMeasure = REAL; -END_TYPE; - -TYPE IfcArcIndex = LIST [3:3] OF IfcPositiveInteger; -END_TYPE; - -TYPE IfcAreaDensityMeasure = REAL; -END_TYPE; - -TYPE IfcAreaMeasure = REAL; -END_TYPE; - -TYPE IfcBinary = BINARY; -END_TYPE; - -TYPE IfcBoolean = BOOLEAN; -END_TYPE; - -TYPE IfcBoxAlignment = IfcLabel; - WHERE - WR1 : SELF IN ['top-left', 'top-middle', 'top-right', 'middle-left', 'center', 'middle-right', 'bottom-left', 'bottom-middle', 'bottom-right']; -END_TYPE; - -TYPE IfcCardinalPointReference = INTEGER; - WHERE - GreaterThanZero : SELF > 0; -END_TYPE; - -TYPE IfcComplexNumber = ARRAY [1:2] OF REAL; -END_TYPE; - -TYPE IfcCompoundPlaneAngleMeasure = LIST [3:4] OF INTEGER; - WHERE - MinutesInRange : ABS(SELF[2]) < 60; - SecondsInRange : ABS(SELF[3]) < 60; - MicrosecondsInRange : (SIZEOF(SELF) = 3) OR (ABS(SELF[4]) < 1000000); - ConsistentSign : ((SELF[1] >= 0) AND (SELF[2] >= 0) AND (SELF[3] >= 0) AND ((SIZEOF(SELF) = 3) OR (SELF[4] >= 0))) -OR -((SELF[1] <= 0) AND (SELF[2] <= 0) AND (SELF[3] <= 0) AND ((SIZEOF(SELF) = 3) OR (SELF[4] <= 0))); -END_TYPE; - -TYPE IfcContextDependentMeasure = REAL; -END_TYPE; - -TYPE IfcCountMeasure = NUMBER; -END_TYPE; - -TYPE IfcCurvatureMeasure = REAL; -END_TYPE; - -TYPE IfcDate = STRING; -END_TYPE; - -TYPE IfcDateTime = STRING; -END_TYPE; - -TYPE IfcDayInMonthNumber = INTEGER; - WHERE - ValidRange : {1 <= SELF <= 31}; -END_TYPE; - -TYPE IfcDayInWeekNumber = INTEGER; - WHERE - ValidRange : {1 <= SELF <= 7}; -END_TYPE; - -TYPE IfcDescriptiveMeasure = STRING; -END_TYPE; - -TYPE IfcDimensionCount = INTEGER; - WHERE - WR1 : { 0 < SELF <= 3 }; -END_TYPE; - -TYPE IfcDoseEquivalentMeasure = REAL; -END_TYPE; - -TYPE IfcDuration = STRING; -END_TYPE; - -TYPE IfcDynamicViscosityMeasure = REAL; -END_TYPE; - -TYPE IfcElectricCapacitanceMeasure = REAL; -END_TYPE; - -TYPE IfcElectricChargeMeasure = REAL; -END_TYPE; - -TYPE IfcElectricConductanceMeasure = REAL; -END_TYPE; - -TYPE IfcElectricCurrentMeasure = REAL; -END_TYPE; - -TYPE IfcElectricResistanceMeasure = REAL; -END_TYPE; - -TYPE IfcElectricVoltageMeasure = REAL; -END_TYPE; - -TYPE IfcEnergyMeasure = REAL; -END_TYPE; - -TYPE IfcFontStyle = STRING; - WHERE - WR1 : SELF IN ['normal','italic','oblique']; -END_TYPE; - -TYPE IfcFontVariant = STRING; - WHERE - WR1 : SELF IN ['normal','small-caps']; -END_TYPE; - -TYPE IfcFontWeight = STRING; - WHERE - WR1 : SELF IN ['normal','small-caps','100','200','300','400','500','600','700','800','900']; -END_TYPE; - -TYPE IfcForceMeasure = REAL; -END_TYPE; - -TYPE IfcFrequencyMeasure = REAL; -END_TYPE; - -TYPE IfcGloballyUniqueId = STRING(22) FIXED; -END_TYPE; - -TYPE IfcHeatFluxDensityMeasure = REAL; -END_TYPE; - -TYPE IfcHeatingValueMeasure = REAL; - WHERE - WR1 : SELF > 0.; -END_TYPE; - -TYPE IfcIdentifier = STRING(255); -END_TYPE; - -TYPE IfcIlluminanceMeasure = REAL; -END_TYPE; - -TYPE IfcInductanceMeasure = REAL; -END_TYPE; - -TYPE IfcInteger = INTEGER; -END_TYPE; - -TYPE IfcIntegerCountRateMeasure = INTEGER; -END_TYPE; - -TYPE IfcIonConcentrationMeasure = REAL; -END_TYPE; - -TYPE IfcIsothermalMoistureCapacityMeasure = REAL; -END_TYPE; - -TYPE IfcKinematicViscosityMeasure = REAL; -END_TYPE; - -TYPE IfcLabel = STRING(255); -END_TYPE; - -TYPE IfcLanguageId = IfcIdentifier; -END_TYPE; - -TYPE IfcLengthMeasure = REAL; -END_TYPE; - -TYPE IfcLineIndex = LIST [2:?] OF IfcPositiveInteger; -END_TYPE; - -TYPE IfcLinearForceMeasure = REAL; -END_TYPE; - -TYPE IfcLinearMomentMeasure = REAL; -END_TYPE; - -TYPE IfcLinearStiffnessMeasure = REAL; -END_TYPE; - -TYPE IfcLinearVelocityMeasure = REAL; -END_TYPE; - -TYPE IfcLogical = LOGICAL; -END_TYPE; - -TYPE IfcLuminousFluxMeasure = REAL; -END_TYPE; - -TYPE IfcLuminousIntensityDistributionMeasure = REAL; -END_TYPE; - -TYPE IfcLuminousIntensityMeasure = REAL; -END_TYPE; - -TYPE IfcMagneticFluxDensityMeasure = REAL; -END_TYPE; - -TYPE IfcMagneticFluxMeasure = REAL; -END_TYPE; - -TYPE IfcMassDensityMeasure = REAL; -END_TYPE; - -TYPE IfcMassFlowRateMeasure = REAL; -END_TYPE; - -TYPE IfcMassMeasure = REAL; -END_TYPE; - -TYPE IfcMassPerLengthMeasure = REAL; -END_TYPE; - -TYPE IfcModulusOfElasticityMeasure = REAL; -END_TYPE; - -TYPE IfcModulusOfLinearSubgradeReactionMeasure = REAL; -END_TYPE; - -TYPE IfcModulusOfRotationalSubgradeReactionMeasure = REAL; -END_TYPE; - -TYPE IfcModulusOfSubgradeReactionMeasure = REAL; -END_TYPE; - -TYPE IfcMoistureDiffusivityMeasure = REAL; -END_TYPE; - -TYPE IfcMolecularWeightMeasure = REAL; -END_TYPE; - -TYPE IfcMomentOfInertiaMeasure = REAL; -END_TYPE; - -TYPE IfcMonetaryMeasure = REAL; -END_TYPE; - -TYPE IfcMonthInYearNumber = INTEGER; - WHERE - ValidRange : {1 <= SELF <= 12}; -END_TYPE; - -TYPE IfcNonNegativeLengthMeasure = IfcLengthMeasure; - WHERE - NotNegative : SELF >= 0.; -END_TYPE; - -TYPE IfcNormalisedRatioMeasure = IfcRatioMeasure; - WHERE - WR1 : {0.0 <= SELF <= 1.0}; -END_TYPE; - -TYPE IfcNumericMeasure = NUMBER; -END_TYPE; - -TYPE IfcPHMeasure = REAL; - WHERE - WR21 : {0.0 <= SELF <= 14.0}; -END_TYPE; - -TYPE IfcParameterValue = REAL; -END_TYPE; - -TYPE IfcPlanarForceMeasure = REAL; -END_TYPE; - -TYPE IfcPlaneAngleMeasure = REAL; -END_TYPE; - -TYPE IfcPositiveInteger = IfcInteger; - WHERE - WR1 : SELF > 0; -END_TYPE; - -TYPE IfcPositiveLengthMeasure = IfcLengthMeasure; - WHERE - WR1 : SELF > 0.; -END_TYPE; - -TYPE IfcPositivePlaneAngleMeasure = IfcPlaneAngleMeasure; - WHERE - WR1 : SELF > 0.; -END_TYPE; - -TYPE IfcPositiveRatioMeasure = IfcRatioMeasure; - WHERE - WR1 : SELF > 0.; -END_TYPE; - -TYPE IfcPowerMeasure = REAL; -END_TYPE; - -TYPE IfcPresentableText = STRING; -END_TYPE; - -TYPE IfcPressureMeasure = REAL; -END_TYPE; - -TYPE IfcPropertySetDefinitionSet = SET [1:?] OF IfcPropertySetDefinition; -END_TYPE; - -TYPE IfcRadioActivityMeasure = REAL; -END_TYPE; - -TYPE IfcRatioMeasure = REAL; -END_TYPE; - -TYPE IfcReal = REAL; -END_TYPE; - -TYPE IfcRotationalFrequencyMeasure = REAL; -END_TYPE; - -TYPE IfcRotationalMassMeasure = REAL; -END_TYPE; - -TYPE IfcRotationalStiffnessMeasure = REAL; -END_TYPE; - -TYPE IfcSectionModulusMeasure = REAL; -END_TYPE; - -TYPE IfcSectionalAreaIntegralMeasure = REAL; -END_TYPE; - -TYPE IfcShearModulusMeasure = REAL; -END_TYPE; - -TYPE IfcSolidAngleMeasure = REAL; -END_TYPE; - -TYPE IfcSoundPowerLevelMeasure = REAL; -END_TYPE; - -TYPE IfcSoundPowerMeasure = REAL; -END_TYPE; - -TYPE IfcSoundPressureLevelMeasure = REAL; -END_TYPE; - -TYPE IfcSoundPressureMeasure = REAL; -END_TYPE; - -TYPE IfcSpecificHeatCapacityMeasure = REAL; -END_TYPE; - -TYPE IfcSpecularExponent = REAL; -END_TYPE; - -TYPE IfcSpecularRoughness = REAL; - WHERE - WR1 : {0.0 <= SELF <= 1.0}; -END_TYPE; - -TYPE IfcTemperatureGradientMeasure = REAL; -END_TYPE; - -TYPE IfcTemperatureRateOfChangeMeasure = REAL; -END_TYPE; - -TYPE IfcText = STRING; -END_TYPE; - -TYPE IfcTextAlignment = STRING; - WHERE - WR1 : SELF IN ['left', 'right', 'center', 'justify']; -END_TYPE; - -TYPE IfcTextDecoration = STRING; - WHERE - WR1 : SELF IN ['none', 'underline', 'overline', 'line-through', 'blink']; -END_TYPE; - -TYPE IfcTextFontName = STRING; -END_TYPE; - -TYPE IfcTextTransformation = STRING; - WHERE - WR1 : SELF IN ['capitalize', 'uppercase', 'lowercase', 'none']; -END_TYPE; - -TYPE IfcThermalAdmittanceMeasure = REAL; -END_TYPE; - -TYPE IfcThermalConductivityMeasure = REAL; -END_TYPE; - -TYPE IfcThermalExpansionCoefficientMeasure = REAL; -END_TYPE; - -TYPE IfcThermalResistanceMeasure = REAL; -END_TYPE; - -TYPE IfcThermalTransmittanceMeasure = REAL; -END_TYPE; - -TYPE IfcThermodynamicTemperatureMeasure = REAL; -END_TYPE; - -TYPE IfcTime = STRING; -END_TYPE; - -TYPE IfcTimeMeasure = REAL; -END_TYPE; - -TYPE IfcTimeStamp = INTEGER; -END_TYPE; - -TYPE IfcTorqueMeasure = REAL; -END_TYPE; - -TYPE IfcURIReference = STRING; -END_TYPE; - -TYPE IfcVaporPermeabilityMeasure = REAL; -END_TYPE; - -TYPE IfcVolumeMeasure = REAL; -END_TYPE; - -TYPE IfcVolumetricFlowRateMeasure = REAL; -END_TYPE; - -TYPE IfcWarpingConstantMeasure = REAL; -END_TYPE; - -TYPE IfcWarpingMomentMeasure = REAL; -END_TYPE; - -TYPE IfcActionRequestTypeEnum = ENUMERATION OF - (EMAIL - ,FAX - ,PHONE - ,POST - ,VERBAL - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcActionSourceTypeEnum = ENUMERATION OF - (DEAD_LOAD_G - ,COMPLETION_G1 - ,LIVE_LOAD_Q - ,SNOW_S - ,WIND_W - ,PRESTRESSING_P - ,SETTLEMENT_U - ,TEMPERATURE_T - ,EARTHQUAKE_E - ,FIRE - ,IMPULSE - ,IMPACT - ,TRANSPORT - ,ERECTION - ,PROPPING - ,SYSTEM_IMPERFECTION - ,SHRINKAGE - ,CREEP - ,LACK_OF_FIT - ,BUOYANCY - ,ICE - ,CURRENT - ,WAVE - ,RAIN - ,BRAKES - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcActionTypeEnum = ENUMERATION OF - (PERMANENT_G - ,VARIABLE_Q - ,EXTRAORDINARY_A - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcActuatorTypeEnum = ENUMERATION OF - (ELECTRICACTUATOR - ,HANDOPERATEDACTUATOR - ,HYDRAULICACTUATOR - ,PNEUMATICACTUATOR - ,THERMOSTATICACTUATOR - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcAddressTypeEnum = ENUMERATION OF - (OFFICE - ,SITE - ,HOME - ,DISTRIBUTIONPOINT - ,USERDEFINED); -END_TYPE; - -TYPE IfcAirTerminalBoxTypeEnum = ENUMERATION OF - (CONSTANTFLOW - ,VARIABLEFLOWPRESSUREDEPENDANT - ,VARIABLEFLOWPRESSUREINDEPENDANT - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcAirTerminalTypeEnum = ENUMERATION OF - (DIFFUSER - ,GRILLE - ,LOUVRE - ,REGISTER - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcAirToAirHeatRecoveryTypeEnum = ENUMERATION OF - (FIXEDPLATECOUNTERFLOWEXCHANGER - ,FIXEDPLATECROSSFLOWEXCHANGER - ,FIXEDPLATEPARALLELFLOWEXCHANGER - ,ROTARYWHEEL - ,RUNAROUNDCOILLOOP - ,HEATPIPE - ,TWINTOWERENTHALPYRECOVERYLOOPS - ,THERMOSIPHONSEALEDTUBEHEATEXCHANGERS - ,THERMOSIPHONCOILTYPEHEATEXCHANGERS - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcAlarmTypeEnum = ENUMERATION OF - (BELL - ,BREAKGLASSBUTTON - ,LIGHT - ,MANUALPULLBOX - ,SIREN - ,WHISTLE - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcAnalysisModelTypeEnum = ENUMERATION OF - (IN_PLANE_LOADING_2D - ,OUT_PLANE_LOADING_2D - ,LOADING_3D - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcAnalysisTheoryTypeEnum = ENUMERATION OF - (FIRST_ORDER_THEORY - ,SECOND_ORDER_THEORY - ,THIRD_ORDER_THEORY - ,FULL_NONLINEAR_THEORY - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcArithmeticOperatorEnum = ENUMERATION OF - (ADD - ,DIVIDE - ,MULTIPLY - ,SUBTRACT); -END_TYPE; - -TYPE IfcAssemblyPlaceEnum = ENUMERATION OF - (SITE - ,FACTORY - ,NOTDEFINED); -END_TYPE; - -TYPE IfcAudioVisualApplianceTypeEnum = ENUMERATION OF - (AMPLIFIER - ,CAMERA - ,DISPLAY - ,MICROPHONE - ,PLAYER - ,PROJECTOR - ,RECEIVER - ,SPEAKER - ,SWITCHER - ,TELEPHONE - ,TUNER - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcBSplineCurveForm = ENUMERATION OF - (POLYLINE_FORM - ,CIRCULAR_ARC - ,ELLIPTIC_ARC - ,PARABOLIC_ARC - ,HYPERBOLIC_ARC - ,UNSPECIFIED); -END_TYPE; - -TYPE IfcBSplineSurfaceForm = ENUMERATION OF - (PLANE_SURF - ,CYLINDRICAL_SURF - ,CONICAL_SURF - ,SPHERICAL_SURF - ,TOROIDAL_SURF - ,SURF_OF_REVOLUTION - ,RULED_SURF - ,GENERALISED_CONE - ,QUADRIC_SURF - ,SURF_OF_LINEAR_EXTRUSION - ,UNSPECIFIED); -END_TYPE; - -TYPE IfcBeamTypeEnum = ENUMERATION OF - (BEAM - ,JOIST - ,HOLLOWCORE - ,LINTEL - ,SPANDREL - ,T_BEAM - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcBenchmarkEnum = ENUMERATION OF - (GREATERTHAN - ,GREATERTHANOREQUALTO - ,LESSTHAN - ,LESSTHANOREQUALTO - ,EQUALTO - ,NOTEQUALTO - ,INCLUDES - ,NOTINCLUDES - ,INCLUDEDIN - ,NOTINCLUDEDIN); -END_TYPE; - -TYPE IfcBoilerTypeEnum = ENUMERATION OF - (WATER - ,STEAM - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcBooleanOperator = ENUMERATION OF - (UNION - ,INTERSECTION - ,DIFFERENCE); -END_TYPE; - -TYPE IfcBuildingElementPartTypeEnum = ENUMERATION OF - (INSULATION - ,PRECASTPANEL - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcBuildingElementProxyTypeEnum = ENUMERATION OF - (COMPLEX - ,ELEMENT - ,PARTIAL - ,PROVISIONFORVOID - ,PROVISIONFORSPACE - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcBuildingSystemTypeEnum = ENUMERATION OF - (FENESTRATION - ,FOUNDATION - ,LOADBEARING - ,OUTERSHELL - ,SHADING - ,TRANSPORT - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcBurnerTypeEnum = ENUMERATION OF - (USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcCableCarrierFittingTypeEnum = ENUMERATION OF - (BEND - ,CROSS - ,REDUCER - ,TEE - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcCableCarrierSegmentTypeEnum = ENUMERATION OF - (CABLELADDERSEGMENT - ,CABLETRAYSEGMENT - ,CABLETRUNKINGSEGMENT - ,CONDUITSEGMENT - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcCableFittingTypeEnum = ENUMERATION OF - (CONNECTOR - ,ENTRY - ,EXIT - ,JUNCTION - ,TRANSITION - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcCableSegmentTypeEnum = ENUMERATION OF - (BUSBARSEGMENT - ,CABLESEGMENT - ,CONDUCTORSEGMENT - ,CORESEGMENT - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcChangeActionEnum = ENUMERATION OF - (NOCHANGE - ,MODIFIED - ,ADDED - ,DELETED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcChillerTypeEnum = ENUMERATION OF - (AIRCOOLED - ,WATERCOOLED - ,HEATRECOVERY - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcChimneyTypeEnum = ENUMERATION OF - (USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcCoilTypeEnum = ENUMERATION OF - (DXCOOLINGCOIL - ,ELECTRICHEATINGCOIL - ,GASHEATINGCOIL - ,HYDRONICCOIL - ,STEAMHEATINGCOIL - ,WATERCOOLINGCOIL - ,WATERHEATINGCOIL - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcColumnTypeEnum = ENUMERATION OF - (COLUMN - ,PILASTER - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcCommunicationsApplianceTypeEnum = ENUMERATION OF - (ANTENNA - ,COMPUTER - ,FAX - ,GATEWAY - ,MODEM - ,NETWORKAPPLIANCE - ,NETWORKBRIDGE - ,NETWORKHUB - ,PRINTER - ,REPEATER - ,ROUTER - ,SCANNER - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcComplexPropertyTemplateTypeEnum = ENUMERATION OF - (P_COMPLEX - ,Q_COMPLEX); -END_TYPE; - -TYPE IfcCompressorTypeEnum = ENUMERATION OF - (DYNAMIC - ,RECIPROCATING - ,ROTARY - ,SCROLL - ,TROCHOIDAL - ,SINGLESTAGE - ,BOOSTER - ,OPENTYPE - ,HERMETIC - ,SEMIHERMETIC - ,WELDEDSHELLHERMETIC - ,ROLLINGPISTON - ,ROTARYVANE - ,SINGLESCREW - ,TWINSCREW - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcCondenserTypeEnum = ENUMERATION OF - (AIRCOOLED - ,EVAPORATIVECOOLED - ,WATERCOOLED - ,WATERCOOLEDBRAZEDPLATE - ,WATERCOOLEDSHELLCOIL - ,WATERCOOLEDSHELLTUBE - ,WATERCOOLEDTUBEINTUBE - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcConnectionTypeEnum = ENUMERATION OF - (ATPATH - ,ATSTART - ,ATEND - ,NOTDEFINED); -END_TYPE; - -TYPE IfcConstraintEnum = ENUMERATION OF - (HARD - ,SOFT - ,ADVISORY - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcConstructionEquipmentResourceTypeEnum = ENUMERATION OF - (DEMOLISHING - ,EARTHMOVING - ,ERECTING - ,HEATING - ,LIGHTING - ,PAVING - ,PUMPING - ,TRANSPORTING - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcConstructionMaterialResourceTypeEnum = ENUMERATION OF - (AGGREGATES - ,CONCRETE - ,DRYWALL - ,FUEL - ,GYPSUM - ,MASONRY - ,METAL - ,PLASTIC - ,WOOD - ,NOTDEFINED - ,USERDEFINED); -END_TYPE; - -TYPE IfcConstructionProductResourceTypeEnum = ENUMERATION OF - (ASSEMBLY - ,FORMWORK - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcControllerTypeEnum = ENUMERATION OF - (FLOATING - ,PROGRAMMABLE - ,PROPORTIONAL - ,MULTIPOSITION - ,TWOPOSITION - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcCooledBeamTypeEnum = ENUMERATION OF - (ACTIVE - ,PASSIVE - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcCoolingTowerTypeEnum = ENUMERATION OF - (NATURALDRAFT - ,MECHANICALINDUCEDDRAFT - ,MECHANICALFORCEDDRAFT - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcCostItemTypeEnum = ENUMERATION OF - (USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcCostScheduleTypeEnum = ENUMERATION OF - (BUDGET - ,COSTPLAN - ,ESTIMATE - ,TENDER - ,PRICEDBILLOFQUANTITIES - ,UNPRICEDBILLOFQUANTITIES - ,SCHEDULEOFRATES - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcCoveringTypeEnum = ENUMERATION OF - (CEILING - ,FLOORING - ,CLADDING - ,ROOFING - ,MOLDING - ,SKIRTINGBOARD - ,INSULATION - ,MEMBRANE - ,SLEEVING - ,WRAPPING - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcCrewResourceTypeEnum = ENUMERATION OF - (OFFICE - ,SITE - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcCurtainWallTypeEnum = ENUMERATION OF - (USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcCurveInterpolationEnum = ENUMERATION OF - (LINEAR - ,LOG_LINEAR - ,LOG_LOG - ,NOTDEFINED); -END_TYPE; - -TYPE IfcDamperTypeEnum = ENUMERATION OF - (BACKDRAFTDAMPER - ,BALANCINGDAMPER - ,BLASTDAMPER - ,CONTROLDAMPER - ,FIREDAMPER - ,FIRESMOKEDAMPER - ,FUMEHOODEXHAUST - ,GRAVITYDAMPER - ,GRAVITYRELIEFDAMPER - ,RELIEFDAMPER - ,SMOKEDAMPER - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcDataOriginEnum = ENUMERATION OF - (MEASURED - ,PREDICTED - ,SIMULATED - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcDerivedUnitEnum = ENUMERATION OF - (ANGULARVELOCITYUNIT - ,AREADENSITYUNIT - ,COMPOUNDPLANEANGLEUNIT - ,DYNAMICVISCOSITYUNIT - ,HEATFLUXDENSITYUNIT - ,INTEGERCOUNTRATEUNIT - ,ISOTHERMALMOISTURECAPACITYUNIT - ,KINEMATICVISCOSITYUNIT - ,LINEARVELOCITYUNIT - ,MASSDENSITYUNIT - ,MASSFLOWRATEUNIT - ,MOISTUREDIFFUSIVITYUNIT - ,MOLECULARWEIGHTUNIT - ,SPECIFICHEATCAPACITYUNIT - ,THERMALADMITTANCEUNIT - ,THERMALCONDUCTANCEUNIT - ,THERMALRESISTANCEUNIT - ,THERMALTRANSMITTANCEUNIT - ,VAPORPERMEABILITYUNIT - ,VOLUMETRICFLOWRATEUNIT - ,ROTATIONALFREQUENCYUNIT - ,TORQUEUNIT - ,MOMENTOFINERTIAUNIT - ,LINEARMOMENTUNIT - ,LINEARFORCEUNIT - ,PLANARFORCEUNIT - ,MODULUSOFELASTICITYUNIT - ,SHEARMODULUSUNIT - ,LINEARSTIFFNESSUNIT - ,ROTATIONALSTIFFNESSUNIT - ,MODULUSOFSUBGRADEREACTIONUNIT - ,ACCELERATIONUNIT - ,CURVATUREUNIT - ,HEATINGVALUEUNIT - ,IONCONCENTRATIONUNIT - ,LUMINOUSINTENSITYDISTRIBUTIONUNIT - ,MASSPERLENGTHUNIT - ,MODULUSOFLINEARSUBGRADEREACTIONUNIT - ,MODULUSOFROTATIONALSUBGRADEREACTIONUNIT - ,PHUNIT - ,ROTATIONALMASSUNIT - ,SECTIONAREAINTEGRALUNIT - ,SECTIONMODULUSUNIT - ,SOUNDPOWERLEVELUNIT - ,SOUNDPOWERUNIT - ,SOUNDPRESSURELEVELUNIT - ,SOUNDPRESSUREUNIT - ,TEMPERATUREGRADIENTUNIT - ,TEMPERATURERATEOFCHANGEUNIT - ,THERMALEXPANSIONCOEFFICIENTUNIT - ,WARPINGCONSTANTUNIT - ,WARPINGMOMENTUNIT - ,USERDEFINED); -END_TYPE; - -TYPE IfcDirectionSenseEnum = ENUMERATION OF - (POSITIVE - ,NEGATIVE); -END_TYPE; - -TYPE IfcDiscreteAccessoryTypeEnum = ENUMERATION OF - (ANCHORPLATE - ,BRACKET - ,SHOE - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcDistributionChamberElementTypeEnum = ENUMERATION OF - (FORMEDDUCT - ,INSPECTIONCHAMBER - ,INSPECTIONPIT - ,MANHOLE - ,METERCHAMBER - ,SUMP - ,TRENCH - ,VALVECHAMBER - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcDistributionPortTypeEnum = ENUMERATION OF - (CABLE - ,CABLECARRIER - ,DUCT - ,PIPE - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcDistributionSystemEnum = ENUMERATION OF - (AIRCONDITIONING - ,AUDIOVISUAL - ,CHEMICAL - ,CHILLEDWATER - ,COMMUNICATION - ,COMPRESSEDAIR - ,CONDENSERWATER - ,CONTROL - ,CONVEYING - ,DATA - ,DISPOSAL - ,DOMESTICCOLDWATER - ,DOMESTICHOTWATER - ,DRAINAGE - ,EARTHING - ,ELECTRICAL - ,ELECTROACOUSTIC - ,EXHAUST - ,FIREPROTECTION - ,FUEL - ,GAS - ,HAZARDOUS - ,HEATING - ,LIGHTING - ,LIGHTNINGPROTECTION - ,MUNICIPALSOLIDWASTE - ,OIL - ,OPERATIONAL - ,POWERGENERATION - ,RAINWATER - ,REFRIGERATION - ,SECURITY - ,SEWAGE - ,SIGNAL - ,STORMWATER - ,TELEPHONE - ,TV - ,VACUUM - ,VENT - ,VENTILATION - ,WASTEWATER - ,WATERSUPPLY - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcDocumentConfidentialityEnum = ENUMERATION OF - (PUBLIC - ,RESTRICTED - ,CONFIDENTIAL - ,PERSONAL - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcDocumentStatusEnum = ENUMERATION OF - (DRAFT - ,FINALDRAFT - ,FINAL - ,REVISION - ,NOTDEFINED); -END_TYPE; - -TYPE IfcDoorPanelOperationEnum = ENUMERATION OF - (SWINGING - ,DOUBLE_ACTING - ,SLIDING - ,FOLDING - ,REVOLVING - ,ROLLINGUP - ,FIXEDPANEL - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcDoorPanelPositionEnum = ENUMERATION OF - (LEFT - ,MIDDLE - ,RIGHT - ,NOTDEFINED); -END_TYPE; - -TYPE IfcDoorStyleConstructionEnum = ENUMERATION OF - (ALUMINIUM - ,HIGH_GRADE_STEEL - ,STEEL - ,WOOD - ,ALUMINIUM_WOOD - ,ALUMINIUM_PLASTIC - ,PLASTIC - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcDoorStyleOperationEnum = ENUMERATION OF - (SINGLE_SWING_LEFT - ,SINGLE_SWING_RIGHT - ,DOUBLE_DOOR_SINGLE_SWING - ,DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT - ,DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT - ,DOUBLE_SWING_LEFT - ,DOUBLE_SWING_RIGHT - ,DOUBLE_DOOR_DOUBLE_SWING - ,SLIDING_TO_LEFT - ,SLIDING_TO_RIGHT - ,DOUBLE_DOOR_SLIDING - ,FOLDING_TO_LEFT - ,FOLDING_TO_RIGHT - ,DOUBLE_DOOR_FOLDING - ,REVOLVING - ,ROLLINGUP - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcDoorTypeEnum = ENUMERATION OF - (DOOR - ,GATE - ,TRAPDOOR - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcDoorTypeOperationEnum = ENUMERATION OF - (SINGLE_SWING_LEFT - ,SINGLE_SWING_RIGHT - ,DOUBLE_DOOR_SINGLE_SWING - ,DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT - ,DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT - ,DOUBLE_SWING_LEFT - ,DOUBLE_SWING_RIGHT - ,DOUBLE_DOOR_DOUBLE_SWING - ,SLIDING_TO_LEFT - ,SLIDING_TO_RIGHT - ,DOUBLE_DOOR_SLIDING - ,FOLDING_TO_LEFT - ,FOLDING_TO_RIGHT - ,DOUBLE_DOOR_FOLDING - ,REVOLVING - ,ROLLINGUP - ,SWING_FIXED_LEFT - ,SWING_FIXED_RIGHT - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcDuctFittingTypeEnum = ENUMERATION OF - (BEND - ,CONNECTOR - ,ENTRY - ,EXIT - ,JUNCTION - ,OBSTRUCTION - ,TRANSITION - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcDuctSegmentTypeEnum = ENUMERATION OF - (RIGIDSEGMENT - ,FLEXIBLESEGMENT - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcDuctSilencerTypeEnum = ENUMERATION OF - (FLATOVAL - ,RECTANGULAR - ,ROUND - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcElectricApplianceTypeEnum = ENUMERATION OF - (DISHWASHER - ,ELECTRICCOOKER - ,FREESTANDINGELECTRICHEATER - ,FREESTANDINGFAN - ,FREESTANDINGWATERHEATER - ,FREESTANDINGWATERCOOLER - ,FREEZER - ,FRIDGE_FREEZER - ,HANDDRYER - ,KITCHENMACHINE - ,MICROWAVE - ,PHOTOCOPIER - ,REFRIGERATOR - ,TUMBLEDRYER - ,VENDINGMACHINE - ,WASHINGMACHINE - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcElectricDistributionBoardTypeEnum = ENUMERATION OF - (CONSUMERUNIT - ,DISTRIBUTIONBOARD - ,MOTORCONTROLCENTRE - ,SWITCHBOARD - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcElectricFlowStorageDeviceTypeEnum = ENUMERATION OF - (BATTERY - ,CAPACITORBANK - ,HARMONICFILTER - ,INDUCTORBANK - ,UPS - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcElectricGeneratorTypeEnum = ENUMERATION OF - (CHP - ,ENGINEGENERATOR - ,STANDALONE - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcElectricMotorTypeEnum = ENUMERATION OF - (DC - ,INDUCTION - ,POLYPHASE - ,RELUCTANCESYNCHRONOUS - ,SYNCHRONOUS - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcElectricTimeControlTypeEnum = ENUMERATION OF - (TIMECLOCK - ,TIMEDELAY - ,RELAY - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcElementAssemblyTypeEnum = ENUMERATION OF - (ACCESSORY_ASSEMBLY - ,ARCH - ,BEAM_GRID - ,BRACED_FRAME - ,GIRDER - ,REINFORCEMENT_UNIT - ,RIGID_FRAME - ,SLAB_FIELD - ,TRUSS - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcElementCompositionEnum = ENUMERATION OF - (COMPLEX - ,ELEMENT - ,PARTIAL); -END_TYPE; - -TYPE IfcEngineTypeEnum = ENUMERATION OF - (EXTERNALCOMBUSTION - ,INTERNALCOMBUSTION - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcEvaporativeCoolerTypeEnum = ENUMERATION OF - (DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER - ,DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER - ,DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER - ,DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER - ,DIRECTEVAPORATIVEAIRWASHER - ,INDIRECTEVAPORATIVEPACKAGEAIRCOOLER - ,INDIRECTEVAPORATIVEWETCOIL - ,INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER - ,INDIRECTDIRECTCOMBINATION - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcEvaporatorTypeEnum = ENUMERATION OF - (DIRECTEXPANSION - ,DIRECTEXPANSIONSHELLANDTUBE - ,DIRECTEXPANSIONTUBEINTUBE - ,DIRECTEXPANSIONBRAZEDPLATE - ,FLOODEDSHELLANDTUBE - ,SHELLANDCOIL - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcEventTriggerTypeEnum = ENUMERATION OF - (EVENTRULE - ,EVENTMESSAGE - ,EVENTTIME - ,EVENTCOMPLEX - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcEventTypeEnum = ENUMERATION OF - (STARTEVENT - ,ENDEVENT - ,INTERMEDIATEEVENT - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcExternalSpatialElementTypeEnum = ENUMERATION OF - (EXTERNAL - ,EXTERNAL_EARTH - ,EXTERNAL_WATER - ,EXTERNAL_FIRE - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcFanTypeEnum = ENUMERATION OF - (CENTRIFUGALFORWARDCURVED - ,CENTRIFUGALRADIAL - ,CENTRIFUGALBACKWARDINCLINEDCURVED - ,CENTRIFUGALAIRFOIL - ,TUBEAXIAL - ,VANEAXIAL - ,PROPELLORAXIAL - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcFastenerTypeEnum = ENUMERATION OF - (GLUE - ,MORTAR - ,WELD - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcFilterTypeEnum = ENUMERATION OF - (AIRPARTICLEFILTER - ,COMPRESSEDAIRFILTER - ,ODORFILTER - ,OILFILTER - ,STRAINER - ,WATERFILTER - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcFireSuppressionTerminalTypeEnum = ENUMERATION OF - (BREECHINGINLET - ,FIREHYDRANT - ,HOSEREEL - ,SPRINKLER - ,SPRINKLERDEFLECTOR - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcFlowDirectionEnum = ENUMERATION OF - (SOURCE - ,SINK - ,SOURCEANDSINK - ,NOTDEFINED); -END_TYPE; - -TYPE IfcFlowInstrumentTypeEnum = ENUMERATION OF - (PRESSUREGAUGE - ,THERMOMETER - ,AMMETER - ,FREQUENCYMETER - ,POWERFACTORMETER - ,PHASEANGLEMETER - ,VOLTMETER_PEAK - ,VOLTMETER_RMS - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcFlowMeterTypeEnum = ENUMERATION OF - (ENERGYMETER - ,GASMETER - ,OILMETER - ,WATERMETER - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcFootingTypeEnum = ENUMERATION OF - (CAISSON_FOUNDATION - ,FOOTING_BEAM - ,PAD_FOOTING - ,PILE_CAP - ,STRIP_FOOTING - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcFurnitureTypeEnum = ENUMERATION OF - (CHAIR - ,TABLE - ,DESK - ,BED - ,FILECABINET - ,SHELF - ,SOFA - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcGeographicElementTypeEnum = ENUMERATION OF - (TERRAIN - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcGeometricProjectionEnum = ENUMERATION OF - (GRAPH_VIEW - ,SKETCH_VIEW - ,MODEL_VIEW - ,PLAN_VIEW - ,REFLECTED_PLAN_VIEW - ,SECTION_VIEW - ,ELEVATION_VIEW - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcGlobalOrLocalEnum = ENUMERATION OF - (GLOBAL_COORDS - ,LOCAL_COORDS); -END_TYPE; - -TYPE IfcGridTypeEnum = ENUMERATION OF - (RECTANGULAR - ,RADIAL - ,TRIANGULAR - ,IRREGULAR - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcHeatExchangerTypeEnum = ENUMERATION OF - (PLATE - ,SHELLANDTUBE - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcHumidifierTypeEnum = ENUMERATION OF - (STEAMINJECTION - ,ADIABATICAIRWASHER - ,ADIABATICPAN - ,ADIABATICWETTEDELEMENT - ,ADIABATICATOMIZING - ,ADIABATICULTRASONIC - ,ADIABATICRIGIDMEDIA - ,ADIABATICCOMPRESSEDAIRNOZZLE - ,ASSISTEDELECTRIC - ,ASSISTEDNATURALGAS - ,ASSISTEDPROPANE - ,ASSISTEDBUTANE - ,ASSISTEDSTEAM - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcInterceptorTypeEnum = ENUMERATION OF - (CYCLONIC - ,GREASE - ,OIL - ,PETROL - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcInternalOrExternalEnum = ENUMERATION OF - (INTERNAL - ,EXTERNAL - ,EXTERNAL_EARTH - ,EXTERNAL_WATER - ,EXTERNAL_FIRE - ,NOTDEFINED); -END_TYPE; - -TYPE IfcInventoryTypeEnum = ENUMERATION OF - (ASSETINVENTORY - ,SPACEINVENTORY - ,FURNITUREINVENTORY - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcJunctionBoxTypeEnum = ENUMERATION OF - (DATA - ,POWER - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcKnotType = ENUMERATION OF - (UNIFORM_KNOTS - ,QUASI_UNIFORM_KNOTS - ,PIECEWISE_BEZIER_KNOTS - ,UNSPECIFIED); -END_TYPE; - -TYPE IfcLaborResourceTypeEnum = ENUMERATION OF - (ADMINISTRATION - ,CARPENTRY - ,CLEANING - ,CONCRETE - ,DRYWALL - ,ELECTRIC - ,FINISHING - ,FLOORING - ,GENERAL - ,HVAC - ,LANDSCAPING - ,MASONRY - ,PAINTING - ,PAVING - ,PLUMBING - ,ROOFING - ,SITEGRADING - ,STEELWORK - ,SURVEYING - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcLampTypeEnum = ENUMERATION OF - (COMPACTFLUORESCENT - ,FLUORESCENT - ,HALOGEN - ,HIGHPRESSUREMERCURY - ,HIGHPRESSURESODIUM - ,LED - ,METALHALIDE - ,OLED - ,TUNGSTENFILAMENT - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcLayerSetDirectionEnum = ENUMERATION OF - (AXIS1 - ,AXIS2 - ,AXIS3); -END_TYPE; - -TYPE IfcLightDistributionCurveEnum = ENUMERATION OF - (TYPE_A - ,TYPE_B - ,TYPE_C - ,NOTDEFINED); -END_TYPE; - -TYPE IfcLightEmissionSourceEnum = ENUMERATION OF - (COMPACTFLUORESCENT - ,FLUORESCENT - ,HIGHPRESSUREMERCURY - ,HIGHPRESSURESODIUM - ,LIGHTEMITTINGDIODE - ,LOWPRESSURESODIUM - ,LOWVOLTAGEHALOGEN - ,MAINVOLTAGEHALOGEN - ,METALHALIDE - ,TUNGSTENFILAMENT - ,NOTDEFINED); -END_TYPE; - -TYPE IfcLightFixtureTypeEnum = ENUMERATION OF - (POINTSOURCE - ,DIRECTIONSOURCE - ,SECURITYLIGHTING - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcLoadGroupTypeEnum = ENUMERATION OF - (LOAD_GROUP - ,LOAD_CASE - ,LOAD_COMBINATION - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcLogicalOperatorEnum = ENUMERATION OF - (LOGICALAND - ,LOGICALOR - ,LOGICALXOR - ,LOGICALNOTAND - ,LOGICALNOTOR); -END_TYPE; - -TYPE IfcMechanicalFastenerTypeEnum = ENUMERATION OF - (ANCHORBOLT - ,BOLT - ,DOWEL - ,NAIL - ,NAILPLATE - ,RIVET - ,SCREW - ,SHEARCONNECTOR - ,STAPLE - ,STUDSHEARCONNECTOR - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcMedicalDeviceTypeEnum = ENUMERATION OF - (AIRSTATION - ,FEEDAIRUNIT - ,OXYGENGENERATOR - ,OXYGENPLANT - ,VACUUMSTATION - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcMemberTypeEnum = ENUMERATION OF - (BRACE - ,CHORD - ,COLLAR - ,MEMBER - ,MULLION - ,PLATE - ,POST - ,PURLIN - ,RAFTER - ,STRINGER - ,STRUT - ,STUD - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcMotorConnectionTypeEnum = ENUMERATION OF - (BELTDRIVE - ,COUPLING - ,DIRECTDRIVE - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcNullStyle = ENUMERATION OF - (NULL); -END_TYPE; - -TYPE IfcObjectTypeEnum = ENUMERATION OF - (PRODUCT - ,PROCESS - ,CONTROL - ,RESOURCE - ,ACTOR - ,GROUP - ,PROJECT - ,NOTDEFINED); -END_TYPE; - -TYPE IfcObjectiveEnum = ENUMERATION OF - (CODECOMPLIANCE - ,CODEWAIVER - ,DESIGNINTENT - ,EXTERNAL - ,HEALTHANDSAFETY - ,MERGECONFLICT - ,MODELVIEW - ,PARAMETER - ,REQUIREMENT - ,SPECIFICATION - ,TRIGGERCONDITION - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcOccupantTypeEnum = ENUMERATION OF - (ASSIGNEE - ,ASSIGNOR - ,LESSEE - ,LESSOR - ,LETTINGAGENT - ,OWNER - ,TENANT - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcOpeningElementTypeEnum = ENUMERATION OF - (OPENING - ,RECESS - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcOutletTypeEnum = ENUMERATION OF - (AUDIOVISUALOUTLET - ,COMMUNICATIONSOUTLET - ,POWEROUTLET - ,DATAOUTLET - ,TELEPHONEOUTLET - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcPerformanceHistoryTypeEnum = ENUMERATION OF - (USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcPermeableCoveringOperationEnum = ENUMERATION OF - (GRILL - ,LOUVER - ,SCREEN - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcPermitTypeEnum = ENUMERATION OF - (ACCESS - ,BUILDING - ,WORK - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcPhysicalOrVirtualEnum = ENUMERATION OF - (PHYSICAL - ,VIRTUAL - ,NOTDEFINED); -END_TYPE; - -TYPE IfcPileConstructionEnum = ENUMERATION OF - (CAST_IN_PLACE - ,COMPOSITE - ,PRECAST_CONCRETE - ,PREFAB_STEEL - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcPileTypeEnum = ENUMERATION OF - (BORED - ,DRIVEN - ,JETGROUTING - ,COHESION - ,FRICTION - ,SUPPORT - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcPipeFittingTypeEnum = ENUMERATION OF - (BEND - ,CONNECTOR - ,ENTRY - ,EXIT - ,JUNCTION - ,OBSTRUCTION - ,TRANSITION - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcPipeSegmentTypeEnum = ENUMERATION OF - (CULVERT - ,FLEXIBLESEGMENT - ,RIGIDSEGMENT - ,GUTTER - ,SPOOL - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcPlateTypeEnum = ENUMERATION OF - (CURTAIN_PANEL - ,SHEET - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcPreferredSurfaceCurveRepresentation = ENUMERATION OF - (CURVE3D - ,PCURVE_S1 - ,PCURVE_S2); -END_TYPE; - -TYPE IfcProcedureTypeEnum = ENUMERATION OF - (ADVICE_CAUTION - ,ADVICE_NOTE - ,ADVICE_WARNING - ,CALIBRATION - ,DIAGNOSTIC - ,SHUTDOWN - ,STARTUP - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcProfileTypeEnum = ENUMERATION OF - (CURVE - ,AREA); -END_TYPE; - -TYPE IfcProjectOrderTypeEnum = ENUMERATION OF - (CHANGEORDER - ,MAINTENANCEWORKORDER - ,MOVEORDER - ,PURCHASEORDER - ,WORKORDER - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcProjectedOrTrueLengthEnum = ENUMERATION OF - (PROJECTED_LENGTH - ,TRUE_LENGTH); -END_TYPE; - -TYPE IfcProjectionElementTypeEnum = ENUMERATION OF - (USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcPropertySetTemplateTypeEnum = ENUMERATION OF - (PSET_TYPEDRIVENONLY - ,PSET_TYPEDRIVENOVERRIDE - ,PSET_OCCURRENCEDRIVEN - ,PSET_PERFORMANCEDRIVEN - ,QTO_TYPEDRIVENONLY - ,QTO_TYPEDRIVENOVERRIDE - ,QTO_OCCURRENCEDRIVEN - ,NOTDEFINED); -END_TYPE; - -TYPE IfcProtectiveDeviceTrippingUnitTypeEnum = ENUMERATION OF - (ELECTRONIC - ,ELECTROMAGNETIC - ,RESIDUALCURRENT - ,THERMAL - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcProtectiveDeviceTypeEnum = ENUMERATION OF - (CIRCUITBREAKER - ,EARTHLEAKAGECIRCUITBREAKER - ,EARTHINGSWITCH - ,FUSEDISCONNECTOR - ,RESIDUALCURRENTCIRCUITBREAKER - ,RESIDUALCURRENTSWITCH - ,VARISTOR - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcPumpTypeEnum = ENUMERATION OF - (CIRCULATOR - ,ENDSUCTION - ,SPLITCASE - ,SUBMERSIBLEPUMP - ,SUMPPUMP - ,VERTICALINLINE - ,VERTICALTURBINE - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcRailingTypeEnum = ENUMERATION OF - (HANDRAIL - ,GUARDRAIL - ,BALUSTRADE - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcRampFlightTypeEnum = ENUMERATION OF - (STRAIGHT - ,SPIRAL - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcRampTypeEnum = ENUMERATION OF - (STRAIGHT_RUN_RAMP - ,TWO_STRAIGHT_RUN_RAMP - ,QUARTER_TURN_RAMP - ,TWO_QUARTER_TURN_RAMP - ,HALF_TURN_RAMP - ,SPIRAL_RAMP - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcRecurrenceTypeEnum = ENUMERATION OF - (DAILY - ,WEEKLY - ,MONTHLY_BY_DAY_OF_MONTH - ,MONTHLY_BY_POSITION - ,BY_DAY_COUNT - ,BY_WEEKDAY_COUNT - ,YEARLY_BY_DAY_OF_MONTH - ,YEARLY_BY_POSITION); -END_TYPE; - -TYPE IfcReflectanceMethodEnum = ENUMERATION OF - (BLINN - ,FLAT - ,GLASS - ,MATT - ,METAL - ,MIRROR - ,PHONG - ,PLASTIC - ,STRAUSS - ,NOTDEFINED); -END_TYPE; - -TYPE IfcReinforcingBarRoleEnum = ENUMERATION OF - (MAIN - ,SHEAR - ,LIGATURE - ,STUD - ,PUNCHING - ,EDGE - ,RING - ,ANCHORING - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcReinforcingBarSurfaceEnum = ENUMERATION OF - (PLAIN - ,TEXTURED); -END_TYPE; - -TYPE IfcReinforcingBarTypeEnum = ENUMERATION OF - (ANCHORING - ,EDGE - ,LIGATURE - ,MAIN - ,PUNCHING - ,RING - ,SHEAR - ,STUD - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcReinforcingMeshTypeEnum = ENUMERATION OF - (USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcRoleEnum = ENUMERATION OF - (SUPPLIER - ,MANUFACTURER - ,CONTRACTOR - ,SUBCONTRACTOR - ,ARCHITECT - ,STRUCTURALENGINEER - ,COSTENGINEER - ,CLIENT - ,BUILDINGOWNER - ,BUILDINGOPERATOR - ,MECHANICALENGINEER - ,ELECTRICALENGINEER - ,PROJECTMANAGER - ,FACILITIESMANAGER - ,CIVILENGINEER - ,COMMISSIONINGENGINEER - ,ENGINEER - ,OWNER - ,CONSULTANT - ,CONSTRUCTIONMANAGER - ,FIELDCONSTRUCTIONMANAGER - ,RESELLER - ,USERDEFINED); -END_TYPE; - -TYPE IfcRoofTypeEnum = ENUMERATION OF - (FLAT_ROOF - ,SHED_ROOF - ,GABLE_ROOF - ,HIP_ROOF - ,HIPPED_GABLE_ROOF - ,GAMBREL_ROOF - ,MANSARD_ROOF - ,BARREL_ROOF - ,RAINBOW_ROOF - ,BUTTERFLY_ROOF - ,PAVILION_ROOF - ,DOME_ROOF - ,FREEFORM - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcSIPrefix = ENUMERATION OF - (EXA - ,PETA - ,TERA - ,GIGA - ,MEGA - ,KILO - ,HECTO - ,DECA - ,DECI - ,CENTI - ,MILLI - ,MICRO - ,NANO - ,PICO - ,FEMTO - ,ATTO); -END_TYPE; - -TYPE IfcSIUnitName = ENUMERATION OF - (AMPERE - ,BECQUEREL - ,CANDELA - ,COULOMB - ,CUBIC_METRE - ,DEGREE_CELSIUS - ,FARAD - ,GRAM - ,GRAY - ,HENRY - ,HERTZ - ,JOULE - ,KELVIN - ,LUMEN - ,LUX - ,METRE - ,MOLE - ,NEWTON - ,OHM - ,PASCAL - ,RADIAN - ,SECOND - ,SIEMENS - ,SIEVERT - ,SQUARE_METRE - ,STERADIAN - ,TESLA - ,VOLT - ,WATT - ,WEBER); -END_TYPE; - -TYPE IfcSanitaryTerminalTypeEnum = ENUMERATION OF - (BATH - ,BIDET - ,CISTERN - ,SHOWER - ,SINK - ,SANITARYFOUNTAIN - ,TOILETPAN - ,URINAL - ,WASHHANDBASIN - ,WCSEAT - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcSectionTypeEnum = ENUMERATION OF - (UNIFORM - ,TAPERED); -END_TYPE; - -TYPE IfcSensorTypeEnum = ENUMERATION OF - (COSENSOR - ,CO2SENSOR - ,CONDUCTANCESENSOR - ,CONTACTSENSOR - ,FIRESENSOR - ,FLOWSENSOR - ,FROSTSENSOR - ,GASSENSOR - ,HEATSENSOR - ,HUMIDITYSENSOR - ,IDENTIFIERSENSOR - ,IONCONCENTRATIONSENSOR - ,LEVELSENSOR - ,LIGHTSENSOR - ,MOISTURESENSOR - ,MOVEMENTSENSOR - ,PHSENSOR - ,PRESSURESENSOR - ,RADIATIONSENSOR - ,RADIOACTIVITYSENSOR - ,SMOKESENSOR - ,SOUNDSENSOR - ,TEMPERATURESENSOR - ,WINDSENSOR - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcSequenceEnum = ENUMERATION OF - (START_START - ,START_FINISH - ,FINISH_START - ,FINISH_FINISH - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcShadingDeviceTypeEnum = ENUMERATION OF - (JALOUSIE - ,SHUTTER - ,AWNING - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcSimplePropertyTemplateTypeEnum = ENUMERATION OF - (P_SINGLEVALUE - ,P_ENUMERATEDVALUE - ,P_BOUNDEDVALUE - ,P_LISTVALUE - ,P_TABLEVALUE - ,P_REFERENCEVALUE - ,Q_LENGTH - ,Q_AREA - ,Q_VOLUME - ,Q_COUNT - ,Q_WEIGHT - ,Q_TIME); -END_TYPE; - -TYPE IfcSlabTypeEnum = ENUMERATION OF - (FLOOR - ,ROOF - ,LANDING - ,BASESLAB - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcSolarDeviceTypeEnum = ENUMERATION OF - (SOLARCOLLECTOR - ,SOLARPANEL - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcSpaceHeaterTypeEnum = ENUMERATION OF - (CONVECTOR - ,RADIATOR - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcSpaceTypeEnum = ENUMERATION OF - (SPACE - ,PARKING - ,GFA - ,INTERNAL - ,EXTERNAL - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcSpatialZoneTypeEnum = ENUMERATION OF - (CONSTRUCTION - ,FIRESAFETY - ,LIGHTING - ,OCCUPANCY - ,SECURITY - ,THERMAL - ,TRANSPORT - ,VENTILATION - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcStackTerminalTypeEnum = ENUMERATION OF - (BIRDCAGE - ,COWL - ,RAINWATERHOPPER - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcStairFlightTypeEnum = ENUMERATION OF - (STRAIGHT - ,WINDER - ,SPIRAL - ,CURVED - ,FREEFORM - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcStairTypeEnum = ENUMERATION OF - (STRAIGHT_RUN_STAIR - ,TWO_STRAIGHT_RUN_STAIR - ,QUARTER_WINDING_STAIR - ,QUARTER_TURN_STAIR - ,HALF_WINDING_STAIR - ,HALF_TURN_STAIR - ,TWO_QUARTER_WINDING_STAIR - ,TWO_QUARTER_TURN_STAIR - ,THREE_QUARTER_WINDING_STAIR - ,THREE_QUARTER_TURN_STAIR - ,SPIRAL_STAIR - ,DOUBLE_RETURN_STAIR - ,CURVED_RUN_STAIR - ,TWO_CURVED_RUN_STAIR - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcStateEnum = ENUMERATION OF - (READWRITE - ,READONLY - ,LOCKED - ,READWRITELOCKED - ,READONLYLOCKED); -END_TYPE; - -TYPE IfcStructuralCurveActivityTypeEnum = ENUMERATION OF - (CONST - ,LINEAR - ,POLYGONAL - ,EQUIDISTANT - ,SINUS - ,PARABOLA - ,DISCRETE - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcStructuralCurveMemberTypeEnum = ENUMERATION OF - (RIGID_JOINED_MEMBER - ,PIN_JOINED_MEMBER - ,CABLE - ,TENSION_MEMBER - ,COMPRESSION_MEMBER - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcStructuralSurfaceActivityTypeEnum = ENUMERATION OF - (CONST - ,BILINEAR - ,DISCRETE - ,ISOCONTOUR - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcStructuralSurfaceMemberTypeEnum = ENUMERATION OF - (BENDING_ELEMENT - ,MEMBRANE_ELEMENT - ,SHELL - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcSubContractResourceTypeEnum = ENUMERATION OF - (PURCHASE - ,WORK - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcSurfaceFeatureTypeEnum = ENUMERATION OF - (MARK - ,TAG - ,TREATMENT - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcSurfaceSide = ENUMERATION OF - (POSITIVE - ,NEGATIVE - ,BOTH); -END_TYPE; - -TYPE IfcSwitchingDeviceTypeEnum = ENUMERATION OF - (CONTACTOR - ,DIMMERSWITCH - ,EMERGENCYSTOP - ,KEYPAD - ,MOMENTARYSWITCH - ,SELECTORSWITCH - ,STARTER - ,SWITCHDISCONNECTOR - ,TOGGLESWITCH - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcSystemFurnitureElementTypeEnum = ENUMERATION OF - (PANEL - ,WORKSURFACE - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcTankTypeEnum = ENUMERATION OF - (BASIN - ,BREAKPRESSURE - ,EXPANSION - ,FEEDANDEXPANSION - ,PRESSUREVESSEL - ,STORAGE - ,VESSEL - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcTaskDurationEnum = ENUMERATION OF - (ELAPSEDTIME - ,WORKTIME - ,NOTDEFINED); -END_TYPE; - -TYPE IfcTaskTypeEnum = ENUMERATION OF - (ATTENDANCE - ,CONSTRUCTION - ,DEMOLITION - ,DISMANTLE - ,DISPOSAL - ,INSTALLATION - ,LOGISTIC - ,MAINTENANCE - ,MOVE - ,OPERATION - ,REMOVAL - ,RENOVATION - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcTendonAnchorTypeEnum = ENUMERATION OF - (COUPLER - ,FIXED_END - ,TENSIONING_END - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcTendonTypeEnum = ENUMERATION OF - (BAR - ,COATED - ,STRAND - ,WIRE - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcTextPath = ENUMERATION OF - (LEFT - ,RIGHT - ,UP - ,DOWN); -END_TYPE; - -TYPE IfcTimeSeriesDataTypeEnum = ENUMERATION OF - (CONTINUOUS - ,DISCRETE - ,DISCRETEBINARY - ,PIECEWISEBINARY - ,PIECEWISECONSTANT - ,PIECEWISECONTINUOUS - ,NOTDEFINED); -END_TYPE; - -TYPE IfcTransformerTypeEnum = ENUMERATION OF - (CURRENT - ,FREQUENCY - ,INVERTER - ,RECTIFIER - ,VOLTAGE - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcTransitionCode = ENUMERATION OF - (DISCONTINUOUS - ,CONTINUOUS - ,CONTSAMEGRADIENT - ,CONTSAMEGRADIENTSAMECURVATURE); -END_TYPE; - -TYPE IfcTransportElementTypeEnum = ENUMERATION OF - (ELEVATOR - ,ESCALATOR - ,MOVINGWALKWAY - ,CRANEWAY - ,LIFTINGGEAR - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcTrimmingPreference = ENUMERATION OF - (CARTESIAN - ,PARAMETER - ,UNSPECIFIED); -END_TYPE; - -TYPE IfcTubeBundleTypeEnum = ENUMERATION OF - (FINNED - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcUnitEnum = ENUMERATION OF - (ABSORBEDDOSEUNIT - ,AMOUNTOFSUBSTANCEUNIT - ,AREAUNIT - ,DOSEEQUIVALENTUNIT - ,ELECTRICCAPACITANCEUNIT - ,ELECTRICCHARGEUNIT - ,ELECTRICCONDUCTANCEUNIT - ,ELECTRICCURRENTUNIT - ,ELECTRICRESISTANCEUNIT - ,ELECTRICVOLTAGEUNIT - ,ENERGYUNIT - ,FORCEUNIT - ,FREQUENCYUNIT - ,ILLUMINANCEUNIT - ,INDUCTANCEUNIT - ,LENGTHUNIT - ,LUMINOUSFLUXUNIT - ,LUMINOUSINTENSITYUNIT - ,MAGNETICFLUXDENSITYUNIT - ,MAGNETICFLUXUNIT - ,MASSUNIT - ,PLANEANGLEUNIT - ,POWERUNIT - ,PRESSUREUNIT - ,RADIOACTIVITYUNIT - ,SOLIDANGLEUNIT - ,THERMODYNAMICTEMPERATUREUNIT - ,TIMEUNIT - ,VOLUMEUNIT - ,USERDEFINED); -END_TYPE; - -TYPE IfcUnitaryControlElementTypeEnum = ENUMERATION OF - (ALARMPANEL - ,CONTROLPANEL - ,GASDETECTIONPANEL - ,INDICATORPANEL - ,MIMICPANEL - ,HUMIDISTAT - ,THERMOSTAT - ,WEATHERSTATION - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcUnitaryEquipmentTypeEnum = ENUMERATION OF - (AIRHANDLER - ,AIRCONDITIONINGUNIT - ,DEHUMIDIFIER - ,SPLITSYSTEM - ,ROOFTOPUNIT - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcValveTypeEnum = ENUMERATION OF - (AIRRELEASE - ,ANTIVACUUM - ,CHANGEOVER - ,CHECK - ,COMMISSIONING - ,DIVERTING - ,DRAWOFFCOCK - ,DOUBLECHECK - ,DOUBLEREGULATING - ,FAUCET - ,FLUSHING - ,GASCOCK - ,GASTAP - ,ISOLATING - ,MIXING - ,PRESSUREREDUCING - ,PRESSURERELIEF - ,REGULATING - ,SAFETYCUTOFF - ,STEAMTRAP - ,STOPCOCK - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcVibrationIsolatorTypeEnum = ENUMERATION OF - (COMPRESSION - ,SPRING - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcVoidingFeatureTypeEnum = ENUMERATION OF - (CUTOUT - ,NOTCH - ,HOLE - ,MITER - ,CHAMFER - ,EDGE - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcWallTypeEnum = ENUMERATION OF - (MOVABLE - ,PARAPET - ,PARTITIONING - ,PLUMBINGWALL - ,SHEAR - ,SOLIDWALL - ,STANDARD - ,POLYGONAL - ,ELEMENTEDWALL - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcWasteTerminalTypeEnum = ENUMERATION OF - (FLOORTRAP - ,FLOORWASTE - ,GULLYSUMP - ,GULLYTRAP - ,ROOFDRAIN - ,WASTEDISPOSALUNIT - ,WASTETRAP - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcWindowPanelOperationEnum = ENUMERATION OF - (SIDEHUNGRIGHTHAND - ,SIDEHUNGLEFTHAND - ,TILTANDTURNRIGHTHAND - ,TILTANDTURNLEFTHAND - ,TOPHUNG - ,BOTTOMHUNG - ,PIVOTHORIZONTAL - ,PIVOTVERTICAL - ,SLIDINGHORIZONTAL - ,SLIDINGVERTICAL - ,REMOVABLECASEMENT - ,FIXEDCASEMENT - ,OTHEROPERATION - ,NOTDEFINED); -END_TYPE; - -TYPE IfcWindowPanelPositionEnum = ENUMERATION OF - (LEFT - ,MIDDLE - ,RIGHT - ,BOTTOM - ,TOP - ,NOTDEFINED); -END_TYPE; - -TYPE IfcWindowStyleConstructionEnum = ENUMERATION OF - (ALUMINIUM - ,HIGH_GRADE_STEEL - ,STEEL - ,WOOD - ,ALUMINIUM_WOOD - ,PLASTIC - ,OTHER_CONSTRUCTION - ,NOTDEFINED); -END_TYPE; - -TYPE IfcWindowStyleOperationEnum = ENUMERATION OF - (SINGLE_PANEL - ,DOUBLE_PANEL_VERTICAL - ,DOUBLE_PANEL_HORIZONTAL - ,TRIPLE_PANEL_VERTICAL - ,TRIPLE_PANEL_BOTTOM - ,TRIPLE_PANEL_TOP - ,TRIPLE_PANEL_LEFT - ,TRIPLE_PANEL_RIGHT - ,TRIPLE_PANEL_HORIZONTAL - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcWindowTypeEnum = ENUMERATION OF - (WINDOW - ,SKYLIGHT - ,LIGHTDOME - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcWindowTypePartitioningEnum = ENUMERATION OF - (SINGLE_PANEL - ,DOUBLE_PANEL_VERTICAL - ,DOUBLE_PANEL_HORIZONTAL - ,TRIPLE_PANEL_VERTICAL - ,TRIPLE_PANEL_BOTTOM - ,TRIPLE_PANEL_TOP - ,TRIPLE_PANEL_LEFT - ,TRIPLE_PANEL_RIGHT - ,TRIPLE_PANEL_HORIZONTAL - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcWorkCalendarTypeEnum = ENUMERATION OF - (FIRSTSHIFT - ,SECONDSHIFT - ,THIRDSHIFT - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcWorkPlanTypeEnum = ENUMERATION OF - (ACTUAL - ,BASELINE - ,PLANNED - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcWorkScheduleTypeEnum = ENUMERATION OF - (ACTUAL - ,BASELINE - ,PLANNED - ,USERDEFINED - ,NOTDEFINED); -END_TYPE; - -TYPE IfcActorSelect = SELECT - (IfcOrganization - ,IfcPerson - ,IfcPersonAndOrganization); -END_TYPE; - -TYPE IfcAppliedValueSelect = SELECT - (IfcMeasureWithUnit - ,IfcReference - ,IfcValue); -END_TYPE; - -TYPE IfcAxis2Placement = SELECT - (IfcAxis2Placement2D - ,IfcAxis2Placement3D); -END_TYPE; - -TYPE IfcBendingParameterSelect = SELECT - (IfcLengthMeasure - ,IfcPlaneAngleMeasure); -END_TYPE; - -TYPE IfcBooleanOperand = SELECT - (IfcBooleanResult - ,IfcCsgPrimitive3D - ,IfcHalfSpaceSolid - ,IfcSolidModel - ,IfcTessellatedFaceSet); -END_TYPE; - -TYPE IfcClassificationReferenceSelect = SELECT - (IfcClassification - ,IfcClassificationReference); -END_TYPE; - -TYPE IfcClassificationSelect = SELECT - (IfcClassification - ,IfcClassificationReference); -END_TYPE; - -TYPE IfcColour = SELECT - (IfcColourSpecification - ,IfcPreDefinedColour); -END_TYPE; - -TYPE IfcColourOrFactor = SELECT - (IfcColourRgb - ,IfcNormalisedRatioMeasure); -END_TYPE; - -TYPE IfcCoordinateReferenceSystemSelect = SELECT - (IfcCoordinateReferenceSystem - ,IfcGeometricRepresentationContext); -END_TYPE; - -TYPE IfcCsgSelect = SELECT - (IfcBooleanResult - ,IfcCsgPrimitive3D); -END_TYPE; - -TYPE IfcCurveFontOrScaledCurveFontSelect = SELECT - (IfcCurveStyleFontAndScaling - ,IfcCurveStyleFontSelect); -END_TYPE; - -TYPE IfcCurveOnSurface = SELECT - (IfcCompositeCurveOnSurface - ,IfcPcurve - ,IfcSurfaceCurve); -END_TYPE; - -TYPE IfcCurveOrEdgeCurve = SELECT - (IfcBoundedCurve - ,IfcEdgeCurve); -END_TYPE; - -TYPE IfcCurveStyleFontSelect = SELECT - (IfcCurveStyleFont - ,IfcPreDefinedCurveFont); -END_TYPE; - -TYPE IfcDefinitionSelect = SELECT - (IfcObjectDefinition - ,IfcPropertyDefinition); -END_TYPE; - -TYPE IfcDerivedMeasureValue = SELECT - (IfcAbsorbedDoseMeasure - ,IfcAccelerationMeasure - ,IfcAngularVelocityMeasure - ,IfcAreaDensityMeasure - ,IfcCompoundPlaneAngleMeasure - ,IfcCurvatureMeasure - ,IfcDoseEquivalentMeasure - ,IfcDynamicViscosityMeasure - ,IfcElectricCapacitanceMeasure - ,IfcElectricChargeMeasure - ,IfcElectricConductanceMeasure - ,IfcElectricResistanceMeasure - ,IfcElectricVoltageMeasure - ,IfcEnergyMeasure - ,IfcForceMeasure - ,IfcFrequencyMeasure - ,IfcHeatFluxDensityMeasure - ,IfcHeatingValueMeasure - ,IfcIlluminanceMeasure - ,IfcInductanceMeasure - ,IfcIntegerCountRateMeasure - ,IfcIonConcentrationMeasure - ,IfcIsothermalMoistureCapacityMeasure - ,IfcKinematicViscosityMeasure - ,IfcLinearForceMeasure - ,IfcLinearMomentMeasure - ,IfcLinearStiffnessMeasure - ,IfcLinearVelocityMeasure - ,IfcLuminousFluxMeasure - ,IfcLuminousIntensityDistributionMeasure - ,IfcMagneticFluxDensityMeasure - ,IfcMagneticFluxMeasure - ,IfcMassDensityMeasure - ,IfcMassFlowRateMeasure - ,IfcMassPerLengthMeasure - ,IfcModulusOfElasticityMeasure - ,IfcModulusOfLinearSubgradeReactionMeasure - ,IfcModulusOfRotationalSubgradeReactionMeasure - ,IfcModulusOfSubgradeReactionMeasure - ,IfcMoistureDiffusivityMeasure - ,IfcMolecularWeightMeasure - ,IfcMomentOfInertiaMeasure - ,IfcMonetaryMeasure - ,IfcPHMeasure - ,IfcPlanarForceMeasure - ,IfcPowerMeasure - ,IfcPressureMeasure - ,IfcRadioActivityMeasure - ,IfcRotationalFrequencyMeasure - ,IfcRotationalMassMeasure - ,IfcRotationalStiffnessMeasure - ,IfcSectionModulusMeasure - ,IfcSectionalAreaIntegralMeasure - ,IfcShearModulusMeasure - ,IfcSoundPowerLevelMeasure - ,IfcSoundPowerMeasure - ,IfcSoundPressureLevelMeasure - ,IfcSoundPressureMeasure - ,IfcSpecificHeatCapacityMeasure - ,IfcTemperatureGradientMeasure - ,IfcTemperatureRateOfChangeMeasure - ,IfcThermalAdmittanceMeasure - ,IfcThermalConductivityMeasure - ,IfcThermalExpansionCoefficientMeasure - ,IfcThermalResistanceMeasure - ,IfcThermalTransmittanceMeasure - ,IfcTorqueMeasure - ,IfcVaporPermeabilityMeasure - ,IfcVolumetricFlowRateMeasure - ,IfcWarpingConstantMeasure - ,IfcWarpingMomentMeasure); -END_TYPE; - -TYPE IfcDocumentSelect = SELECT - (IfcDocumentInformation - ,IfcDocumentReference); -END_TYPE; - -TYPE IfcFillStyleSelect = SELECT - (IfcColour - ,IfcExternallyDefinedHatchStyle - ,IfcFillAreaStyleHatching - ,IfcFillAreaStyleTiles); -END_TYPE; - -TYPE IfcGeometricSetSelect = SELECT - (IfcCurve - ,IfcPoint - ,IfcSurface); -END_TYPE; - -TYPE IfcGridPlacementDirectionSelect = SELECT - (IfcDirection - ,IfcVirtualGridIntersection); -END_TYPE; - -TYPE IfcHatchLineDistanceSelect = SELECT - (IfcPositiveLengthMeasure - ,IfcVector); -END_TYPE; - -TYPE IfcLayeredItem = SELECT - (IfcRepresentation - ,IfcRepresentationItem); -END_TYPE; - -TYPE IfcLibrarySelect = SELECT - (IfcLibraryInformation - ,IfcLibraryReference); -END_TYPE; - -TYPE IfcLightDistributionDataSourceSelect = SELECT - (IfcExternalReference - ,IfcLightIntensityDistribution); -END_TYPE; - -TYPE IfcMaterialSelect = SELECT - (IfcMaterialDefinition - ,IfcMaterialList - ,IfcMaterialUsageDefinition); -END_TYPE; - -TYPE IfcMeasureValue = SELECT - (IfcAmountOfSubstanceMeasure - ,IfcAreaMeasure - ,IfcComplexNumber - ,IfcContextDependentMeasure - ,IfcCountMeasure - ,IfcDescriptiveMeasure - ,IfcElectricCurrentMeasure - ,IfcLengthMeasure - ,IfcLuminousIntensityMeasure - ,IfcMassMeasure - ,IfcNonNegativeLengthMeasure - ,IfcNormalisedRatioMeasure - ,IfcNumericMeasure - ,IfcParameterValue - ,IfcPlaneAngleMeasure - ,IfcPositiveLengthMeasure - ,IfcPositivePlaneAngleMeasure - ,IfcPositiveRatioMeasure - ,IfcRatioMeasure - ,IfcSolidAngleMeasure - ,IfcThermodynamicTemperatureMeasure - ,IfcTimeMeasure - ,IfcVolumeMeasure); -END_TYPE; - -TYPE IfcMetricValueSelect = SELECT - (IfcAppliedValue - ,IfcMeasureWithUnit - ,IfcReference - ,IfcTable - ,IfcTimeSeries - ,IfcValue); -END_TYPE; - -TYPE IfcModulusOfRotationalSubgradeReactionSelect = SELECT - (IfcBoolean - ,IfcModulusOfRotationalSubgradeReactionMeasure); -END_TYPE; - -TYPE IfcModulusOfSubgradeReactionSelect = SELECT - (IfcBoolean - ,IfcModulusOfSubgradeReactionMeasure); -END_TYPE; - -TYPE IfcModulusOfTranslationalSubgradeReactionSelect = SELECT - (IfcBoolean - ,IfcModulusOfLinearSubgradeReactionMeasure); -END_TYPE; - -TYPE IfcObjectReferenceSelect = SELECT - (IfcAddress - ,IfcAppliedValue - ,IfcExternalReference - ,IfcMaterialDefinition - ,IfcOrganization - ,IfcPerson - ,IfcPersonAndOrganization - ,IfcTable - ,IfcTimeSeries); -END_TYPE; - -TYPE IfcPointOrVertexPoint = SELECT - (IfcPoint - ,IfcVertexPoint); -END_TYPE; - -TYPE IfcPresentationStyleSelect = SELECT - (IfcCurveStyle - ,IfcFillAreaStyle - ,IfcNullStyle - ,IfcSurfaceStyle - ,IfcTextStyle); -END_TYPE; - -TYPE IfcProcessSelect = SELECT - (IfcProcess - ,IfcTypeProcess); -END_TYPE; - -TYPE IfcProductRepresentationSelect = SELECT - (IfcProductDefinitionShape - ,IfcRepresentationMap); -END_TYPE; - -TYPE IfcProductSelect = SELECT - (IfcProduct - ,IfcTypeProduct); -END_TYPE; - -TYPE IfcPropertySetDefinitionSelect = SELECT - (IfcPropertySetDefinition - ,IfcPropertySetDefinitionSet); -END_TYPE; - -TYPE IfcResourceObjectSelect = SELECT - (IfcActorRole - ,IfcAppliedValue - ,IfcApproval - ,IfcConstraint - ,IfcContextDependentUnit - ,IfcConversionBasedUnit - ,IfcExternalInformation - ,IfcExternalReference - ,IfcMaterialDefinition - ,IfcOrganization - ,IfcPerson - ,IfcPersonAndOrganization - ,IfcPhysicalQuantity - ,IfcProfileDef - ,IfcPropertyAbstraction - ,IfcTimeSeries); -END_TYPE; - -TYPE IfcResourceSelect = SELECT - (IfcResource - ,IfcTypeResource); -END_TYPE; - -TYPE IfcRotationalStiffnessSelect = SELECT - (IfcBoolean - ,IfcRotationalStiffnessMeasure); -END_TYPE; - -TYPE IfcSegmentIndexSelect = SELECT - (IfcArcIndex - ,IfcLineIndex); -END_TYPE; - -TYPE IfcShell = SELECT - (IfcClosedShell - ,IfcOpenShell); -END_TYPE; - -TYPE IfcSimpleValue = SELECT - (IfcBinary - ,IfcBoolean - ,IfcDate - ,IfcDateTime - ,IfcDuration - ,IfcIdentifier - ,IfcInteger - ,IfcLabel - ,IfcLogical - ,IfcPositiveInteger - ,IfcReal - ,IfcText - ,IfcTime - ,IfcTimeStamp); -END_TYPE; - -TYPE IfcSizeSelect = SELECT - (IfcDescriptiveMeasure - ,IfcLengthMeasure - ,IfcNormalisedRatioMeasure - ,IfcPositiveLengthMeasure - ,IfcPositiveRatioMeasure - ,IfcRatioMeasure); -END_TYPE; - -TYPE IfcSolidOrShell = SELECT - (IfcClosedShell - ,IfcSolidModel); -END_TYPE; - -TYPE IfcSpaceBoundarySelect = SELECT - (IfcExternalSpatialElement - ,IfcSpace); -END_TYPE; - -TYPE IfcSpecularHighlightSelect = SELECT - (IfcSpecularExponent - ,IfcSpecularRoughness); -END_TYPE; - -TYPE IfcStructuralActivityAssignmentSelect = SELECT - (IfcElement - ,IfcStructuralItem); -END_TYPE; - -TYPE IfcStyleAssignmentSelect = SELECT - (IfcPresentationStyle - ,IfcPresentationStyleAssignment); -END_TYPE; - -TYPE IfcSurfaceOrFaceSurface = SELECT - (IfcFaceBasedSurfaceModel - ,IfcFaceSurface - ,IfcSurface); -END_TYPE; - -TYPE IfcSurfaceStyleElementSelect = SELECT - (IfcExternallyDefinedSurfaceStyle - ,IfcSurfaceStyleLighting - ,IfcSurfaceStyleRefraction - ,IfcSurfaceStyleShading - ,IfcSurfaceStyleWithTextures); -END_TYPE; - -TYPE IfcTextFontSelect = SELECT - (IfcExternallyDefinedTextFont - ,IfcPreDefinedTextFont); -END_TYPE; - -TYPE IfcTimeOrRatioSelect = SELECT - (IfcDuration - ,IfcRatioMeasure); -END_TYPE; - -TYPE IfcTranslationalStiffnessSelect = SELECT - (IfcBoolean - ,IfcLinearStiffnessMeasure); -END_TYPE; - -TYPE IfcTrimmingSelect = SELECT - (IfcCartesianPoint - ,IfcParameterValue); -END_TYPE; - -TYPE IfcUnit = SELECT - (IfcDerivedUnit - ,IfcMonetaryUnit - ,IfcNamedUnit); -END_TYPE; - -TYPE IfcValue = SELECT - (IfcDerivedMeasureValue - ,IfcMeasureValue - ,IfcSimpleValue); -END_TYPE; - -TYPE IfcVectorOrDirection = SELECT - (IfcDirection - ,IfcVector); -END_TYPE; - -TYPE IfcWarpingStiffnessSelect = SELECT - (IfcBoolean - ,IfcWarpingMomentMeasure); -END_TYPE; - -ENTITY IfcActionRequest - SUBTYPE OF (IfcControl); - PredefinedType : OPTIONAL IfcActionRequestTypeEnum; - Status : OPTIONAL IfcLabel; - LongDescription : OPTIONAL IfcText; -END_ENTITY; - -ENTITY IfcActor - SUPERTYPE OF (ONEOF - (IfcOccupant)) - SUBTYPE OF (IfcObject); - TheActor : IfcActorSelect; - INVERSE - IsActingUpon : SET [0:?] OF IfcRelAssignsToActor FOR RelatingActor; -END_ENTITY; - -ENTITY IfcActorRole; - Role : IfcRoleEnum; - UserDefinedRole : OPTIONAL IfcLabel; - Description : OPTIONAL IfcText; - INVERSE - HasExternalReference : SET [0:?] OF IfcExternalReferenceRelationship FOR RelatedResourceObjects; - WHERE - WR1 : (Role <> IfcRoleEnum.USERDEFINED) OR -((Role = IfcRoleEnum.USERDEFINED) AND - EXISTS(SELF.UserDefinedRole)); -END_ENTITY; - -ENTITY IfcActuator - SUBTYPE OF (IfcDistributionControlElement); - PredefinedType : OPTIONAL IfcActuatorTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcActuatorTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcActuatorTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR -('IFC4.IFCACTUATORTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcActuatorType - SUBTYPE OF (IfcDistributionControlElementType); - PredefinedType : IfcActuatorTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcActuatorTypeEnum.USERDEFINED) OR -((PredefinedType = IfcActuatorTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcAddress - ABSTRACT SUPERTYPE OF (ONEOF - (IfcPostalAddress - ,IfcTelecomAddress)); - Purpose : OPTIONAL IfcAddressTypeEnum; - Description : OPTIONAL IfcText; - UserDefinedPurpose : OPTIONAL IfcLabel; - INVERSE - OfPerson : SET [0:?] OF IfcPerson FOR Addresses; - OfOrganization : SET [0:?] OF IfcOrganization FOR Addresses; - WHERE - WR1 : (NOT(EXISTS(Purpose))) OR -((Purpose <> IfcAddressTypeEnum.USERDEFINED) OR -((Purpose = IfcAddressTypeEnum.USERDEFINED) AND - EXISTS(SELF.UserDefinedPurpose))); -END_ENTITY; - -ENTITY IfcAdvancedBrep - SUPERTYPE OF (ONEOF - (IfcAdvancedBrepWithVoids)) - SUBTYPE OF (IfcManifoldSolidBrep); - WHERE - HasAdvancedFaces : SIZEOF(QUERY(Afs <* SELF\IfcManifoldSolidBrep.Outer.CfsFaces | - (NOT ('IFC4.IFCADVANCEDFACE' IN TYPEOF(Afs))) -)) = 0; -END_ENTITY; - -ENTITY IfcAdvancedBrepWithVoids - SUBTYPE OF (IfcAdvancedBrep); - Voids : SET [1:?] OF IfcClosedShell; - WHERE - VoidsHaveAdvancedFaces : SIZEOF (QUERY (Vsh <* Voids | - SIZEOF (QUERY (Afs <* Vsh.CfsFaces | - (NOT ('IFC4.IFCADVANCEDFACE' IN TYPEOF(Afs))) - )) = 0 -)) = 0; -END_ENTITY; - -ENTITY IfcAdvancedFace - SUBTYPE OF (IfcFaceSurface); - WHERE - ApplicableSurface : SIZEOF ( -['IFC4.IFCELEMENTARYSURFACE', - 'IFC4.IFCSWEPTSURFACE', - 'IFC4.IFCBSPLINESURFACE'] * -TYPEOF(SELF\IfcFaceSurface.FaceSurface)) = 1; - RequiresEdgeCurve : SIZEOF(QUERY (ElpFbnds <* - QUERY (Bnds <* SELF\IfcFace.Bounds | - 'IFC4.IFCEDGELOOP' IN TYPEOF(Bnds.Bound)) | - NOT (SIZEOF (QUERY (Oe <* ElpFbnds.Bound\IfcEdgeLoop.EdgeList | - NOT('IFC4.IFCEDGECURVE' IN - TYPEOF(Oe\IfcOrientedEdge.EdgeElement) - ))) = 0 -))) = 0; - ApplicableEdgeCurves : SIZEOF(QUERY (ElpFbnds <* - QUERY (Bnds <* SELF\IfcFace.Bounds | - 'IFC4.IFCEDGELOOP' IN TYPEOF(Bnds.Bound)) | - NOT (SIZEOF (QUERY (Oe <* ElpFbnds.Bound\IfcEdgeLoop.EdgeList | - NOT (SIZEOF (['IFC4.IFCLINE', - 'IFC4.IFCCONIC', - 'IFC4.IFCPOLYLINE', - 'IFC4.IFCBSPLINECURVE'] * - TYPEOF(Oe\IfcOrientedEdge.EdgeElement\IfcEdgeCurve.EdgeGeometry)) = 1 ) - )) = 0 -))) = 0; -END_ENTITY; - -ENTITY IfcAirTerminal - SUBTYPE OF (IfcFlowTerminal); - PredefinedType : OPTIONAL IfcAirTerminalTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcAirTerminalTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcAirTerminalTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCAIRTERMINALTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcAirTerminalBox - SUBTYPE OF (IfcFlowController); - PredefinedType : OPTIONAL IfcAirTerminalBoxTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcAirTerminalBoxTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcAirTerminalBoxTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCAIRTERMINALBOXTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcAirTerminalBoxType - SUBTYPE OF (IfcFlowControllerType); - PredefinedType : IfcAirTerminalBoxTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcAirTerminalBoxTypeEnum.USERDEFINED) OR -((PredefinedType = IfcAirTerminalBoxTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcAirTerminalType - SUBTYPE OF (IfcFlowTerminalType); - PredefinedType : IfcAirTerminalTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcAirTerminalTypeEnum.USERDEFINED) OR -((PredefinedType = IfcAirTerminalTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcAirToAirHeatRecovery - SUBTYPE OF (IfcEnergyConversionDevice); - PredefinedType : OPTIONAL IfcAirToAirHeatRecoveryTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcAirToAirHeatRecoveryTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcAirToAirHeatRecoveryTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCAIRTOAIRHEATRECOVERYTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcAirToAirHeatRecoveryType - SUBTYPE OF (IfcEnergyConversionDeviceType); - PredefinedType : IfcAirToAirHeatRecoveryTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcAirToAirHeatRecoveryTypeEnum.USERDEFINED) OR -((PredefinedType = IfcAirToAirHeatRecoveryTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcAlarm - SUBTYPE OF (IfcDistributionControlElement); - PredefinedType : OPTIONAL IfcAlarmTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcAlarmTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcAlarmTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR -('IFC4.IFCALARMTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcAlarmType - SUBTYPE OF (IfcDistributionControlElementType); - PredefinedType : IfcAlarmTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcAlarmTypeEnum.USERDEFINED) OR -((PredefinedType = IfcAlarmTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcAnnotation - SUBTYPE OF (IfcProduct); - INVERSE - ContainedInStructure : SET [0:1] OF IfcRelContainedInSpatialStructure FOR RelatedElements; -END_ENTITY; - -ENTITY IfcAnnotationFillArea - SUBTYPE OF (IfcGeometricRepresentationItem); - OuterBoundary : IfcCurve; - InnerBoundaries : OPTIONAL SET [1:?] OF IfcCurve; -END_ENTITY; - -ENTITY IfcApplication; - ApplicationDeveloper : IfcOrganization; - Version : IfcLabel; - ApplicationFullName : IfcLabel; - ApplicationIdentifier : IfcIdentifier; - UNIQUE - UR1 : ApplicationIdentifier; - UR2 : ApplicationFullName, Version; -END_ENTITY; - -ENTITY IfcAppliedValue - SUPERTYPE OF (ONEOF - (IfcCostValue)); - Name : OPTIONAL IfcLabel; - Description : OPTIONAL IfcText; - AppliedValue : OPTIONAL IfcAppliedValueSelect; - UnitBasis : OPTIONAL IfcMeasureWithUnit; - ApplicableDate : OPTIONAL IfcDate; - FixedUntilDate : OPTIONAL IfcDate; - Category : OPTIONAL IfcLabel; - Condition : OPTIONAL IfcLabel; - ArithmeticOperator : OPTIONAL IfcArithmeticOperatorEnum; - Components : OPTIONAL LIST [1:?] OF IfcAppliedValue; - INVERSE - HasExternalReference : SET [0:?] OF IfcExternalReferenceRelationship FOR RelatedResourceObjects; -END_ENTITY; - -ENTITY IfcApproval; - Identifier : OPTIONAL IfcIdentifier; - Name : OPTIONAL IfcLabel; - Description : OPTIONAL IfcText; - TimeOfApproval : OPTIONAL IfcDateTime; - Status : OPTIONAL IfcLabel; - Level : OPTIONAL IfcLabel; - Qualifier : OPTIONAL IfcText; - RequestingApproval : OPTIONAL IfcActorSelect; - GivingApproval : OPTIONAL IfcActorSelect; - INVERSE - HasExternalReferences : SET [0:?] OF IfcExternalReferenceRelationship FOR RelatedResourceObjects; - ApprovedObjects : SET [0:?] OF IfcRelAssociatesApproval FOR RelatingApproval; - ApprovedResources : SET [0:?] OF IfcResourceApprovalRelationship FOR RelatingApproval; - IsRelatedWith : SET [0:?] OF IfcApprovalRelationship FOR RelatedApprovals; - Relates : SET [0:?] OF IfcApprovalRelationship FOR RelatingApproval; - WHERE - HasIdentifierOrName : EXISTS (Identifier) OR EXISTS (Name); -END_ENTITY; - -ENTITY IfcApprovalRelationship - SUBTYPE OF (IfcResourceLevelRelationship); - RelatingApproval : IfcApproval; - RelatedApprovals : SET [1:?] OF IfcApproval; -END_ENTITY; - -ENTITY IfcArbitraryClosedProfileDef - SUPERTYPE OF (ONEOF - (IfcArbitraryProfileDefWithVoids)) - SUBTYPE OF (IfcProfileDef); - OuterCurve : IfcCurve; - WHERE - WR1 : OuterCurve.Dim = 2; - WR2 : NOT('IFC4.IFCLINE' IN TYPEOF(OuterCurve)); - WR3 : NOT('IFC4.IFCOFFSETCURVE2D' IN TYPEOF(OuterCurve)); -END_ENTITY; - -ENTITY IfcArbitraryOpenProfileDef - SUPERTYPE OF (ONEOF - (IfcCenterLineProfileDef)) - SUBTYPE OF (IfcProfileDef); - Curve : IfcBoundedCurve; - WHERE - WR11 : ('IFC4.IFCCENTERLINEPROFILEDEF' IN TYPEOF(SELF)) OR - (SELF\IfcProfileDef.ProfileType = IfcProfileTypeEnum.CURVE); - WR12 : Curve.Dim = 2; -END_ENTITY; - -ENTITY IfcArbitraryProfileDefWithVoids - SUBTYPE OF (IfcArbitraryClosedProfileDef); - InnerCurves : SET [1:?] OF IfcCurve; - WHERE - WR1 : SELF\IfcProfileDef.ProfileType = AREA; - WR2 : SIZEOF(QUERY(temp <* InnerCurves | temp.Dim <> 2)) = 0; - WR3 : SIZEOF(QUERY(temp <* InnerCurves | 'IFC4.IFCLINE' IN TYPEOF(temp))) = 0; -END_ENTITY; - -ENTITY IfcAsset - SUBTYPE OF (IfcGroup); - Identification : OPTIONAL IfcIdentifier; - OriginalValue : OPTIONAL IfcCostValue; - CurrentValue : OPTIONAL IfcCostValue; - TotalReplacementCost : OPTIONAL IfcCostValue; - Owner : OPTIONAL IfcActorSelect; - User : OPTIONAL IfcActorSelect; - ResponsiblePerson : OPTIONAL IfcPerson; - IncorporationDate : OPTIONAL IfcDate; - DepreciatedValue : OPTIONAL IfcCostValue; -END_ENTITY; - -ENTITY IfcAsymmetricIShapeProfileDef - SUBTYPE OF (IfcParameterizedProfileDef); - BottomFlangeWidth : IfcPositiveLengthMeasure; - OverallDepth : IfcPositiveLengthMeasure; - WebThickness : IfcPositiveLengthMeasure; - BottomFlangeThickness : IfcPositiveLengthMeasure; - BottomFlangeFilletRadius : OPTIONAL IfcNonNegativeLengthMeasure; - TopFlangeWidth : IfcPositiveLengthMeasure; - TopFlangeThickness : OPTIONAL IfcPositiveLengthMeasure; - TopFlangeFilletRadius : OPTIONAL IfcNonNegativeLengthMeasure; - BottomFlangeEdgeRadius : OPTIONAL IfcNonNegativeLengthMeasure; - BottomFlangeSlope : OPTIONAL IfcPlaneAngleMeasure; - TopFlangeEdgeRadius : OPTIONAL IfcNonNegativeLengthMeasure; - TopFlangeSlope : OPTIONAL IfcPlaneAngleMeasure; - WHERE - ValidFlangeThickness : NOT(EXISTS(TopFlangeThickness)) OR ((BottomFlangeThickness + TopFlangeThickness) < OverallDepth); - ValidWebThickness : (WebThickness < BottomFlangeWidth) AND (WebThickness < TopFlangeWidth); - ValidBottomFilletRadius : (NOT(EXISTS(BottomFlangeFilletRadius))) OR -(BottomFlangeFilletRadius <= (BottomFlangeWidth - WebThickness)/2.); - ValidTopFilletRadius : (NOT(EXISTS(TopFlangeFilletRadius))) OR -(TopFlangeFilletRadius <= (TopFlangeWidth - WebThickness)/2.); -END_ENTITY; - -ENTITY IfcAudioVisualAppliance - SUBTYPE OF (IfcFlowTerminal); - PredefinedType : OPTIONAL IfcAudioVisualApplianceTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcAudioVisualApplianceTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcAudioVisualApplianceTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCAUDIOVISUALAPPLIANCETYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcAudioVisualApplianceType - SUBTYPE OF (IfcFlowTerminalType); - PredefinedType : IfcAudioVisualApplianceTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcAudioVisualApplianceTypeEnum.USERDEFINED) OR -((PredefinedType = IfcAudioVisualApplianceTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcAxis1Placement - SUBTYPE OF (IfcPlacement); - Axis : OPTIONAL IfcDirection; - DERIVE - Z : IfcDirection := NVL (IfcNormalise(Axis), IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([0.0,0.0,1.0])); - WHERE - AxisIs3D : (NOT (EXISTS (Axis))) OR (Axis.Dim = 3); - LocationIs3D : SELF\IfcPlacement.Location.Dim = 3; -END_ENTITY; - -ENTITY IfcAxis2Placement2D - SUBTYPE OF (IfcPlacement); - RefDirection : OPTIONAL IfcDirection; - DERIVE - P : LIST [2:2] OF IfcDirection := IfcBuild2Axes(RefDirection); - WHERE - RefDirIs2D : (NOT (EXISTS (RefDirection))) OR (RefDirection.Dim = 2); - LocationIs2D : SELF\IfcPlacement.Location.Dim = 2; -END_ENTITY; - -ENTITY IfcAxis2Placement3D - SUBTYPE OF (IfcPlacement); - Axis : OPTIONAL IfcDirection; - RefDirection : OPTIONAL IfcDirection; - DERIVE - P : LIST [3:3] OF IfcDirection := IfcBuildAxes(Axis, RefDirection); - WHERE - LocationIs3D : SELF\IfcPlacement.Location.Dim = 3; - AxisIs3D : (NOT (EXISTS (Axis))) OR (Axis.Dim = 3); - RefDirIs3D : (NOT (EXISTS (RefDirection))) OR (RefDirection.Dim = 3); - AxisToRefDirPosition : (NOT (EXISTS (Axis))) OR (NOT (EXISTS (RefDirection))) OR (IfcCrossProduct(Axis,RefDirection).Magnitude > 0.0); - AxisAndRefDirProvision : NOT ((EXISTS (Axis)) XOR (EXISTS (RefDirection))); -END_ENTITY; - -ENTITY IfcBSplineCurve - ABSTRACT SUPERTYPE OF (ONEOF - (IfcBSplineCurveWithKnots)) - SUBTYPE OF (IfcBoundedCurve); - Degree : IfcInteger; - ControlPointsList : LIST [2:?] OF IfcCartesianPoint; - CurveForm : IfcBSplineCurveForm; - ClosedCurve : IfcLogical; - SelfIntersect : IfcLogical; - DERIVE - UpperIndexOnControlPoints : IfcInteger := (SIZEOF(ControlPointsList) - 1); - ControlPoints : ARRAY [0:UpperIndexOnControlPoints] OF IfcCartesianPoint := IfcListToArray(ControlPointsList,0,UpperIndexOnControlPoints); - WHERE - SameDim : SIZEOF(QUERY(Temp <* ControlPointsList | - Temp.Dim <> ControlPointsList[1].Dim)) -= 0; -END_ENTITY; - -ENTITY IfcBSplineCurveWithKnots - SUPERTYPE OF (ONEOF - (IfcRationalBSplineCurveWithKnots)) - SUBTYPE OF (IfcBSplineCurve); - KnotMultiplicities : LIST [2:?] OF IfcInteger; - Knots : LIST [2:?] OF IfcParameterValue; - KnotSpec : IfcKnotType; - DERIVE - UpperIndexOnKnots : IfcInteger := SIZEOF(Knots); - WHERE - ConsistentBSpline : IfcConstraintsParamBSpline(Degree, UpperIndexOnKnots, -UpperIndexOnControlPoints, KnotMultiplicities, Knots); - CorrespondingKnotLists : SIZEOF(KnotMultiplicities) = UpperIndexOnKnots; -END_ENTITY; - -ENTITY IfcBSplineSurface - ABSTRACT SUPERTYPE OF (ONEOF - (IfcBSplineSurfaceWithKnots)) - SUBTYPE OF (IfcBoundedSurface); - UDegree : IfcInteger; - VDegree : IfcInteger; - ControlPointsList : LIST [2:?] OF LIST [2:?] OF IfcCartesianPoint; - SurfaceForm : IfcBSplineSurfaceForm; - UClosed : IfcLogical; - VClosed : IfcLogical; - SelfIntersect : IfcLogical; - DERIVE - UUpper : IfcInteger := SIZEOF(ControlPointsList) - 1; - VUpper : IfcInteger := SIZEOF(ControlPointsList[1]) - 1; - ControlPoints : ARRAY [0:UUpper] OF ARRAY [0:VUpper] OF IfcCartesianPoint := IfcMakeArrayOfArray(ControlPointsList, -0,UUpper,0,VUpper); -END_ENTITY; - -ENTITY IfcBSplineSurfaceWithKnots - SUPERTYPE OF (ONEOF - (IfcRationalBSplineSurfaceWithKnots)) - SUBTYPE OF (IfcBSplineSurface); - UMultiplicities : LIST [2:?] OF IfcInteger; - VMultiplicities : LIST [2:?] OF IfcInteger; - UKnots : LIST [2:?] OF IfcParameterValue; - VKnots : LIST [2:?] OF IfcParameterValue; - KnotSpec : IfcKnotType; - DERIVE - KnotVUpper : IfcInteger := SIZEOF(VKnots); - KnotUUpper : IfcInteger := SIZEOF(UKnots); - WHERE - UDirectionConstraints : IfcConstraintsParamBSpline ( - SELF\IfcBSplineSurface.UDegree, KnotUUpper, - SELF\IfcBSplineSurface.UUpper, UMultiplicities, UKnots); - VDirectionConstraints : IfcConstraintsParamBSpline ( - SELF\IfcBSplineSurface.VDegree, KnotVUpper, - SELF\IfcBSplineSurface.VUpper, VMultiplicities, VKnots); - CorrespondingULists : SIZEOF(UMultiplicities) = KnotUUpper; - CorrespondingVLists : SIZEOF(VMultiplicities) = KnotVUpper; -END_ENTITY; - -ENTITY IfcBeam - SUPERTYPE OF (ONEOF - (IfcBeamStandardCase)) - SUBTYPE OF (IfcBuildingElement); - PredefinedType : OPTIONAL IfcBeamTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcBeamTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcBeamTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCBEAMTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcBeamStandardCase - SUBTYPE OF (IfcBeam); - WHERE - HasMaterialProfileSetUsage : SIZEOF (QUERY(temp <* USEDIN(SELF, 'IFC4.IFCRELASSOCIATES.RELATEDOBJECTS') | - ('IFC4.IFCRELASSOCIATESMATERIAL' IN TYPEOF(temp)) AND - ('IFC4.IFCMATERIALPROFILESETUSAGE' IN TYPEOF(temp.RelatingMaterial)) - )) = 1; -END_ENTITY; - -ENTITY IfcBeamType - SUBTYPE OF (IfcBuildingElementType); - PredefinedType : IfcBeamTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcBeamTypeEnum.USERDEFINED) OR -((PredefinedType = IfcBeamTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcBlobTexture - SUBTYPE OF (IfcSurfaceTexture); - RasterFormat : IfcIdentifier; - RasterCode : IfcBinary; - WHERE - SupportedRasterFormat : SELF.RasterFormat IN ['BMP', 'JPG', 'GIF', 'PNG']; - RasterCodeByteStream : BLENGTH(RasterCode) MOD 8 = 0; -END_ENTITY; - -ENTITY IfcBlock - SUBTYPE OF (IfcCsgPrimitive3D); - XLength : IfcPositiveLengthMeasure; - YLength : IfcPositiveLengthMeasure; - ZLength : IfcPositiveLengthMeasure; -END_ENTITY; - -ENTITY IfcBoiler - SUBTYPE OF (IfcEnergyConversionDevice); - PredefinedType : OPTIONAL IfcBoilerTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcBoilerTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcBoilerTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCBOILERTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcBoilerType - SUBTYPE OF (IfcEnergyConversionDeviceType); - PredefinedType : IfcBoilerTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcBoilerTypeEnum.USERDEFINED) OR -((PredefinedType = IfcBoilerTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcBooleanClippingResult - SUBTYPE OF (IfcBooleanResult); - WHERE - FirstOperandType : ('IFC4.IFCSWEPTAREASOLID' IN TYPEOF(FirstOperand)) OR -('IFC4.IFCSWEPTDISCSOLID' IN TYPEOF(FirstOperand)) OR -('IFC4.IFCBOOLEANCLIPPINGRESULT' IN TYPEOF(FirstOperand)); - SecondOperandType : ('IFC4.IFCHALFSPACESOLID' IN TYPEOF(SecondOperand)); - OperatorType : Operator = DIFFERENCE; -END_ENTITY; - -ENTITY IfcBooleanResult - SUPERTYPE OF (ONEOF - (IfcBooleanClippingResult)) - SUBTYPE OF (IfcGeometricRepresentationItem); - Operator : IfcBooleanOperator; - FirstOperand : IfcBooleanOperand; - SecondOperand : IfcBooleanOperand; - DERIVE - Dim : IfcDimensionCount := FirstOperand.Dim; - WHERE - SameDim : FirstOperand.Dim = SecondOperand.Dim; - FirstOperandClosed : NOT('IFC4.IFCTESSELLATEDFACESET' IN TYPEOF(FirstOperand)) OR (EXISTS(FirstOperand.Closed) AND FirstOperand.Closed); - SecondOperandClosed : NOT('IFC4.IFCTESSELLATEDFACESET' IN TYPEOF(SecondOperand)) OR (EXISTS(SecondOperand.Closed) AND SecondOperand.Closed); -END_ENTITY; - -ENTITY IfcBoundaryCondition - ABSTRACT SUPERTYPE OF (ONEOF - (IfcBoundaryEdgeCondition - ,IfcBoundaryFaceCondition - ,IfcBoundaryNodeCondition)); - Name : OPTIONAL IfcLabel; -END_ENTITY; - -ENTITY IfcBoundaryCurve - SUPERTYPE OF (ONEOF - (IfcOuterBoundaryCurve)) - SUBTYPE OF (IfcCompositeCurveOnSurface); - WHERE - IsClosed : SELF\IfcCompositeCurve.ClosedCurve; -END_ENTITY; - -ENTITY IfcBoundaryEdgeCondition - SUBTYPE OF (IfcBoundaryCondition); - TranslationalStiffnessByLengthX : OPTIONAL IfcModulusOfTranslationalSubgradeReactionSelect; - TranslationalStiffnessByLengthY : OPTIONAL IfcModulusOfTranslationalSubgradeReactionSelect; - TranslationalStiffnessByLengthZ : OPTIONAL IfcModulusOfTranslationalSubgradeReactionSelect; - RotationalStiffnessByLengthX : OPTIONAL IfcModulusOfRotationalSubgradeReactionSelect; - RotationalStiffnessByLengthY : OPTIONAL IfcModulusOfRotationalSubgradeReactionSelect; - RotationalStiffnessByLengthZ : OPTIONAL IfcModulusOfRotationalSubgradeReactionSelect; -END_ENTITY; - -ENTITY IfcBoundaryFaceCondition - SUBTYPE OF (IfcBoundaryCondition); - TranslationalStiffnessByAreaX : OPTIONAL IfcModulusOfSubgradeReactionSelect; - TranslationalStiffnessByAreaY : OPTIONAL IfcModulusOfSubgradeReactionSelect; - TranslationalStiffnessByAreaZ : OPTIONAL IfcModulusOfSubgradeReactionSelect; -END_ENTITY; - -ENTITY IfcBoundaryNodeCondition - SUPERTYPE OF (ONEOF - (IfcBoundaryNodeConditionWarping)) - SUBTYPE OF (IfcBoundaryCondition); - TranslationalStiffnessX : OPTIONAL IfcTranslationalStiffnessSelect; - TranslationalStiffnessY : OPTIONAL IfcTranslationalStiffnessSelect; - TranslationalStiffnessZ : OPTIONAL IfcTranslationalStiffnessSelect; - RotationalStiffnessX : OPTIONAL IfcRotationalStiffnessSelect; - RotationalStiffnessY : OPTIONAL IfcRotationalStiffnessSelect; - RotationalStiffnessZ : OPTIONAL IfcRotationalStiffnessSelect; -END_ENTITY; - -ENTITY IfcBoundaryNodeConditionWarping - SUBTYPE OF (IfcBoundaryNodeCondition); - WarpingStiffness : OPTIONAL IfcWarpingStiffnessSelect; -END_ENTITY; - -ENTITY IfcBoundedCurve - ABSTRACT SUPERTYPE OF (ONEOF - (IfcBSplineCurve - ,IfcCompositeCurve - ,IfcIndexedPolyCurve - ,IfcPolyline - ,IfcTrimmedCurve)) - SUBTYPE OF (IfcCurve); -END_ENTITY; - -ENTITY IfcBoundedSurface - ABSTRACT SUPERTYPE OF (ONEOF - (IfcBSplineSurface - ,IfcCurveBoundedPlane - ,IfcCurveBoundedSurface - ,IfcRectangularTrimmedSurface)) - SUBTYPE OF (IfcSurface); -END_ENTITY; - -ENTITY IfcBoundingBox - SUBTYPE OF (IfcGeometricRepresentationItem); - Corner : IfcCartesianPoint; - XDim : IfcPositiveLengthMeasure; - YDim : IfcPositiveLengthMeasure; - ZDim : IfcPositiveLengthMeasure; - DERIVE - Dim : IfcDimensionCount := 3; -END_ENTITY; - -ENTITY IfcBoxedHalfSpace - SUBTYPE OF (IfcHalfSpaceSolid); - Enclosure : IfcBoundingBox; - WHERE - UnboundedSurface : NOT ('IFC4.IFCCURVEBOUNDEDPLANE' IN TYPEOF(SELF\IfcHalfSpaceSolid.BaseSurface)); -END_ENTITY; - -ENTITY IfcBuilding - SUBTYPE OF (IfcSpatialStructureElement); - ElevationOfRefHeight : OPTIONAL IfcLengthMeasure; - ElevationOfTerrain : OPTIONAL IfcLengthMeasure; - BuildingAddress : OPTIONAL IfcPostalAddress; -END_ENTITY; - -ENTITY IfcBuildingElement - ABSTRACT SUPERTYPE OF (ONEOF - (IfcBeam - ,IfcBuildingElementProxy - ,IfcChimney - ,IfcColumn - ,IfcCovering - ,IfcCurtainWall - ,IfcDoor - ,IfcFooting - ,IfcMember - ,IfcPile - ,IfcPlate - ,IfcRailing - ,IfcRamp - ,IfcRampFlight - ,IfcRoof - ,IfcShadingDevice - ,IfcSlab - ,IfcStair - ,IfcStairFlight - ,IfcWall - ,IfcWindow)) - SUBTYPE OF (IfcElement); - WHERE - MaxOneMaterialAssociation : SIZEOF (QUERY(temp <* SELF\IfcObjectDefinition.HasAssociations | - 'IFC4.IFCRELASSOCIATESMATERIAL' IN TYPEOF(temp) - )) <= 1; -END_ENTITY; - -ENTITY IfcBuildingElementPart - SUBTYPE OF (IfcElementComponent); - PredefinedType : OPTIONAL IfcBuildingElementPartTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR -(PredefinedType <> IfcBuildingElementPartTypeEnum.USERDEFINED) OR -((PredefinedType = IfcBuildingElementPartTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR -('IFC4.IFCBUILDINGELEMENTPARTTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcBuildingElementPartType - SUBTYPE OF (IfcElementComponentType); - PredefinedType : IfcBuildingElementPartTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcBuildingElementPartTypeEnum.USERDEFINED) OR -((PredefinedType = IfcBuildingElementPartTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcBuildingElementProxy - SUBTYPE OF (IfcBuildingElement); - PredefinedType : OPTIONAL IfcBuildingElementProxyTypeEnum; - WHERE - HasObjectName : EXISTS(SELF\IfcRoot.Name); - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcBuildingElementProxyTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcBuildingElementProxyTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCBUILDINGELEMENTPROXYTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcBuildingElementProxyType - SUBTYPE OF (IfcBuildingElementType); - PredefinedType : IfcBuildingElementProxyTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcBuildingElementProxyTypeEnum.USERDEFINED) OR -((PredefinedType = IfcBuildingElementProxyTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcBuildingElementType - ABSTRACT SUPERTYPE OF (ONEOF - (IfcBeamType - ,IfcBuildingElementProxyType - ,IfcChimneyType - ,IfcColumnType - ,IfcCoveringType - ,IfcCurtainWallType - ,IfcDoorType - ,IfcFootingType - ,IfcMemberType - ,IfcPileType - ,IfcPlateType - ,IfcRailingType - ,IfcRampFlightType - ,IfcRampType - ,IfcRoofType - ,IfcShadingDeviceType - ,IfcSlabType - ,IfcStairFlightType - ,IfcStairType - ,IfcWallType - ,IfcWindowType)) - SUBTYPE OF (IfcElementType); -END_ENTITY; - -ENTITY IfcBuildingStorey - SUBTYPE OF (IfcSpatialStructureElement); - Elevation : OPTIONAL IfcLengthMeasure; -END_ENTITY; - -ENTITY IfcBuildingSystem - SUBTYPE OF (IfcSystem); - PredefinedType : OPTIONAL IfcBuildingSystemTypeEnum; - LongName : OPTIONAL IfcLabel; -END_ENTITY; - -ENTITY IfcBurner - SUBTYPE OF (IfcEnergyConversionDevice); - PredefinedType : OPTIONAL IfcBurnerTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcBurnerTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcBurnerTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCBURNERTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcBurnerType - SUBTYPE OF (IfcEnergyConversionDeviceType); - PredefinedType : IfcBurnerTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcBurnerTypeEnum.USERDEFINED) OR -((PredefinedType = IfcBurnerTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcCShapeProfileDef - SUBTYPE OF (IfcParameterizedProfileDef); - Depth : IfcPositiveLengthMeasure; - Width : IfcPositiveLengthMeasure; - WallThickness : IfcPositiveLengthMeasure; - Girth : IfcPositiveLengthMeasure; - InternalFilletRadius : OPTIONAL IfcNonNegativeLengthMeasure; - WHERE - ValidGirth : Girth < (Depth / 2.); - ValidInternalFilletRadius : NOT(EXISTS(InternalFilletRadius)) OR -((InternalFilletRadius <= Width/2. - WallThickness) AND (InternalFilletRadius <= Depth/2. - WallThickness)); - ValidWallThickness : (WallThickness < Width/2.) AND (WallThickness < Depth/2.); -END_ENTITY; - -ENTITY IfcCableCarrierFitting - SUBTYPE OF (IfcFlowFitting); - PredefinedType : OPTIONAL IfcCableCarrierFittingTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcCableCarrierFittingTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcCableCarrierFittingTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCCABLECARRIERFITTINGTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcCableCarrierFittingType - SUBTYPE OF (IfcFlowFittingType); - PredefinedType : IfcCableCarrierFittingTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcCableCarrierFittingTypeEnum.USERDEFINED) OR -((PredefinedType = IfcCableCarrierFittingTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcCableCarrierSegment - SUBTYPE OF (IfcFlowSegment); - PredefinedType : OPTIONAL IfcCableCarrierSegmentTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcCableCarrierSegmentTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcCableCarrierSegmentTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCCABLECARRIERSEGMENTTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcCableCarrierSegmentType - SUBTYPE OF (IfcFlowSegmentType); - PredefinedType : IfcCableCarrierSegmentTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcCableCarrierSegmentTypeEnum.USERDEFINED) OR -((PredefinedType = IfcCableCarrierSegmentTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcCableFitting - SUBTYPE OF (IfcFlowFitting); - PredefinedType : OPTIONAL IfcCableFittingTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcCableFittingTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcCableFittingTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCCABLEFITTINGTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcCableFittingType - SUBTYPE OF (IfcFlowFittingType); - PredefinedType : IfcCableFittingTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcCableFittingTypeEnum.USERDEFINED) OR -((PredefinedType = IfcCableFittingTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcCableSegment - SUBTYPE OF (IfcFlowSegment); - PredefinedType : OPTIONAL IfcCableSegmentTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcCableSegmentTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcCableSegmentTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCCABLESEGMENTTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcCableSegmentType - SUBTYPE OF (IfcFlowSegmentType); - PredefinedType : IfcCableSegmentTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcCableSegmentTypeEnum.USERDEFINED) OR -((PredefinedType = IfcCableSegmentTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcCartesianPoint - SUBTYPE OF (IfcPoint); - Coordinates : LIST [1:3] OF IfcLengthMeasure; - DERIVE - Dim : IfcDimensionCount := HIINDEX(Coordinates); - WHERE - CP2Dor3D : HIINDEX(Coordinates) >= 2; -END_ENTITY; - -ENTITY IfcCartesianPointList - ABSTRACT SUPERTYPE OF (ONEOF - (IfcCartesianPointList2D - ,IfcCartesianPointList3D)) - SUBTYPE OF (IfcGeometricRepresentationItem); - DERIVE - Dim : IfcDimensionCount := IfcPointListDim(SELF); -END_ENTITY; - -ENTITY IfcCartesianPointList2D - SUBTYPE OF (IfcCartesianPointList); - CoordList : LIST [1:?] OF LIST [2:2] OF IfcLengthMeasure; -END_ENTITY; - -ENTITY IfcCartesianPointList3D - SUBTYPE OF (IfcCartesianPointList); - CoordList : LIST [1:?] OF LIST [3:3] OF IfcLengthMeasure; -END_ENTITY; - -ENTITY IfcCartesianTransformationOperator - ABSTRACT SUPERTYPE OF (ONEOF - (IfcCartesianTransformationOperator2D - ,IfcCartesianTransformationOperator3D)) - SUBTYPE OF (IfcGeometricRepresentationItem); - Axis1 : OPTIONAL IfcDirection; - Axis2 : OPTIONAL IfcDirection; - LocalOrigin : IfcCartesianPoint; - Scale : OPTIONAL IfcReal; - DERIVE - Scl : IfcReal := NVL(Scale, 1.0); - Dim : IfcDimensionCount := LocalOrigin.Dim; - WHERE - ScaleGreaterZero : Scl > 0.0; -END_ENTITY; - -ENTITY IfcCartesianTransformationOperator2D - SUPERTYPE OF (ONEOF - (IfcCartesianTransformationOperator2DnonUniform)) - SUBTYPE OF (IfcCartesianTransformationOperator); - DERIVE - U : LIST [2:2] OF IfcDirection := IfcBaseAxis(2,SELF\IfcCartesianTransformationOperator.Axis1, -SELF\IfcCartesianTransformationOperator.Axis2,?); - WHERE - DimEqual2 : SELF\IfcCartesianTransformationOperator.Dim = 2; - Axis1Is2D : NOT(EXISTS(SELF\IfcCartesianTransformationOperator.Axis1)) OR -(SELF\IfcCartesianTransformationOperator.Axis1.Dim = 2); - Axis2Is2D : NOT(EXISTS(SELF\IfcCartesianTransformationOperator.Axis2)) OR -(SELF\IfcCartesianTransformationOperator.Axis2.Dim = 2); -END_ENTITY; - -ENTITY IfcCartesianTransformationOperator2DnonUniform - SUBTYPE OF (IfcCartesianTransformationOperator2D); - Scale2 : OPTIONAL IfcReal; - DERIVE - Scl2 : IfcReal := NVL(Scale2, SELF\IfcCartesianTransformationOperator.Scl); - WHERE - Scale2GreaterZero : Scl2 > 0.0; -END_ENTITY; - -ENTITY IfcCartesianTransformationOperator3D - SUPERTYPE OF (ONEOF - (IfcCartesianTransformationOperator3DnonUniform)) - SUBTYPE OF (IfcCartesianTransformationOperator); - Axis3 : OPTIONAL IfcDirection; - DERIVE - U : LIST [3:3] OF IfcDirection := IfcBaseAxis(3,SELF\IfcCartesianTransformationOperator.Axis1, -SELF\IfcCartesianTransformationOperator.Axis2,Axis3); - WHERE - DimIs3D : SELF\IfcCartesianTransformationOperator.Dim = 3; - Axis1Is3D : NOT(EXISTS(SELF\IfcCartesianTransformationOperator.Axis1)) OR -(SELF\IfcCartesianTransformationOperator.Axis1.Dim = 3); - Axis2Is3D : NOT(EXISTS(SELF\IfcCartesianTransformationOperator.Axis2)) OR -(SELF\IfcCartesianTransformationOperator.Axis2.Dim = 3); - Axis3Is3D : NOT(EXISTS(Axis3)) OR (Axis3.Dim = 3); -END_ENTITY; - -ENTITY IfcCartesianTransformationOperator3DnonUniform - SUBTYPE OF (IfcCartesianTransformationOperator3D); - Scale2 : OPTIONAL IfcReal; - Scale3 : OPTIONAL IfcReal; - DERIVE - Scl2 : IfcReal := NVL(Scale2, SELF\IfcCartesianTransformationOperator.Scl); - Scl3 : IfcReal := NVL(Scale3, SELF\IfcCartesianTransformationOperator.Scl); - WHERE - Scale2GreaterZero : Scl2 > 0.0; - Scale3GreaterZero : Scl3 > 0.0; -END_ENTITY; - -ENTITY IfcCenterLineProfileDef - SUBTYPE OF (IfcArbitraryOpenProfileDef); - Thickness : IfcPositiveLengthMeasure; -END_ENTITY; - -ENTITY IfcChiller - SUBTYPE OF (IfcEnergyConversionDevice); - PredefinedType : OPTIONAL IfcChillerTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcChillerTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcChillerTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCCHILLERTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcChillerType - SUBTYPE OF (IfcEnergyConversionDeviceType); - PredefinedType : IfcChillerTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcChillerTypeEnum.USERDEFINED) OR -((PredefinedType = IfcChillerTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcChimney - SUBTYPE OF (IfcBuildingElement); - PredefinedType : OPTIONAL IfcChimneyTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcChimneyTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcChimneyTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCCHIMNEYTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcChimneyType - SUBTYPE OF (IfcBuildingElementType); - PredefinedType : IfcChimneyTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcChimneyTypeEnum.USERDEFINED) OR -((PredefinedType = IfcChimneyTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcCircle - SUBTYPE OF (IfcConic); - Radius : IfcPositiveLengthMeasure; -END_ENTITY; - -ENTITY IfcCircleHollowProfileDef - SUBTYPE OF (IfcCircleProfileDef); - WallThickness : IfcPositiveLengthMeasure; - WHERE - WR1 : WallThickness < SELF\IfcCircleProfileDef.Radius; -END_ENTITY; - -ENTITY IfcCircleProfileDef - SUPERTYPE OF (ONEOF - (IfcCircleHollowProfileDef)) - SUBTYPE OF (IfcParameterizedProfileDef); - Radius : IfcPositiveLengthMeasure; -END_ENTITY; - -ENTITY IfcCivilElement - SUBTYPE OF (IfcElement); -END_ENTITY; - -ENTITY IfcCivilElementType - SUBTYPE OF (IfcElementType); -END_ENTITY; - -ENTITY IfcClassification - SUBTYPE OF (IfcExternalInformation); - Source : OPTIONAL IfcLabel; - Edition : OPTIONAL IfcLabel; - EditionDate : OPTIONAL IfcDate; - Name : IfcLabel; - Description : OPTIONAL IfcText; - Location : OPTIONAL IfcURIReference; - ReferenceTokens : OPTIONAL LIST [1:?] OF IfcIdentifier; - INVERSE - ClassificationForObjects : SET [0:?] OF IfcRelAssociatesClassification FOR RelatingClassification; - HasReferences : SET [0:?] OF IfcClassificationReference FOR ReferencedSource; -END_ENTITY; - -ENTITY IfcClassificationReference - SUBTYPE OF (IfcExternalReference); - ReferencedSource : OPTIONAL IfcClassificationReferenceSelect; - Description : OPTIONAL IfcText; - Sort : OPTIONAL IfcIdentifier; - INVERSE - ClassificationRefForObjects : SET [0:?] OF IfcRelAssociatesClassification FOR RelatingClassification; - HasReferences : SET [0:?] OF IfcClassificationReference FOR ReferencedSource; -END_ENTITY; - -ENTITY IfcClosedShell - SUBTYPE OF (IfcConnectedFaceSet); -END_ENTITY; - -ENTITY IfcCoil - SUBTYPE OF (IfcEnergyConversionDevice); - PredefinedType : OPTIONAL IfcCoilTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcCoilTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcCoilTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCCOILTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcCoilType - SUBTYPE OF (IfcEnergyConversionDeviceType); - PredefinedType : IfcCoilTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcCoilTypeEnum.USERDEFINED) OR -((PredefinedType = IfcCoilTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcColourRgb - SUBTYPE OF (IfcColourSpecification); - Red : IfcNormalisedRatioMeasure; - Green : IfcNormalisedRatioMeasure; - Blue : IfcNormalisedRatioMeasure; -END_ENTITY; - -ENTITY IfcColourRgbList - SUBTYPE OF (IfcPresentationItem); - ColourList : LIST [1:?] OF LIST [3:3] OF IfcNormalisedRatioMeasure; -END_ENTITY; - -ENTITY IfcColourSpecification - ABSTRACT SUPERTYPE OF (ONEOF - (IfcColourRgb)) - SUBTYPE OF (IfcPresentationItem); - Name : OPTIONAL IfcLabel; -END_ENTITY; - -ENTITY IfcColumn - SUPERTYPE OF (ONEOF - (IfcColumnStandardCase)) - SUBTYPE OF (IfcBuildingElement); - PredefinedType : OPTIONAL IfcColumnTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcColumnTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcColumnTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCCOLUMNTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcColumnStandardCase - SUBTYPE OF (IfcColumn); - WHERE - HasMaterialProfileSetUsage : SIZEOF (QUERY(temp <* USEDIN(SELF, 'IFC4.IFCRELASSOCIATES.RELATEDOBJECTS') | - ('IFC4.IFCRELASSOCIATESMATERIAL' IN TYPEOF(temp)) AND - ('IFC4.IFCMATERIALPROFILESETUSAGE' IN TYPEOF(temp.RelatingMaterial)) - )) = 1; -END_ENTITY; - -ENTITY IfcColumnType - SUBTYPE OF (IfcBuildingElementType); - PredefinedType : IfcColumnTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcColumnTypeEnum.USERDEFINED) OR -((PredefinedType = IfcColumnTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcCommunicationsAppliance - SUBTYPE OF (IfcFlowTerminal); - PredefinedType : OPTIONAL IfcCommunicationsApplianceTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcCommunicationsApplianceTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcCommunicationsApplianceTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCCOMMUNICATIONSAPPLIANCETYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcCommunicationsApplianceType - SUBTYPE OF (IfcFlowTerminalType); - PredefinedType : IfcCommunicationsApplianceTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcCommunicationsApplianceTypeEnum.USERDEFINED) OR -((PredefinedType = IfcCommunicationsApplianceTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcComplexProperty - SUBTYPE OF (IfcProperty); - UsageName : IfcIdentifier; - HasProperties : SET [1:?] OF IfcProperty; - WHERE - WR21 : SIZEOF(QUERY(temp <* HasProperties | SELF :=: temp)) = 0; - WR22 : IfcUniquePropertyName(HasProperties); -END_ENTITY; - -ENTITY IfcComplexPropertyTemplate - SUBTYPE OF (IfcPropertyTemplate); - UsageName : OPTIONAL IfcLabel; - TemplateType : OPTIONAL IfcComplexPropertyTemplateTypeEnum; - HasPropertyTemplates : OPTIONAL SET [1:?] OF IfcPropertyTemplate; - WHERE - UniquePropertyNames : IfcUniquePropertyTemplateNames(HasPropertyTemplates); - NoSelfReference : SIZEOF(QUERY(temp <* HasPropertyTemplates | SELF :=: temp)) = 0; -END_ENTITY; - -ENTITY IfcCompositeCurve - SUPERTYPE OF (ONEOF - (IfcCompositeCurveOnSurface)) - SUBTYPE OF (IfcBoundedCurve); - Segments : LIST [1:?] OF IfcCompositeCurveSegment; - SelfIntersect : IfcLogical; - DERIVE - NSegments : IfcInteger := SIZEOF(Segments); - ClosedCurve : IfcLogical := Segments[NSegments].Transition <> Discontinuous; - WHERE - CurveContinuous : ((NOT ClosedCurve) AND (SIZEOF(QUERY(Temp <* Segments | Temp.Transition = Discontinuous)) = 1)) OR ((ClosedCurve) AND (SIZEOF(QUERY(Temp <* Segments | Temp.Transition = Discontinuous)) = 0)); - SameDim : SIZEOF( QUERY( Temp <* Segments | Temp.Dim <> Segments[1].Dim)) = 0; -END_ENTITY; - -ENTITY IfcCompositeCurveOnSurface - SUPERTYPE OF (ONEOF - (IfcBoundaryCurve)) - SUBTYPE OF (IfcCompositeCurve); - DERIVE - BasisSurface : SET [0:1] OF IfcSurface := IfcGetBasisSurface(SELF); - WHERE - SameSurface : SIZEOF(BasisSurface) > 0; -END_ENTITY; - -ENTITY IfcCompositeCurveSegment - SUPERTYPE OF (ONEOF - (IfcReparametrisedCompositeCurveSegment)) - SUBTYPE OF (IfcGeometricRepresentationItem); - Transition : IfcTransitionCode; - SameSense : IfcBoolean; - ParentCurve : IfcCurve; - DERIVE - Dim : IfcDimensionCount := ParentCurve.Dim; - INVERSE - UsingCurves : SET [1:?] OF IfcCompositeCurve FOR Segments; - WHERE - ParentIsBoundedCurve : ('IFC4.IFCBOUNDEDCURVE' IN TYPEOF(ParentCurve)); -END_ENTITY; - -ENTITY IfcCompositeProfileDef - SUBTYPE OF (IfcProfileDef); - Profiles : SET [2:?] OF IfcProfileDef; - Label : OPTIONAL IfcLabel; - WHERE - InvariantProfileType : SIZEOF(QUERY(temp <* Profiles | temp.ProfileType <> Profiles[1].ProfileType)) = 0; - NoRecursion : SIZEOF(QUERY(temp <* Profiles | 'IFC4.IFCCOMPOSITEPROFILEDEF' IN TYPEOF(temp))) = 0; -END_ENTITY; - -ENTITY IfcCompressor - SUBTYPE OF (IfcFlowMovingDevice); - PredefinedType : OPTIONAL IfcCompressorTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcCompressorTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcCompressorTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCCOMPRESSORTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcCompressorType - SUBTYPE OF (IfcFlowMovingDeviceType); - PredefinedType : IfcCompressorTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcCompressorTypeEnum.USERDEFINED) OR -((PredefinedType = IfcCompressorTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcCondenser - SUBTYPE OF (IfcEnergyConversionDevice); - PredefinedType : OPTIONAL IfcCondenserTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcCondenserTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcCondenserTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCCONDENSERTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcCondenserType - SUBTYPE OF (IfcEnergyConversionDeviceType); - PredefinedType : IfcCondenserTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcCondenserTypeEnum.USERDEFINED) OR -((PredefinedType = IfcCondenserTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcConic - ABSTRACT SUPERTYPE OF (ONEOF - (IfcCircle - ,IfcEllipse)) - SUBTYPE OF (IfcCurve); - Position : IfcAxis2Placement; -END_ENTITY; - -ENTITY IfcConnectedFaceSet - SUPERTYPE OF (ONEOF - (IfcClosedShell - ,IfcOpenShell)) - SUBTYPE OF (IfcTopologicalRepresentationItem); - CfsFaces : SET [1:?] OF IfcFace; -END_ENTITY; - -ENTITY IfcConnectionCurveGeometry - SUBTYPE OF (IfcConnectionGeometry); - CurveOnRelatingElement : IfcCurveOrEdgeCurve; - CurveOnRelatedElement : OPTIONAL IfcCurveOrEdgeCurve; -END_ENTITY; - -ENTITY IfcConnectionGeometry - ABSTRACT SUPERTYPE OF (ONEOF - (IfcConnectionCurveGeometry - ,IfcConnectionPointGeometry - ,IfcConnectionSurfaceGeometry - ,IfcConnectionVolumeGeometry)); -END_ENTITY; - -ENTITY IfcConnectionPointEccentricity - SUBTYPE OF (IfcConnectionPointGeometry); - EccentricityInX : OPTIONAL IfcLengthMeasure; - EccentricityInY : OPTIONAL IfcLengthMeasure; - EccentricityInZ : OPTIONAL IfcLengthMeasure; -END_ENTITY; - -ENTITY IfcConnectionPointGeometry - SUPERTYPE OF (ONEOF - (IfcConnectionPointEccentricity)) - SUBTYPE OF (IfcConnectionGeometry); - PointOnRelatingElement : IfcPointOrVertexPoint; - PointOnRelatedElement : OPTIONAL IfcPointOrVertexPoint; -END_ENTITY; - -ENTITY IfcConnectionSurfaceGeometry - SUBTYPE OF (IfcConnectionGeometry); - SurfaceOnRelatingElement : IfcSurfaceOrFaceSurface; - SurfaceOnRelatedElement : OPTIONAL IfcSurfaceOrFaceSurface; -END_ENTITY; - -ENTITY IfcConnectionVolumeGeometry - SUBTYPE OF (IfcConnectionGeometry); - VolumeOnRelatingElement : IfcSolidOrShell; - VolumeOnRelatedElement : OPTIONAL IfcSolidOrShell; -END_ENTITY; - -ENTITY IfcConstraint - ABSTRACT SUPERTYPE OF (ONEOF - (IfcMetric - ,IfcObjective)); - Name : IfcLabel; - Description : OPTIONAL IfcText; - ConstraintGrade : IfcConstraintEnum; - ConstraintSource : OPTIONAL IfcLabel; - CreatingActor : OPTIONAL IfcActorSelect; - CreationTime : OPTIONAL IfcDateTime; - UserDefinedGrade : OPTIONAL IfcLabel; - INVERSE - HasExternalReferences : SET [0:?] OF IfcExternalReferenceRelationship FOR RelatedResourceObjects; - PropertiesForConstraint : SET [0:?] OF IfcResourceConstraintRelationship FOR RelatingConstraint; - WHERE - WR11 : (ConstraintGrade <> IfcConstraintEnum.USERDEFINED) OR -((ConstraintGrade = IfcConstraintEnum.USERDEFINED) AND EXISTS(SELF\IfcConstraint.UserDefinedGrade)); -END_ENTITY; - -ENTITY IfcConstructionEquipmentResource - SUBTYPE OF (IfcConstructionResource); - PredefinedType : OPTIONAL IfcConstructionEquipmentResourceTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcConstructionEquipmentResourceTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcConstructionEquipmentResourceTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); -END_ENTITY; - -ENTITY IfcConstructionEquipmentResourceType - SUBTYPE OF (IfcConstructionResourceType); - PredefinedType : IfcConstructionEquipmentResourceTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcConstructionEquipmentResourceTypeEnum.USERDEFINED) OR -((PredefinedType = IfcConstructionEquipmentResourceTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcTypeResource.ResourceType)); -END_ENTITY; - -ENTITY IfcConstructionMaterialResource - SUBTYPE OF (IfcConstructionResource); - PredefinedType : OPTIONAL IfcConstructionMaterialResourceTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcConstructionMaterialResourceTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcConstructionMaterialResourceTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); -END_ENTITY; - -ENTITY IfcConstructionMaterialResourceType - SUBTYPE OF (IfcConstructionResourceType); - PredefinedType : IfcConstructionMaterialResourceTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcConstructionMaterialResourceTypeEnum.USERDEFINED) OR -((PredefinedType = IfcConstructionMaterialResourceTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcTypeResource.ResourceType)); -END_ENTITY; - -ENTITY IfcConstructionProductResource - SUBTYPE OF (IfcConstructionResource); - PredefinedType : OPTIONAL IfcConstructionProductResourceTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcConstructionProductResourceTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcConstructionProductResourceTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); -END_ENTITY; - -ENTITY IfcConstructionProductResourceType - SUBTYPE OF (IfcConstructionResourceType); - PredefinedType : IfcConstructionProductResourceTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcConstructionProductResourceTypeEnum.USERDEFINED) OR -((PredefinedType = IfcConstructionProductResourceTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcTypeResource.ResourceType)); -END_ENTITY; - -ENTITY IfcConstructionResource - ABSTRACT SUPERTYPE OF (ONEOF - (IfcConstructionEquipmentResource - ,IfcConstructionMaterialResource - ,IfcConstructionProductResource - ,IfcCrewResource - ,IfcLaborResource - ,IfcSubContractResource)) - SUBTYPE OF (IfcResource); - Usage : OPTIONAL IfcResourceTime; - BaseCosts : OPTIONAL LIST [1:?] OF IfcAppliedValue; - BaseQuantity : OPTIONAL IfcPhysicalQuantity; -END_ENTITY; - -ENTITY IfcConstructionResourceType - ABSTRACT SUPERTYPE OF (ONEOF - (IfcConstructionEquipmentResourceType - ,IfcConstructionMaterialResourceType - ,IfcConstructionProductResourceType - ,IfcCrewResourceType - ,IfcLaborResourceType - ,IfcSubContractResourceType)) - SUBTYPE OF (IfcTypeResource); - BaseCosts : OPTIONAL LIST [1:?] OF IfcAppliedValue; - BaseQuantity : OPTIONAL IfcPhysicalQuantity; -END_ENTITY; - -ENTITY IfcContext - ABSTRACT SUPERTYPE OF (ONEOF - (IfcProject - ,IfcProjectLibrary)) - SUBTYPE OF (IfcObjectDefinition); - ObjectType : OPTIONAL IfcLabel; - LongName : OPTIONAL IfcLabel; - Phase : OPTIONAL IfcLabel; - RepresentationContexts : OPTIONAL SET [1:?] OF IfcRepresentationContext; - UnitsInContext : OPTIONAL IfcUnitAssignment; - INVERSE - IsDefinedBy : SET [0:?] OF IfcRelDefinesByProperties FOR RelatedObjects; - Declares : SET [0:?] OF IfcRelDeclares FOR RelatingContext; -END_ENTITY; - -ENTITY IfcContextDependentUnit - SUBTYPE OF (IfcNamedUnit); - Name : IfcLabel; - INVERSE - HasExternalReference : SET [0:?] OF IfcExternalReferenceRelationship FOR RelatedResourceObjects; -END_ENTITY; - -ENTITY IfcControl - ABSTRACT SUPERTYPE OF (ONEOF - (IfcActionRequest - ,IfcCostItem - ,IfcCostSchedule - ,IfcPerformanceHistory - ,IfcPermit - ,IfcProjectOrder - ,IfcWorkCalendar - ,IfcWorkControl)) - SUBTYPE OF (IfcObject); - Identification : OPTIONAL IfcIdentifier; - INVERSE - Controls : SET [0:?] OF IfcRelAssignsToControl FOR RelatingControl; -END_ENTITY; - -ENTITY IfcController - SUBTYPE OF (IfcDistributionControlElement); - PredefinedType : OPTIONAL IfcControllerTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcControllerTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcControllerTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR -('IFC4.IFCCONTROLLERTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcControllerType - SUBTYPE OF (IfcDistributionControlElementType); - PredefinedType : IfcControllerTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcControllerTypeEnum.USERDEFINED) OR -((PredefinedType = IfcControllerTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcConversionBasedUnit - SUPERTYPE OF (ONEOF - (IfcConversionBasedUnitWithOffset)) - SUBTYPE OF (IfcNamedUnit); - Name : IfcLabel; - ConversionFactor : IfcMeasureWithUnit; - INVERSE - HasExternalReference : SET [0:?] OF IfcExternalReferenceRelationship FOR RelatedResourceObjects; -END_ENTITY; - -ENTITY IfcConversionBasedUnitWithOffset - SUBTYPE OF (IfcConversionBasedUnit); - ConversionOffset : IfcReal; -END_ENTITY; - -ENTITY IfcCooledBeam - SUBTYPE OF (IfcEnergyConversionDevice); - PredefinedType : OPTIONAL IfcCooledBeamTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcCooledBeamTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcCooledBeamTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCCOOLEDBEAMTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcCooledBeamType - SUBTYPE OF (IfcEnergyConversionDeviceType); - PredefinedType : IfcCooledBeamTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcCooledBeamTypeEnum.USERDEFINED) OR -((PredefinedType = IfcCooledBeamTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcCoolingTower - SUBTYPE OF (IfcEnergyConversionDevice); - PredefinedType : OPTIONAL IfcCoolingTowerTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcCoolingTowerTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcCoolingTowerTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCCOOLINGTOWERTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcCoolingTowerType - SUBTYPE OF (IfcEnergyConversionDeviceType); - PredefinedType : IfcCoolingTowerTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcCoolingTowerTypeEnum.USERDEFINED) OR -((PredefinedType = IfcCoolingTowerTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcCoordinateOperation - ABSTRACT SUPERTYPE OF (ONEOF - (IfcMapConversion)); - SourceCRS : IfcCoordinateReferenceSystemSelect; - TargetCRS : IfcCoordinateReferenceSystem; -END_ENTITY; - -ENTITY IfcCoordinateReferenceSystem - ABSTRACT SUPERTYPE OF (ONEOF - (IfcProjectedCRS)); - Name : IfcLabel; - Description : OPTIONAL IfcText; - GeodeticDatum : OPTIONAL IfcIdentifier; - VerticalDatum : OPTIONAL IfcIdentifier; - INVERSE - HasCoordinateOperation : SET [0:1] OF IfcCoordinateOperation FOR SourceCRS; -END_ENTITY; - -ENTITY IfcCostItem - SUBTYPE OF (IfcControl); - PredefinedType : OPTIONAL IfcCostItemTypeEnum; - CostValues : OPTIONAL LIST [1:?] OF IfcCostValue; - CostQuantities : OPTIONAL LIST [1:?] OF IfcPhysicalQuantity; -END_ENTITY; - -ENTITY IfcCostSchedule - SUBTYPE OF (IfcControl); - PredefinedType : OPTIONAL IfcCostScheduleTypeEnum; - Status : OPTIONAL IfcLabel; - SubmittedOn : OPTIONAL IfcDateTime; - UpdateDate : OPTIONAL IfcDateTime; -END_ENTITY; - -ENTITY IfcCostValue - SUBTYPE OF (IfcAppliedValue); -END_ENTITY; - -ENTITY IfcCovering - SUBTYPE OF (IfcBuildingElement); - PredefinedType : OPTIONAL IfcCoveringTypeEnum; - INVERSE - CoversSpaces : SET [0:1] OF IfcRelCoversSpaces FOR RelatedCoverings; - CoversElements : SET [0:1] OF IfcRelCoversBldgElements FOR RelatedCoverings; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcCoveringTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcCoveringTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCCOVERINGTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcCoveringType - SUBTYPE OF (IfcBuildingElementType); - PredefinedType : IfcCoveringTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcCoveringTypeEnum.USERDEFINED) OR -((PredefinedType = IfcCoveringTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcCrewResource - SUBTYPE OF (IfcConstructionResource); - PredefinedType : OPTIONAL IfcCrewResourceTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcCrewResourceTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcCrewResourceTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); -END_ENTITY; - -ENTITY IfcCrewResourceType - SUBTYPE OF (IfcConstructionResourceType); - PredefinedType : IfcCrewResourceTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcCrewResourceTypeEnum.USERDEFINED) OR -((PredefinedType = IfcCrewResourceTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcTypeResource.ResourceType)); -END_ENTITY; - -ENTITY IfcCsgPrimitive3D - ABSTRACT SUPERTYPE OF (ONEOF - (IfcBlock - ,IfcRectangularPyramid - ,IfcRightCircularCone - ,IfcRightCircularCylinder - ,IfcSphere)) - SUBTYPE OF (IfcGeometricRepresentationItem); - Position : IfcAxis2Placement3D; - DERIVE - Dim : IfcDimensionCount := 3; -END_ENTITY; - -ENTITY IfcCsgSolid - SUBTYPE OF (IfcSolidModel); - TreeRootExpression : IfcCsgSelect; -END_ENTITY; - -ENTITY IfcCurrencyRelationship - SUBTYPE OF (IfcResourceLevelRelationship); - RelatingMonetaryUnit : IfcMonetaryUnit; - RelatedMonetaryUnit : IfcMonetaryUnit; - ExchangeRate : IfcPositiveRatioMeasure; - RateDateTime : OPTIONAL IfcDateTime; - RateSource : OPTIONAL IfcLibraryInformation; -END_ENTITY; - -ENTITY IfcCurtainWall - SUBTYPE OF (IfcBuildingElement); - PredefinedType : OPTIONAL IfcCurtainWallTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcCurtainWallTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcCurtainWallTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCCURTAINWALLTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcCurtainWallType - SUBTYPE OF (IfcBuildingElementType); - PredefinedType : IfcCurtainWallTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcCurtainWallTypeEnum.USERDEFINED) OR -((PredefinedType = IfcCurtainWallTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcCurve - ABSTRACT SUPERTYPE OF (ONEOF - (IfcBoundedCurve - ,IfcConic - ,IfcLine - ,IfcOffsetCurve2D - ,IfcOffsetCurve3D - ,IfcPcurve - ,IfcSurfaceCurve)) - SUBTYPE OF (IfcGeometricRepresentationItem); - DERIVE - Dim : IfcDimensionCount := IfcCurveDim(SELF); -END_ENTITY; - -ENTITY IfcCurveBoundedPlane - SUBTYPE OF (IfcBoundedSurface); - BasisSurface : IfcPlane; - OuterBoundary : IfcCurve; - InnerBoundaries : SET [0:?] OF IfcCurve; -END_ENTITY; - -ENTITY IfcCurveBoundedSurface - SUBTYPE OF (IfcBoundedSurface); - BasisSurface : IfcSurface; - Boundaries : SET [1:?] OF IfcBoundaryCurve; - ImplicitOuter : IfcBoolean; -END_ENTITY; - -ENTITY IfcCurveStyle - SUBTYPE OF (IfcPresentationStyle); - CurveFont : OPTIONAL IfcCurveFontOrScaledCurveFontSelect; - CurveWidth : OPTIONAL IfcSizeSelect; - CurveColour : OPTIONAL IfcColour; - ModelOrDraughting : OPTIONAL IfcBoolean; - WHERE - MeasureOfWidth : (NOT(EXISTS(CurveWidth))) OR -('IFC4.IFCPOSITIVELENGTHMEASURE' IN TYPEOF(CurveWidth)) OR - (('IFC4.IFCDESCRIPTIVEMEASURE' IN TYPEOF(CurveWidth)) AND - (CurveWidth = 'by layer')); - IdentifiableCurveStyle : EXISTS(CurveFont) OR EXISTS(CurveWidth) OR EXISTS(CurveColour); -END_ENTITY; - -ENTITY IfcCurveStyleFont - SUBTYPE OF (IfcPresentationItem); - Name : OPTIONAL IfcLabel; - PatternList : LIST [1:?] OF IfcCurveStyleFontPattern; -END_ENTITY; - -ENTITY IfcCurveStyleFontAndScaling - SUBTYPE OF (IfcPresentationItem); - Name : OPTIONAL IfcLabel; - CurveFont : IfcCurveStyleFontSelect; - CurveFontScaling : IfcPositiveRatioMeasure; -END_ENTITY; - -ENTITY IfcCurveStyleFontPattern - SUBTYPE OF (IfcPresentationItem); - VisibleSegmentLength : IfcLengthMeasure; - InvisibleSegmentLength : IfcPositiveLengthMeasure; - WHERE - VisibleLengthGreaterEqualZero : VisibleSegmentLength >= 0.; -END_ENTITY; - -ENTITY IfcCylindricalSurface - SUBTYPE OF (IfcElementarySurface); - Radius : IfcPositiveLengthMeasure; -END_ENTITY; - -ENTITY IfcDamper - SUBTYPE OF (IfcFlowController); - PredefinedType : OPTIONAL IfcDamperTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcDamperTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcDamperTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCDAMPERTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcDamperType - SUBTYPE OF (IfcFlowControllerType); - PredefinedType : IfcDamperTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcDamperTypeEnum.USERDEFINED) OR -((PredefinedType = IfcDamperTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcDerivedProfileDef - SUPERTYPE OF (ONEOF - (IfcMirroredProfileDef)) - SUBTYPE OF (IfcProfileDef); - ParentProfile : IfcProfileDef; - Operator : IfcCartesianTransformationOperator2D; - Label : OPTIONAL IfcLabel; - WHERE - InvariantProfileType : SELF\IfcProfileDef.ProfileType = ParentProfile.ProfileType; -END_ENTITY; - -ENTITY IfcDerivedUnit; - Elements : SET [1:?] OF IfcDerivedUnitElement; - UnitType : IfcDerivedUnitEnum; - UserDefinedType : OPTIONAL IfcLabel; - DERIVE - Dimensions : IfcDimensionalExponents := IfcDeriveDimensionalExponents(Elements); - WHERE - WR1 : (SIZEOF (Elements) > 1) OR ((SIZEOF (Elements) = 1) AND (Elements[1].Exponent <> 1 )); - WR2 : (UnitType <> IfcDerivedUnitEnum.USERDEFINED) OR -((UnitType = IfcDerivedUnitEnum.USERDEFINED) AND - (EXISTS(SELF.UserDefinedType))); -END_ENTITY; - -ENTITY IfcDerivedUnitElement; - Unit : IfcNamedUnit; - Exponent : INTEGER; -END_ENTITY; - -ENTITY IfcDimensionalExponents; - LengthExponent : INTEGER; - MassExponent : INTEGER; - TimeExponent : INTEGER; - ElectricCurrentExponent : INTEGER; - ThermodynamicTemperatureExponent : INTEGER; - AmountOfSubstanceExponent : INTEGER; - LuminousIntensityExponent : INTEGER; -END_ENTITY; - -ENTITY IfcDirection - SUBTYPE OF (IfcGeometricRepresentationItem); - DirectionRatios : LIST [2:3] OF IfcReal; - DERIVE - Dim : IfcDimensionCount := HIINDEX(DirectionRatios); - WHERE - MagnitudeGreaterZero : SIZEOF(QUERY(Tmp <* DirectionRatios | Tmp <> 0.0)) > 0; -END_ENTITY; - -ENTITY IfcDiscreteAccessory - SUBTYPE OF (IfcElementComponent); - PredefinedType : OPTIONAL IfcDiscreteAccessoryTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR -(PredefinedType <> IfcDiscreteAccessoryTypeEnum.USERDEFINED) OR -((PredefinedType = IfcDiscreteAccessoryTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR -('IFC4.IFCDISCRETEACCESSORYTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcDiscreteAccessoryType - SUBTYPE OF (IfcElementComponentType); - PredefinedType : IfcDiscreteAccessoryTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcDiscreteAccessoryTypeEnum.USERDEFINED) OR -((PredefinedType = IfcDiscreteAccessoryTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcDistributionChamberElement - SUBTYPE OF (IfcDistributionFlowElement); - PredefinedType : OPTIONAL IfcDistributionChamberElementTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcDistributionChamberElementTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcDistributionChamberElementTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR -('IFC4.IFCDISTRIBUTIONCHAMBERELEMENTTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcDistributionChamberElementType - SUBTYPE OF (IfcDistributionFlowElementType); - PredefinedType : IfcDistributionChamberElementTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcDistributionChamberElementTypeEnum.USERDEFINED) OR -((PredefinedType = IfcDistributionChamberElementTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcDistributionCircuit - SUBTYPE OF (IfcDistributionSystem); -END_ENTITY; - -ENTITY IfcDistributionControlElement - SUPERTYPE OF (ONEOF - (IfcActuator - ,IfcAlarm - ,IfcController - ,IfcFlowInstrument - ,IfcProtectiveDeviceTrippingUnit - ,IfcSensor - ,IfcUnitaryControlElement)) - SUBTYPE OF (IfcDistributionElement); - INVERSE - AssignedToFlowElement : SET [0:1] OF IfcRelFlowControlElements FOR RelatedControlElements; -END_ENTITY; - -ENTITY IfcDistributionControlElementType - ABSTRACT SUPERTYPE OF (ONEOF - (IfcActuatorType - ,IfcAlarmType - ,IfcControllerType - ,IfcFlowInstrumentType - ,IfcProtectiveDeviceTrippingUnitType - ,IfcSensorType - ,IfcUnitaryControlElementType)) - SUBTYPE OF (IfcDistributionElementType); -END_ENTITY; - -ENTITY IfcDistributionElement - SUPERTYPE OF (ONEOF - (IfcDistributionControlElement - ,IfcDistributionFlowElement)) - SUBTYPE OF (IfcElement); - INVERSE - HasPorts : SET [0:?] OF IfcRelConnectsPortToElement FOR RelatedElement; -END_ENTITY; - -ENTITY IfcDistributionElementType - SUPERTYPE OF (ONEOF - (IfcDistributionControlElementType - ,IfcDistributionFlowElementType)) - SUBTYPE OF (IfcElementType); -END_ENTITY; - -ENTITY IfcDistributionFlowElement - SUPERTYPE OF (ONEOF - (IfcDistributionChamberElement - ,IfcEnergyConversionDevice - ,IfcFlowController - ,IfcFlowFitting - ,IfcFlowMovingDevice - ,IfcFlowSegment - ,IfcFlowStorageDevice - ,IfcFlowTerminal - ,IfcFlowTreatmentDevice)) - SUBTYPE OF (IfcDistributionElement); - INVERSE - HasControlElements : SET [0:1] OF IfcRelFlowControlElements FOR RelatingFlowElement; -END_ENTITY; - -ENTITY IfcDistributionFlowElementType - ABSTRACT SUPERTYPE OF (ONEOF - (IfcDistributionChamberElementType - ,IfcEnergyConversionDeviceType - ,IfcFlowControllerType - ,IfcFlowFittingType - ,IfcFlowMovingDeviceType - ,IfcFlowSegmentType - ,IfcFlowStorageDeviceType - ,IfcFlowTerminalType - ,IfcFlowTreatmentDeviceType)) - SUBTYPE OF (IfcDistributionElementType); -END_ENTITY; - -ENTITY IfcDistributionPort - SUBTYPE OF (IfcPort); - FlowDirection : OPTIONAL IfcFlowDirectionEnum; - PredefinedType : OPTIONAL IfcDistributionPortTypeEnum; - SystemType : OPTIONAL IfcDistributionSystemEnum; -END_ENTITY; - -ENTITY IfcDistributionSystem - SUPERTYPE OF (ONEOF - (IfcDistributionCircuit)) - SUBTYPE OF (IfcSystem); - LongName : OPTIONAL IfcLabel; - PredefinedType : OPTIONAL IfcDistributionSystemEnum; -END_ENTITY; - -ENTITY IfcDocumentInformation - SUBTYPE OF (IfcExternalInformation); - Identification : IfcIdentifier; - Name : IfcLabel; - Description : OPTIONAL IfcText; - Location : OPTIONAL IfcURIReference; - Purpose : OPTIONAL IfcText; - IntendedUse : OPTIONAL IfcText; - Scope : OPTIONAL IfcText; - Revision : OPTIONAL IfcLabel; - DocumentOwner : OPTIONAL IfcActorSelect; - Editors : OPTIONAL SET [1:?] OF IfcActorSelect; - CreationTime : OPTIONAL IfcDateTime; - LastRevisionTime : OPTIONAL IfcDateTime; - ElectronicFormat : OPTIONAL IfcIdentifier; - ValidFrom : OPTIONAL IfcDate; - ValidUntil : OPTIONAL IfcDate; - Confidentiality : OPTIONAL IfcDocumentConfidentialityEnum; - Status : OPTIONAL IfcDocumentStatusEnum; - INVERSE - DocumentInfoForObjects : SET [0:?] OF IfcRelAssociatesDocument FOR RelatingDocument; - HasDocumentReferences : SET [0:?] OF IfcDocumentReference FOR ReferencedDocument; - IsPointedTo : SET [0:?] OF IfcDocumentInformationRelationship FOR RelatedDocuments; - IsPointer : SET [0:1] OF IfcDocumentInformationRelationship FOR RelatingDocument; -END_ENTITY; - -ENTITY IfcDocumentInformationRelationship - SUBTYPE OF (IfcResourceLevelRelationship); - RelatingDocument : IfcDocumentInformation; - RelatedDocuments : SET [1:?] OF IfcDocumentInformation; - RelationshipType : OPTIONAL IfcLabel; -END_ENTITY; - -ENTITY IfcDocumentReference - SUBTYPE OF (IfcExternalReference); - Description : OPTIONAL IfcText; - ReferencedDocument : OPTIONAL IfcDocumentInformation; - INVERSE - DocumentRefForObjects : SET [0:?] OF IfcRelAssociatesDocument FOR RelatingDocument; - WHERE - WR1 : EXISTS(Name) XOR EXISTS(ReferencedDocument); -END_ENTITY; - -ENTITY IfcDoor - SUPERTYPE OF (ONEOF - (IfcDoorStandardCase)) - SUBTYPE OF (IfcBuildingElement); - OverallHeight : OPTIONAL IfcPositiveLengthMeasure; - OverallWidth : OPTIONAL IfcPositiveLengthMeasure; - PredefinedType : OPTIONAL IfcDoorTypeEnum; - OperationType : OPTIONAL IfcDoorTypeOperationEnum; - UserDefinedOperationType : OPTIONAL IfcLabel; - WHERE - CorrectStyleAssigned : (SIZEOF(IsTypedBy) = 0) -OR ('IFC4.IFCDOORTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcDoorLiningProperties - SUBTYPE OF (IfcPreDefinedPropertySet); - LiningDepth : OPTIONAL IfcPositiveLengthMeasure; - LiningThickness : OPTIONAL IfcNonNegativeLengthMeasure; - ThresholdDepth : OPTIONAL IfcPositiveLengthMeasure; - ThresholdThickness : OPTIONAL IfcNonNegativeLengthMeasure; - TransomThickness : OPTIONAL IfcNonNegativeLengthMeasure; - TransomOffset : OPTIONAL IfcLengthMeasure; - LiningOffset : OPTIONAL IfcLengthMeasure; - ThresholdOffset : OPTIONAL IfcLengthMeasure; - CasingThickness : OPTIONAL IfcPositiveLengthMeasure; - CasingDepth : OPTIONAL IfcPositiveLengthMeasure; - ShapeAspectStyle : OPTIONAL IfcShapeAspect; - LiningToPanelOffsetX : OPTIONAL IfcLengthMeasure; - LiningToPanelOffsetY : OPTIONAL IfcLengthMeasure; - WHERE - WR31 : NOT(EXISTS(LiningDepth) AND NOT(EXISTS(LiningThickness))); - WR32 : NOT(EXISTS(ThresholdDepth) AND NOT(EXISTS(ThresholdThickness))); - WR33 : (EXISTS(TransomOffset) AND EXISTS(TransomThickness)) XOR -(NOT(EXISTS(TransomOffset)) AND NOT(EXISTS(TransomThickness))); - WR34 : (EXISTS(CasingDepth) AND EXISTS(CasingThickness)) XOR -(NOT(EXISTS(CasingDepth)) AND NOT(EXISTS(CasingThickness))); - WR35 : (EXISTS(SELF\IfcPropertySetDefinition.DefinesType[1])) -AND -( - ('IFC4.IFCDOORTYPE' IN TYPEOF(SELF\IfcPropertySetDefinition.DefinesType[1])) - OR - ('IFC4.IFCDOORSTYLE' IN TYPEOF(SELF\IfcPropertySetDefinition.DefinesType[1])) -); -END_ENTITY; - -ENTITY IfcDoorPanelProperties - SUBTYPE OF (IfcPreDefinedPropertySet); - PanelDepth : OPTIONAL IfcPositiveLengthMeasure; - PanelOperation : IfcDoorPanelOperationEnum; - PanelWidth : OPTIONAL IfcNormalisedRatioMeasure; - PanelPosition : IfcDoorPanelPositionEnum; - ShapeAspectStyle : OPTIONAL IfcShapeAspect; - WHERE - ApplicableToType : (EXISTS(SELF\IfcPropertySetDefinition.DefinesType[1])) -AND -( - ('IFC4.IFCDOORTYPE' IN TYPEOF(SELF\IfcPropertySetDefinition.DefinesType[1])) - OR - ('IFC4.IFCDOORSTYLE' IN TYPEOF(SELF\IfcPropertySetDefinition.DefinesType[1])) -); -END_ENTITY; - -ENTITY IfcDoorStandardCase - SUBTYPE OF (IfcDoor); -END_ENTITY; - -ENTITY IfcDoorStyle - SUBTYPE OF (IfcTypeProduct); - OperationType : IfcDoorStyleOperationEnum; - ConstructionType : IfcDoorStyleConstructionEnum; - ParameterTakesPrecedence : IfcBoolean; - Sizeable : IfcBoolean; -END_ENTITY; - -ENTITY IfcDoorType - SUBTYPE OF (IfcBuildingElementType); - PredefinedType : IfcDoorTypeEnum; - OperationType : IfcDoorTypeOperationEnum; - ParameterTakesPrecedence : OPTIONAL IfcBoolean; - UserDefinedOperationType : OPTIONAL IfcLabel; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcDoorTypeEnum.USERDEFINED) OR -((PredefinedType = IfcDoorTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcDraughtingPreDefinedColour - SUBTYPE OF (IfcPreDefinedColour); - WHERE - PreDefinedColourNames : SELF\IfcPreDefinedItem.Name IN ['black','red','green','blue','yellow', - 'magenta','cyan','white','by layer']; -END_ENTITY; - -ENTITY IfcDraughtingPreDefinedCurveFont - SUBTYPE OF (IfcPreDefinedCurveFont); - WHERE - PreDefinedCurveFontNames : SELF\IfcPredefinedItem.Name IN - ['continuous', - 'chain', - 'chain double dash', - 'dashed', - 'dotted', - 'by layer']; -END_ENTITY; - -ENTITY IfcDuctFitting - SUBTYPE OF (IfcFlowFitting); - PredefinedType : OPTIONAL IfcDuctFittingTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcDuctFittingTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcDuctFittingTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCDUCTFITTINGTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcDuctFittingType - SUBTYPE OF (IfcFlowFittingType); - PredefinedType : IfcDuctFittingTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcDuctFittingTypeEnum.USERDEFINED) OR -((PredefinedType = IfcDuctFittingTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcDuctSegment - SUBTYPE OF (IfcFlowSegment); - PredefinedType : OPTIONAL IfcDuctSegmentTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcDuctSegmentTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcDuctSegmentTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCDUCTSEGMENTTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcDuctSegmentType - SUBTYPE OF (IfcFlowSegmentType); - PredefinedType : IfcDuctSegmentTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcDuctSegmentTypeEnum.USERDEFINED) OR -((PredefinedType = IfcDuctSegmentTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcDuctSilencer - SUBTYPE OF (IfcFlowTreatmentDevice); - PredefinedType : OPTIONAL IfcDuctSilencerTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcDuctSilencerTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcDuctSilencerTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCDUCTSILENCERTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcDuctSilencerType - SUBTYPE OF (IfcFlowTreatmentDeviceType); - PredefinedType : IfcDuctSilencerTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcDuctSilencerTypeEnum.USERDEFINED) OR -((PredefinedType = IfcDuctSilencerTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcEdge - SUPERTYPE OF (ONEOF - (IfcEdgeCurve - ,IfcOrientedEdge - ,IfcSubedge)) - SUBTYPE OF (IfcTopologicalRepresentationItem); - EdgeStart : IfcVertex; - EdgeEnd : IfcVertex; -END_ENTITY; - -ENTITY IfcEdgeCurve - SUBTYPE OF (IfcEdge); - EdgeGeometry : IfcCurve; - SameSense : IfcBoolean; -END_ENTITY; - -ENTITY IfcEdgeLoop - SUBTYPE OF (IfcLoop); - EdgeList : LIST [1:?] OF IfcOrientedEdge; - DERIVE - Ne : IfcInteger := SIZEOF(EdgeList); - WHERE - IsClosed : (EdgeList[1].EdgeStart) :=: (EdgeList[Ne].EdgeEnd); - IsContinuous : IfcLoopHeadToTail(SELF); -END_ENTITY; - -ENTITY IfcElectricAppliance - SUBTYPE OF (IfcFlowTerminal); - PredefinedType : OPTIONAL IfcElectricApplianceTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcElectricApplianceTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcElectricApplianceTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCELECTRICAPPLIANCETYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcElectricApplianceType - SUBTYPE OF (IfcFlowTerminalType); - PredefinedType : IfcElectricApplianceTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcElectricApplianceTypeEnum.USERDEFINED) OR -((PredefinedType = IfcElectricApplianceTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcElectricDistributionBoard - SUBTYPE OF (IfcFlowController); - PredefinedType : OPTIONAL IfcElectricDistributionBoardTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcElectricDistributionBoardTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcElectricDistributionBoardTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCELECTRICDISTRIBUTIONBOARDTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcElectricDistributionBoardType - SUBTYPE OF (IfcFlowControllerType); - PredefinedType : IfcElectricDistributionBoardTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcElectricDistributionBoardTypeEnum.USERDEFINED) OR -((PredefinedType = IfcElectricDistributionBoardTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcElectricFlowStorageDevice - SUBTYPE OF (IfcFlowStorageDevice); - PredefinedType : OPTIONAL IfcElectricFlowStorageDeviceTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcElectricFlowStorageDeviceTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcElectricFlowStorageDeviceTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCELECTRICFLOWSTORAGEDEVICETYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcElectricFlowStorageDeviceType - SUBTYPE OF (IfcFlowStorageDeviceType); - PredefinedType : IfcElectricFlowStorageDeviceTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcElectricFlowStorageDeviceTypeEnum.USERDEFINED) OR -((PredefinedType = IfcElectricFlowStorageDeviceTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcElectricGenerator - SUBTYPE OF (IfcEnergyConversionDevice); - PredefinedType : OPTIONAL IfcElectricGeneratorTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcElectricGeneratorTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcElectricGeneratorTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCELECTRICGENERATORTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcElectricGeneratorType - SUBTYPE OF (IfcEnergyConversionDeviceType); - PredefinedType : IfcElectricGeneratorTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcElectricGeneratorTypeEnum.USERDEFINED) OR -((PredefinedType = IfcElectricGeneratorTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcElectricMotor - SUBTYPE OF (IfcEnergyConversionDevice); - PredefinedType : OPTIONAL IfcElectricMotorTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcElectricMotorTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcElectricMotorTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCELECTRICMOTORTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcElectricMotorType - SUBTYPE OF (IfcEnergyConversionDeviceType); - PredefinedType : IfcElectricMotorTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcElectricMotorTypeEnum.USERDEFINED) OR -((PredefinedType = IfcElectricMotorTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcElectricTimeControl - SUBTYPE OF (IfcFlowController); - PredefinedType : OPTIONAL IfcElectricTimeControlTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcElectricTimeControlTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcElectricTimeControlTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCELECTRICTIMECONTROLTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcElectricTimeControlType - SUBTYPE OF (IfcFlowControllerType); - PredefinedType : IfcElectricTimeControlTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcElectricTimeControlTypeEnum.USERDEFINED) OR -((PredefinedType = IfcElectricTimeControlTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcElement - ABSTRACT SUPERTYPE OF (ONEOF - (IfcBuildingElement - ,IfcCivilElement - ,IfcDistributionElement - ,IfcElementAssembly - ,IfcElementComponent - ,IfcFeatureElement - ,IfcFurnishingElement - ,IfcGeographicElement - ,IfcTransportElement - ,IfcVirtualElement)) - SUBTYPE OF (IfcProduct); - Tag : OPTIONAL IfcIdentifier; - INVERSE - FillsVoids : SET [0:1] OF IfcRelFillsElement FOR RelatedBuildingElement; - ConnectedTo : SET [0:?] OF IfcRelConnectsElements FOR RelatingElement; - IsInterferedByElements : SET [0:?] OF IfcRelInterferesElements FOR RelatedElement; - InterferesElements : SET [0:?] OF IfcRelInterferesElements FOR RelatingElement; - HasProjections : SET [0:?] OF IfcRelProjectsElement FOR RelatingElement; - ReferencedInStructures : SET [0:?] OF IfcRelReferencedInSpatialStructure FOR RelatedElements; - HasOpenings : SET [0:?] OF IfcRelVoidsElement FOR RelatingBuildingElement; - IsConnectionRealization : SET [0:?] OF IfcRelConnectsWithRealizingElements FOR RealizingElements; - ProvidesBoundaries : SET [0:?] OF IfcRelSpaceBoundary FOR RelatedBuildingElement; - ConnectedFrom : SET [0:?] OF IfcRelConnectsElements FOR RelatedElement; - ContainedInStructure : SET [0:1] OF IfcRelContainedInSpatialStructure FOR RelatedElements; - HasCoverings : SET [0:?] OF IfcRelCoversBldgElements FOR RelatingBuildingElement; -END_ENTITY; - -ENTITY IfcElementAssembly - SUBTYPE OF (IfcElement); - AssemblyPlace : OPTIONAL IfcAssemblyPlaceEnum; - PredefinedType : OPTIONAL IfcElementAssemblyTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcElementAssemblyTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcElementAssemblyTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCELEMENTASSEMBLYTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcElementAssemblyType - SUBTYPE OF (IfcElementType); - PredefinedType : IfcElementAssemblyTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcElementAssemblyTypeEnum.USERDEFINED) OR -((PredefinedType = IfcElementAssemblyTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcElementComponent - ABSTRACT SUPERTYPE OF (ONEOF - (IfcBuildingElementPart - ,IfcDiscreteAccessory - ,IfcFastener - ,IfcMechanicalFastener - ,IfcReinforcingElement - ,IfcVibrationIsolator)) - SUBTYPE OF (IfcElement); -END_ENTITY; - -ENTITY IfcElementComponentType - ABSTRACT SUPERTYPE OF (ONEOF - (IfcBuildingElementPartType - ,IfcDiscreteAccessoryType - ,IfcFastenerType - ,IfcMechanicalFastenerType - ,IfcReinforcingElementType - ,IfcVibrationIsolatorType)) - SUBTYPE OF (IfcElementType); -END_ENTITY; - -ENTITY IfcElementQuantity - SUBTYPE OF (IfcQuantitySet); - MethodOfMeasurement : OPTIONAL IfcLabel; - Quantities : SET [1:?] OF IfcPhysicalQuantity; - WHERE - UniqueQuantityNames : IfcUniqueQuantityNames(Quantities); -END_ENTITY; - -ENTITY IfcElementType - ABSTRACT SUPERTYPE OF (ONEOF - (IfcBuildingElementType - ,IfcCivilElementType - ,IfcDistributionElementType - ,IfcElementAssemblyType - ,IfcElementComponentType - ,IfcFurnishingElementType - ,IfcGeographicElementType - ,IfcTransportElementType)) - SUBTYPE OF (IfcTypeProduct); - ElementType : OPTIONAL IfcLabel; -END_ENTITY; - -ENTITY IfcElementarySurface - ABSTRACT SUPERTYPE OF (ONEOF - (IfcCylindricalSurface - ,IfcPlane - ,IfcSphericalSurface - ,IfcToroidalSurface)) - SUBTYPE OF (IfcSurface); - Position : IfcAxis2Placement3D; -END_ENTITY; - -ENTITY IfcEllipse - SUBTYPE OF (IfcConic); - SemiAxis1 : IfcPositiveLengthMeasure; - SemiAxis2 : IfcPositiveLengthMeasure; -END_ENTITY; - -ENTITY IfcEllipseProfileDef - SUBTYPE OF (IfcParameterizedProfileDef); - SemiAxis1 : IfcPositiveLengthMeasure; - SemiAxis2 : IfcPositiveLengthMeasure; -END_ENTITY; - -ENTITY IfcEnergyConversionDevice - SUPERTYPE OF (ONEOF - (IfcAirToAirHeatRecovery - ,IfcBoiler - ,IfcBurner - ,IfcChiller - ,IfcCoil - ,IfcCondenser - ,IfcCooledBeam - ,IfcCoolingTower - ,IfcElectricGenerator - ,IfcElectricMotor - ,IfcEngine - ,IfcEvaporativeCooler - ,IfcEvaporator - ,IfcHeatExchanger - ,IfcHumidifier - ,IfcMotorConnection - ,IfcSolarDevice - ,IfcTransformer - ,IfcTubeBundle - ,IfcUnitaryEquipment)) - SUBTYPE OF (IfcDistributionFlowElement); -END_ENTITY; - -ENTITY IfcEnergyConversionDeviceType - ABSTRACT SUPERTYPE OF (ONEOF - (IfcAirToAirHeatRecoveryType - ,IfcBoilerType - ,IfcBurnerType - ,IfcChillerType - ,IfcCoilType - ,IfcCondenserType - ,IfcCooledBeamType - ,IfcCoolingTowerType - ,IfcElectricGeneratorType - ,IfcElectricMotorType - ,IfcEngineType - ,IfcEvaporativeCoolerType - ,IfcEvaporatorType - ,IfcHeatExchangerType - ,IfcHumidifierType - ,IfcMotorConnectionType - ,IfcSolarDeviceType - ,IfcTransformerType - ,IfcTubeBundleType - ,IfcUnitaryEquipmentType)) - SUBTYPE OF (IfcDistributionFlowElementType); -END_ENTITY; - -ENTITY IfcEngine - SUBTYPE OF (IfcEnergyConversionDevice); - PredefinedType : OPTIONAL IfcEngineTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcEngineTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcEngineTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR -('IFC4.IFCENGINETYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcEngineType - SUBTYPE OF (IfcEnergyConversionDeviceType); - PredefinedType : IfcEngineTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcEngineTypeEnum.USERDEFINED) OR -((PredefinedType = IfcEngineTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcEvaporativeCooler - SUBTYPE OF (IfcEnergyConversionDevice); - PredefinedType : OPTIONAL IfcEvaporativeCoolerTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcEvaporativeCoolerTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcEvaporativeCoolerTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCEVAPORATIVECOOLERTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcEvaporativeCoolerType - SUBTYPE OF (IfcEnergyConversionDeviceType); - PredefinedType : IfcEvaporativeCoolerTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcEvaporativeCoolerTypeEnum.USERDEFINED) OR -((PredefinedType = IfcEvaporativeCoolerTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcEvaporator - SUBTYPE OF (IfcEnergyConversionDevice); - PredefinedType : OPTIONAL IfcEvaporatorTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcEvaporatorTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcEvaporatorTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCEVAPORATORTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcEvaporatorType - SUBTYPE OF (IfcEnergyConversionDeviceType); - PredefinedType : IfcEvaporatorTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcEvaporatorTypeEnum.USERDEFINED) OR -((PredefinedType = IfcEvaporatorTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcEvent - SUBTYPE OF (IfcProcess); - PredefinedType : OPTIONAL IfcEventTypeEnum; - EventTriggerType : OPTIONAL IfcEventTriggerTypeEnum; - UserDefinedEventTriggerType : OPTIONAL IfcLabel; - EventOccurenceTime : OPTIONAL IfcEventTime; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR (PredefinedType <> IfcEventTypeEnum.USERDEFINED) OR ((PredefinedType = IfcEventTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : NOT(EXISTS(EventTriggerType)) OR (EventTriggerType <> IfcEventTriggerTypeEnum.USERDEFINED) OR ((EventTriggerType = IfcEventTriggerTypeEnum.USERDEFINED) AND EXISTS(UserDefinedEventTriggerType)); -END_ENTITY; - -ENTITY IfcEventTime - SUBTYPE OF (IfcSchedulingTime); - ActualDate : OPTIONAL IfcDateTime; - EarlyDate : OPTIONAL IfcDateTime; - LateDate : OPTIONAL IfcDateTime; - ScheduleDate : OPTIONAL IfcDateTime; -END_ENTITY; - -ENTITY IfcEventType - SUBTYPE OF (IfcTypeProcess); - PredefinedType : IfcEventTypeEnum; - EventTriggerType : IfcEventTriggerTypeEnum; - UserDefinedEventTriggerType : OPTIONAL IfcLabel; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcEventTypeEnum.USERDEFINED) OR ((PredefinedType = IfcEventTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcTypeProcess.ProcessType)); - CorrectEventTriggerType : (EventTriggerType <> IfcEventTriggerTypeEnum.USERDEFINED) OR ((EventTriggerType = IfcEventTriggerTypeEnum.USERDEFINED) AND EXISTS(UserDefinedEventTriggerType)); -END_ENTITY; - -ENTITY IfcExtendedProperties - ABSTRACT SUPERTYPE OF (ONEOF - (IfcMaterialProperties - ,IfcProfileProperties)) - SUBTYPE OF (IfcPropertyAbstraction); - Name : OPTIONAL IfcIdentifier; - Description : OPTIONAL IfcText; - Properties : SET [1:?] OF IfcProperty; -END_ENTITY; - -ENTITY IfcExternalInformation - ABSTRACT SUPERTYPE OF (ONEOF - (IfcClassification - ,IfcDocumentInformation - ,IfcLibraryInformation)); -END_ENTITY; - -ENTITY IfcExternalReference - ABSTRACT SUPERTYPE OF (ONEOF - (IfcClassificationReference - ,IfcDocumentReference - ,IfcExternallyDefinedHatchStyle - ,IfcExternallyDefinedSurfaceStyle - ,IfcExternallyDefinedTextFont - ,IfcLibraryReference)); - Location : OPTIONAL IfcURIReference; - Identification : OPTIONAL IfcIdentifier; - Name : OPTIONAL IfcLabel; - INVERSE - ExternalReferenceForResources : SET [0:?] OF IfcExternalReferenceRelationship FOR RelatingReference; - WHERE - WR1 : EXISTS(Identification) OR EXISTS(Location) OR EXISTS(Name); -END_ENTITY; - -ENTITY IfcExternalReferenceRelationship - SUBTYPE OF (IfcResourceLevelRelationship); - RelatingReference : IfcExternalReference; - RelatedResourceObjects : SET [1:?] OF IfcResourceObjectSelect; -END_ENTITY; - -ENTITY IfcExternalSpatialElement - SUBTYPE OF (IfcExternalSpatialStructureElement); - PredefinedType : OPTIONAL IfcExternalSpatialElementTypeEnum; - INVERSE - BoundedBy : SET [0:?] OF IfcRelSpaceBoundary FOR RelatingSpace; -END_ENTITY; - -ENTITY IfcExternalSpatialStructureElement - ABSTRACT SUPERTYPE OF (ONEOF - (IfcExternalSpatialElement)) - SUBTYPE OF (IfcSpatialElement); -END_ENTITY; - -ENTITY IfcExternallyDefinedHatchStyle - SUBTYPE OF (IfcExternalReference); -END_ENTITY; - -ENTITY IfcExternallyDefinedSurfaceStyle - SUBTYPE OF (IfcExternalReference); -END_ENTITY; - -ENTITY IfcExternallyDefinedTextFont - SUBTYPE OF (IfcExternalReference); -END_ENTITY; - -ENTITY IfcExtrudedAreaSolid - SUPERTYPE OF (ONEOF - (IfcExtrudedAreaSolidTapered)) - SUBTYPE OF (IfcSweptAreaSolid); - ExtrudedDirection : IfcDirection; - Depth : IfcPositiveLengthMeasure; - WHERE - ValidExtrusionDirection : IfcDotProduct(IfcRepresentationItem() || IfcGeometricRepresentationItem() || IfcDirection([0.0,0.0,1.0]), SELF.ExtrudedDirection) <> 0.0; -END_ENTITY; - -ENTITY IfcExtrudedAreaSolidTapered - SUBTYPE OF (IfcExtrudedAreaSolid); - EndSweptArea : IfcProfileDef; - WHERE - CorrectProfileAssignment : IfcTaperedSweptAreaProfiles(SELF\IfcSweptAreaSolid.SweptArea, SELF.EndSweptArea); -END_ENTITY; - -ENTITY IfcFace - SUPERTYPE OF (ONEOF - (IfcFaceSurface)) - SUBTYPE OF (IfcTopologicalRepresentationItem); - Bounds : SET [1:?] OF IfcFaceBound; - INVERSE - HasTextureMaps : SET [0:?] OF IfcTextureMap FOR MappedTo; - WHERE - HasOuterBound : SIZEOF(QUERY(temp <* Bounds | 'IFC4.IFCFACEOUTERBOUND' IN TYPEOF(temp))) <= 1; -END_ENTITY; - -ENTITY IfcFaceBasedSurfaceModel - SUBTYPE OF (IfcGeometricRepresentationItem); - FbsmFaces : SET [1:?] OF IfcConnectedFaceSet; - DERIVE - Dim : IfcDimensionCount := 3; -END_ENTITY; - -ENTITY IfcFaceBound - SUPERTYPE OF (ONEOF - (IfcFaceOuterBound)) - SUBTYPE OF (IfcTopologicalRepresentationItem); - Bound : IfcLoop; - Orientation : IfcBoolean; -END_ENTITY; - -ENTITY IfcFaceOuterBound - SUBTYPE OF (IfcFaceBound); -END_ENTITY; - -ENTITY IfcFaceSurface - SUPERTYPE OF (ONEOF - (IfcAdvancedFace)) - SUBTYPE OF (IfcFace); - FaceSurface : IfcSurface; - SameSense : IfcBoolean; -END_ENTITY; - -ENTITY IfcFacetedBrep - SUPERTYPE OF (ONEOF - (IfcFacetedBrepWithVoids)) - SUBTYPE OF (IfcManifoldSolidBrep); -END_ENTITY; - -ENTITY IfcFacetedBrepWithVoids - SUBTYPE OF (IfcFacetedBrep); - Voids : SET [1:?] OF IfcClosedShell; -END_ENTITY; - -ENTITY IfcFailureConnectionCondition - SUBTYPE OF (IfcStructuralConnectionCondition); - TensionFailureX : OPTIONAL IfcForceMeasure; - TensionFailureY : OPTIONAL IfcForceMeasure; - TensionFailureZ : OPTIONAL IfcForceMeasure; - CompressionFailureX : OPTIONAL IfcForceMeasure; - CompressionFailureY : OPTIONAL IfcForceMeasure; - CompressionFailureZ : OPTIONAL IfcForceMeasure; -END_ENTITY; - -ENTITY IfcFan - SUBTYPE OF (IfcFlowMovingDevice); - PredefinedType : OPTIONAL IfcFanTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcFanTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcFanTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCFANTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcFanType - SUBTYPE OF (IfcFlowMovingDeviceType); - PredefinedType : IfcFanTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcFanTypeEnum.USERDEFINED) OR -((PredefinedType = IfcFanTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcFastener - SUBTYPE OF (IfcElementComponent); - PredefinedType : OPTIONAL IfcFastenerTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR -(PredefinedType <> IfcFastenerTypeEnum.USERDEFINED) OR -((PredefinedType = IfcFastenerTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR -('IFC4.IFCFASTENERTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcFastenerType - SUBTYPE OF (IfcElementComponentType); - PredefinedType : IfcFastenerTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcFastenerTypeEnum.USERDEFINED) OR -((PredefinedType = IfcFastenerTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcFeatureElement - ABSTRACT SUPERTYPE OF (ONEOF - (IfcFeatureElementAddition - ,IfcFeatureElementSubtraction - ,IfcSurfaceFeature)) - SUBTYPE OF (IfcElement); -END_ENTITY; - -ENTITY IfcFeatureElementAddition - ABSTRACT SUPERTYPE OF (ONEOF - (IfcProjectionElement)) - SUBTYPE OF (IfcFeatureElement); - INVERSE - ProjectsElements : IfcRelProjectsElement FOR RelatedFeatureElement; -END_ENTITY; - -ENTITY IfcFeatureElementSubtraction - ABSTRACT SUPERTYPE OF (ONEOF - (IfcOpeningElement - ,IfcVoidingFeature)) - SUBTYPE OF (IfcFeatureElement); - INVERSE - VoidsElements : IfcRelVoidsElement FOR RelatedOpeningElement; - WHERE - HasNoSubtraction : SIZEOF(SELF\IfcElement.HasOpenings) = 0; - IsNotFilling : SIZEOF(SELF\IfcElement.FillsVoids) = 0; -END_ENTITY; - -ENTITY IfcFillAreaStyle - SUBTYPE OF (IfcPresentationStyle); - FillStyles : SET [1:?] OF IfcFillStyleSelect; - ModelorDraughting : OPTIONAL IfcBoolean; - WHERE - MaxOneColour : SIZEOF(QUERY(Style <* SELF.FillStyles | - 'IFC4.IFCCOLOUR' IN - TYPEOF(Style) - )) <= 1; - MaxOneExtHatchStyle : SIZEOF(QUERY(Style <* SELF.FillStyles | - 'IFC4.IFCEXTERNALLYDEFINEDHATCHSTYLE' IN - TYPEOF(Style) - )) <= 1; - ConsistentHatchStyleDef : IfcCorrectFillAreaStyle(SELF.FillStyles); -END_ENTITY; - -ENTITY IfcFillAreaStyleHatching - SUBTYPE OF (IfcGeometricRepresentationItem); - HatchLineAppearance : IfcCurveStyle; - StartOfNextHatchLine : IfcHatchLineDistanceSelect; - PointOfReferenceHatchLine : OPTIONAL IfcCartesianPoint; - PatternStart : OPTIONAL IfcCartesianPoint; - HatchLineAngle : IfcPlaneAngleMeasure; - WHERE - PatternStart2D : NOT(EXISTS(PatternStart)) OR (PatternStart.Dim = 2); - RefHatchLine2D : NOT(EXISTS(PointOfReferenceHatchLine)) OR (PointOfReferenceHatchLine.Dim = 2); -END_ENTITY; - -ENTITY IfcFillAreaStyleTiles - SUBTYPE OF (IfcGeometricRepresentationItem); - TilingPattern : LIST [2:2] OF IfcVector; - Tiles : SET [1:?] OF IfcStyledItem; - TilingScale : IfcPositiveRatioMeasure; -END_ENTITY; - -ENTITY IfcFilter - SUBTYPE OF (IfcFlowTreatmentDevice); - PredefinedType : OPTIONAL IfcFilterTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcFilterTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcFilterTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCFILTERTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcFilterType - SUBTYPE OF (IfcFlowTreatmentDeviceType); - PredefinedType : IfcFilterTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcFilterTypeEnum.USERDEFINED) OR -((PredefinedType = IfcFilterTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcFireSuppressionTerminal - SUBTYPE OF (IfcFlowTerminal); - PredefinedType : OPTIONAL IfcFireSuppressionTerminalTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcFireSuppressionTerminalTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcFireSuppressionTerminalTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCFIRESUPPRESSIONTERMINALTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcFireSuppressionTerminalType - SUBTYPE OF (IfcFlowTerminalType); - PredefinedType : IfcFireSuppressionTerminalTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcFireSuppressionTerminalTypeEnum.USERDEFINED) OR -((PredefinedType = IfcFireSuppressionTerminalTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcFixedReferenceSweptAreaSolid - SUBTYPE OF (IfcSweptAreaSolid); - Directrix : IfcCurve; - StartParam : OPTIONAL IfcParameterValue; - EndParam : OPTIONAL IfcParameterValue; - FixedReference : IfcDirection; - WHERE - DirectrixBounded : (EXISTS(StartParam) AND EXISTS(EndParam)) OR -(SIZEOF(['IFC4.IFCCONIC', 'IFC4.IFCBOUNDEDCURVE'] * TYPEOF(Directrix)) = 1); -END_ENTITY; - -ENTITY IfcFlowController - SUPERTYPE OF (ONEOF - (IfcAirTerminalBox - ,IfcDamper - ,IfcElectricDistributionBoard - ,IfcElectricTimeControl - ,IfcFlowMeter - ,IfcProtectiveDevice - ,IfcSwitchingDevice - ,IfcValve)) - SUBTYPE OF (IfcDistributionFlowElement); -END_ENTITY; - -ENTITY IfcFlowControllerType - ABSTRACT SUPERTYPE OF (ONEOF - (IfcAirTerminalBoxType - ,IfcDamperType - ,IfcElectricDistributionBoardType - ,IfcElectricTimeControlType - ,IfcFlowMeterType - ,IfcProtectiveDeviceType - ,IfcSwitchingDeviceType - ,IfcValveType)) - SUBTYPE OF (IfcDistributionFlowElementType); -END_ENTITY; - -ENTITY IfcFlowFitting - SUPERTYPE OF (ONEOF - (IfcCableCarrierFitting - ,IfcCableFitting - ,IfcDuctFitting - ,IfcJunctionBox - ,IfcPipeFitting)) - SUBTYPE OF (IfcDistributionFlowElement); -END_ENTITY; - -ENTITY IfcFlowFittingType - ABSTRACT SUPERTYPE OF (ONEOF - (IfcCableCarrierFittingType - ,IfcCableFittingType - ,IfcDuctFittingType - ,IfcJunctionBoxType - ,IfcPipeFittingType)) - SUBTYPE OF (IfcDistributionFlowElementType); -END_ENTITY; - -ENTITY IfcFlowInstrument - SUBTYPE OF (IfcDistributionControlElement); - PredefinedType : OPTIONAL IfcFlowInstrumentTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcFlowInstrumentTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcFlowInstrumentTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR -('IFC4.IFCFLOWINSTRUMENTTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcFlowInstrumentType - SUBTYPE OF (IfcDistributionControlElementType); - PredefinedType : IfcFlowInstrumentTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcFlowInstrumentTypeEnum.USERDEFINED) OR -((PredefinedType = IfcFlowInstrumentTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcFlowMeter - SUBTYPE OF (IfcFlowController); - PredefinedType : OPTIONAL IfcFlowMeterTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcFlowMeterTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcFlowMeterTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCFLOWMETERTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcFlowMeterType - SUBTYPE OF (IfcFlowControllerType); - PredefinedType : IfcFlowMeterTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcFlowMeterTypeEnum.USERDEFINED) OR -((PredefinedType = IfcFlowMeterTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcFlowMovingDevice - SUPERTYPE OF (ONEOF - (IfcCompressor - ,IfcFan - ,IfcPump)) - SUBTYPE OF (IfcDistributionFlowElement); -END_ENTITY; - -ENTITY IfcFlowMovingDeviceType - ABSTRACT SUPERTYPE OF (ONEOF - (IfcCompressorType - ,IfcFanType - ,IfcPumpType)) - SUBTYPE OF (IfcDistributionFlowElementType); -END_ENTITY; - -ENTITY IfcFlowSegment - SUPERTYPE OF (ONEOF - (IfcCableCarrierSegment - ,IfcCableSegment - ,IfcDuctSegment - ,IfcPipeSegment)) - SUBTYPE OF (IfcDistributionFlowElement); -END_ENTITY; - -ENTITY IfcFlowSegmentType - ABSTRACT SUPERTYPE OF (ONEOF - (IfcCableCarrierSegmentType - ,IfcCableSegmentType - ,IfcDuctSegmentType - ,IfcPipeSegmentType)) - SUBTYPE OF (IfcDistributionFlowElementType); -END_ENTITY; - -ENTITY IfcFlowStorageDevice - SUPERTYPE OF (ONEOF - (IfcElectricFlowStorageDevice - ,IfcTank)) - SUBTYPE OF (IfcDistributionFlowElement); -END_ENTITY; - -ENTITY IfcFlowStorageDeviceType - ABSTRACT SUPERTYPE OF (ONEOF - (IfcElectricFlowStorageDeviceType - ,IfcTankType)) - SUBTYPE OF (IfcDistributionFlowElementType); -END_ENTITY; - -ENTITY IfcFlowTerminal - SUPERTYPE OF (ONEOF - (IfcAirTerminal - ,IfcAudioVisualAppliance - ,IfcCommunicationsAppliance - ,IfcElectricAppliance - ,IfcFireSuppressionTerminal - ,IfcLamp - ,IfcLightFixture - ,IfcMedicalDevice - ,IfcOutlet - ,IfcSanitaryTerminal - ,IfcSpaceHeater - ,IfcStackTerminal - ,IfcWasteTerminal)) - SUBTYPE OF (IfcDistributionFlowElement); -END_ENTITY; - -ENTITY IfcFlowTerminalType - ABSTRACT SUPERTYPE OF (ONEOF - (IfcAirTerminalType - ,IfcAudioVisualApplianceType - ,IfcCommunicationsApplianceType - ,IfcElectricApplianceType - ,IfcFireSuppressionTerminalType - ,IfcLampType - ,IfcLightFixtureType - ,IfcMedicalDeviceType - ,IfcOutletType - ,IfcSanitaryTerminalType - ,IfcSpaceHeaterType - ,IfcStackTerminalType - ,IfcWasteTerminalType)) - SUBTYPE OF (IfcDistributionFlowElementType); -END_ENTITY; - -ENTITY IfcFlowTreatmentDevice - SUPERTYPE OF (ONEOF - (IfcDuctSilencer - ,IfcFilter - ,IfcInterceptor)) - SUBTYPE OF (IfcDistributionFlowElement); -END_ENTITY; - -ENTITY IfcFlowTreatmentDeviceType - ABSTRACT SUPERTYPE OF (ONEOF - (IfcDuctSilencerType - ,IfcFilterType - ,IfcInterceptorType)) - SUBTYPE OF (IfcDistributionFlowElementType); -END_ENTITY; - -ENTITY IfcFooting - SUBTYPE OF (IfcBuildingElement); - PredefinedType : OPTIONAL IfcFootingTypeEnum; - WHERE - CorrectPredefinedType : NOT EXISTS(PredefinedType) OR -(PredefinedType <> IfcFootingTypeEnum.USERDEFINED) OR -((PredefinedType = IfcFootingTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR -('IFC4.IFCFOOTINGTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcFootingType - SUBTYPE OF (IfcBuildingElementType); - PredefinedType : IfcFootingTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcFootingTypeEnum.USERDEFINED) OR -((PredefinedType = IfcFootingTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcFurnishingElement - SUPERTYPE OF (ONEOF - (IfcFurniture - ,IfcSystemFurnitureElement)) - SUBTYPE OF (IfcElement); -END_ENTITY; - -ENTITY IfcFurnishingElementType - SUPERTYPE OF (ONEOF - (IfcFurnitureType - ,IfcSystemFurnitureElementType)) - SUBTYPE OF (IfcElementType); -END_ENTITY; - -ENTITY IfcFurniture - SUBTYPE OF (IfcFurnishingElement); - PredefinedType : OPTIONAL IfcFurnitureTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcFurnitureTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcFurnitureTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCFURNITURETYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcFurnitureType - SUBTYPE OF (IfcFurnishingElementType); - AssemblyPlace : IfcAssemblyPlaceEnum; - PredefinedType : OPTIONAL IfcFurnitureTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcFurnitureTypeEnum.USERDEFINED) OR -((PredefinedType = IfcFurnitureTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcGeographicElement - SUBTYPE OF (IfcElement); - PredefinedType : OPTIONAL IfcGeographicElementTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcGeographicElementTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcGeographicElementTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCGEOGRAPHICELEMENTTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcGeographicElementType - SUBTYPE OF (IfcElementType); - PredefinedType : IfcGeographicElementTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcGeographicElementTypeEnum.USERDEFINED) OR -((PredefinedType = IfcGeographicElementTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcGeometricCurveSet - SUBTYPE OF (IfcGeometricSet); - WHERE - NoSurfaces : SIZEOF(QUERY(Temp <* SELF\IfcGeometricSet.Elements | -'IFC4.IFCSURFACE' IN TYPEOF(Temp))) = 0; -END_ENTITY; - -ENTITY IfcGeometricRepresentationContext - SUPERTYPE OF (ONEOF - (IfcGeometricRepresentationSubContext)) - SUBTYPE OF (IfcRepresentationContext); - CoordinateSpaceDimension : IfcDimensionCount; - Precision : OPTIONAL IfcReal; - WorldCoordinateSystem : IfcAxis2Placement; - TrueNorth : OPTIONAL IfcDirection; - INVERSE - HasSubContexts : SET [0:?] OF IfcGeometricRepresentationSubContext FOR ParentContext; - HasCoordinateOperation : SET [0:1] OF IfcCoordinateOperation FOR SourceCRS; - WHERE - North2D : NOT(EXISTS(TrueNorth)) OR (HIINDEX(TrueNorth.DirectionRatios) = 2); -END_ENTITY; - -ENTITY IfcGeometricRepresentationItem - ABSTRACT SUPERTYPE OF (ONEOF - (IfcAnnotationFillArea - ,IfcBooleanResult - ,IfcBoundingBox - ,IfcCartesianPointList - ,IfcCartesianTransformationOperator - ,IfcCompositeCurveSegment - ,IfcCsgPrimitive3D - ,IfcCurve - ,IfcDirection - ,IfcFaceBasedSurfaceModel - ,IfcFillAreaStyleHatching - ,IfcFillAreaStyleTiles - ,IfcGeometricSet - ,IfcHalfSpaceSolid - ,IfcLightSource - ,IfcPlacement - ,IfcPlanarExtent - ,IfcPoint - ,IfcSectionedSpine - ,IfcShellBasedSurfaceModel - ,IfcSolidModel - ,IfcSurface - ,IfcTessellatedItem - ,IfcTextLiteral - ,IfcVector)) - SUBTYPE OF (IfcRepresentationItem); -END_ENTITY; - -ENTITY IfcGeometricRepresentationSubContext - SUBTYPE OF (IfcGeometricRepresentationContext); - ParentContext : IfcGeometricRepresentationContext; - TargetScale : OPTIONAL IfcPositiveRatioMeasure; - TargetView : IfcGeometricProjectionEnum; - UserDefinedTargetView : OPTIONAL IfcLabel; - DERIVE - SELF\IfcGeometricRepresentationContext.WorldCoordinateSystem : IfcAxis2Placement := ParentContext.WorldCoordinateSystem; - SELF\IfcGeometricRepresentationContext.CoordinateSpaceDimension : IfcDimensionCount := ParentContext.CoordinateSpaceDimension; - SELF\IfcGeometricRepresentationContext.TrueNorth : IfcDirection := NVL(ParentContext.TrueNorth, IfcConvertDirectionInto2D(SELF\IfcGeometricRepresentationContext.WorldCoordinateSystem.P[2])); - SELF\IfcGeometricRepresentationContext.Precision : IfcReal := NVL(ParentContext.Precision,1.E-5); - WHERE - ParentNoSub : NOT('IFC4.IFCGEOMETRICREPRESENTATIONSUBCONTEXT' IN TYPEOF(ParentContext)); - UserTargetProvided : (TargetView <> IfcGeometricProjectionEnum.USERDEFINED) OR -((TargetView = IfcGeometricProjectionEnum.USERDEFINED) AND EXISTS(UserDefinedTargetView)); - NoCoordOperation : SIZEOF(SELF\IfcGeometricRepresentationContext.HasCoordinateOperation) = 0; -END_ENTITY; - -ENTITY IfcGeometricSet - SUPERTYPE OF (ONEOF - (IfcGeometricCurveSet)) - SUBTYPE OF (IfcGeometricRepresentationItem); - Elements : SET [1:?] OF IfcGeometricSetSelect; - DERIVE - Dim : IfcDimensionCount := Elements[1].Dim; - WHERE - ConsistentDim : SIZEOF(QUERY(Temp <* Elements | - Temp.Dim <> Elements[1].Dim)) -= 0; -END_ENTITY; - -ENTITY IfcGrid - SUBTYPE OF (IfcProduct); - UAxes : LIST [1:?] OF UNIQUE IfcGridAxis; - VAxes : LIST [1:?] OF UNIQUE IfcGridAxis; - WAxes : OPTIONAL LIST [1:?] OF UNIQUE IfcGridAxis; - PredefinedType : OPTIONAL IfcGridTypeEnum; - INVERSE - ContainedInStructure : SET [0:1] OF IfcRelContainedInSpatialStructure FOR RelatedElements; - WHERE - HasPlacement : EXISTS(SELF\IfcProduct.ObjectPlacement); -END_ENTITY; - -ENTITY IfcGridAxis; - AxisTag : OPTIONAL IfcLabel; - AxisCurve : IfcCurve; - SameSense : IfcBoolean; - INVERSE - PartOfW : SET [0:1] OF IfcGrid FOR WAxes; - PartOfV : SET [0:1] OF IfcGrid FOR VAxes; - PartOfU : SET [0:1] OF IfcGrid FOR UAxes; - HasIntersections : SET [0:?] OF IfcVirtualGridIntersection FOR IntersectingAxes; - WHERE - WR1 : AxisCurve.Dim = 2; - WR2 : (SIZEOF(PartOfU) = 1) XOR (SIZEOF(PartOfV) = 1) XOR (SIZEOF(PartOfW) = 1); -END_ENTITY; - -ENTITY IfcGridPlacement - SUBTYPE OF (IfcObjectPlacement); - PlacementLocation : IfcVirtualGridIntersection; - PlacementRefDirection : OPTIONAL IfcGridPlacementDirectionSelect; -END_ENTITY; - -ENTITY IfcGroup - SUPERTYPE OF (ONEOF - (IfcAsset - ,IfcInventory - ,IfcStructuralLoadGroup - ,IfcStructuralResultGroup - ,IfcSystem)) - SUBTYPE OF (IfcObject); - INVERSE - IsGroupedBy : SET [0:?] OF IfcRelAssignsToGroup FOR RelatingGroup; -END_ENTITY; - -ENTITY IfcHalfSpaceSolid - SUPERTYPE OF (ONEOF - (IfcBoxedHalfSpace - ,IfcPolygonalBoundedHalfSpace)) - SUBTYPE OF (IfcGeometricRepresentationItem); - BaseSurface : IfcSurface; - AgreementFlag : IfcBoolean; - DERIVE - Dim : IfcDimensionCount := 3; -END_ENTITY; - -ENTITY IfcHeatExchanger - SUBTYPE OF (IfcEnergyConversionDevice); - PredefinedType : OPTIONAL IfcHeatExchangerTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcHeatExchangerTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcHeatExchangerTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCHEATEXCHANGERTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcHeatExchangerType - SUBTYPE OF (IfcEnergyConversionDeviceType); - PredefinedType : IfcHeatExchangerTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcHeatExchangerTypeEnum.USERDEFINED) OR -((PredefinedType = IfcHeatExchangerTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcHumidifier - SUBTYPE OF (IfcEnergyConversionDevice); - PredefinedType : OPTIONAL IfcHumidifierTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcHumidifierTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcHumidifierTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCHUMIDIFIERTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcHumidifierType - SUBTYPE OF (IfcEnergyConversionDeviceType); - PredefinedType : IfcHumidifierTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcHumidifierTypeEnum.USERDEFINED) OR -((PredefinedType = IfcHumidifierTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcIShapeProfileDef - SUBTYPE OF (IfcParameterizedProfileDef); - OverallWidth : IfcPositiveLengthMeasure; - OverallDepth : IfcPositiveLengthMeasure; - WebThickness : IfcPositiveLengthMeasure; - FlangeThickness : IfcPositiveLengthMeasure; - FilletRadius : OPTIONAL IfcNonNegativeLengthMeasure; - FlangeEdgeRadius : OPTIONAL IfcNonNegativeLengthMeasure; - FlangeSlope : OPTIONAL IfcPlaneAngleMeasure; - WHERE - ValidFlangeThickness : (2. * FlangeThickness) < OverallDepth; - ValidWebThickness : WebThickness < OverallWidth; - ValidFilletRadius : NOT(EXISTS(FilletRadius)) OR -((FilletRadius <= (OverallWidth - WebThickness)/2.) AND - (FilletRadius <= (OverallDepth - (2. * FlangeThickness))/2.)); -END_ENTITY; - -ENTITY IfcImageTexture - SUBTYPE OF (IfcSurfaceTexture); - URLReference : IfcURIReference; -END_ENTITY; - -ENTITY IfcIndexedColourMap - SUBTYPE OF (IfcPresentationItem); - MappedTo : IfcTessellatedFaceSet; - Opacity : OPTIONAL IfcNormalisedRatioMeasure; - Colours : IfcColourRgbList; - ColourIndex : LIST [1:?] OF IfcPositiveInteger; -END_ENTITY; - -ENTITY IfcIndexedPolyCurve - SUBTYPE OF (IfcBoundedCurve); - Points : IfcCartesianPointList; - Segments : OPTIONAL LIST [1:?] OF IfcSegmentIndexSelect; - SelfIntersect : OPTIONAL IfcBoolean; - WHERE - Consecutive : (SIZEOF(Segments) = 0) OR IfcConsecutiveSegments(Segments); -END_ENTITY; - -ENTITY IfcIndexedPolygonalFace - SUPERTYPE OF (ONEOF - (IfcIndexedPolygonalFaceWithVoids)) - SUBTYPE OF (IfcTessellatedItem); - CoordIndex : LIST [3:?] OF IfcPositiveInteger; - INVERSE - ToFaceSet : SET [1:?] OF IfcPolygonalFaceSet FOR Faces; -END_ENTITY; - -ENTITY IfcIndexedPolygonalFaceWithVoids - SUBTYPE OF (IfcIndexedPolygonalFace); - InnerCoordIndices : LIST [1:?] OF LIST [3:?] OF UNIQUE IfcPositiveInteger; -END_ENTITY; - -ENTITY IfcIndexedTextureMap - ABSTRACT SUPERTYPE OF (ONEOF - (IfcIndexedTriangleTextureMap)) - SUBTYPE OF (IfcTextureCoordinate); - MappedTo : IfcTessellatedFaceSet; - TexCoords : IfcTextureVertexList; -END_ENTITY; - -ENTITY IfcIndexedTriangleTextureMap - SUBTYPE OF (IfcIndexedTextureMap); - TexCoordIndex : OPTIONAL LIST [1:?] OF LIST [3:3] OF IfcPositiveInteger; -END_ENTITY; - -ENTITY IfcInterceptor - SUBTYPE OF (IfcFlowTreatmentDevice); - PredefinedType : OPTIONAL IfcInterceptorTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcInterceptorTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcInterceptorTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCINTERCEPTORTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcInterceptorType - SUBTYPE OF (IfcFlowTreatmentDeviceType); - PredefinedType : IfcInterceptorTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcInterceptorTypeEnum.USERDEFINED) OR -((PredefinedType = IfcInterceptorTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcIntersectionCurve - SUBTYPE OF (IfcSurfaceCurve); - WHERE - TwoPCurves : SIZEOF(SELF\IfcSurfaceCurve.AssociatedGeometry) = 2; - DistinctSurfaces : IfcAssociatedSurface(SELF\IfcSurfaceCurve.AssociatedGeometry[1]) <> IfcAssociatedSurface(SELF\IfcSurfaceCurve.AssociatedGeometry[2]); -END_ENTITY; - -ENTITY IfcInventory - SUBTYPE OF (IfcGroup); - PredefinedType : OPTIONAL IfcInventoryTypeEnum; - Jurisdiction : OPTIONAL IfcActorSelect; - ResponsiblePersons : OPTIONAL SET [1:?] OF IfcPerson; - LastUpdateDate : OPTIONAL IfcDate; - CurrentValue : OPTIONAL IfcCostValue; - OriginalValue : OPTIONAL IfcCostValue; -END_ENTITY; - -ENTITY IfcIrregularTimeSeries - SUBTYPE OF (IfcTimeSeries); - Values : LIST [1:?] OF IfcIrregularTimeSeriesValue; -END_ENTITY; - -ENTITY IfcIrregularTimeSeriesValue; - TimeStamp : IfcDateTime; - ListValues : LIST [1:?] OF IfcValue; -END_ENTITY; - -ENTITY IfcJunctionBox - SUBTYPE OF (IfcFlowFitting); - PredefinedType : OPTIONAL IfcJunctionBoxTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcJunctionBoxTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcJunctionBoxTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCJUNCTIONBOXTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcJunctionBoxType - SUBTYPE OF (IfcFlowFittingType); - PredefinedType : IfcJunctionBoxTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcJunctionBoxTypeEnum.USERDEFINED) OR -((PredefinedType = IfcJunctionBoxTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcLShapeProfileDef - SUBTYPE OF (IfcParameterizedProfileDef); - Depth : IfcPositiveLengthMeasure; - Width : OPTIONAL IfcPositiveLengthMeasure; - Thickness : IfcPositiveLengthMeasure; - FilletRadius : OPTIONAL IfcNonNegativeLengthMeasure; - EdgeRadius : OPTIONAL IfcNonNegativeLengthMeasure; - LegSlope : OPTIONAL IfcPlaneAngleMeasure; - WHERE - ValidThickness : (Thickness < Depth) AND (NOT(EXISTS(Width)) OR (Thickness < Width)); -END_ENTITY; - -ENTITY IfcLaborResource - SUBTYPE OF (IfcConstructionResource); - PredefinedType : OPTIONAL IfcLaborResourceTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcLaborResourceTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcLaborResourceTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); -END_ENTITY; - -ENTITY IfcLaborResourceType - SUBTYPE OF (IfcConstructionResourceType); - PredefinedType : IfcLaborResourceTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcLaborResourceTypeEnum.USERDEFINED) OR -((PredefinedType = IfcLaborResourceTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcTypeResource.ResourceType)); -END_ENTITY; - -ENTITY IfcLagTime - SUBTYPE OF (IfcSchedulingTime); - LagValue : IfcTimeOrRatioSelect; - DurationType : IfcTaskDurationEnum; -END_ENTITY; - -ENTITY IfcLamp - SUBTYPE OF (IfcFlowTerminal); - PredefinedType : OPTIONAL IfcLampTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcLampTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcLampTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCLAMPTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcLampType - SUBTYPE OF (IfcFlowTerminalType); - PredefinedType : IfcLampTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcLampTypeEnum.USERDEFINED) OR -((PredefinedType = IfcLampTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcLibraryInformation - SUBTYPE OF (IfcExternalInformation); - Name : IfcLabel; - Version : OPTIONAL IfcLabel; - Publisher : OPTIONAL IfcActorSelect; - VersionDate : OPTIONAL IfcDateTime; - Location : OPTIONAL IfcURIReference; - Description : OPTIONAL IfcText; - INVERSE - LibraryInfoForObjects : SET [0:?] OF IfcRelAssociatesLibrary FOR RelatingLibrary; - HasLibraryReferences : SET [0:?] OF IfcLibraryReference FOR ReferencedLibrary; -END_ENTITY; - -ENTITY IfcLibraryReference - SUBTYPE OF (IfcExternalReference); - Description : OPTIONAL IfcText; - Language : OPTIONAL IfcLanguageId; - ReferencedLibrary : OPTIONAL IfcLibraryInformation; - INVERSE - LibraryRefForObjects : SET [0:?] OF IfcRelAssociatesLibrary FOR RelatingLibrary; -END_ENTITY; - -ENTITY IfcLightDistributionData; - MainPlaneAngle : IfcPlaneAngleMeasure; - SecondaryPlaneAngle : LIST [1:?] OF IfcPlaneAngleMeasure; - LuminousIntensity : LIST [1:?] OF IfcLuminousIntensityDistributionMeasure; -END_ENTITY; - -ENTITY IfcLightFixture - SUBTYPE OF (IfcFlowTerminal); - PredefinedType : OPTIONAL IfcLightFixtureTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcLightFixtureTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcLightFixtureTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCLIGHTFIXTURETYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcLightFixtureType - SUBTYPE OF (IfcFlowTerminalType); - PredefinedType : IfcLightFixtureTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcLightFixtureTypeEnum.USERDEFINED) OR -((PredefinedType = IfcLightFixtureTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcLightIntensityDistribution; - LightDistributionCurve : IfcLightDistributionCurveEnum; - DistributionData : LIST [1:?] OF IfcLightDistributionData; -END_ENTITY; - -ENTITY IfcLightSource - ABSTRACT SUPERTYPE OF (ONEOF - (IfcLightSourceAmbient - ,IfcLightSourceDirectional - ,IfcLightSourceGoniometric - ,IfcLightSourcePositional)) - SUBTYPE OF (IfcGeometricRepresentationItem); - Name : OPTIONAL IfcLabel; - LightColour : IfcColourRgb; - AmbientIntensity : OPTIONAL IfcNormalisedRatioMeasure; - Intensity : OPTIONAL IfcNormalisedRatioMeasure; -END_ENTITY; - -ENTITY IfcLightSourceAmbient - SUBTYPE OF (IfcLightSource); -END_ENTITY; - -ENTITY IfcLightSourceDirectional - SUBTYPE OF (IfcLightSource); - Orientation : IfcDirection; -END_ENTITY; - -ENTITY IfcLightSourceGoniometric - SUBTYPE OF (IfcLightSource); - Position : IfcAxis2Placement3D; - ColourAppearance : OPTIONAL IfcColourRgb; - ColourTemperature : IfcThermodynamicTemperatureMeasure; - LuminousFlux : IfcLuminousFluxMeasure; - LightEmissionSource : IfcLightEmissionSourceEnum; - LightDistributionDataSource : IfcLightDistributionDataSourceSelect; -END_ENTITY; - -ENTITY IfcLightSourcePositional - SUPERTYPE OF (ONEOF - (IfcLightSourceSpot)) - SUBTYPE OF (IfcLightSource); - Position : IfcCartesianPoint; - Radius : IfcPositiveLengthMeasure; - ConstantAttenuation : IfcReal; - DistanceAttenuation : IfcReal; - QuadricAttenuation : IfcReal; -END_ENTITY; - -ENTITY IfcLightSourceSpot - SUBTYPE OF (IfcLightSourcePositional); - Orientation : IfcDirection; - ConcentrationExponent : OPTIONAL IfcReal; - SpreadAngle : IfcPositivePlaneAngleMeasure; - BeamWidthAngle : IfcPositivePlaneAngleMeasure; -END_ENTITY; - -ENTITY IfcLine - SUBTYPE OF (IfcCurve); - Pnt : IfcCartesianPoint; - Dir : IfcVector; - WHERE - SameDim : Dir.Dim = Pnt.Dim; -END_ENTITY; - -ENTITY IfcLocalPlacement - SUBTYPE OF (IfcObjectPlacement); - PlacementRelTo : OPTIONAL IfcObjectPlacement; - RelativePlacement : IfcAxis2Placement; - WHERE - WR21 : IfcCorrectLocalPlacement(RelativePlacement, PlacementRelTo); -END_ENTITY; - -ENTITY IfcLoop - SUPERTYPE OF (ONEOF - (IfcEdgeLoop - ,IfcPolyLoop - ,IfcVertexLoop)) - SUBTYPE OF (IfcTopologicalRepresentationItem); -END_ENTITY; - -ENTITY IfcManifoldSolidBrep - ABSTRACT SUPERTYPE OF (ONEOF - (IfcAdvancedBrep - ,IfcFacetedBrep)) - SUBTYPE OF (IfcSolidModel); - Outer : IfcClosedShell; -END_ENTITY; - -ENTITY IfcMapConversion - SUBTYPE OF (IfcCoordinateOperation); - Eastings : IfcLengthMeasure; - Northings : IfcLengthMeasure; - OrthogonalHeight : IfcLengthMeasure; - XAxisAbscissa : OPTIONAL IfcReal; - XAxisOrdinate : OPTIONAL IfcReal; - Scale : OPTIONAL IfcReal; -END_ENTITY; - -ENTITY IfcMappedItem - SUBTYPE OF (IfcRepresentationItem); - MappingSource : IfcRepresentationMap; - MappingTarget : IfcCartesianTransformationOperator; -END_ENTITY; - -ENTITY IfcMaterial - SUBTYPE OF (IfcMaterialDefinition); - Name : IfcLabel; - Description : OPTIONAL IfcText; - Category : OPTIONAL IfcLabel; - INVERSE - HasRepresentation : SET [0:1] OF IfcMaterialDefinitionRepresentation FOR RepresentedMaterial; - IsRelatedWith : SET [0:?] OF IfcMaterialRelationship FOR RelatedMaterials; - RelatesTo : SET [0:1] OF IfcMaterialRelationship FOR RelatingMaterial; -END_ENTITY; - -ENTITY IfcMaterialClassificationRelationship; - MaterialClassifications : SET [1:?] OF IfcClassificationSelect; - ClassifiedMaterial : IfcMaterial; -END_ENTITY; - -ENTITY IfcMaterialConstituent - SUBTYPE OF (IfcMaterialDefinition); - Name : OPTIONAL IfcLabel; - Description : OPTIONAL IfcText; - Material : IfcMaterial; - Fraction : OPTIONAL IfcNormalisedRatioMeasure; - Category : OPTIONAL IfcLabel; - INVERSE - ToMaterialConstituentSet : IfcMaterialConstituentSet FOR MaterialConstituents; -END_ENTITY; - -ENTITY IfcMaterialConstituentSet - SUBTYPE OF (IfcMaterialDefinition); - Name : OPTIONAL IfcLabel; - Description : OPTIONAL IfcText; - MaterialConstituents : OPTIONAL SET [1:?] OF IfcMaterialConstituent; -END_ENTITY; - -ENTITY IfcMaterialDefinition - ABSTRACT SUPERTYPE OF (ONEOF - (IfcMaterial - ,IfcMaterialConstituent - ,IfcMaterialConstituentSet - ,IfcMaterialLayer - ,IfcMaterialLayerSet - ,IfcMaterialProfile - ,IfcMaterialProfileSet)); - INVERSE - AssociatedTo : SET [0:?] OF IfcRelAssociatesMaterial FOR RelatingMaterial; - HasExternalReferences : SET [0:?] OF IfcExternalReferenceRelationship FOR RelatedResourceObjects; - HasProperties : SET [0:?] OF IfcMaterialProperties FOR Material; -END_ENTITY; - -ENTITY IfcMaterialDefinitionRepresentation - SUBTYPE OF (IfcProductRepresentation); - RepresentedMaterial : IfcMaterial; - WHERE - OnlyStyledRepresentations : SIZEOF(QUERY(temp <* Representations | - (NOT('IFC4.IFCSTYLEDREPRESENTATION' IN TYPEOF(temp))) -)) = 0; -END_ENTITY; - -ENTITY IfcMaterialLayer - SUPERTYPE OF (ONEOF - (IfcMaterialLayerWithOffsets)) - SUBTYPE OF (IfcMaterialDefinition); - Material : OPTIONAL IfcMaterial; - LayerThickness : IfcNonNegativeLengthMeasure; - IsVentilated : OPTIONAL IfcLogical; - Name : OPTIONAL IfcLabel; - Description : OPTIONAL IfcText; - Category : OPTIONAL IfcLabel; - Priority : OPTIONAL IfcInteger; - INVERSE - ToMaterialLayerSet : IfcMaterialLayerSet FOR MaterialLayers; - WHERE - NormalizedPriority : NOT(EXISTS(Priority)) OR {0 <= Priority <= 100}; -END_ENTITY; - -ENTITY IfcMaterialLayerSet - SUBTYPE OF (IfcMaterialDefinition); - MaterialLayers : LIST [1:?] OF IfcMaterialLayer; - LayerSetName : OPTIONAL IfcLabel; - Description : OPTIONAL IfcText; - DERIVE - TotalThickness : IfcLengthMeasure := IfcMlsTotalThickness(SELF); -END_ENTITY; - -ENTITY IfcMaterialLayerSetUsage - SUBTYPE OF (IfcMaterialUsageDefinition); - ForLayerSet : IfcMaterialLayerSet; - LayerSetDirection : IfcLayerSetDirectionEnum; - DirectionSense : IfcDirectionSenseEnum; - OffsetFromReferenceLine : IfcLengthMeasure; - ReferenceExtent : OPTIONAL IfcPositiveLengthMeasure; -END_ENTITY; - -ENTITY IfcMaterialLayerWithOffsets - SUBTYPE OF (IfcMaterialLayer); - OffsetDirection : IfcLayerSetDirectionEnum; - OffsetValues : ARRAY [1:2] OF IfcLengthMeasure; -END_ENTITY; - -ENTITY IfcMaterialList; - Materials : LIST [1:?] OF IfcMaterial; -END_ENTITY; - -ENTITY IfcMaterialProfile - SUPERTYPE OF (ONEOF - (IfcMaterialProfileWithOffsets)) - SUBTYPE OF (IfcMaterialDefinition); - Name : OPTIONAL IfcLabel; - Description : OPTIONAL IfcText; - Material : OPTIONAL IfcMaterial; - Profile : IfcProfileDef; - Priority : OPTIONAL IfcInteger; - Category : OPTIONAL IfcLabel; - INVERSE - ToMaterialProfileSet : IfcMaterialProfileSet FOR MaterialProfiles; - WHERE - NormalizedPriority : NOT(EXISTS(Priority)) OR {0 <= Priority <= 100}; -END_ENTITY; - -ENTITY IfcMaterialProfileSet - SUBTYPE OF (IfcMaterialDefinition); - Name : OPTIONAL IfcLabel; - Description : OPTIONAL IfcText; - MaterialProfiles : LIST [1:?] OF IfcMaterialProfile; - CompositeProfile : OPTIONAL IfcCompositeProfileDef; -END_ENTITY; - -ENTITY IfcMaterialProfileSetUsage - SUPERTYPE OF (ONEOF - (IfcMaterialProfileSetUsageTapering)) - SUBTYPE OF (IfcMaterialUsageDefinition); - ForProfileSet : IfcMaterialProfileSet; - CardinalPoint : OPTIONAL IfcCardinalPointReference; - ReferenceExtent : OPTIONAL IfcPositiveLengthMeasure; -END_ENTITY; - -ENTITY IfcMaterialProfileSetUsageTapering - SUBTYPE OF (IfcMaterialProfileSetUsage); - ForProfileEndSet : IfcMaterialProfileSet; - CardinalEndPoint : OPTIONAL IfcCardinalPointReference; -END_ENTITY; - -ENTITY IfcMaterialProfileWithOffsets - SUBTYPE OF (IfcMaterialProfile); - OffsetValues : ARRAY [1:2] OF IfcLengthMeasure; -END_ENTITY; - -ENTITY IfcMaterialProperties - SUBTYPE OF (IfcExtendedProperties); - Material : IfcMaterialDefinition; -END_ENTITY; - -ENTITY IfcMaterialRelationship - SUBTYPE OF (IfcResourceLevelRelationship); - RelatingMaterial : IfcMaterial; - RelatedMaterials : SET [1:?] OF IfcMaterial; - Expression : OPTIONAL IfcLabel; -END_ENTITY; - -ENTITY IfcMaterialUsageDefinition - ABSTRACT SUPERTYPE OF (ONEOF - (IfcMaterialLayerSetUsage - ,IfcMaterialProfileSetUsage)); - INVERSE - AssociatedTo : SET [1:?] OF IfcRelAssociatesMaterial FOR RelatingMaterial; -END_ENTITY; - -ENTITY IfcMeasureWithUnit; - ValueComponent : IfcValue; - UnitComponent : IfcUnit; -END_ENTITY; - -ENTITY IfcMechanicalFastener - SUBTYPE OF (IfcElementComponent); - NominalDiameter : OPTIONAL IfcPositiveLengthMeasure; - NominalLength : OPTIONAL IfcPositiveLengthMeasure; - PredefinedType : OPTIONAL IfcMechanicalFastenerTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR -(PredefinedType <> IfcMechanicalFastenerTypeEnum.USERDEFINED) OR -((PredefinedType = IfcMechanicalFastenerTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR -('IFC4.IFCMECHANICALFASTENERTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcMechanicalFastenerType - SUBTYPE OF (IfcElementComponentType); - PredefinedType : IfcMechanicalFastenerTypeEnum; - NominalDiameter : OPTIONAL IfcPositiveLengthMeasure; - NominalLength : OPTIONAL IfcPositiveLengthMeasure; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcMechanicalFastenerTypeEnum.USERDEFINED) OR -((PredefinedType = IfcMechanicalFastenerTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcMedicalDevice - SUBTYPE OF (IfcFlowTerminal); - PredefinedType : OPTIONAL IfcMedicalDeviceTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcMedicalDeviceTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcMedicalDeviceTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCMEDICALDEVICETYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcMedicalDeviceType - SUBTYPE OF (IfcFlowTerminalType); - PredefinedType : IfcMedicalDeviceTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcMedicalDeviceTypeEnum.USERDEFINED) OR -((PredefinedType = IfcMedicalDeviceTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcMember - SUPERTYPE OF (ONEOF - (IfcMemberStandardCase)) - SUBTYPE OF (IfcBuildingElement); - PredefinedType : OPTIONAL IfcMemberTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcMemberTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcMemberTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCMEMBERTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcMemberStandardCase - SUBTYPE OF (IfcMember); - WHERE - HasMaterialProfileSetUsage : SIZEOF (QUERY(temp <* USEDIN(SELF, 'IFC4.IFCRELASSOCIATES.RELATEDOBJECTS') | - ('IFC4.IFCRELASSOCIATESMATERIAL' IN TYPEOF(temp)) AND - ('IFC4.IFCMATERIALPROFILESETUSAGE' IN TYPEOF(temp.RelatingMaterial)) - )) = 1; -END_ENTITY; - -ENTITY IfcMemberType - SUBTYPE OF (IfcBuildingElementType); - PredefinedType : IfcMemberTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcMemberTypeEnum.USERDEFINED) OR -((PredefinedType = IfcMemberTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcMetric - SUBTYPE OF (IfcConstraint); - Benchmark : IfcBenchmarkEnum; - ValueSource : OPTIONAL IfcLabel; - DataValue : OPTIONAL IfcMetricValueSelect; - ReferencePath : OPTIONAL IfcReference; -END_ENTITY; - -ENTITY IfcMirroredProfileDef - SUBTYPE OF (IfcDerivedProfileDef); - DERIVE - SELF\IfcDerivedProfileDef.Operator : IfcCartesianTransformationOperator2D := -IfcRepresentationItem() || IfcGeometricRepresentationItem() || -IfcCartesianTransformationOperator( - -- Axis1 - IfcRepresentationItem() || IfcGeometricRepresentationItem() || - IfcDirection([-1., 0.]), - -- Axis2 - IfcRepresentationItem() || IfcGeometricRepresentationItem() || - IfcDirection([ 0., 1.]), - -- LocalOrigin - IfcRepresentationItem() || IfcGeometricRepresentationItem() || - IfcPoint() || IfcCartesianPoint([0., 0.]), - -- Scale - 1.) || -IfcCartesianTransformationOperator2D(); -END_ENTITY; - -ENTITY IfcMonetaryUnit; - Currency : IfcLabel; -END_ENTITY; - -ENTITY IfcMotorConnection - SUBTYPE OF (IfcEnergyConversionDevice); - PredefinedType : OPTIONAL IfcMotorConnectionTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcMotorConnectionTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcMotorConnectionTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCMOTORCONNECTIONTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcMotorConnectionType - SUBTYPE OF (IfcEnergyConversionDeviceType); - PredefinedType : IfcMotorConnectionTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcMotorConnectionTypeEnum.USERDEFINED) OR -((PredefinedType = IfcMotorConnectionTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcNamedUnit - ABSTRACT SUPERTYPE OF (ONEOF - (IfcContextDependentUnit - ,IfcConversionBasedUnit - ,IfcSIUnit)); - Dimensions : IfcDimensionalExponents; - UnitType : IfcUnitEnum; - WHERE - WR1 : IfcCorrectDimensions (SELF.UnitType, SELF.Dimensions); -END_ENTITY; - -ENTITY IfcObject - ABSTRACT SUPERTYPE OF (ONEOF - (IfcActor - ,IfcControl - ,IfcGroup - ,IfcProcess - ,IfcProduct - ,IfcResource)) - SUBTYPE OF (IfcObjectDefinition); - ObjectType : OPTIONAL IfcLabel; - INVERSE - IsDeclaredBy : SET [0:1] OF IfcRelDefinesByObject FOR RelatedObjects; - Declares : SET [0:?] OF IfcRelDefinesByObject FOR RelatingObject; - IsTypedBy : SET [0:1] OF IfcRelDefinesByType FOR RelatedObjects; - IsDefinedBy : SET [0:?] OF IfcRelDefinesByProperties FOR RelatedObjects; - WHERE - UniquePropertySetNames : ((SIZEOF(IsDefinedBy) = 0) OR IfcUniqueDefinitionNames(IsDefinedBy)); -END_ENTITY; - -ENTITY IfcObjectDefinition - ABSTRACT SUPERTYPE OF (ONEOF - (IfcContext - ,IfcObject - ,IfcTypeObject)) - SUBTYPE OF (IfcRoot); - INVERSE - HasAssignments : SET [0:?] OF IfcRelAssigns FOR RelatedObjects; - Nests : SET [0:1] OF IfcRelNests FOR RelatedObjects; - IsNestedBy : SET [0:?] OF IfcRelNests FOR RelatingObject; - HasContext : SET [0:1] OF IfcRelDeclares FOR RelatedDefinitions; - IsDecomposedBy : SET [0:?] OF IfcRelAggregates FOR RelatingObject; - Decomposes : SET [0:1] OF IfcRelAggregates FOR RelatedObjects; - HasAssociations : SET [0:?] OF IfcRelAssociates FOR RelatedObjects; -END_ENTITY; - -ENTITY IfcObjectPlacement - ABSTRACT SUPERTYPE OF (ONEOF - (IfcGridPlacement - ,IfcLocalPlacement)); - INVERSE - PlacesObject : SET [0:?] OF IfcProduct FOR ObjectPlacement; - ReferencedByPlacements : SET [0:?] OF IfcLocalPlacement FOR PlacementRelTo; -END_ENTITY; - -ENTITY IfcObjective - SUBTYPE OF (IfcConstraint); - BenchmarkValues : OPTIONAL LIST [1:?] OF IfcConstraint; - LogicalAggregator : OPTIONAL IfcLogicalOperatorEnum; - ObjectiveQualifier : IfcObjectiveEnum; - UserDefinedQualifier : OPTIONAL IfcLabel; - WHERE - WR21 : (ObjectiveQualifier <> IfcObjectiveEnum.USERDEFINED) OR -((ObjectiveQualifier = IfcObjectiveEnum.USERDEFINED) AND EXISTS(SELF\IfcObjective.UserDefinedQualifier)); -END_ENTITY; - -ENTITY IfcOccupant - SUBTYPE OF (IfcActor); - PredefinedType : OPTIONAL IfcOccupantTypeEnum; - WHERE - WR31 : NOT(PredefinedType = IfcOccupantTypeEnum.USERDEFINED) -OR EXISTS(SELF\IfcObject.ObjectType); -END_ENTITY; - -ENTITY IfcOffsetCurve2D - SUBTYPE OF (IfcCurve); - BasisCurve : IfcCurve; - Distance : IfcLengthMeasure; - SelfIntersect : IfcLogical; - WHERE - DimIs2D : BasisCurve.Dim = 2; -END_ENTITY; - -ENTITY IfcOffsetCurve3D - SUBTYPE OF (IfcCurve); - BasisCurve : IfcCurve; - Distance : IfcLengthMeasure; - SelfIntersect : IfcLogical; - RefDirection : IfcDirection; - WHERE - DimIs2D : BasisCurve.Dim = 3; -END_ENTITY; - -ENTITY IfcOpenShell - SUBTYPE OF (IfcConnectedFaceSet); -END_ENTITY; - -ENTITY IfcOpeningElement - SUPERTYPE OF (ONEOF - (IfcOpeningStandardCase)) - SUBTYPE OF (IfcFeatureElementSubtraction); - PredefinedType : OPTIONAL IfcOpeningElementTypeEnum; - INVERSE - HasFillings : SET [0:?] OF IfcRelFillsElement FOR RelatingOpeningElement; -END_ENTITY; - -ENTITY IfcOpeningStandardCase - SUBTYPE OF (IfcOpeningElement); -END_ENTITY; - -ENTITY IfcOrganization; - Identification : OPTIONAL IfcIdentifier; - Name : IfcLabel; - Description : OPTIONAL IfcText; - Roles : OPTIONAL LIST [1:?] OF IfcActorRole; - Addresses : OPTIONAL LIST [1:?] OF IfcAddress; - INVERSE - IsRelatedBy : SET [0:?] OF IfcOrganizationRelationship FOR RelatedOrganizations; - Relates : SET [0:?] OF IfcOrganizationRelationship FOR RelatingOrganization; - Engages : SET [0:?] OF IfcPersonAndOrganization FOR TheOrganization; -END_ENTITY; - -ENTITY IfcOrganizationRelationship - SUBTYPE OF (IfcResourceLevelRelationship); - RelatingOrganization : IfcOrganization; - RelatedOrganizations : SET [1:?] OF IfcOrganization; -END_ENTITY; - -ENTITY IfcOrientedEdge - SUBTYPE OF (IfcEdge); - EdgeElement : IfcEdge; - Orientation : IfcBoolean; - DERIVE - SELF\IfcEdge.EdgeStart : IfcVertex := IfcBooleanChoose -(Orientation, EdgeElement.EdgeStart, EdgeElement.EdgeEnd); - SELF\IfcEdge.EdgeEnd : IfcVertex := IfcBooleanChoose -(Orientation, EdgeElement.EdgeEnd, EdgeElement.EdgeStart); - WHERE - EdgeElementNotOriented : NOT('IFC4.IFCORIENTEDEDGE' IN TYPEOF(EdgeElement)); -END_ENTITY; - -ENTITY IfcOuterBoundaryCurve - SUBTYPE OF (IfcBoundaryCurve); -END_ENTITY; - -ENTITY IfcOutlet - SUBTYPE OF (IfcFlowTerminal); - PredefinedType : OPTIONAL IfcOutletTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcOutletTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcOutletTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCOUTLETTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcOutletType - SUBTYPE OF (IfcFlowTerminalType); - PredefinedType : IfcOutletTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcOutletTypeEnum.USERDEFINED) OR -((PredefinedType = IfcOutletTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcOwnerHistory; - OwningUser : IfcPersonAndOrganization; - OwningApplication : IfcApplication; - State : OPTIONAL IfcStateEnum; - ChangeAction : OPTIONAL IfcChangeActionEnum; - LastModifiedDate : OPTIONAL IfcTimeStamp; - LastModifyingUser : OPTIONAL IfcPersonAndOrganization; - LastModifyingApplication : OPTIONAL IfcApplication; - CreationDate : IfcTimeStamp; - WHERE - CorrectChangeAction : (EXISTS(LastModifiedDate)) OR -(NOT(EXISTS(LastModifiedDate)) AND NOT(EXISTS(ChangeAction))) OR -(NOT(EXISTS(LastModifiedDate)) AND EXISTS(ChangeAction) AND ((ChangeAction = IfcChangeActionEnum.NOTDEFINED) OR (ChangeAction = IfcChangeActionEnum.NOCHANGE))); -END_ENTITY; - -ENTITY IfcParameterizedProfileDef - ABSTRACT SUPERTYPE OF (ONEOF - (IfcAsymmetricIShapeProfileDef - ,IfcCShapeProfileDef - ,IfcCircleProfileDef - ,IfcEllipseProfileDef - ,IfcIShapeProfileDef - ,IfcLShapeProfileDef - ,IfcRectangleProfileDef - ,IfcTShapeProfileDef - ,IfcTrapeziumProfileDef - ,IfcUShapeProfileDef - ,IfcZShapeProfileDef)) - SUBTYPE OF (IfcProfileDef); - Position : OPTIONAL IfcAxis2Placement2D; -END_ENTITY; - -ENTITY IfcPath - SUBTYPE OF (IfcTopologicalRepresentationItem); - EdgeList : LIST [1:?] OF UNIQUE IfcOrientedEdge; - WHERE - IsContinuous : IfcPathHeadToTail(SELF); -END_ENTITY; - -ENTITY IfcPcurve - SUBTYPE OF (IfcCurve); - BasisSurface : IfcSurface; - ReferenceCurve : IfcCurve; - WHERE - DimIs2D : ReferenceCurve.Dim = 2; -END_ENTITY; - -ENTITY IfcPerformanceHistory - SUBTYPE OF (IfcControl); - LifeCyclePhase : IfcLabel; - PredefinedType : OPTIONAL IfcPerformanceHistoryTypeEnum; -END_ENTITY; - -ENTITY IfcPermeableCoveringProperties - SUBTYPE OF (IfcPreDefinedPropertySet); - OperationType : IfcPermeableCoveringOperationEnum; - PanelPosition : IfcWindowPanelPositionEnum; - FrameDepth : OPTIONAL IfcPositiveLengthMeasure; - FrameThickness : OPTIONAL IfcPositiveLengthMeasure; - ShapeAspectStyle : OPTIONAL IfcShapeAspect; -END_ENTITY; - -ENTITY IfcPermit - SUBTYPE OF (IfcControl); - PredefinedType : OPTIONAL IfcPermitTypeEnum; - Status : OPTIONAL IfcLabel; - LongDescription : OPTIONAL IfcText; -END_ENTITY; - -ENTITY IfcPerson; - Identification : OPTIONAL IfcIdentifier; - FamilyName : OPTIONAL IfcLabel; - GivenName : OPTIONAL IfcLabel; - MiddleNames : OPTIONAL LIST [1:?] OF IfcLabel; - PrefixTitles : OPTIONAL LIST [1:?] OF IfcLabel; - SuffixTitles : OPTIONAL LIST [1:?] OF IfcLabel; - Roles : OPTIONAL LIST [1:?] OF IfcActorRole; - Addresses : OPTIONAL LIST [1:?] OF IfcAddress; - INVERSE - EngagedIn : SET [0:?] OF IfcPersonAndOrganization FOR ThePerson; - WHERE - IdentifiablePerson : EXISTS(Identification) OR EXISTS(FamilyName) OR EXISTS(GivenName); - ValidSetOfNames : NOT EXISTS(MiddleNames) OR EXISTS(FamilyName) OR EXISTS(GivenName); -END_ENTITY; - -ENTITY IfcPersonAndOrganization; - ThePerson : IfcPerson; - TheOrganization : IfcOrganization; - Roles : OPTIONAL LIST [1:?] OF IfcActorRole; -END_ENTITY; - -ENTITY IfcPhysicalComplexQuantity - SUBTYPE OF (IfcPhysicalQuantity); - HasQuantities : SET [1:?] OF IfcPhysicalQuantity; - Discrimination : IfcLabel; - Quality : OPTIONAL IfcLabel; - Usage : OPTIONAL IfcLabel; - WHERE - NoSelfReference : SIZEOF(QUERY(temp <* HasQuantities | SELF :=: temp)) = 0; - UniqueQuantityNames : IfcUniqueQuantityNames(HasQuantities); -END_ENTITY; - -ENTITY IfcPhysicalQuantity - ABSTRACT SUPERTYPE OF (ONEOF - (IfcPhysicalComplexQuantity - ,IfcPhysicalSimpleQuantity)); - Name : IfcLabel; - Description : OPTIONAL IfcText; - INVERSE - HasExternalReferences : SET [0:?] OF IfcExternalReferenceRelationship FOR RelatedResourceObjects; - PartOfComplex : SET [0:1] OF IfcPhysicalComplexQuantity FOR HasQuantities; -END_ENTITY; - -ENTITY IfcPhysicalSimpleQuantity - ABSTRACT SUPERTYPE OF (ONEOF - (IfcQuantityArea - ,IfcQuantityCount - ,IfcQuantityLength - ,IfcQuantityTime - ,IfcQuantityVolume - ,IfcQuantityWeight)) - SUBTYPE OF (IfcPhysicalQuantity); - Unit : OPTIONAL IfcNamedUnit; -END_ENTITY; - -ENTITY IfcPile - SUBTYPE OF (IfcBuildingElement); - PredefinedType : OPTIONAL IfcPileTypeEnum; - ConstructionType : OPTIONAL IfcPileConstructionEnum; - WHERE - CorrectPredefinedType : NOT EXISTS(PredefinedType) OR -(PredefinedType <> IfcPileTypeEnum.USERDEFINED) OR -((PredefinedType = IfcPileTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR -('IFC4.IFCPILETYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcPileType - SUBTYPE OF (IfcBuildingElementType); - PredefinedType : IfcPileTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcPileTypeEnum.USERDEFINED) OR -((PredefinedType = IfcPileTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcPipeFitting - SUBTYPE OF (IfcFlowFitting); - PredefinedType : OPTIONAL IfcPipeFittingTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcPipeFittingTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcPipeFittingTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCPIPEFITTINGTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcPipeFittingType - SUBTYPE OF (IfcFlowFittingType); - PredefinedType : IfcPipeFittingTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcPipeFittingTypeEnum.USERDEFINED) OR -((PredefinedType = IfcPipeFittingTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcPipeSegment - SUBTYPE OF (IfcFlowSegment); - PredefinedType : OPTIONAL IfcPipeSegmentTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcPipeSegmentTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcPipeSegmentTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCPIPESEGMENTTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcPipeSegmentType - SUBTYPE OF (IfcFlowSegmentType); - PredefinedType : IfcPipeSegmentTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcPipeSegmentTypeEnum.USERDEFINED) OR -((PredefinedType = IfcPipeSegmentTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcPixelTexture - SUBTYPE OF (IfcSurfaceTexture); - Width : IfcInteger; - Height : IfcInteger; - ColourComponents : IfcInteger; - Pixel : LIST [1:?] OF IfcBinary; - WHERE - MinPixelInS : Width >= 1; - MinPixelInT : Height >= 1; - NumberOfColours : {1 <= ColourComponents <= 4}; - SizeOfPixelList : SIZEOF(Pixel) = (Width * Height); - PixelAsByteAndSameLength : SIZEOF(QUERY(temp<* Pixel | - (BLENGTH(temp) MOD 8 = 0) AND - (BLENGTH(temp) = BLENGTH(Pixel[1])) -)) = SIZEOF(Pixel); -END_ENTITY; - -ENTITY IfcPlacement - ABSTRACT SUPERTYPE OF (ONEOF - (IfcAxis1Placement - ,IfcAxis2Placement2D - ,IfcAxis2Placement3D)) - SUBTYPE OF (IfcGeometricRepresentationItem); - Location : IfcCartesianPoint; - DERIVE - Dim : IfcDimensionCount := Location.Dim; -END_ENTITY; - -ENTITY IfcPlanarBox - SUBTYPE OF (IfcPlanarExtent); - Placement : IfcAxis2Placement; -END_ENTITY; - -ENTITY IfcPlanarExtent - SUPERTYPE OF (ONEOF - (IfcPlanarBox)) - SUBTYPE OF (IfcGeometricRepresentationItem); - SizeInX : IfcLengthMeasure; - SizeInY : IfcLengthMeasure; -END_ENTITY; - -ENTITY IfcPlane - SUBTYPE OF (IfcElementarySurface); -END_ENTITY; - -ENTITY IfcPlate - SUPERTYPE OF (ONEOF - (IfcPlateStandardCase)) - SUBTYPE OF (IfcBuildingElement); - PredefinedType : OPTIONAL IfcPlateTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcPlateTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcPlateTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCPLATETYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcPlateStandardCase - SUBTYPE OF (IfcPlate); - WHERE - HasMaterialLayerSetUsage : SIZEOF (QUERY(temp <* USEDIN(SELF, 'IFC4.IFCRELASSOCIATES.RELATEDOBJECTS') | - ('IFC4.IFCRELASSOCIATESMATERIAL' IN TYPEOF(temp)) AND - ('IFC4.IFCMATERIALLAYERSETUSAGE' IN TYPEOF(temp.RelatingMaterial)) - )) = 1; -END_ENTITY; - -ENTITY IfcPlateType - SUBTYPE OF (IfcBuildingElementType); - PredefinedType : IfcPlateTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcPlateTypeEnum.USERDEFINED) OR -((PredefinedType = IfcPlateTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcPoint - ABSTRACT SUPERTYPE OF (ONEOF - (IfcCartesianPoint - ,IfcPointOnCurve - ,IfcPointOnSurface)) - SUBTYPE OF (IfcGeometricRepresentationItem); -END_ENTITY; - -ENTITY IfcPointOnCurve - SUBTYPE OF (IfcPoint); - BasisCurve : IfcCurve; - PointParameter : IfcParameterValue; - DERIVE - Dim : IfcDimensionCount := BasisCurve.Dim; -END_ENTITY; - -ENTITY IfcPointOnSurface - SUBTYPE OF (IfcPoint); - BasisSurface : IfcSurface; - PointParameterU : IfcParameterValue; - PointParameterV : IfcParameterValue; - DERIVE - Dim : IfcDimensionCount := BasisSurface.Dim; -END_ENTITY; - -ENTITY IfcPolyLoop - SUBTYPE OF (IfcLoop); - Polygon : LIST [3:?] OF UNIQUE IfcCartesianPoint; - WHERE - AllPointsSameDim : SIZEOF(QUERY(Temp <* Polygon | Temp.Dim <> Polygon[1].Dim)) = 0; -END_ENTITY; - -ENTITY IfcPolygonalBoundedHalfSpace - SUBTYPE OF (IfcHalfSpaceSolid); - Position : IfcAxis2Placement3D; - PolygonalBoundary : IfcBoundedCurve; - WHERE - BoundaryDim : PolygonalBoundary.Dim = 2; - BoundaryType : SIZEOF(TYPEOF(PolygonalBoundary) * [ - 'IFC4.IFCPOLYLINE', - 'IFC4.IFCCOMPOSITECURVE'] -) = 1; -END_ENTITY; - -ENTITY IfcPolygonalFaceSet - SUBTYPE OF (IfcTessellatedFaceSet); - Closed : OPTIONAL IfcBoolean; - Faces : LIST [1:?] OF IfcIndexedPolygonalFace; - PnIndex : OPTIONAL LIST [1:?] OF IfcPositiveInteger; -END_ENTITY; - -ENTITY IfcPolyline - SUBTYPE OF (IfcBoundedCurve); - Points : LIST [2:?] OF IfcCartesianPoint; - WHERE - SameDim : SIZEOF(QUERY(Temp <* Points | Temp.Dim <> Points[1].Dim)) = 0; -END_ENTITY; - -ENTITY IfcPort - ABSTRACT SUPERTYPE OF (ONEOF - (IfcDistributionPort)) - SUBTYPE OF (IfcProduct); - INVERSE - ContainedIn : SET [0:1] OF IfcRelConnectsPortToElement FOR RelatingPort; - ConnectedFrom : SET [0:1] OF IfcRelConnectsPorts FOR RelatedPort; - ConnectedTo : SET [0:1] OF IfcRelConnectsPorts FOR RelatingPort; -END_ENTITY; - -ENTITY IfcPostalAddress - SUBTYPE OF (IfcAddress); - InternalLocation : OPTIONAL IfcLabel; - AddressLines : OPTIONAL LIST [1:?] OF IfcLabel; - PostalBox : OPTIONAL IfcLabel; - Town : OPTIONAL IfcLabel; - Region : OPTIONAL IfcLabel; - PostalCode : OPTIONAL IfcLabel; - Country : OPTIONAL IfcLabel; - WHERE - WR1 : EXISTS (InternalLocation) OR -EXISTS (AddressLines) OR -EXISTS (PostalBox) OR -EXISTS (PostalCode) OR -EXISTS (Town) OR -EXISTS (Region) OR -EXISTS (Country); -END_ENTITY; - -ENTITY IfcPreDefinedColour - ABSTRACT SUPERTYPE OF (ONEOF - (IfcDraughtingPreDefinedColour)) - SUBTYPE OF (IfcPreDefinedItem); -END_ENTITY; - -ENTITY IfcPreDefinedCurveFont - ABSTRACT SUPERTYPE OF (ONEOF - (IfcDraughtingPreDefinedCurveFont)) - SUBTYPE OF (IfcPreDefinedItem); -END_ENTITY; - -ENTITY IfcPreDefinedItem - ABSTRACT SUPERTYPE OF (ONEOF - (IfcPreDefinedColour - ,IfcPreDefinedCurveFont - ,IfcPreDefinedTextFont)) - SUBTYPE OF (IfcPresentationItem); - Name : IfcLabel; -END_ENTITY; - -ENTITY IfcPreDefinedProperties - ABSTRACT SUPERTYPE OF (ONEOF - (IfcReinforcementBarProperties - ,IfcSectionProperties - ,IfcSectionReinforcementProperties)) - SUBTYPE OF (IfcPropertyAbstraction); -END_ENTITY; - -ENTITY IfcPreDefinedPropertySet - ABSTRACT SUPERTYPE OF (ONEOF - (IfcDoorLiningProperties - ,IfcDoorPanelProperties - ,IfcPermeableCoveringProperties - ,IfcReinforcementDefinitionProperties - ,IfcWindowLiningProperties - ,IfcWindowPanelProperties)) - SUBTYPE OF (IfcPropertySetDefinition); -END_ENTITY; - -ENTITY IfcPreDefinedTextFont - ABSTRACT SUPERTYPE OF (ONEOF - (IfcTextStyleFontModel)) - SUBTYPE OF (IfcPreDefinedItem); -END_ENTITY; - -ENTITY IfcPresentationItem - ABSTRACT SUPERTYPE OF (ONEOF - (IfcColourRgbList - ,IfcColourSpecification - ,IfcCurveStyleFont - ,IfcCurveStyleFontAndScaling - ,IfcCurveStyleFontPattern - ,IfcIndexedColourMap - ,IfcPreDefinedItem - ,IfcSurfaceStyleLighting - ,IfcSurfaceStyleRefraction - ,IfcSurfaceStyleShading - ,IfcSurfaceStyleWithTextures - ,IfcSurfaceTexture - ,IfcTextStyleForDefinedFont - ,IfcTextStyleTextModel - ,IfcTextureCoordinate - ,IfcTextureVertex - ,IfcTextureVertexList)); -END_ENTITY; - -ENTITY IfcPresentationLayerAssignment - SUPERTYPE OF (ONEOF - (IfcPresentationLayerWithStyle)); - Name : IfcLabel; - Description : OPTIONAL IfcText; - AssignedItems : SET [1:?] OF IfcLayeredItem; - Identifier : OPTIONAL IfcIdentifier; - WHERE - ApplicableItems : SIZEOF(QUERY(temp <* AssignedItems | ( - SIZEOF(TYPEOF(temp) * [ - 'IFC4.IFCSHAPEREPRESENTATION', - 'IFC4.IFCGEOMETRICREPRESENTATIONITEM', - 'IFC4.IFCMAPPEDITEM']) = 1) -)) = SIZEOF(AssignedItems); -END_ENTITY; - -ENTITY IfcPresentationLayerWithStyle - SUBTYPE OF (IfcPresentationLayerAssignment); - LayerOn : IfcLogical; - LayerFrozen : IfcLogical; - LayerBlocked : IfcLogical; - LayerStyles : SET [0:?] OF IfcPresentationStyle; - WHERE - ApplicableOnlyToItems : SIZEOF(QUERY(temp <* AssignedItems | ( - SIZEOF(TYPEOF(temp) * [ - 'IFC4.IFCGEOMETRICREPRESENTATIONITEM', - 'IFC4.IFCMAPPEDITEM']) = 1) -)) = SIZEOF(AssignedItems); -END_ENTITY; - -ENTITY IfcPresentationStyle - ABSTRACT SUPERTYPE OF (ONEOF - (IfcCurveStyle - ,IfcFillAreaStyle - ,IfcSurfaceStyle - ,IfcTextStyle)); - Name : OPTIONAL IfcLabel; -END_ENTITY; - -ENTITY IfcPresentationStyleAssignment; - Styles : SET [1:?] OF IfcPresentationStyleSelect; -END_ENTITY; - -ENTITY IfcProcedure - SUBTYPE OF (IfcProcess); - PredefinedType : OPTIONAL IfcProcedureTypeEnum; - WHERE - HasName : EXISTS(SELF\IfcRoot.Name); - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR (PredefinedType <> IfcProcedureTypeEnum.USERDEFINED) OR -((PredefinedType = IfcProcedureTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcObject.ObjectType)); -END_ENTITY; - -ENTITY IfcProcedureType - SUBTYPE OF (IfcTypeProcess); - PredefinedType : IfcProcedureTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcProcedureTypeEnum.USERDEFINED) OR ((PredefinedType = IfcProcedureTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcTypeProcess.ProcessType)); -END_ENTITY; - -ENTITY IfcProcess - ABSTRACT SUPERTYPE OF (ONEOF - (IfcEvent - ,IfcProcedure - ,IfcTask)) - SUBTYPE OF (IfcObject); - Identification : OPTIONAL IfcIdentifier; - LongDescription : OPTIONAL IfcText; - INVERSE - IsPredecessorTo : SET [0:?] OF IfcRelSequence FOR RelatingProcess; - IsSuccessorFrom : SET [0:?] OF IfcRelSequence FOR RelatedProcess; - OperatesOn : SET [0:?] OF IfcRelAssignsToProcess FOR RelatingProcess; -END_ENTITY; - -ENTITY IfcProduct - ABSTRACT SUPERTYPE OF (ONEOF - (IfcAnnotation - ,IfcElement - ,IfcGrid - ,IfcPort - ,IfcProxy - ,IfcSpatialElement - ,IfcStructuralActivity - ,IfcStructuralItem)) - SUBTYPE OF (IfcObject); - ObjectPlacement : OPTIONAL IfcObjectPlacement; - Representation : OPTIONAL IfcProductRepresentation; - INVERSE - ReferencedBy : SET [0:?] OF IfcRelAssignsToProduct FOR RelatingProduct; - WHERE - PlacementForShapeRepresentation : (EXISTS(Representation) AND EXISTS(ObjectPlacement)) - OR (EXISTS(Representation) AND - (SIZEOF(QUERY(temp <* Representation.Representations | 'IFC4.IFCSHAPEREPRESENTATION' IN TYPEOF(temp))) = 0)) - OR (NOT(EXISTS(Representation))); -END_ENTITY; - -ENTITY IfcProductDefinitionShape - SUBTYPE OF (IfcProductRepresentation); - INVERSE - ShapeOfProduct : SET [1:?] OF IfcProduct FOR Representation; - HasShapeAspects : SET [0:?] OF IfcShapeAspect FOR PartOfProductDefinitionShape; - WHERE - OnlyShapeModel : SIZEOF(QUERY(temp <* Representations | - (NOT('IFC4.IFCSHAPEMODEL' IN TYPEOF(temp))) -)) = 0; -END_ENTITY; - -ENTITY IfcProductRepresentation - ABSTRACT SUPERTYPE OF (ONEOF - (IfcMaterialDefinitionRepresentation - ,IfcProductDefinitionShape)); - Name : OPTIONAL IfcLabel; - Description : OPTIONAL IfcText; - Representations : LIST [1:?] OF IfcRepresentation; -END_ENTITY; - -ENTITY IfcProfileDef - SUPERTYPE OF (ONEOF - (IfcArbitraryClosedProfileDef - ,IfcArbitraryOpenProfileDef - ,IfcCompositeProfileDef - ,IfcDerivedProfileDef - ,IfcParameterizedProfileDef)); - ProfileType : IfcProfileTypeEnum; - ProfileName : OPTIONAL IfcLabel; - INVERSE - HasExternalReference : SET [0:?] OF IfcExternalReferenceRelationship FOR RelatedResourceObjects; - HasProperties : SET [0:?] OF IfcProfileProperties FOR ProfileDefinition; -END_ENTITY; - -ENTITY IfcProfileProperties - SUBTYPE OF (IfcExtendedProperties); - ProfileDefinition : IfcProfileDef; -END_ENTITY; - -ENTITY IfcProject - SUBTYPE OF (IfcContext); - WHERE - HasName : EXISTS(SELF\IfcRoot.Name); - CorrectContext : NOT(EXISTS(SELF\IfcContext.RepresentationContexts)) OR -(SIZEOF(QUERY(Temp <* SELF\IfcContext.RepresentationContexts | - 'IFC4.IFCGEOMETRICREPRESENTATIONSUBCONTEXT' IN TYPEOF(Temp) - )) = 0); - NoDecomposition : SIZEOF(SELF\IfcObjectDefinition.Decomposes) = 0; -END_ENTITY; - -ENTITY IfcProjectLibrary - SUBTYPE OF (IfcContext); -END_ENTITY; - -ENTITY IfcProjectOrder - SUBTYPE OF (IfcControl); - PredefinedType : OPTIONAL IfcProjectOrderTypeEnum; - Status : OPTIONAL IfcLabel; - LongDescription : OPTIONAL IfcText; -END_ENTITY; - -ENTITY IfcProjectedCRS - SUBTYPE OF (IfcCoordinateReferenceSystem); - MapProjection : OPTIONAL IfcIdentifier; - MapZone : OPTIONAL IfcIdentifier; - MapUnit : OPTIONAL IfcNamedUnit; - WHERE - IsLengthUnit : NOT(EXISTS(MapUnit)) OR (MapUnit.UnitType = IfcUnitEnum.LENGTHUNIT); -END_ENTITY; - -ENTITY IfcProjectionElement - SUBTYPE OF (IfcFeatureElementAddition); - PredefinedType : OPTIONAL IfcProjectionElementTypeEnum; -END_ENTITY; - -ENTITY IfcProperty - ABSTRACT SUPERTYPE OF (ONEOF - (IfcComplexProperty - ,IfcSimpleProperty)) - SUBTYPE OF (IfcPropertyAbstraction); - Name : IfcIdentifier; - Description : OPTIONAL IfcText; - INVERSE - PartOfPset : SET [0:?] OF IfcPropertySet FOR HasProperties; - PropertyForDependance : SET [0:?] OF IfcPropertyDependencyRelationship FOR DependingProperty; - PropertyDependsOn : SET [0:?] OF IfcPropertyDependencyRelationship FOR DependantProperty; - PartOfComplex : SET [0:?] OF IfcComplexProperty FOR HasProperties; - HasConstraints : SET [0:?] OF IfcResourceConstraintRelationship FOR RelatedResourceObjects; - HasApprovals : SET [0:?] OF IfcResourceApprovalRelationship FOR RelatedResourceObjects; -END_ENTITY; - -ENTITY IfcPropertyAbstraction - ABSTRACT SUPERTYPE OF (ONEOF - (IfcExtendedProperties - ,IfcPreDefinedProperties - ,IfcProperty - ,IfcPropertyEnumeration)); - INVERSE - HasExternalReferences : SET [0:?] OF IfcExternalReferenceRelationship FOR RelatedResourceObjects; -END_ENTITY; - -ENTITY IfcPropertyBoundedValue - SUBTYPE OF (IfcSimpleProperty); - UpperBoundValue : OPTIONAL IfcValue; - LowerBoundValue : OPTIONAL IfcValue; - Unit : OPTIONAL IfcUnit; - SetPointValue : OPTIONAL IfcValue; - WHERE - SameUnitUpperLower : NOT(EXISTS(UpperBoundValue)) OR NOT(EXISTS(LowerBoundValue)) OR -(TYPEOF(UpperBoundValue) = TYPEOF(LowerBoundValue)); - SameUnitUpperSet : NOT(EXISTS(UpperBoundValue)) OR NOT(EXISTS(SetPointValue)) OR -(TYPEOF(UpperBoundValue) = TYPEOF(SetPointValue)); - SameUnitLowerSet : NOT(EXISTS(LowerBoundValue)) OR NOT(EXISTS(SetPointValue)) OR -(TYPEOF(LowerBoundValue) = TYPEOF(SetPointValue)); -END_ENTITY; - -ENTITY IfcPropertyDefinition - ABSTRACT SUPERTYPE OF (ONEOF - (IfcPropertySetDefinition - ,IfcPropertyTemplateDefinition)) - SUBTYPE OF (IfcRoot); - INVERSE - HasContext : SET [0:1] OF IfcRelDeclares FOR RelatedDefinitions; - HasAssociations : SET [0:?] OF IfcRelAssociates FOR RelatedObjects; -END_ENTITY; - -ENTITY IfcPropertyDependencyRelationship - SUBTYPE OF (IfcResourceLevelRelationship); - DependingProperty : IfcProperty; - DependantProperty : IfcProperty; - Expression : OPTIONAL IfcText; - WHERE - NoSelfReference : DependingProperty :<>: DependantProperty; -END_ENTITY; - -ENTITY IfcPropertyEnumeratedValue - SUBTYPE OF (IfcSimpleProperty); - EnumerationValues : OPTIONAL LIST [1:?] OF IfcValue; - EnumerationReference : OPTIONAL IfcPropertyEnumeration; - WHERE - WR21 : NOT(EXISTS(EnumerationReference)) -OR NOT(EXISTS(EnumerationValues)) -OR (SIZEOF(QUERY(temp <* EnumerationValues | - temp IN EnumerationReference.EnumerationValues)) - = SIZEOF(EnumerationValues)); -END_ENTITY; - -ENTITY IfcPropertyEnumeration - SUBTYPE OF (IfcPropertyAbstraction); - Name : IfcLabel; - EnumerationValues : LIST [1:?] OF UNIQUE IfcValue; - Unit : OPTIONAL IfcUnit; - UNIQUE - UR1 : Name; - WHERE - WR01 : SIZEOF(QUERY(temp <* SELF.EnumerationValues | - NOT(TYPEOF(SELF.EnumerationValues[1]) = TYPEOF(temp)) - )) = 0; -END_ENTITY; - -ENTITY IfcPropertyListValue - SUBTYPE OF (IfcSimpleProperty); - ListValues : OPTIONAL LIST [1:?] OF IfcValue; - Unit : OPTIONAL IfcUnit; - WHERE - WR31 : SIZEOF(QUERY(temp <* SELF.ListValues | - NOT(TYPEOF(SELF.ListValues[1]) = TYPEOF(temp)) - )) = 0; -END_ENTITY; - -ENTITY IfcPropertyReferenceValue - SUBTYPE OF (IfcSimpleProperty); - UsageName : OPTIONAL IfcText; - PropertyReference : OPTIONAL IfcObjectReferenceSelect; -END_ENTITY; - -ENTITY IfcPropertySet - SUBTYPE OF (IfcPropertySetDefinition); - HasProperties : SET [1:?] OF IfcProperty; - WHERE - ExistsName : EXISTS(SELF\IfcRoot.Name); - UniquePropertyNames : IfcUniquePropertyName(HasProperties); -END_ENTITY; - -ENTITY IfcPropertySetDefinition - ABSTRACT SUPERTYPE OF (ONEOF - (IfcPreDefinedPropertySet - ,IfcPropertySet - ,IfcQuantitySet)) - SUBTYPE OF (IfcPropertyDefinition); - INVERSE - DefinesType : SET [0:?] OF IfcTypeObject FOR HasPropertySets; - IsDefinedBy : SET [0:?] OF IfcRelDefinesByTemplate FOR RelatedPropertySets; - DefinesOccurrence : SET [0:?] OF IfcRelDefinesByProperties FOR RelatingPropertyDefinition; -END_ENTITY; - -ENTITY IfcPropertySetTemplate - SUBTYPE OF (IfcPropertyTemplateDefinition); - TemplateType : OPTIONAL IfcPropertySetTemplateTypeEnum; - ApplicableEntity : OPTIONAL IfcIdentifier; - HasPropertyTemplates : SET [1:?] OF IfcPropertyTemplate; - INVERSE - Defines : SET [0:?] OF IfcRelDefinesByTemplate FOR RelatingTemplate; - WHERE - ExistsName : EXISTS(SELF\IfcRoot.Name); - UniquePropertyNames : IfcUniquePropertyTemplateNames(HasPropertyTemplates); -END_ENTITY; - -ENTITY IfcPropertySingleValue - SUBTYPE OF (IfcSimpleProperty); - NominalValue : OPTIONAL IfcValue; - Unit : OPTIONAL IfcUnit; -END_ENTITY; - -ENTITY IfcPropertyTableValue - SUBTYPE OF (IfcSimpleProperty); - DefiningValues : OPTIONAL LIST [1:?] OF UNIQUE IfcValue; - DefinedValues : OPTIONAL LIST [1:?] OF IfcValue; - Expression : OPTIONAL IfcText; - DefiningUnit : OPTIONAL IfcUnit; - DefinedUnit : OPTIONAL IfcUnit; - CurveInterpolation : OPTIONAL IfcCurveInterpolationEnum; - WHERE - WR21 : (NOT(EXISTS(DefiningValues)) AND NOT(EXISTS(DefinedValues))) -OR (SIZEOF(DefiningValues) = SIZEOF(DefinedValues)); - WR22 : NOT(EXISTS(DefiningValues)) OR -(SIZEOF(QUERY(temp <* SELF.DefiningValues | TYPEOF(temp) <> TYPEOF(SELF.DefiningValues[1]) -)) = 0); - WR23 : NOT(EXISTS(DefinedValues)) OR -(SIZEOF(QUERY(temp <* SELF.DefinedValues | TYPEOF(temp) <> TYPEOF(SELF.DefinedValues[1]) -)) = 0); -END_ENTITY; - -ENTITY IfcPropertyTemplate - ABSTRACT SUPERTYPE OF (ONEOF - (IfcComplexPropertyTemplate - ,IfcSimplePropertyTemplate)) - SUBTYPE OF (IfcPropertyTemplateDefinition); - INVERSE - PartOfComplexTemplate : SET [0:?] OF IfcComplexPropertyTemplate FOR HasPropertyTemplates; - PartOfPsetTemplate : SET [0:?] OF IfcPropertySetTemplate FOR HasPropertyTemplates; -END_ENTITY; - -ENTITY IfcPropertyTemplateDefinition - ABSTRACT SUPERTYPE OF (ONEOF - (IfcPropertySetTemplate - ,IfcPropertyTemplate)) - SUBTYPE OF (IfcPropertyDefinition); -END_ENTITY; - -ENTITY IfcProtectiveDevice - SUBTYPE OF (IfcFlowController); - PredefinedType : OPTIONAL IfcProtectiveDeviceTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcProtectiveDeviceTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcProtectiveDeviceTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCPROTECTIVEDEVICETYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcProtectiveDeviceTrippingUnit - SUBTYPE OF (IfcDistributionControlElement); - PredefinedType : OPTIONAL IfcProtectiveDeviceTrippingUnitTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcProtectiveDeviceTrippingUnitTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcProtectiveDeviceTrippingUnitTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCPROTECTIVEDEVICETRIPPINGUNITTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcProtectiveDeviceTrippingUnitType - SUBTYPE OF (IfcDistributionControlElementType); - PredefinedType : IfcProtectiveDeviceTrippingUnitTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcProtectiveDeviceTrippingUnitTypeEnum.USERDEFINED) OR -((PredefinedType = IfcProtectiveDeviceTrippingUnitTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcProtectiveDeviceType - SUBTYPE OF (IfcFlowControllerType); - PredefinedType : IfcProtectiveDeviceTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcProtectiveDeviceTypeEnum.USERDEFINED) OR -((PredefinedType = IfcProtectiveDeviceTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcProxy - SUBTYPE OF (IfcProduct); - ProxyType : IfcObjectTypeEnum; - Tag : OPTIONAL IfcLabel; - WHERE - WR1 : EXISTS(SELF\IfcRoot.Name); -END_ENTITY; - -ENTITY IfcPump - SUBTYPE OF (IfcFlowMovingDevice); - PredefinedType : OPTIONAL IfcPumpTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcPumpTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcPumpTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCPUMPTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcPumpType - SUBTYPE OF (IfcFlowMovingDeviceType); - PredefinedType : IfcPumpTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcPumpTypeEnum.USERDEFINED) OR -((PredefinedType = IfcPumpTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcQuantityArea - SUBTYPE OF (IfcPhysicalSimpleQuantity); - AreaValue : IfcAreaMeasure; - Formula : OPTIONAL IfcLabel; - WHERE - WR21 : NOT(EXISTS(SELF\IfcPhysicalSimpleQuantity.Unit)) OR - (SELF\IfcPhysicalSimpleQuantity.Unit.UnitType = IfcUnitEnum.AREAUNIT); - WR22 : AreaValue >= 0.; -END_ENTITY; - -ENTITY IfcQuantityCount - SUBTYPE OF (IfcPhysicalSimpleQuantity); - CountValue : IfcCountMeasure; - Formula : OPTIONAL IfcLabel; - WHERE - WR21 : CountValue >= 0.; -END_ENTITY; - -ENTITY IfcQuantityLength - SUBTYPE OF (IfcPhysicalSimpleQuantity); - LengthValue : IfcLengthMeasure; - Formula : OPTIONAL IfcLabel; - WHERE - WR21 : NOT(EXISTS(SELF\IfcPhysicalSimpleQuantity.Unit)) OR - (SELF\IfcPhysicalSimpleQuantity.Unit.UnitType = IfcUnitEnum.LENGTHUNIT); - WR22 : LengthValue >= 0.; -END_ENTITY; - -ENTITY IfcQuantitySet - ABSTRACT SUPERTYPE OF (ONEOF - (IfcElementQuantity)) - SUBTYPE OF (IfcPropertySetDefinition); -END_ENTITY; - -ENTITY IfcQuantityTime - SUBTYPE OF (IfcPhysicalSimpleQuantity); - TimeValue : IfcTimeMeasure; - Formula : OPTIONAL IfcLabel; - WHERE - WR21 : NOT(EXISTS(SELF\IfcPhysicalSimpleQuantity.Unit)) OR - (SELF\IfcPhysicalSimpleQuantity.Unit.UnitType = IfcUnitEnum.TIMEUNIT); - WR22 : TimeValue >= 0.; -END_ENTITY; - -ENTITY IfcQuantityVolume - SUBTYPE OF (IfcPhysicalSimpleQuantity); - VolumeValue : IfcVolumeMeasure; - Formula : OPTIONAL IfcLabel; - WHERE - WR21 : NOT(EXISTS(SELF\IfcPhysicalSimpleQuantity.Unit)) OR - (SELF\IfcPhysicalSimpleQuantity.Unit.UnitType = IfcUnitEnum.VOLUMEUNIT); - WR22 : VolumeValue >= 0.; -END_ENTITY; - -ENTITY IfcQuantityWeight - SUBTYPE OF (IfcPhysicalSimpleQuantity); - WeightValue : IfcMassMeasure; - Formula : OPTIONAL IfcLabel; - WHERE - WR21 : NOT(EXISTS(SELF\IfcPhysicalSimpleQuantity.Unit)) OR - (SELF\IfcPhysicalSimpleQuantity.Unit.UnitType = IfcUnitEnum.MASSUNIT); - WR22 : WeightValue >= 0.; -END_ENTITY; - -ENTITY IfcRailing - SUBTYPE OF (IfcBuildingElement); - PredefinedType : OPTIONAL IfcRailingTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcRailingTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcRailingTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCRAILINGTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcRailingType - SUBTYPE OF (IfcBuildingElementType); - PredefinedType : IfcRailingTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcRailingTypeEnum.USERDEFINED) OR -((PredefinedType = IfcRailingTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcRamp - SUBTYPE OF (IfcBuildingElement); - PredefinedType : OPTIONAL IfcRampTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcRampTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcRampTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCRAMPTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcRampFlight - SUBTYPE OF (IfcBuildingElement); - PredefinedType : OPTIONAL IfcRampFlightTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcRampFlightTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcRampFlightTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCRAMPFLIGHTTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcRampFlightType - SUBTYPE OF (IfcBuildingElementType); - PredefinedType : IfcRampFlightTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcRampFlightTypeEnum.USERDEFINED) OR -((PredefinedType = IfcRampFlightTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcRampType - SUBTYPE OF (IfcBuildingElementType); - PredefinedType : IfcRampTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcRampTypeEnum.USERDEFINED) OR -((PredefinedType = IfcRampTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcRationalBSplineCurveWithKnots - SUBTYPE OF (IfcBSplineCurveWithKnots); - WeightsData : LIST [2:?] OF IfcReal; - DERIVE - Weights : ARRAY [0:UpperIndexOnControlPoints] OF IfcReal := IfcListToArray(WeightsData,0,SELF\IfcBSplineCurve.UpperIndexOnControlPoints); - WHERE - SameNumOfWeightsAndPoints : SIZEOF(WeightsData) = SIZEOF(SELF\IfcBSplineCurve.ControlPointsList); - WeightsGreaterZero : IfcCurveWeightsPositive(SELF); -END_ENTITY; - -ENTITY IfcRationalBSplineSurfaceWithKnots - SUBTYPE OF (IfcBSplineSurfaceWithKnots); - WeightsData : LIST [2:?] OF LIST [2:?] OF IfcReal; - DERIVE - Weights : ARRAY [0:UUpper] OF ARRAY [0:VUpper] OF IfcReal := IfcMakeArrayOfArray(WeightsData,0,UUpper,0,VUpper); - WHERE - CorrespondingWeightsDataLists : (SIZEOF(WeightsData) = SIZEOF(SELF\IfcBSplineSurface.ControlPointsList)) -AND -(SIZEOF(WeightsData[1]) = SIZEOF(SELF\IfcBSplineSurface.ControlPointsList[1])); - WeightValuesGreaterZero : IfcSurfaceWeightsPositive(SELF); -END_ENTITY; - -ENTITY IfcRectangleHollowProfileDef - SUBTYPE OF (IfcRectangleProfileDef); - WallThickness : IfcPositiveLengthMeasure; - InnerFilletRadius : OPTIONAL IfcNonNegativeLengthMeasure; - OuterFilletRadius : OPTIONAL IfcNonNegativeLengthMeasure; - WHERE - ValidWallThickness : (WallThickness < (SELF\IfcRectangleProfileDef.XDim/2.)) AND -(WallThickness < (SELF\IfcRectangleProfileDef.YDim/2.)); - ValidInnerRadius : NOT(EXISTS(InnerFilletRadius)) OR -((InnerFilletRadius <= (SELF\IfcRectangleProfileDef.XDim/2. - WallThickness)) AND - (InnerFilletRadius <= (SELF\IfcRectangleProfileDef.YDim/2. - WallThickness))); - ValidOuterRadius : NOT(EXISTS(OuterFilletRadius)) OR -((OuterFilletRadius <= (SELF\IfcRectangleProfileDef.XDim/2.)) AND - (OuterFilletRadius <= (SELF\IfcRectangleProfileDef.YDim/2.))); -END_ENTITY; - -ENTITY IfcRectangleProfileDef - SUPERTYPE OF (ONEOF - (IfcRectangleHollowProfileDef - ,IfcRoundedRectangleProfileDef)) - SUBTYPE OF (IfcParameterizedProfileDef); - XDim : IfcPositiveLengthMeasure; - YDim : IfcPositiveLengthMeasure; -END_ENTITY; - -ENTITY IfcRectangularPyramid - SUBTYPE OF (IfcCsgPrimitive3D); - XLength : IfcPositiveLengthMeasure; - YLength : IfcPositiveLengthMeasure; - Height : IfcPositiveLengthMeasure; -END_ENTITY; - -ENTITY IfcRectangularTrimmedSurface - SUBTYPE OF (IfcBoundedSurface); - BasisSurface : IfcSurface; - U1 : IfcParameterValue; - V1 : IfcParameterValue; - U2 : IfcParameterValue; - V2 : IfcParameterValue; - Usense : IfcBoolean; - Vsense : IfcBoolean; - WHERE - U1AndU2Different : U1 <> U2; - V1AndV2Different : V1 <> V2; - UsenseCompatible : (('IFC4.IFCELEMENTARYSURFACE' IN TYPEOF(BasisSurface)) AND - (NOT ('IFC4.IFCPLANE' IN TYPEOF(BasisSurface)))) OR - ('IFC4.IFCSURFACEOFREVOLUTION' IN TYPEOF(BasisSurface)) OR - (Usense = (U2 > U1)); - VsenseCompatible : Vsense = (V2 > V1); -END_ENTITY; - -ENTITY IfcRecurrencePattern; - RecurrenceType : IfcRecurrenceTypeEnum; - DayComponent : OPTIONAL SET [1:?] OF IfcDayInMonthNumber; - WeekdayComponent : OPTIONAL SET [1:?] OF IfcDayInWeekNumber; - MonthComponent : OPTIONAL SET [1:?] OF IfcMonthInYearNumber; - Position : OPTIONAL IfcInteger; - Interval : OPTIONAL IfcInteger; - Occurrences : OPTIONAL IfcInteger; - TimePeriods : OPTIONAL LIST [1:?] OF IfcTimePeriod; -END_ENTITY; - -ENTITY IfcReference; - TypeIdentifier : OPTIONAL IfcIdentifier; - AttributeIdentifier : OPTIONAL IfcIdentifier; - InstanceName : OPTIONAL IfcLabel; - ListPositions : OPTIONAL LIST [1:?] OF IfcInteger; - InnerReference : OPTIONAL IfcReference; -END_ENTITY; - -ENTITY IfcRegularTimeSeries - SUBTYPE OF (IfcTimeSeries); - TimeStep : IfcTimeMeasure; - Values : LIST [1:?] OF IfcTimeSeriesValue; -END_ENTITY; - -ENTITY IfcReinforcementBarProperties - SUBTYPE OF (IfcPreDefinedProperties); - TotalCrossSectionArea : IfcAreaMeasure; - SteelGrade : IfcLabel; - BarSurface : OPTIONAL IfcReinforcingBarSurfaceEnum; - EffectiveDepth : OPTIONAL IfcLengthMeasure; - NominalBarDiameter : OPTIONAL IfcPositiveLengthMeasure; - BarCount : OPTIONAL IfcCountMeasure; -END_ENTITY; - -ENTITY IfcReinforcementDefinitionProperties - SUBTYPE OF (IfcPreDefinedPropertySet); - DefinitionType : OPTIONAL IfcLabel; - ReinforcementSectionDefinitions : LIST [1:?] OF IfcSectionReinforcementProperties; -END_ENTITY; - -ENTITY IfcReinforcingBar - SUBTYPE OF (IfcReinforcingElement); - NominalDiameter : OPTIONAL IfcPositiveLengthMeasure; - CrossSectionArea : OPTIONAL IfcAreaMeasure; - BarLength : OPTIONAL IfcPositiveLengthMeasure; - PredefinedType : OPTIONAL IfcReinforcingBarTypeEnum; - BarSurface : OPTIONAL IfcReinforcingBarSurfaceEnum; - WHERE - CorrectPredefinedType : NOT EXISTS(PredefinedType) OR -(PredefinedType <> IfcReinforcingBarTypeEnum.USERDEFINED) OR -((PredefinedType = IfcReinforcingBarTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR -('IFC4.IFCREINFORCINGBARTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcReinforcingBarType - SUBTYPE OF (IfcReinforcingElementType); - PredefinedType : IfcReinforcingBarTypeEnum; - NominalDiameter : OPTIONAL IfcPositiveLengthMeasure; - CrossSectionArea : OPTIONAL IfcAreaMeasure; - BarLength : OPTIONAL IfcPositiveLengthMeasure; - BarSurface : OPTIONAL IfcReinforcingBarSurfaceEnum; - BendingShapeCode : OPTIONAL IfcLabel; - BendingParameters : OPTIONAL LIST [1:?] OF IfcBendingParameterSelect; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcReinforcingBarTypeEnum.USERDEFINED) OR -((PredefinedType = IfcReinforcingBarTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); - BendingShapeCodeProvided : NOT EXISTS(BendingParameters) OR EXISTS(BendingShapeCode); -END_ENTITY; - -ENTITY IfcReinforcingElement - ABSTRACT SUPERTYPE OF (ONEOF - (IfcReinforcingBar - ,IfcReinforcingMesh - ,IfcTendon - ,IfcTendonAnchor)) - SUBTYPE OF (IfcElementComponent); - SteelGrade : OPTIONAL IfcLabel; -END_ENTITY; - -ENTITY IfcReinforcingElementType - ABSTRACT SUPERTYPE OF (ONEOF - (IfcReinforcingBarType - ,IfcReinforcingMeshType - ,IfcTendonAnchorType - ,IfcTendonType)) - SUBTYPE OF (IfcElementComponentType); -END_ENTITY; - -ENTITY IfcReinforcingMesh - SUBTYPE OF (IfcReinforcingElement); - MeshLength : OPTIONAL IfcPositiveLengthMeasure; - MeshWidth : OPTIONAL IfcPositiveLengthMeasure; - LongitudinalBarNominalDiameter : OPTIONAL IfcPositiveLengthMeasure; - TransverseBarNominalDiameter : OPTIONAL IfcPositiveLengthMeasure; - LongitudinalBarCrossSectionArea : OPTIONAL IfcAreaMeasure; - TransverseBarCrossSectionArea : OPTIONAL IfcAreaMeasure; - LongitudinalBarSpacing : OPTIONAL IfcPositiveLengthMeasure; - TransverseBarSpacing : OPTIONAL IfcPositiveLengthMeasure; - PredefinedType : OPTIONAL IfcReinforcingMeshTypeEnum; - WHERE - CorrectPredefinedType : NOT EXISTS(PredefinedType) OR -(PredefinedType <> IfcReinforcingMeshTypeEnum.USERDEFINED) OR -((PredefinedType = IfcReinforcingMeshTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR -('IFC4.IFCREINFORCINGMESHTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcReinforcingMeshType - SUBTYPE OF (IfcReinforcingElementType); - PredefinedType : IfcReinforcingMeshTypeEnum; - MeshLength : OPTIONAL IfcPositiveLengthMeasure; - MeshWidth : OPTIONAL IfcPositiveLengthMeasure; - LongitudinalBarNominalDiameter : OPTIONAL IfcPositiveLengthMeasure; - TransverseBarNominalDiameter : OPTIONAL IfcPositiveLengthMeasure; - LongitudinalBarCrossSectionArea : OPTIONAL IfcAreaMeasure; - TransverseBarCrossSectionArea : OPTIONAL IfcAreaMeasure; - LongitudinalBarSpacing : OPTIONAL IfcPositiveLengthMeasure; - TransverseBarSpacing : OPTIONAL IfcPositiveLengthMeasure; - BendingShapeCode : OPTIONAL IfcLabel; - BendingParameters : OPTIONAL LIST [1:?] OF IfcBendingParameterSelect; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcReinforcingMeshTypeEnum.USERDEFINED) OR -((PredefinedType = IfcReinforcingMeshTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); - BendingShapeCodeProvided : NOT EXISTS(BendingParameters) OR EXISTS(BendingShapeCode); -END_ENTITY; - -ENTITY IfcRelAggregates - SUBTYPE OF (IfcRelDecomposes); - RelatingObject : IfcObjectDefinition; - RelatedObjects : SET [1:?] OF IfcObjectDefinition; - WHERE - NoSelfReference : SIZEOF(QUERY(Temp <* RelatedObjects | RelatingObject :=: Temp)) = 0; -END_ENTITY; - -ENTITY IfcRelAssigns - ABSTRACT SUPERTYPE OF (ONEOF - (IfcRelAssignsToActor - ,IfcRelAssignsToControl - ,IfcRelAssignsToGroup - ,IfcRelAssignsToProcess - ,IfcRelAssignsToProduct - ,IfcRelAssignsToResource)) - SUBTYPE OF (IfcRelationship); - RelatedObjects : SET [1:?] OF IfcObjectDefinition; - RelatedObjectsType : OPTIONAL IfcObjectTypeEnum; - WHERE - WR1 : IfcCorrectObjectAssignment(RelatedObjectsType, RelatedObjects); -END_ENTITY; - -ENTITY IfcRelAssignsToActor - SUBTYPE OF (IfcRelAssigns); - RelatingActor : IfcActor; - ActingRole : OPTIONAL IfcActorRole; - WHERE - NoSelfReference : SIZEOF(QUERY(Temp <* SELF\IfcRelAssigns.RelatedObjects | RelatingActor :=: Temp)) = 0; -END_ENTITY; - -ENTITY IfcRelAssignsToControl - SUBTYPE OF (IfcRelAssigns); - RelatingControl : IfcControl; - WHERE - NoSelfReference : SIZEOF(QUERY(Temp <* SELF\IfcRelAssigns.RelatedObjects | RelatingControl :=: Temp)) = 0; -END_ENTITY; - -ENTITY IfcRelAssignsToGroup - SUPERTYPE OF (ONEOF - (IfcRelAssignsToGroupByFactor)) - SUBTYPE OF (IfcRelAssigns); - RelatingGroup : IfcGroup; - WHERE - NoSelfReference : SIZEOF(QUERY(Temp <* SELF\IfcRelAssigns.RelatedObjects | RelatingGroup :=: Temp)) = 0; -END_ENTITY; - -ENTITY IfcRelAssignsToGroupByFactor - SUBTYPE OF (IfcRelAssignsToGroup); - Factor : IfcRatioMeasure; -END_ENTITY; - -ENTITY IfcRelAssignsToProcess - SUBTYPE OF (IfcRelAssigns); - RelatingProcess : IfcProcessSelect; - QuantityInProcess : OPTIONAL IfcMeasureWithUnit; - WHERE - NoSelfReference : SIZEOF(QUERY(Temp <* SELF\IfcRelAssigns.RelatedObjects | RelatingProcess :=: Temp)) = 0; -END_ENTITY; - -ENTITY IfcRelAssignsToProduct - SUBTYPE OF (IfcRelAssigns); - RelatingProduct : IfcProductSelect; - WHERE - NoSelfReference : SIZEOF(QUERY(Temp <* SELF\IfcRelAssigns.RelatedObjects | RelatingProduct :=: Temp)) = 0; -END_ENTITY; - -ENTITY IfcRelAssignsToResource - SUBTYPE OF (IfcRelAssigns); - RelatingResource : IfcResourceSelect; - WHERE - NoSelfReference : SIZEOF(QUERY(Temp <* SELF\IfcRelAssigns.RelatedObjects | RelatingResource :=: Temp)) = 0; -END_ENTITY; - -ENTITY IfcRelAssociates - ABSTRACT SUPERTYPE OF (ONEOF - (IfcRelAssociatesApproval - ,IfcRelAssociatesClassification - ,IfcRelAssociatesConstraint - ,IfcRelAssociatesDocument - ,IfcRelAssociatesLibrary - ,IfcRelAssociatesMaterial)) - SUBTYPE OF (IfcRelationship); - RelatedObjects : SET [1:?] OF IfcDefinitionSelect; -END_ENTITY; - -ENTITY IfcRelAssociatesApproval - SUBTYPE OF (IfcRelAssociates); - RelatingApproval : IfcApproval; -END_ENTITY; - -ENTITY IfcRelAssociatesClassification - SUBTYPE OF (IfcRelAssociates); - RelatingClassification : IfcClassificationSelect; -END_ENTITY; - -ENTITY IfcRelAssociatesConstraint - SUBTYPE OF (IfcRelAssociates); - Intent : OPTIONAL IfcLabel; - RelatingConstraint : IfcConstraint; -END_ENTITY; - -ENTITY IfcRelAssociatesDocument - SUBTYPE OF (IfcRelAssociates); - RelatingDocument : IfcDocumentSelect; -END_ENTITY; - -ENTITY IfcRelAssociatesLibrary - SUBTYPE OF (IfcRelAssociates); - RelatingLibrary : IfcLibrarySelect; -END_ENTITY; - -ENTITY IfcRelAssociatesMaterial - SUBTYPE OF (IfcRelAssociates); - RelatingMaterial : IfcMaterialSelect; - WHERE - NoVoidElement : SIZEOF(QUERY(temp <* SELF\IfcRelAssociates.RelatedObjects | - ('IFC4.IFCFEATUREELEMENTSUBTRACTION' IN TYPEOF(temp)) OR - ('IFC4.IFCVIRTUALELEMENT' IN TYPEOF(temp)) -)) = 0; - AllowedElements : SIZEOF(QUERY(temp <* SELF\IfcRelAssociates.RelatedObjects | ( - SIZEOF(TYPEOF(temp) * [ - 'IFC4.IFCELEMENT', - 'IFC4.IFCELEMENTTYPE', - 'IFC4.IFCWINDOWSTYLE', - 'IFC4.IFCDOORSTYLE', - 'IFC4.IFCSTRUCTURALMEMBER', - 'IFC4.IFCPORT']) = 0) -)) = 0; -END_ENTITY; - -ENTITY IfcRelConnects - ABSTRACT SUPERTYPE OF (ONEOF - (IfcRelConnectsElements - ,IfcRelConnectsPortToElement - ,IfcRelConnectsPorts - ,IfcRelConnectsStructuralActivity - ,IfcRelConnectsStructuralMember - ,IfcRelContainedInSpatialStructure - ,IfcRelCoversBldgElements - ,IfcRelCoversSpaces - ,IfcRelFillsElement - ,IfcRelFlowControlElements - ,IfcRelInterferesElements - ,IfcRelReferencedInSpatialStructure - ,IfcRelSequence - ,IfcRelServicesBuildings - ,IfcRelSpaceBoundary)) - SUBTYPE OF (IfcRelationship); -END_ENTITY; - -ENTITY IfcRelConnectsElements - SUPERTYPE OF (ONEOF - (IfcRelConnectsPathElements - ,IfcRelConnectsWithRealizingElements)) - SUBTYPE OF (IfcRelConnects); - ConnectionGeometry : OPTIONAL IfcConnectionGeometry; - RelatingElement : IfcElement; - RelatedElement : IfcElement; - WHERE - NoSelfReference : RelatingElement :<>: RelatedElement; -END_ENTITY; - -ENTITY IfcRelConnectsPathElements - SUBTYPE OF (IfcRelConnectsElements); - RelatingPriorities : LIST [0:?] OF IfcInteger; - RelatedPriorities : LIST [0:?] OF IfcInteger; - RelatedConnectionType : IfcConnectionTypeEnum; - RelatingConnectionType : IfcConnectionTypeEnum; - WHERE - NormalizedRelatingPriorities : (SIZEOF(RelatingPriorities) = 0) -OR -(SIZEOF (QUERY (temp <* RelatingPriorities - | {0 <= temp <= 100} - )) = SIZEOF(RelatingPriorities)); - NormalizedRelatedPriorities : (SIZEOF(RelatedPriorities) = 0) -OR -(SIZEOF (QUERY (temp <* RelatedPriorities - | {0 <= temp <= 100} - )) = SIZEOF(RelatedPriorities)); -END_ENTITY; - -ENTITY IfcRelConnectsPortToElement - SUBTYPE OF (IfcRelConnects); - RelatingPort : IfcPort; - RelatedElement : IfcDistributionElement; -END_ENTITY; - -ENTITY IfcRelConnectsPorts - SUBTYPE OF (IfcRelConnects); - RelatingPort : IfcPort; - RelatedPort : IfcPort; - RealizingElement : OPTIONAL IfcElement; - WHERE - NoSelfReference : RelatingPort :<>: RelatedPort; -END_ENTITY; - -ENTITY IfcRelConnectsStructuralActivity - SUBTYPE OF (IfcRelConnects); - RelatingElement : IfcStructuralActivityAssignmentSelect; - RelatedStructuralActivity : IfcStructuralActivity; -END_ENTITY; - -ENTITY IfcRelConnectsStructuralMember - SUPERTYPE OF (ONEOF - (IfcRelConnectsWithEccentricity)) - SUBTYPE OF (IfcRelConnects); - RelatingStructuralMember : IfcStructuralMember; - RelatedStructuralConnection : IfcStructuralConnection; - AppliedCondition : OPTIONAL IfcBoundaryCondition; - AdditionalConditions : OPTIONAL IfcStructuralConnectionCondition; - SupportedLength : OPTIONAL IfcLengthMeasure; - ConditionCoordinateSystem : OPTIONAL IfcAxis2Placement3D; -END_ENTITY; - -ENTITY IfcRelConnectsWithEccentricity - SUBTYPE OF (IfcRelConnectsStructuralMember); - ConnectionConstraint : IfcConnectionGeometry; -END_ENTITY; - -ENTITY IfcRelConnectsWithRealizingElements - SUBTYPE OF (IfcRelConnectsElements); - RealizingElements : SET [1:?] OF IfcElement; - ConnectionType : OPTIONAL IfcLabel; -END_ENTITY; - -ENTITY IfcRelContainedInSpatialStructure - SUBTYPE OF (IfcRelConnects); - RelatedElements : SET [1:?] OF IfcProduct; - RelatingStructure : IfcSpatialElement; - WHERE - WR31 : SIZEOF(QUERY(temp <* RelatedElements | 'IFC4.IFCSPATIALSTRUCTUREELEMENT' IN TYPEOF(temp))) = 0; -END_ENTITY; - -ENTITY IfcRelCoversBldgElements - SUBTYPE OF (IfcRelConnects); - RelatingBuildingElement : IfcElement; - RelatedCoverings : SET [1:?] OF IfcCovering; -END_ENTITY; - -ENTITY IfcRelCoversSpaces - SUBTYPE OF (IfcRelConnects); - RelatingSpace : IfcSpace; - RelatedCoverings : SET [1:?] OF IfcCovering; -END_ENTITY; - -ENTITY IfcRelDeclares - SUBTYPE OF (IfcRelationship); - RelatingContext : IfcContext; - RelatedDefinitions : SET [1:?] OF IfcDefinitionSelect; - WHERE - NoSelfReference : SIZEOF(QUERY(Temp <* RelatedDefinitions | RelatingContext :=: Temp)) = 0; -END_ENTITY; - -ENTITY IfcRelDecomposes - ABSTRACT SUPERTYPE OF (ONEOF - (IfcRelAggregates - ,IfcRelNests - ,IfcRelProjectsElement - ,IfcRelVoidsElement)) - SUBTYPE OF (IfcRelationship); -END_ENTITY; - -ENTITY IfcRelDefines - ABSTRACT SUPERTYPE OF (ONEOF - (IfcRelDefinesByObject - ,IfcRelDefinesByProperties - ,IfcRelDefinesByTemplate - ,IfcRelDefinesByType)) - SUBTYPE OF (IfcRelationship); -END_ENTITY; - -ENTITY IfcRelDefinesByObject - SUBTYPE OF (IfcRelDefines); - RelatedObjects : SET [1:?] OF IfcObject; - RelatingObject : IfcObject; -END_ENTITY; - -ENTITY IfcRelDefinesByProperties - SUBTYPE OF (IfcRelDefines); - RelatedObjects : SET [1:?] OF IfcObjectDefinition; - RelatingPropertyDefinition : IfcPropertySetDefinitionSelect; - WHERE - NoRelatedTypeObject : SIZEOF(QUERY(Types <* SELF\IfcRelDefinesByProperties.RelatedObjects | 'IFC4.IFCTYPEOBJECT' IN TYPEOF(Types))) = 0; -END_ENTITY; - -ENTITY IfcRelDefinesByTemplate - SUBTYPE OF (IfcRelDefines); - RelatedPropertySets : SET [1:?] OF IfcPropertySetDefinition; - RelatingTemplate : IfcPropertySetTemplate; -END_ENTITY; - -ENTITY IfcRelDefinesByType - SUBTYPE OF (IfcRelDefines); - RelatedObjects : SET [1:?] OF IfcObject; - RelatingType : IfcTypeObject; -END_ENTITY; - -ENTITY IfcRelFillsElement - SUBTYPE OF (IfcRelConnects); - RelatingOpeningElement : IfcOpeningElement; - RelatedBuildingElement : IfcElement; -END_ENTITY; - -ENTITY IfcRelFlowControlElements - SUBTYPE OF (IfcRelConnects); - RelatedControlElements : SET [1:?] OF IfcDistributionControlElement; - RelatingFlowElement : IfcDistributionFlowElement; -END_ENTITY; - -ENTITY IfcRelInterferesElements - SUBTYPE OF (IfcRelConnects); - RelatingElement : IfcElement; - RelatedElement : IfcElement; - InterferenceGeometry : OPTIONAL IfcConnectionGeometry; - InterferenceType : OPTIONAL IfcIdentifier; - ImpliedOrder : LOGICAL; - WHERE - NotSelfReference : RelatingElement :<>: RelatedElement; -END_ENTITY; - -ENTITY IfcRelNests - SUBTYPE OF (IfcRelDecomposes); - RelatingObject : IfcObjectDefinition; - RelatedObjects : LIST [1:?] OF IfcObjectDefinition; - WHERE - NoSelfReference : SIZEOF(QUERY(Temp <* RelatedObjects | RelatingObject :=: Temp)) = 0; -END_ENTITY; - -ENTITY IfcRelProjectsElement - SUBTYPE OF (IfcRelDecomposes); - RelatingElement : IfcElement; - RelatedFeatureElement : IfcFeatureElementAddition; -END_ENTITY; - -ENTITY IfcRelReferencedInSpatialStructure - SUBTYPE OF (IfcRelConnects); - RelatedElements : SET [1:?] OF IfcProduct; - RelatingStructure : IfcSpatialElement; - WHERE - AllowedRelatedElements : SIZEOF(QUERY(temp <* RelatedElements | ('IFC4.IFCSPATIALSTRUCTUREELEMENT' IN TYPEOF(temp)) AND (NOT ('IFC4.IFCSPACE' IN TYPEOF(temp))) -)) = 0; -END_ENTITY; - -ENTITY IfcRelSequence - SUBTYPE OF (IfcRelConnects); - RelatingProcess : IfcProcess; - RelatedProcess : IfcProcess; - TimeLag : OPTIONAL IfcLagTime; - SequenceType : OPTIONAL IfcSequenceEnum; - UserDefinedSequenceType : OPTIONAL IfcLabel; - WHERE - AvoidInconsistentSequence : RelatingProcess :<>: RelatedProcess; - CorrectSequenceType : (SequenceType <> IfcSequenceEnum.USERDEFINED) OR ((SequenceType = IfcSequenceEnum.USERDEFINED) AND EXISTS(UserDefinedSequenceType)); -END_ENTITY; - -ENTITY IfcRelServicesBuildings - SUBTYPE OF (IfcRelConnects); - RelatingSystem : IfcSystem; - RelatedBuildings : SET [1:?] OF IfcSpatialElement; -END_ENTITY; - -ENTITY IfcRelSpaceBoundary - SUPERTYPE OF (ONEOF - (IfcRelSpaceBoundary1stLevel)) - SUBTYPE OF (IfcRelConnects); - RelatingSpace : IfcSpaceBoundarySelect; - RelatedBuildingElement : IfcElement; - ConnectionGeometry : OPTIONAL IfcConnectionGeometry; - PhysicalOrVirtualBoundary : IfcPhysicalOrVirtualEnum; - InternalOrExternalBoundary : IfcInternalOrExternalEnum; - WHERE - CorrectPhysOrVirt : ((PhysicalOrVirtualBoundary = IfcPhysicalOrVirtualEnum.Physical) - AND (NOT('IFC4.IFCVIRTUALELEMENT' IN TYPEOF(RelatedBuildingElement)))) -OR -((PhysicalOrVirtualBoundary = IfcPhysicalOrVirtualEnum.Virtual) - AND (('IFC4.IFCVIRTUALELEMENT' IN TYPEOF(RelatedBuildingElement)) - OR ('IFC4.IFCOPENINGELEMENT' IN TYPEOF(RelatedBuildingElement)))) -OR -(PhysicalOrVirtualBoundary = IfcPhysicalOrVirtualEnum.NotDefined); -END_ENTITY; - -ENTITY IfcRelSpaceBoundary1stLevel - SUPERTYPE OF (ONEOF - (IfcRelSpaceBoundary2ndLevel)) - SUBTYPE OF (IfcRelSpaceBoundary); - ParentBoundary : OPTIONAL IfcRelSpaceBoundary1stLevel; - INVERSE - InnerBoundaries : SET [0:?] OF IfcRelSpaceBoundary1stLevel FOR ParentBoundary; -END_ENTITY; - -ENTITY IfcRelSpaceBoundary2ndLevel - SUBTYPE OF (IfcRelSpaceBoundary1stLevel); - CorrespondingBoundary : OPTIONAL IfcRelSpaceBoundary2ndLevel; - INVERSE - Corresponds : SET [0:1] OF IfcRelSpaceBoundary2ndLevel FOR CorrespondingBoundary; -END_ENTITY; - -ENTITY IfcRelVoidsElement - SUBTYPE OF (IfcRelDecomposes); - RelatingBuildingElement : IfcElement; - RelatedOpeningElement : IfcFeatureElementSubtraction; -END_ENTITY; - -ENTITY IfcRelationship - ABSTRACT SUPERTYPE OF (ONEOF - (IfcRelAssigns - ,IfcRelAssociates - ,IfcRelConnects - ,IfcRelDeclares - ,IfcRelDecomposes - ,IfcRelDefines)) - SUBTYPE OF (IfcRoot); -END_ENTITY; - -ENTITY IfcReparametrisedCompositeCurveSegment - SUBTYPE OF (IfcCompositeCurveSegment); - ParamLength : IfcParameterValue; - WHERE - PositiveLengthParameter : ParamLength > 0.0; -END_ENTITY; - -ENTITY IfcRepresentation - ABSTRACT SUPERTYPE OF (ONEOF - (IfcShapeModel - ,IfcStyleModel)); - ContextOfItems : IfcRepresentationContext; - RepresentationIdentifier : OPTIONAL IfcLabel; - RepresentationType : OPTIONAL IfcLabel; - Items : SET [1:?] OF IfcRepresentationItem; - INVERSE - RepresentationMap : SET [0:1] OF IfcRepresentationMap FOR MappedRepresentation; - LayerAssignments : SET [0:?] OF IfcPresentationLayerAssignment FOR AssignedItems; - OfProductRepresentation : SET [0:?] OF IfcProductRepresentation FOR Representations; -END_ENTITY; - -ENTITY IfcRepresentationContext - ABSTRACT SUPERTYPE OF (ONEOF - (IfcGeometricRepresentationContext)); - ContextIdentifier : OPTIONAL IfcLabel; - ContextType : OPTIONAL IfcLabel; - INVERSE - RepresentationsInContext : SET [0:?] OF IfcRepresentation FOR ContextOfItems; -END_ENTITY; - -ENTITY IfcRepresentationItem - ABSTRACT SUPERTYPE OF (ONEOF - (IfcGeometricRepresentationItem - ,IfcMappedItem - ,IfcStyledItem - ,IfcTopologicalRepresentationItem)); - INVERSE - LayerAssignment : SET [0:1] OF IfcPresentationLayerAssignment FOR AssignedItems; - StyledByItem : SET [0:1] OF IfcStyledItem FOR Item; -END_ENTITY; - -ENTITY IfcRepresentationMap; - MappingOrigin : IfcAxis2Placement; - MappedRepresentation : IfcRepresentation; - INVERSE - HasShapeAspects : SET [0:?] OF IfcShapeAspect FOR PartOfProductDefinitionShape; - MapUsage : SET [0:?] OF IfcMappedItem FOR MappingSource; - WHERE - ApplicableMappedRepr : 'IFC4.IFCSHAPEMODEL' IN TYPEOF(MappedRepresentation); -END_ENTITY; - -ENTITY IfcResource - ABSTRACT SUPERTYPE OF (ONEOF - (IfcConstructionResource)) - SUBTYPE OF (IfcObject); - Identification : OPTIONAL IfcIdentifier; - LongDescription : OPTIONAL IfcText; - INVERSE - ResourceOf : SET [0:?] OF IfcRelAssignsToResource FOR RelatingResource; -END_ENTITY; - -ENTITY IfcResourceApprovalRelationship - SUBTYPE OF (IfcResourceLevelRelationship); - RelatedResourceObjects : SET [1:?] OF IfcResourceObjectSelect; - RelatingApproval : IfcApproval; -END_ENTITY; - -ENTITY IfcResourceConstraintRelationship - SUBTYPE OF (IfcResourceLevelRelationship); - RelatingConstraint : IfcConstraint; - RelatedResourceObjects : SET [1:?] OF IfcResourceObjectSelect; -END_ENTITY; - -ENTITY IfcResourceLevelRelationship - ABSTRACT SUPERTYPE OF (ONEOF - (IfcApprovalRelationship - ,IfcCurrencyRelationship - ,IfcDocumentInformationRelationship - ,IfcExternalReferenceRelationship - ,IfcMaterialRelationship - ,IfcOrganizationRelationship - ,IfcPropertyDependencyRelationship - ,IfcResourceApprovalRelationship - ,IfcResourceConstraintRelationship)); - Name : OPTIONAL IfcLabel; - Description : OPTIONAL IfcText; -END_ENTITY; - -ENTITY IfcResourceTime - SUBTYPE OF (IfcSchedulingTime); - ScheduleWork : OPTIONAL IfcDuration; - ScheduleUsage : OPTIONAL IfcPositiveRatioMeasure; - ScheduleStart : OPTIONAL IfcDateTime; - ScheduleFinish : OPTIONAL IfcDateTime; - ScheduleContour : OPTIONAL IfcLabel; - LevelingDelay : OPTIONAL IfcDuration; - IsOverAllocated : OPTIONAL IfcBoolean; - StatusTime : OPTIONAL IfcDateTime; - ActualWork : OPTIONAL IfcDuration; - ActualUsage : OPTIONAL IfcPositiveRatioMeasure; - ActualStart : OPTIONAL IfcDateTime; - ActualFinish : OPTIONAL IfcDateTime; - RemainingWork : OPTIONAL IfcDuration; - RemainingUsage : OPTIONAL IfcPositiveRatioMeasure; - Completion : OPTIONAL IfcPositiveRatioMeasure; -END_ENTITY; - -ENTITY IfcRevolvedAreaSolid - SUPERTYPE OF (ONEOF - (IfcRevolvedAreaSolidTapered)) - SUBTYPE OF (IfcSweptAreaSolid); - Axis : IfcAxis1Placement; - Angle : IfcPlaneAngleMeasure; - DERIVE - AxisLine : IfcLine := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcCurve() || IfcLine(Axis.Location, - IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector(Axis.Z,1.0)); - WHERE - AxisStartInXY : Axis.Location.Coordinates[3] = 0.0; - AxisDirectionInXY : Axis.Z.DirectionRatios[3] = 0.0; -END_ENTITY; - -ENTITY IfcRevolvedAreaSolidTapered - SUBTYPE OF (IfcRevolvedAreaSolid); - EndSweptArea : IfcProfileDef; - WHERE - CorrectProfileAssignment : IfcTaperedSweptAreaProfiles(SELF\IfcSweptAreaSolid.SweptArea, SELF.EndSweptArea); -END_ENTITY; - -ENTITY IfcRightCircularCone - SUBTYPE OF (IfcCsgPrimitive3D); - Height : IfcPositiveLengthMeasure; - BottomRadius : IfcPositiveLengthMeasure; -END_ENTITY; - -ENTITY IfcRightCircularCylinder - SUBTYPE OF (IfcCsgPrimitive3D); - Height : IfcPositiveLengthMeasure; - Radius : IfcPositiveLengthMeasure; -END_ENTITY; - -ENTITY IfcRoof - SUBTYPE OF (IfcBuildingElement); - PredefinedType : OPTIONAL IfcRoofTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcRoofTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcRoofTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCROOFTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcRoofType - SUBTYPE OF (IfcBuildingElementType); - PredefinedType : IfcRoofTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcRoofTypeEnum.USERDEFINED) OR -((PredefinedType = IfcRoofTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcRoot - ABSTRACT SUPERTYPE OF (ONEOF - (IfcObjectDefinition - ,IfcPropertyDefinition - ,IfcRelationship)); - GlobalId : IfcGloballyUniqueId; - OwnerHistory : OPTIONAL IfcOwnerHistory; - Name : OPTIONAL IfcLabel; - Description : OPTIONAL IfcText; - UNIQUE - UR1 : GlobalId; -END_ENTITY; - -ENTITY IfcRoundedRectangleProfileDef - SUBTYPE OF (IfcRectangleProfileDef); - RoundingRadius : IfcPositiveLengthMeasure; - WHERE - ValidRadius : ((RoundingRadius <= (SELF\IfcRectangleProfileDef.XDim/2.)) AND - (RoundingRadius <= (SELF\IfcRectangleProfileDef.YDim/2.))); -END_ENTITY; - -ENTITY IfcSIUnit - SUBTYPE OF (IfcNamedUnit); - Prefix : OPTIONAL IfcSIPrefix; - Name : IfcSIUnitName; - DERIVE - SELF\IfcNamedUnit.Dimensions : IfcDimensionalExponents := IfcDimensionsForSiUnit (SELF.Name); -END_ENTITY; - -ENTITY IfcSanitaryTerminal - SUBTYPE OF (IfcFlowTerminal); - PredefinedType : OPTIONAL IfcSanitaryTerminalTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcSanitaryTerminalTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcSanitaryTerminalTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCSANITARYTERMINALTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcSanitaryTerminalType - SUBTYPE OF (IfcFlowTerminalType); - PredefinedType : IfcSanitaryTerminalTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcSanitaryTerminalTypeEnum.USERDEFINED) OR -((PredefinedType = IfcSanitaryTerminalTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcSchedulingTime - ABSTRACT SUPERTYPE OF (ONEOF - (IfcEventTime - ,IfcLagTime - ,IfcResourceTime - ,IfcTaskTime - ,IfcWorkTime)); - Name : OPTIONAL IfcLabel; - DataOrigin : OPTIONAL IfcDataOriginEnum; - UserDefinedDataOrigin : OPTIONAL IfcLabel; -END_ENTITY; - -ENTITY IfcSeamCurve - SUBTYPE OF (IfcSurfaceCurve); - WHERE - TwoPCurves : SIZEOF(SELF\IfcSurfaceCurve.AssociatedGeometry) = 2; - SameSurface : IfcAssociatedSurface(SELF\IfcSurfaceCurve.AssociatedGeometry[1]) = IfcAssociatedSurface(SELF\IfcSurfaceCurve.AssociatedGeometry[2]); -END_ENTITY; - -ENTITY IfcSectionProperties - SUBTYPE OF (IfcPreDefinedProperties); - SectionType : IfcSectionTypeEnum; - StartProfile : IfcProfileDef; - EndProfile : OPTIONAL IfcProfileDef; -END_ENTITY; - -ENTITY IfcSectionReinforcementProperties - SUBTYPE OF (IfcPreDefinedProperties); - LongitudinalStartPosition : IfcLengthMeasure; - LongitudinalEndPosition : IfcLengthMeasure; - TransversePosition : OPTIONAL IfcLengthMeasure; - ReinforcementRole : IfcReinforcingBarRoleEnum; - SectionDefinition : IfcSectionProperties; - CrossSectionReinforcementDefinitions : SET [1:?] OF IfcReinforcementBarProperties; -END_ENTITY; - -ENTITY IfcSectionedSpine - SUBTYPE OF (IfcGeometricRepresentationItem); - SpineCurve : IfcCompositeCurve; - CrossSections : LIST [2:?] OF IfcProfileDef; - CrossSectionPositions : LIST [2:?] OF IfcAxis2Placement3D; - DERIVE - Dim : IfcDimensionCount := 3; - WHERE - CorrespondingSectionPositions : SIZEOF(CrossSections) = SIZEOF(CrossSectionPositions); - ConsistentProfileTypes : SIZEOF(QUERY(temp <* CrossSections | CrossSections[1].ProfileType <> temp.ProfileType)) = 0; - SpineCurveDim : SpineCurve.Dim = 3; -END_ENTITY; - -ENTITY IfcSensor - SUBTYPE OF (IfcDistributionControlElement); - PredefinedType : OPTIONAL IfcSensorTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcSensorTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcSensorTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR -('IFC4.IFCSENSORTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcSensorType - SUBTYPE OF (IfcDistributionControlElementType); - PredefinedType : IfcSensorTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcSensorTypeEnum.USERDEFINED) OR -((PredefinedType = IfcSensorTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcShadingDevice - SUBTYPE OF (IfcBuildingElement); - PredefinedType : OPTIONAL IfcShadingDeviceTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcShadingDeviceTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcShadingDeviceTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCSHADINGDEVICETYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcShadingDeviceType - SUBTYPE OF (IfcBuildingElementType); - PredefinedType : IfcShadingDeviceTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcShadingDeviceTypeEnum.USERDEFINED) OR -((PredefinedType = IfcShadingDeviceTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcShapeAspect; - ShapeRepresentations : LIST [1:?] OF IfcShapeModel; - Name : OPTIONAL IfcLabel; - Description : OPTIONAL IfcText; - ProductDefinitional : IfcLogical; - PartOfProductDefinitionShape : OPTIONAL IfcProductRepresentationSelect; -END_ENTITY; - -ENTITY IfcShapeModel - ABSTRACT SUPERTYPE OF (ONEOF - (IfcShapeRepresentation - ,IfcTopologyRepresentation)) - SUBTYPE OF (IfcRepresentation); - INVERSE - OfShapeAspect : SET [0:1] OF IfcShapeAspect FOR ShapeRepresentations; - WHERE - WR11 : (SIZEOF(SELF\IfcRepresentation.OfProductRepresentation) = 1) XOR -(SIZEOF(SELF\IfcRepresentation.RepresentationMap) = 1) XOR -(SIZEOF(OfShapeAspect) = 1); -END_ENTITY; - -ENTITY IfcShapeRepresentation - SUBTYPE OF (IfcShapeModel); - WHERE - CorrectContext : 'IFC4.IFCGEOMETRICREPRESENTATIONCONTEXT' -IN TYPEOF(SELF\IfcRepresentation.ContextOfItems); - NoTopologicalItem : SIZEOF(QUERY(temp <* Items | - ('IFC4.IFCTOPOLOGICALREPRESENTATIONITEM' IN TYPEOF(temp)) - AND (NOT(SIZEOF( - ['IFC4.IFCVERTEXPOINT', - 'IFC4.IFCEDGECURVE', - 'IFC4.IFCFACESURFACE'] * TYPEOF(temp)) = 1)) -)) = 0; - HasRepresentationType : EXISTS(SELF\IfcRepresentation.RepresentationType); - HasRepresentationIdentifier : EXISTS(SELF\IfcRepresentation.RepresentationIdentifier); - CorrectItemsForType : IfcShapeRepresentationTypes(SELF\IfcRepresentation.RepresentationType, SELF\IfcRepresentation.Items); -END_ENTITY; - -ENTITY IfcShellBasedSurfaceModel - SUBTYPE OF (IfcGeometricRepresentationItem); - SbsmBoundary : SET [1:?] OF IfcShell; - DERIVE - Dim : IfcDimensionCount := 3; -END_ENTITY; - -ENTITY IfcSimpleProperty - ABSTRACT SUPERTYPE OF (ONEOF - (IfcPropertyBoundedValue - ,IfcPropertyEnumeratedValue - ,IfcPropertyListValue - ,IfcPropertyReferenceValue - ,IfcPropertySingleValue - ,IfcPropertyTableValue)) - SUBTYPE OF (IfcProperty); -END_ENTITY; - -ENTITY IfcSimplePropertyTemplate - SUBTYPE OF (IfcPropertyTemplate); - TemplateType : OPTIONAL IfcSimplePropertyTemplateTypeEnum; - PrimaryMeasureType : OPTIONAL IfcLabel; - SecondaryMeasureType : OPTIONAL IfcLabel; - Enumerators : OPTIONAL IfcPropertyEnumeration; - PrimaryUnit : OPTIONAL IfcUnit; - SecondaryUnit : OPTIONAL IfcUnit; - Expression : OPTIONAL IfcLabel; - AccessState : OPTIONAL IfcStateEnum; -END_ENTITY; - -ENTITY IfcSite - SUBTYPE OF (IfcSpatialStructureElement); - RefLatitude : OPTIONAL IfcCompoundPlaneAngleMeasure; - RefLongitude : OPTIONAL IfcCompoundPlaneAngleMeasure; - RefElevation : OPTIONAL IfcLengthMeasure; - LandTitleNumber : OPTIONAL IfcLabel; - SiteAddress : OPTIONAL IfcPostalAddress; -END_ENTITY; - -ENTITY IfcSlab - SUPERTYPE OF (ONEOF - (IfcSlabElementedCase - ,IfcSlabStandardCase)) - SUBTYPE OF (IfcBuildingElement); - PredefinedType : OPTIONAL IfcSlabTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcSlabTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcSlabTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCSLABTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcSlabElementedCase - SUBTYPE OF (IfcSlab); - WHERE - HasDecomposition : HIINDEX(SELF\IfcObjectDefinition.IsDecomposedBy) > 0; -END_ENTITY; - -ENTITY IfcSlabStandardCase - SUBTYPE OF (IfcSlab); - WHERE - HasMaterialLayerSetusage : SIZEOF (QUERY(temp <* USEDIN(SELF, 'IFC4.IFCRELASSOCIATES.RELATEDOBJECTS') | - ('IFC4.IFCRELASSOCIATESMATERIAL' IN TYPEOF(temp)) AND - ('IFC4.IFCMATERIALLAYERSETUSAGE' IN TYPEOF(temp.RelatingMaterial)) - )) = 1; -END_ENTITY; - -ENTITY IfcSlabType - SUBTYPE OF (IfcBuildingElementType); - PredefinedType : IfcSlabTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcSlabTypeEnum.USERDEFINED) OR -((PredefinedType = IfcSlabTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcSlippageConnectionCondition - SUBTYPE OF (IfcStructuralConnectionCondition); - SlippageX : OPTIONAL IfcLengthMeasure; - SlippageY : OPTIONAL IfcLengthMeasure; - SlippageZ : OPTIONAL IfcLengthMeasure; -END_ENTITY; - -ENTITY IfcSolarDevice - SUBTYPE OF (IfcEnergyConversionDevice); - PredefinedType : OPTIONAL IfcSolarDeviceTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcSolarDeviceTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcSolarDeviceTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCSOLARDEVICETYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcSolarDeviceType - SUBTYPE OF (IfcEnergyConversionDeviceType); - PredefinedType : IfcSolarDeviceTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcSolarDeviceTypeEnum.USERDEFINED) OR -((PredefinedType = IfcSolarDeviceTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcSolidModel - ABSTRACT SUPERTYPE OF (ONEOF - (IfcCsgSolid - ,IfcManifoldSolidBrep - ,IfcSweptAreaSolid - ,IfcSweptDiskSolid)) - SUBTYPE OF (IfcGeometricRepresentationItem); - DERIVE - Dim : IfcDimensionCount := 3; -END_ENTITY; - -ENTITY IfcSpace - SUBTYPE OF (IfcSpatialStructureElement); - PredefinedType : OPTIONAL IfcSpaceTypeEnum; - ElevationWithFlooring : OPTIONAL IfcLengthMeasure; - INVERSE - HasCoverings : SET [0:?] OF IfcRelCoversSpaces FOR RelatingSpace; - BoundedBy : SET [0:?] OF IfcRelSpaceBoundary FOR RelatingSpace; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcSpaceTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcSpaceTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCSPACETYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcSpaceHeater - SUBTYPE OF (IfcFlowTerminal); - PredefinedType : OPTIONAL IfcSpaceHeaterTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcSpaceHeaterTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcSpaceHeaterTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCSPACEHEATERTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcSpaceHeaterType - SUBTYPE OF (IfcFlowTerminalType); - PredefinedType : IfcSpaceHeaterTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcSpaceHeaterTypeEnum.USERDEFINED) OR -((PredefinedType = IfcSpaceHeaterTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcSpaceType - SUBTYPE OF (IfcSpatialStructureElementType); - PredefinedType : IfcSpaceTypeEnum; - LongName : OPTIONAL IfcLabel; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcSpaceTypeEnum.USERDEFINED) OR -((PredefinedType = IfcSpaceTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcSpatialElementType.ElementType)); -END_ENTITY; - -ENTITY IfcSpatialElement - ABSTRACT SUPERTYPE OF (ONEOF - (IfcExternalSpatialStructureElement - ,IfcSpatialStructureElement - ,IfcSpatialZone)) - SUBTYPE OF (IfcProduct); - LongName : OPTIONAL IfcLabel; - INVERSE - ContainsElements : SET [0:?] OF IfcRelContainedInSpatialStructure FOR RelatingStructure; - ServicedBySystems : SET [0:?] OF IfcRelServicesBuildings FOR RelatedBuildings; - ReferencesElements : SET [0:?] OF IfcRelReferencedInSpatialStructure FOR RelatingStructure; -END_ENTITY; - -ENTITY IfcSpatialElementType - ABSTRACT SUPERTYPE OF (ONEOF - (IfcSpatialStructureElementType - ,IfcSpatialZoneType)) - SUBTYPE OF (IfcTypeProduct); - ElementType : OPTIONAL IfcLabel; -END_ENTITY; - -ENTITY IfcSpatialStructureElement - ABSTRACT SUPERTYPE OF (ONEOF - (IfcBuilding - ,IfcBuildingStorey - ,IfcSite - ,IfcSpace)) - SUBTYPE OF (IfcSpatialElement); - CompositionType : OPTIONAL IfcElementCompositionEnum; - WHERE - WR41 : (HIINDEX(SELF\IfcObjectDefinition.Decomposes) = 1) -AND -('IFC4.IFCRELAGGREGATES' IN TYPEOF(SELF\IfcObjectDefinition.Decomposes[1])) -AND -(('IFC4.IFCPROJECT' IN TYPEOF (SELF\IfcObjectDefinition.Decomposes[1].RelatingObject)) OR - ('IFC4.IFCSPATIALSTRUCTUREELEMENT' IN TYPEOF (SELF\IfcObjectDefinition.Decomposes[1].RelatingObject)) -); -END_ENTITY; - -ENTITY IfcSpatialStructureElementType - ABSTRACT SUPERTYPE OF (ONEOF - (IfcSpaceType)) - SUBTYPE OF (IfcSpatialElementType); -END_ENTITY; - -ENTITY IfcSpatialZone - SUBTYPE OF (IfcSpatialElement); - PredefinedType : OPTIONAL IfcSpatialZoneTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcSpatialZoneTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcSpatialZoneTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCSPATIALZONETYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcSpatialZoneType - SUBTYPE OF (IfcSpatialElementType); - PredefinedType : IfcSpatialZoneTypeEnum; - LongName : OPTIONAL IfcLabel; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcSpatialZoneTypeEnum.USERDEFINED) OR -((PredefinedType = IfcSpatialZoneTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcSpatialElementType.ElementType)); -END_ENTITY; - -ENTITY IfcSphere - SUBTYPE OF (IfcCsgPrimitive3D); - Radius : IfcPositiveLengthMeasure; -END_ENTITY; - -ENTITY IfcSphericalSurface - SUBTYPE OF (IfcElementarySurface); - Radius : IfcPositiveLengthMeasure; -END_ENTITY; - -ENTITY IfcStackTerminal - SUBTYPE OF (IfcFlowTerminal); - PredefinedType : OPTIONAL IfcStackTerminalTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcStackTerminalTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcStackTerminalTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCSTACKTERMINALTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcStackTerminalType - SUBTYPE OF (IfcFlowTerminalType); - PredefinedType : IfcStackTerminalTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcStackTerminalTypeEnum.USERDEFINED) OR -((PredefinedType = IfcStackTerminalTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcStair - SUBTYPE OF (IfcBuildingElement); - PredefinedType : OPTIONAL IfcStairTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcStairTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcStairTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCSTAIRTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcStairFlight - SUBTYPE OF (IfcBuildingElement); - NumberOfRisers : OPTIONAL IfcInteger; - NumberOfTreads : OPTIONAL IfcInteger; - RiserHeight : OPTIONAL IfcPositiveLengthMeasure; - TreadLength : OPTIONAL IfcPositiveLengthMeasure; - PredefinedType : OPTIONAL IfcStairFlightTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcStairFlightTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcStairFlightTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCSTAIRFLIGHTTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcStairFlightType - SUBTYPE OF (IfcBuildingElementType); - PredefinedType : IfcStairFlightTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcStairFlightTypeEnum.USERDEFINED) OR -((PredefinedType = IfcStairFlightTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcStairType - SUBTYPE OF (IfcBuildingElementType); - PredefinedType : IfcStairTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcStairTypeEnum.USERDEFINED) OR -((PredefinedType = IfcStairTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcStructuralAction - ABSTRACT SUPERTYPE OF (ONEOF - (IfcStructuralCurveAction - ,IfcStructuralPointAction - ,IfcStructuralSurfaceAction)) - SUBTYPE OF (IfcStructuralActivity); - DestabilizingLoad : OPTIONAL IfcBoolean; -END_ENTITY; - -ENTITY IfcStructuralActivity - ABSTRACT SUPERTYPE OF (ONEOF - (IfcStructuralAction - ,IfcStructuralReaction)) - SUBTYPE OF (IfcProduct); - AppliedLoad : IfcStructuralLoad; - GlobalOrLocal : IfcGlobalOrLocalEnum; - INVERSE - AssignedToStructuralItem : SET [0:1] OF IfcRelConnectsStructuralActivity FOR RelatedStructuralActivity; -END_ENTITY; - -ENTITY IfcStructuralAnalysisModel - SUBTYPE OF (IfcSystem); - PredefinedType : IfcAnalysisModelTypeEnum; - OrientationOf2DPlane : OPTIONAL IfcAxis2Placement3D; - LoadedBy : OPTIONAL SET [1:?] OF IfcStructuralLoadGroup; - HasResults : OPTIONAL SET [1:?] OF IfcStructuralResultGroup; - SharedPlacement : OPTIONAL IfcObjectPlacement; - WHERE - HasObjectType : (PredefinedType <> IfcAnalysisModelTypeEnum.USERDEFINED) OR EXISTS(SELF\IfcObject.ObjectType); -END_ENTITY; - -ENTITY IfcStructuralConnection - ABSTRACT SUPERTYPE OF (ONEOF - (IfcStructuralCurveConnection - ,IfcStructuralPointConnection - ,IfcStructuralSurfaceConnection)) - SUBTYPE OF (IfcStructuralItem); - AppliedCondition : OPTIONAL IfcBoundaryCondition; - INVERSE - ConnectsStructuralMembers : SET [1:?] OF IfcRelConnectsStructuralMember FOR RelatedStructuralConnection; -END_ENTITY; - -ENTITY IfcStructuralConnectionCondition - ABSTRACT SUPERTYPE OF (ONEOF - (IfcFailureConnectionCondition - ,IfcSlippageConnectionCondition)); - Name : OPTIONAL IfcLabel; -END_ENTITY; - -ENTITY IfcStructuralCurveAction - SUPERTYPE OF (ONEOF - (IfcStructuralLinearAction)) - SUBTYPE OF (IfcStructuralAction); - ProjectedOrTrue : OPTIONAL IfcProjectedOrTrueLengthEnum; - PredefinedType : IfcStructuralCurveActivityTypeEnum; - WHERE - ProjectedIsGlobal : (NOT EXISTS(ProjectedOrTrue)) OR -((ProjectedOrTrue <> PROJECTED_LENGTH) OR - (SELF\IfcStructuralActivity.GlobalOrLocal = GLOBAL_COORDS)); - HasObjectType : (PredefinedType <> IfcStructuralCurveActivityTypeEnum.USERDEFINED) OR EXISTS(SELF\IfcObject.ObjectType); - SuitablePredefinedType : PredefinedType <> IfcStructuralCurveActivityTypeEnum.EQUIDISTANT; -END_ENTITY; - -ENTITY IfcStructuralCurveConnection - SUBTYPE OF (IfcStructuralConnection); - Axis : IfcDirection; -END_ENTITY; - -ENTITY IfcStructuralCurveMember - SUPERTYPE OF (ONEOF - (IfcStructuralCurveMemberVarying)) - SUBTYPE OF (IfcStructuralMember); - PredefinedType : IfcStructuralCurveMemberTypeEnum; - Axis : IfcDirection; - WHERE - HasObjectType : (PredefinedType <> IfcStructuralCurveMemberTypeEnum.USERDEFINED) OR EXISTS(SELF\IfcObject.ObjectType); -END_ENTITY; - -ENTITY IfcStructuralCurveMemberVarying - SUBTYPE OF (IfcStructuralCurveMember); -END_ENTITY; - -ENTITY IfcStructuralCurveReaction - SUBTYPE OF (IfcStructuralReaction); - PredefinedType : IfcStructuralCurveActivityTypeEnum; - WHERE - HasObjectType : (PredefinedType <> IfcStructuralCurveActivityTypeEnum.USERDEFINED) OR EXISTS(SELF\IfcObject.ObjectType); - SuitablePredefinedType : (PredefinedType <> IfcStructuralCurveActivityTypeEnum.SINUS) AND (PredefinedType <> IfcStructuralCurveActivityTypeEnum.PARABOLA); -END_ENTITY; - -ENTITY IfcStructuralItem - ABSTRACT SUPERTYPE OF (ONEOF - (IfcStructuralConnection - ,IfcStructuralMember)) - SUBTYPE OF (IfcProduct); - INVERSE - AssignedStructuralActivity : SET [0:?] OF IfcRelConnectsStructuralActivity FOR RelatingElement; -END_ENTITY; - -ENTITY IfcStructuralLinearAction - SUBTYPE OF (IfcStructuralCurveAction); - WHERE - SuitableLoadType : SIZEOF(['IFC4.IFCSTRUCTURALLOADLINEARFORCE', 'IFC4.IFCSTRUCTURALLOADTEMPERATURE'] * TYPEOF(SELF\IfcStructuralActivity.AppliedLoad)) = 1; - ConstPredefinedType : SELF\IfcStructuralCurveAction.PredefinedType = IfcStructuralCurveActivityTypeEnum.CONST; -END_ENTITY; - -ENTITY IfcStructuralLoad - ABSTRACT SUPERTYPE OF (ONEOF - (IfcStructuralLoadConfiguration - ,IfcStructuralLoadOrResult)); - Name : OPTIONAL IfcLabel; -END_ENTITY; - -ENTITY IfcStructuralLoadCase - SUBTYPE OF (IfcStructuralLoadGroup); - SelfWeightCoefficients : OPTIONAL LIST [3:3] OF IfcRatioMeasure; - WHERE - IsLoadCasePredefinedType : SELF\IfcStructuralLoadGroup.PredefinedType = IfcLoadGroupTypeEnum.LOAD_CASE; -END_ENTITY; - -ENTITY IfcStructuralLoadConfiguration - SUBTYPE OF (IfcStructuralLoad); - Values : LIST [1:?] OF IfcStructuralLoadOrResult; - Locations : OPTIONAL LIST [1:?] OF UNIQUE LIST [1:2] OF IfcLengthMeasure; - WHERE - ValidListSize : NOT EXISTS(Locations) OR (SIZEOF(Locations) = SIZEOF(Values)); -END_ENTITY; - -ENTITY IfcStructuralLoadGroup - SUPERTYPE OF (ONEOF - (IfcStructuralLoadCase)) - SUBTYPE OF (IfcGroup); - PredefinedType : IfcLoadGroupTypeEnum; - ActionType : IfcActionTypeEnum; - ActionSource : IfcActionSourceTypeEnum; - Coefficient : OPTIONAL IfcRatioMeasure; - Purpose : OPTIONAL IfcLabel; - INVERSE - SourceOfResultGroup : SET [0:1] OF IfcStructuralResultGroup FOR ResultForLoadGroup; - LoadGroupFor : SET [0:?] OF IfcStructuralAnalysisModel FOR LoadedBy; - WHERE - HasObjectType : ( - (PredefinedType <> IfcLoadGroupTypeEnum.USERDEFINED) AND - (ActionType <> IfcActionTypeEnum.USERDEFINED) AND - (ActionSource <> IfcActionSourceTypeEnum.USERDEFINED) -) OR EXISTS(SELF\IfcObject.ObjectType); -END_ENTITY; - -ENTITY IfcStructuralLoadLinearForce - SUBTYPE OF (IfcStructuralLoadStatic); - LinearForceX : OPTIONAL IfcLinearForceMeasure; - LinearForceY : OPTIONAL IfcLinearForceMeasure; - LinearForceZ : OPTIONAL IfcLinearForceMeasure; - LinearMomentX : OPTIONAL IfcLinearMomentMeasure; - LinearMomentY : OPTIONAL IfcLinearMomentMeasure; - LinearMomentZ : OPTIONAL IfcLinearMomentMeasure; -END_ENTITY; - -ENTITY IfcStructuralLoadOrResult - ABSTRACT SUPERTYPE OF (ONEOF - (IfcStructuralLoadStatic - ,IfcSurfaceReinforcementArea)) - SUBTYPE OF (IfcStructuralLoad); -END_ENTITY; - -ENTITY IfcStructuralLoadPlanarForce - SUBTYPE OF (IfcStructuralLoadStatic); - PlanarForceX : OPTIONAL IfcPlanarForceMeasure; - PlanarForceY : OPTIONAL IfcPlanarForceMeasure; - PlanarForceZ : OPTIONAL IfcPlanarForceMeasure; -END_ENTITY; - -ENTITY IfcStructuralLoadSingleDisplacement - SUPERTYPE OF (ONEOF - (IfcStructuralLoadSingleDisplacementDistortion)) - SUBTYPE OF (IfcStructuralLoadStatic); - DisplacementX : OPTIONAL IfcLengthMeasure; - DisplacementY : OPTIONAL IfcLengthMeasure; - DisplacementZ : OPTIONAL IfcLengthMeasure; - RotationalDisplacementRX : OPTIONAL IfcPlaneAngleMeasure; - RotationalDisplacementRY : OPTIONAL IfcPlaneAngleMeasure; - RotationalDisplacementRZ : OPTIONAL IfcPlaneAngleMeasure; -END_ENTITY; - -ENTITY IfcStructuralLoadSingleDisplacementDistortion - SUBTYPE OF (IfcStructuralLoadSingleDisplacement); - Distortion : OPTIONAL IfcCurvatureMeasure; -END_ENTITY; - -ENTITY IfcStructuralLoadSingleForce - SUPERTYPE OF (ONEOF - (IfcStructuralLoadSingleForceWarping)) - SUBTYPE OF (IfcStructuralLoadStatic); - ForceX : OPTIONAL IfcForceMeasure; - ForceY : OPTIONAL IfcForceMeasure; - ForceZ : OPTIONAL IfcForceMeasure; - MomentX : OPTIONAL IfcTorqueMeasure; - MomentY : OPTIONAL IfcTorqueMeasure; - MomentZ : OPTIONAL IfcTorqueMeasure; -END_ENTITY; - -ENTITY IfcStructuralLoadSingleForceWarping - SUBTYPE OF (IfcStructuralLoadSingleForce); - WarpingMoment : OPTIONAL IfcWarpingMomentMeasure; -END_ENTITY; - -ENTITY IfcStructuralLoadStatic - ABSTRACT SUPERTYPE OF (ONEOF - (IfcStructuralLoadLinearForce - ,IfcStructuralLoadPlanarForce - ,IfcStructuralLoadSingleDisplacement - ,IfcStructuralLoadSingleForce - ,IfcStructuralLoadTemperature)) - SUBTYPE OF (IfcStructuralLoadOrResult); -END_ENTITY; - -ENTITY IfcStructuralLoadTemperature - SUBTYPE OF (IfcStructuralLoadStatic); - DeltaTConstant : OPTIONAL IfcThermodynamicTemperatureMeasure; - DeltaTY : OPTIONAL IfcThermodynamicTemperatureMeasure; - DeltaTZ : OPTIONAL IfcThermodynamicTemperatureMeasure; -END_ENTITY; - -ENTITY IfcStructuralMember - ABSTRACT SUPERTYPE OF (ONEOF - (IfcStructuralCurveMember - ,IfcStructuralSurfaceMember)) - SUBTYPE OF (IfcStructuralItem); - INVERSE - ConnectedBy : SET [0:?] OF IfcRelConnectsStructuralMember FOR RelatingStructuralMember; -END_ENTITY; - -ENTITY IfcStructuralPlanarAction - SUBTYPE OF (IfcStructuralSurfaceAction); - WHERE - SuitableLoadType : SIZEOF(['IFC4.IFCSTRUCTURALLOADPLANARFORCE', 'IFC4.IFCSTRUCTURALLOADTEMPERATURE'] * TYPEOF(SELF\IfcStructuralActivity.AppliedLoad)) = 1; - ConstPredefinedType : SELF\IfcStructuralSurfaceAction.PredefinedType = IfcStructuralSurfaceActivityTypeEnum.CONST; -END_ENTITY; - -ENTITY IfcStructuralPointAction - SUBTYPE OF (IfcStructuralAction); - WHERE - SuitableLoadType : SIZEOF(['IFC4.IFCSTRUCTURALLOADSINGLEFORCE', 'IFC4.IFCSTRUCTURALLOADSINGLEDISPLACEMENT'] * TYPEOF(SELF\IfcStructuralActivity.AppliedLoad)) = 1; -END_ENTITY; - -ENTITY IfcStructuralPointConnection - SUBTYPE OF (IfcStructuralConnection); - ConditionCoordinateSystem : OPTIONAL IfcAxis2Placement3D; -END_ENTITY; - -ENTITY IfcStructuralPointReaction - SUBTYPE OF (IfcStructuralReaction); - WHERE - SuitableLoadType : SIZEOF(['IFC4.IFCSTRUCTURALLOADSINGLEFORCE', 'IFC4.IFCSTRUCTURALLOADSINGLEDISPLACEMENT'] * TYPEOF(SELF\IfcStructuralActivity.AppliedLoad)) = 1; -END_ENTITY; - -ENTITY IfcStructuralReaction - ABSTRACT SUPERTYPE OF (ONEOF - (IfcStructuralCurveReaction - ,IfcStructuralPointReaction - ,IfcStructuralSurfaceReaction)) - SUBTYPE OF (IfcStructuralActivity); -END_ENTITY; - -ENTITY IfcStructuralResultGroup - SUBTYPE OF (IfcGroup); - TheoryType : IfcAnalysisTheoryTypeEnum; - ResultForLoadGroup : OPTIONAL IfcStructuralLoadGroup; - IsLinear : IfcBoolean; - INVERSE - ResultGroupFor : SET [0:1] OF IfcStructuralAnalysisModel FOR HasResults; - WHERE - HasObjectType : (TheoryType <> IfcAnalysisTheoryTypeEnum.USERDEFINED) OR EXISTS(SELF\IfcObject.ObjectType); -END_ENTITY; - -ENTITY IfcStructuralSurfaceAction - SUPERTYPE OF (ONEOF - (IfcStructuralPlanarAction)) - SUBTYPE OF (IfcStructuralAction); - ProjectedOrTrue : OPTIONAL IfcProjectedOrTrueLengthEnum; - PredefinedType : IfcStructuralSurfaceActivityTypeEnum; - WHERE - ProjectedIsGlobal : (NOT EXISTS(ProjectedOrTrue)) OR -((ProjectedOrTrue <> PROJECTED_LENGTH) OR - (SELF\IfcStructuralActivity.GlobalOrLocal = GLOBAL_COORDS)); - HasObjectType : (PredefinedType <> IfcStructuralSurfaceActivityTypeEnum.USERDEFINED) OR EXISTS(SELF\IfcObject.ObjectType); -END_ENTITY; - -ENTITY IfcStructuralSurfaceConnection - SUBTYPE OF (IfcStructuralConnection); -END_ENTITY; - -ENTITY IfcStructuralSurfaceMember - SUPERTYPE OF (ONEOF - (IfcStructuralSurfaceMemberVarying)) - SUBTYPE OF (IfcStructuralMember); - PredefinedType : IfcStructuralSurfaceMemberTypeEnum; - Thickness : OPTIONAL IfcPositiveLengthMeasure; - WHERE - HasObjectType : (PredefinedType <> IfcStructuralSurfaceMemberTypeEnum.USERDEFINED) OR EXISTS(SELF\IfcObject.ObjectType); -END_ENTITY; - -ENTITY IfcStructuralSurfaceMemberVarying - SUBTYPE OF (IfcStructuralSurfaceMember); -END_ENTITY; - -ENTITY IfcStructuralSurfaceReaction - SUBTYPE OF (IfcStructuralReaction); - PredefinedType : IfcStructuralSurfaceActivityTypeEnum; - WHERE - HasPredefinedType : (PredefinedType <> IfcStructuralSurfaceActivityTypeEnum.USERDEFINED) OR EXISTS(SELF\IfcObject.ObjectType); -END_ENTITY; - -ENTITY IfcStyleModel - ABSTRACT SUPERTYPE OF (ONEOF - (IfcStyledRepresentation)) - SUBTYPE OF (IfcRepresentation); -END_ENTITY; - -ENTITY IfcStyledItem - SUBTYPE OF (IfcRepresentationItem); - Item : OPTIONAL IfcRepresentationItem; - Styles : SET [1:?] OF IfcStyleAssignmentSelect; - Name : OPTIONAL IfcLabel; - WHERE - ApplicableItem : NOT('IFC4.IFCSTYLEDITEM' IN TYPEOF(Item)); -END_ENTITY; - -ENTITY IfcStyledRepresentation - SUBTYPE OF (IfcStyleModel); - WHERE - OnlyStyledItems : SIZEOF(QUERY(temp <* SELF\IfcRepresentation.Items | - (NOT('IFC4.IFCSTYLEDITEM' IN TYPEOF(temp))) -)) = 0; -END_ENTITY; - -ENTITY IfcSubContractResource - SUBTYPE OF (IfcConstructionResource); - PredefinedType : OPTIONAL IfcSubContractResourceTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcSubContractResourceTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcSubContractResourceTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); -END_ENTITY; - -ENTITY IfcSubContractResourceType - SUBTYPE OF (IfcConstructionResourceType); - PredefinedType : IfcSubContractResourceTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcSubContractResourceTypeEnum.USERDEFINED) OR -((PredefinedType = IfcSubContractResourceTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcTypeResource.ResourceType)); -END_ENTITY; - -ENTITY IfcSubedge - SUBTYPE OF (IfcEdge); - ParentEdge : IfcEdge; -END_ENTITY; - -ENTITY IfcSurface - ABSTRACT SUPERTYPE OF (ONEOF - (IfcBoundedSurface - ,IfcElementarySurface - ,IfcSweptSurface)) - SUBTYPE OF (IfcGeometricRepresentationItem); - DERIVE - Dim : IfcDimensionCount := 3; -END_ENTITY; - -ENTITY IfcSurfaceCurve - SUPERTYPE OF (ONEOF - (IfcIntersectionCurve - ,IfcSeamCurve)) - SUBTYPE OF (IfcCurve); - Curve3D : IfcCurve; - AssociatedGeometry : LIST [1:2] OF IfcPcurve; - MasterRepresentation : IfcPreferredSurfaceCurveRepresentation; - DERIVE - BasisSurface : SET [1:2] OF IfcSurface := IfcGetBasisSurface(SELF); - WHERE - CurveIs3D : Curve3D.Dim = 3; - CurveIsNotPcurve : NOT ('IFC4.IFCPCURVE' IN TYPEOF(Curve3D)); -END_ENTITY; - -ENTITY IfcSurfaceCurveSweptAreaSolid - SUBTYPE OF (IfcSweptAreaSolid); - Directrix : IfcCurve; - StartParam : OPTIONAL IfcParameterValue; - EndParam : OPTIONAL IfcParameterValue; - ReferenceSurface : IfcSurface; - WHERE - DirectrixBounded : (EXISTS(StartParam) AND EXISTS(EndParam)) OR -(SIZEOF(['IFC4.IFCCONIC', 'IFC4.IFCBOUNDEDCURVE'] * TYPEOF(Directrix)) = 1); -END_ENTITY; - -ENTITY IfcSurfaceFeature - SUBTYPE OF (IfcFeatureElement); - PredefinedType : OPTIONAL IfcSurfaceFeatureTypeEnum; - WHERE - HasObjectType : NOT EXISTS(PredefinedType) OR (PredefinedType <> IfcSurfaceFeatureTypeEnum.USERDEFINED) OR EXISTS(SELF\IfcObject.ObjectType); -END_ENTITY; - -ENTITY IfcSurfaceOfLinearExtrusion - SUBTYPE OF (IfcSweptSurface); - ExtrudedDirection : IfcDirection; - Depth : IfcLengthMeasure; - DERIVE - ExtrusionAxis : IfcVector := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector (ExtrudedDirection, Depth); - WHERE - DepthGreaterZero : Depth > 0.; -END_ENTITY; - -ENTITY IfcSurfaceOfRevolution - SUBTYPE OF (IfcSweptSurface); - AxisPosition : IfcAxis1Placement; - DERIVE - AxisLine : IfcLine := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcCurve() || IfcLine(AxisPosition.Location, - IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector(AxisPosition.Z,1.0)); -END_ENTITY; - -ENTITY IfcSurfaceReinforcementArea - SUBTYPE OF (IfcStructuralLoadOrResult); - SurfaceReinforcement1 : OPTIONAL LIST [2:3] OF IfcLengthMeasure; - SurfaceReinforcement2 : OPTIONAL LIST [2:3] OF IfcLengthMeasure; - ShearReinforcement : OPTIONAL IfcRatioMeasure; - WHERE - SurfaceAndOrShearAreaSpecified : EXISTS(SurfaceReinforcement1) OR EXISTS(SurfaceReinforcement2) OR EXISTS(ShearReinforcement); - NonnegativeArea1 : (NOT EXISTS(SurfaceReinforcement1)) OR ( - (SurfaceReinforcement1[1] >= 0.) AND - (SurfaceReinforcement1[2] >= 0.) AND - ((SIZEOF(SurfaceReinforcement1) = 1) OR (SurfaceReinforcement1[1] >= 0.)) -); - NonnegativeArea2 : (NOT EXISTS(SurfaceReinforcement2)) OR ( - (SurfaceReinforcement2[1] >= 0.) AND - (SurfaceReinforcement2[2] >= 0.) AND - ((SIZEOF(SurfaceReinforcement2) = 1) OR (SurfaceReinforcement2[1] >= 0.)) -); - NonnegativeArea3 : (NOT EXISTS(ShearReinforcement)) OR (ShearReinforcement >= 0.); -END_ENTITY; - -ENTITY IfcSurfaceStyle - SUBTYPE OF (IfcPresentationStyle); - Side : IfcSurfaceSide; - Styles : SET [1:5] OF IfcSurfaceStyleElementSelect; - WHERE - MaxOneShading : SIZEOF(QUERY(Style <* SELF.Styles | - 'IFC4.IFCSURFACESTYLESHADING' IN - TYPEOF(Style) - )) <= 1; - MaxOneLighting : SIZEOF(QUERY(Style <* SELF.Styles | - 'IFC4.IFCSURFACESTYLELIGHTING' IN - TYPEOF(Style) - )) <= 1; - MaxOneRefraction : SIZEOF(QUERY(Style <* SELF.Styles | - 'IFC4.IFCSURFACESTYLEREFRACTION' IN - TYPEOF(Style) - )) <= 1; - MaxOneTextures : SIZEOF(QUERY(Style <* SELF.Styles | - 'IFC4.IFCSURFACESTYLEWITHTEXTURES' IN - TYPEOF(Style) - )) <= 1; - MaxOneExtDefined : SIZEOF(QUERY(Style <* SELF.Styles | - 'IFC4.IFCEXTERNALLYDEFINEDSURFACESTYLE' IN - TYPEOF(Style) - )) <= 1; -END_ENTITY; - -ENTITY IfcSurfaceStyleLighting - SUBTYPE OF (IfcPresentationItem); - DiffuseTransmissionColour : IfcColourRgb; - DiffuseReflectionColour : IfcColourRgb; - TransmissionColour : IfcColourRgb; - ReflectanceColour : IfcColourRgb; -END_ENTITY; - -ENTITY IfcSurfaceStyleRefraction - SUBTYPE OF (IfcPresentationItem); - RefractionIndex : OPTIONAL IfcReal; - DispersionFactor : OPTIONAL IfcReal; -END_ENTITY; - -ENTITY IfcSurfaceStyleRendering - SUBTYPE OF (IfcSurfaceStyleShading); - DiffuseColour : OPTIONAL IfcColourOrFactor; - TransmissionColour : OPTIONAL IfcColourOrFactor; - DiffuseTransmissionColour : OPTIONAL IfcColourOrFactor; - ReflectionColour : OPTIONAL IfcColourOrFactor; - SpecularColour : OPTIONAL IfcColourOrFactor; - SpecularHighlight : OPTIONAL IfcSpecularHighlightSelect; - ReflectanceMethod : IfcReflectanceMethodEnum; -END_ENTITY; - -ENTITY IfcSurfaceStyleShading - SUPERTYPE OF (ONEOF - (IfcSurfaceStyleRendering)) - SUBTYPE OF (IfcPresentationItem); - SurfaceColour : IfcColourRgb; - Transparency : OPTIONAL IfcNormalisedRatioMeasure; -END_ENTITY; - -ENTITY IfcSurfaceStyleWithTextures - SUBTYPE OF (IfcPresentationItem); - Textures : LIST [1:?] OF IfcSurfaceTexture; -END_ENTITY; - -ENTITY IfcSurfaceTexture - ABSTRACT SUPERTYPE OF (ONEOF - (IfcBlobTexture - ,IfcImageTexture - ,IfcPixelTexture)) - SUBTYPE OF (IfcPresentationItem); - RepeatS : IfcBoolean; - RepeatT : IfcBoolean; - Mode : OPTIONAL IfcIdentifier; - TextureTransform : OPTIONAL IfcCartesianTransformationOperator2D; - Parameter : OPTIONAL LIST [1:?] OF IfcIdentifier; - INVERSE - IsMappedBy : SET [0:?] OF IfcTextureCoordinate FOR Maps; - UsedInStyles : SET [0:?] OF IfcSurfaceStyleWithTextures FOR Textures; -END_ENTITY; - -ENTITY IfcSweptAreaSolid - ABSTRACT SUPERTYPE OF (ONEOF - (IfcExtrudedAreaSolid - ,IfcFixedReferenceSweptAreaSolid - ,IfcRevolvedAreaSolid - ,IfcSurfaceCurveSweptAreaSolid)) - SUBTYPE OF (IfcSolidModel); - SweptArea : IfcProfileDef; - Position : OPTIONAL IfcAxis2Placement3D; - WHERE - SweptAreaType : SweptArea.ProfileType = IfcProfileTypeEnum.Area; -END_ENTITY; - -ENTITY IfcSweptDiskSolid - SUPERTYPE OF (ONEOF - (IfcSweptDiskSolidPolygonal)) - SUBTYPE OF (IfcSolidModel); - Directrix : IfcCurve; - Radius : IfcPositiveLengthMeasure; - InnerRadius : OPTIONAL IfcPositiveLengthMeasure; - StartParam : OPTIONAL IfcParameterValue; - EndParam : OPTIONAL IfcParameterValue; - WHERE - DirectrixDim : Directrix.Dim = 3; - InnerRadiusSize : (NOT EXISTS(InnerRadius)) OR (Radius > InnerRadius); - DirectrixBounded : (EXISTS(StartParam) AND EXISTS(EndParam)) OR -(SIZEOF(['IFC4.IFCCONIC', 'IFC4.IFCBOUNDEDCURVE'] * TYPEOF(Directrix)) = 1); -END_ENTITY; - -ENTITY IfcSweptDiskSolidPolygonal - SUBTYPE OF (IfcSweptDiskSolid); - FilletRadius : OPTIONAL IfcPositiveLengthMeasure; - WHERE - CorrectRadii : NOT(EXISTS(FilletRadius)) OR (FilletRadius >= SELF\IfcSweptDiskSolid.Radius); - DirectrixIsPolyline : ('IFC4.IFCPOLYLINE' IN TYPEOF(SELF\IfcSweptDiskSolid.Directrix)) OR -(('IFC4.IFCINDEXEDPOLYCURVE' IN TYPEOF(SELF\IfcSweptDiskSolid.Directrix)) AND NOT(EXISTS(SELF\IfcSweptDiskSolid.Directrix.Segments))); -END_ENTITY; - -ENTITY IfcSweptSurface - ABSTRACT SUPERTYPE OF (ONEOF - (IfcSurfaceOfLinearExtrusion - ,IfcSurfaceOfRevolution)) - SUBTYPE OF (IfcSurface); - SweptCurve : IfcProfileDef; - Position : OPTIONAL IfcAxis2Placement3D; - WHERE - SweptCurveType : SweptCurve.ProfileType = IfcProfileTypeEnum.Curve; -END_ENTITY; - -ENTITY IfcSwitchingDevice - SUBTYPE OF (IfcFlowController); - PredefinedType : OPTIONAL IfcSwitchingDeviceTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcSwitchingDeviceTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcSwitchingDeviceTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCSWITCHINGDEVICETYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcSwitchingDeviceType - SUBTYPE OF (IfcFlowControllerType); - PredefinedType : IfcSwitchingDeviceTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcSwitchingDeviceTypeEnum.USERDEFINED) OR -((PredefinedType = IfcSwitchingDeviceTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcSystem - SUPERTYPE OF (ONEOF - (IfcBuildingSystem - ,IfcDistributionSystem - ,IfcStructuralAnalysisModel - ,IfcZone)) - SUBTYPE OF (IfcGroup); - INVERSE - ServicesBuildings : SET [0:1] OF IfcRelServicesBuildings FOR RelatingSystem; -END_ENTITY; - -ENTITY IfcSystemFurnitureElement - SUBTYPE OF (IfcFurnishingElement); - PredefinedType : OPTIONAL IfcSystemFurnitureElementTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcSystemFurnitureElementTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcSystemFurnitureElementTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCSYSTEMFURNITUREELEMENTTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcSystemFurnitureElementType - SUBTYPE OF (IfcFurnishingElementType); - PredefinedType : OPTIONAL IfcSystemFurnitureElementTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcSystemFurnitureElementTypeEnum.USERDEFINED) OR -((PredefinedType = IfcSystemFurnitureElementTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcTShapeProfileDef - SUBTYPE OF (IfcParameterizedProfileDef); - Depth : IfcPositiveLengthMeasure; - FlangeWidth : IfcPositiveLengthMeasure; - WebThickness : IfcPositiveLengthMeasure; - FlangeThickness : IfcPositiveLengthMeasure; - FilletRadius : OPTIONAL IfcNonNegativeLengthMeasure; - FlangeEdgeRadius : OPTIONAL IfcNonNegativeLengthMeasure; - WebEdgeRadius : OPTIONAL IfcNonNegativeLengthMeasure; - WebSlope : OPTIONAL IfcPlaneAngleMeasure; - FlangeSlope : OPTIONAL IfcPlaneAngleMeasure; - WHERE - ValidFlangeThickness : FlangeThickness < Depth; - ValidWebThickness : WebThickness < FlangeWidth; -END_ENTITY; - -ENTITY IfcTable; - Name : OPTIONAL IfcLabel; - Rows : OPTIONAL LIST [1:?] OF IfcTableRow; - Columns : OPTIONAL LIST [1:?] OF IfcTableColumn; - DERIVE - NumberOfCellsInRow : IfcInteger := HIINDEX(Rows[1].RowCells); - NumberOfHeadings : IfcInteger := SIZEOF(QUERY( Temp <* Rows | Temp.IsHeading)); - NumberOfDataRows : IfcInteger := SIZEOF(QUERY( Temp <* Rows | NOT(Temp.IsHeading))); - WHERE - WR1 : SIZEOF(QUERY( Temp <* Rows | HIINDEX(Temp.RowCells) <> HIINDEX(Rows[1].RowCells))) = 0; - WR2 : { 0 <= NumberOfHeadings <= 1 }; -END_ENTITY; - -ENTITY IfcTableColumn; - Identifier : OPTIONAL IfcIdentifier; - Name : OPTIONAL IfcLabel; - Description : OPTIONAL IfcText; - Unit : OPTIONAL IfcUnit; - ReferencePath : OPTIONAL IfcReference; -END_ENTITY; - -ENTITY IfcTableRow; - RowCells : OPTIONAL LIST [1:?] OF IfcValue; - IsHeading : OPTIONAL IfcBoolean; -END_ENTITY; - -ENTITY IfcTank - SUBTYPE OF (IfcFlowStorageDevice); - PredefinedType : OPTIONAL IfcTankTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcTankTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcTankTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCTANKTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcTankType - SUBTYPE OF (IfcFlowStorageDeviceType); - PredefinedType : IfcTankTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcTankTypeEnum.USERDEFINED) OR -((PredefinedType = IfcTankTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcTask - SUBTYPE OF (IfcProcess); - Status : OPTIONAL IfcLabel; - WorkMethod : OPTIONAL IfcLabel; - IsMilestone : IfcBoolean; - Priority : OPTIONAL IfcInteger; - TaskTime : OPTIONAL IfcTaskTime; - PredefinedType : OPTIONAL IfcTaskTypeEnum; - WHERE - HasName : EXISTS(SELF\IfcRoot.Name); - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR (PredefinedType <> IfcTaskTypeEnum.USERDEFINED) OR ((PredefinedType = IfcTaskTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcObject.ObjectType)); -END_ENTITY; - -ENTITY IfcTaskTime - SUPERTYPE OF (ONEOF - (IfcTaskTimeRecurring)) - SUBTYPE OF (IfcSchedulingTime); - DurationType : OPTIONAL IfcTaskDurationEnum; - ScheduleDuration : OPTIONAL IfcDuration; - ScheduleStart : OPTIONAL IfcDateTime; - ScheduleFinish : OPTIONAL IfcDateTime; - EarlyStart : OPTIONAL IfcDateTime; - EarlyFinish : OPTIONAL IfcDateTime; - LateStart : OPTIONAL IfcDateTime; - LateFinish : OPTIONAL IfcDateTime; - FreeFloat : OPTIONAL IfcDuration; - TotalFloat : OPTIONAL IfcDuration; - IsCritical : OPTIONAL IfcBoolean; - StatusTime : OPTIONAL IfcDateTime; - ActualDuration : OPTIONAL IfcDuration; - ActualStart : OPTIONAL IfcDateTime; - ActualFinish : OPTIONAL IfcDateTime; - RemainingTime : OPTIONAL IfcDuration; - Completion : OPTIONAL IfcPositiveRatioMeasure; -END_ENTITY; - -ENTITY IfcTaskTimeRecurring - SUBTYPE OF (IfcTaskTime); - Recurrence : IfcRecurrencePattern; -END_ENTITY; - -ENTITY IfcTaskType - SUBTYPE OF (IfcTypeProcess); - PredefinedType : IfcTaskTypeEnum; - WorkMethod : OPTIONAL IfcLabel; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcTaskTypeEnum.USERDEFINED) OR ((PredefinedType = IfcTaskTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcTypeProcess.ProcessType)); -END_ENTITY; - -ENTITY IfcTelecomAddress - SUBTYPE OF (IfcAddress); - TelephoneNumbers : OPTIONAL LIST [1:?] OF IfcLabel; - FacsimileNumbers : OPTIONAL LIST [1:?] OF IfcLabel; - PagerNumber : OPTIONAL IfcLabel; - ElectronicMailAddresses : OPTIONAL LIST [1:?] OF IfcLabel; - WWWHomePageURL : OPTIONAL IfcURIReference; - MessagingIDs : OPTIONAL LIST [1:?] OF IfcURIReference; - WHERE - MinimumDataProvided : EXISTS (TelephoneNumbers) OR -EXISTS (FacsimileNumbers) OR -EXISTS (PagerNumber) OR -EXISTS (ElectronicMailAddresses) OR -EXISTS (WWWHomePageURL) OR -EXISTS (MessagingIDs); -END_ENTITY; - -ENTITY IfcTendon - SUBTYPE OF (IfcReinforcingElement); - PredefinedType : OPTIONAL IfcTendonTypeEnum; - NominalDiameter : OPTIONAL IfcPositiveLengthMeasure; - CrossSectionArea : OPTIONAL IfcAreaMeasure; - TensionForce : OPTIONAL IfcForceMeasure; - PreStress : OPTIONAL IfcPressureMeasure; - FrictionCoefficient : OPTIONAL IfcNormalisedRatioMeasure; - AnchorageSlip : OPTIONAL IfcPositiveLengthMeasure; - MinCurvatureRadius : OPTIONAL IfcPositiveLengthMeasure; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR -(PredefinedType <> IfcTendonTypeEnum.USERDEFINED) OR -((PredefinedType = IfcTendonTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR -('IFC4.IFCTENDONTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcTendonAnchor - SUBTYPE OF (IfcReinforcingElement); - PredefinedType : OPTIONAL IfcTendonAnchorTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR -(PredefinedType <> IfcTendonAnchorTypeEnum.USERDEFINED) OR -((PredefinedType = IfcTendonAnchorTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR -('IFC4.IFCTENDONANCHORTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcTendonAnchorType - SUBTYPE OF (IfcReinforcingElementType); - PredefinedType : IfcTendonAnchorTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcTendonAnchorTypeEnum.USERDEFINED) OR -((PredefinedType = IfcTendonAnchorTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcTendonType - SUBTYPE OF (IfcReinforcingElementType); - PredefinedType : IfcTendonTypeEnum; - NominalDiameter : OPTIONAL IfcPositiveLengthMeasure; - CrossSectionArea : OPTIONAL IfcAreaMeasure; - SheathDiameter : OPTIONAL IfcPositiveLengthMeasure; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcTendonTypeEnum.USERDEFINED) OR -((PredefinedType = IfcTendonTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcTessellatedFaceSet - ABSTRACT SUPERTYPE OF (ONEOF - (IfcPolygonalFaceSet - ,IfcTriangulatedFaceSet)) - SUBTYPE OF (IfcTessellatedItem); - Coordinates : IfcCartesianPointList3D; - DERIVE - Dim : IfcDimensionCount := 3; - INVERSE - HasColours : SET [0:1] OF IfcIndexedColourMap FOR MappedTo; - HasTextures : SET [0:?] OF IfcIndexedTextureMap FOR MappedTo; -END_ENTITY; - -ENTITY IfcTessellatedItem - ABSTRACT SUPERTYPE OF (ONEOF - (IfcIndexedPolygonalFace - ,IfcTessellatedFaceSet)) - SUBTYPE OF (IfcGeometricRepresentationItem); -END_ENTITY; - -ENTITY IfcTextLiteral - SUPERTYPE OF (ONEOF - (IfcTextLiteralWithExtent)) - SUBTYPE OF (IfcGeometricRepresentationItem); - Literal : IfcPresentableText; - Placement : IfcAxis2Placement; - Path : IfcTextPath; -END_ENTITY; - -ENTITY IfcTextLiteralWithExtent - SUBTYPE OF (IfcTextLiteral); - Extent : IfcPlanarExtent; - BoxAlignment : IfcBoxAlignment; - WHERE - WR31 : NOT('IFC4.IFCPLANARBOX' IN TYPEOF(Extent)); -END_ENTITY; - -ENTITY IfcTextStyle - SUBTYPE OF (IfcPresentationStyle); - TextCharacterAppearance : OPTIONAL IfcTextStyleForDefinedFont; - TextStyle : OPTIONAL IfcTextStyleTextModel; - TextFontStyle : IfcTextFontSelect; - ModelOrDraughting : OPTIONAL IfcBoolean; -END_ENTITY; - -ENTITY IfcTextStyleFontModel - SUBTYPE OF (IfcPreDefinedTextFont); - FontFamily : LIST [1:?] OF IfcTextFontName; - FontStyle : OPTIONAL IfcFontStyle; - FontVariant : OPTIONAL IfcFontVariant; - FontWeight : OPTIONAL IfcFontWeight; - FontSize : IfcSizeSelect; - WHERE - MeasureOfFontSize : ('IFC4.IFCLENGTHMEASURE' IN TYPEOF(SELF.FontSize)) AND -(SELF.FontSize > 0.); -END_ENTITY; - -ENTITY IfcTextStyleForDefinedFont - SUBTYPE OF (IfcPresentationItem); - Colour : IfcColour; - BackgroundColour : OPTIONAL IfcColour; -END_ENTITY; - -ENTITY IfcTextStyleTextModel - SUBTYPE OF (IfcPresentationItem); - TextIndent : OPTIONAL IfcSizeSelect; - TextAlign : OPTIONAL IfcTextAlignment; - TextDecoration : OPTIONAL IfcTextDecoration; - LetterSpacing : OPTIONAL IfcSizeSelect; - WordSpacing : OPTIONAL IfcSizeSelect; - TextTransform : OPTIONAL IfcTextTransformation; - LineHeight : OPTIONAL IfcSizeSelect; -END_ENTITY; - -ENTITY IfcTextureCoordinate - ABSTRACT SUPERTYPE OF (ONEOF - (IfcIndexedTextureMap - ,IfcTextureCoordinateGenerator - ,IfcTextureMap)) - SUBTYPE OF (IfcPresentationItem); - Maps : LIST [1:?] OF IfcSurfaceTexture; -END_ENTITY; - -ENTITY IfcTextureCoordinateGenerator - SUBTYPE OF (IfcTextureCoordinate); - Mode : IfcLabel; - Parameter : OPTIONAL LIST [1:?] OF IfcReal; -END_ENTITY; - -ENTITY IfcTextureMap - SUBTYPE OF (IfcTextureCoordinate); - Vertices : LIST [3:?] OF IfcTextureVertex; - MappedTo : IfcFace; -END_ENTITY; - -ENTITY IfcTextureVertex - SUBTYPE OF (IfcPresentationItem); - Coordinates : LIST [2:2] OF IfcParameterValue; -END_ENTITY; - -ENTITY IfcTextureVertexList - SUBTYPE OF (IfcPresentationItem); - TexCoordsList : LIST [1:?] OF LIST [2:2] OF IfcParameterValue; -END_ENTITY; - -ENTITY IfcTimePeriod; - StartTime : IfcTime; - EndTime : IfcTime; -END_ENTITY; - -ENTITY IfcTimeSeries - ABSTRACT SUPERTYPE OF (ONEOF - (IfcIrregularTimeSeries - ,IfcRegularTimeSeries)); - Name : IfcLabel; - Description : OPTIONAL IfcText; - StartTime : IfcDateTime; - EndTime : IfcDateTime; - TimeSeriesDataType : IfcTimeSeriesDataTypeEnum; - DataOrigin : IfcDataOriginEnum; - UserDefinedDataOrigin : OPTIONAL IfcLabel; - Unit : OPTIONAL IfcUnit; - INVERSE - HasExternalReference : SET [1:?] OF IfcExternalReferenceRelationship FOR RelatedResourceObjects; -END_ENTITY; - -ENTITY IfcTimeSeriesValue; - ListValues : LIST [1:?] OF IfcValue; -END_ENTITY; - -ENTITY IfcTopologicalRepresentationItem - ABSTRACT SUPERTYPE OF (ONEOF - (IfcConnectedFaceSet - ,IfcEdge - ,IfcFace - ,IfcFaceBound - ,IfcLoop - ,IfcPath - ,IfcVertex)) - SUBTYPE OF (IfcRepresentationItem); -END_ENTITY; - -ENTITY IfcTopologyRepresentation - SUBTYPE OF (IfcShapeModel); - WHERE - WR21 : SIZEOF(QUERY(temp <* SELF\IfcRepresentation.Items | - NOT('IFC4.IFCTOPOLOGICALREPRESENTATIONITEM' IN TYPEOF(temp)) -)) = 0; - WR22 : EXISTS(SELF\IfcRepresentation.RepresentationType); - WR23 : IfcTopologyRepresentationTypes(SELF\IfcRepresentation.RepresentationType, SELF\IfcRepresentation.Items); -END_ENTITY; - -ENTITY IfcToroidalSurface - SUBTYPE OF (IfcElementarySurface); - MajorRadius : IfcPositiveLengthMeasure; - MinorRadius : IfcPositiveLengthMeasure; - WHERE - MajorLargerMinor : MinorRadius < MajorRadius; -END_ENTITY; - -ENTITY IfcTransformer - SUBTYPE OF (IfcEnergyConversionDevice); - PredefinedType : OPTIONAL IfcTransformerTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcTransformerTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcTransformerTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCTRANFORMERTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcTransformerType - SUBTYPE OF (IfcEnergyConversionDeviceType); - PredefinedType : IfcTransformerTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcTransformerTypeEnum.USERDEFINED) OR -((PredefinedType = IfcTransformerTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcTransportElement - SUBTYPE OF (IfcElement); - PredefinedType : OPTIONAL IfcTransportElementTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcTransportElementTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcTransportElementTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCTRANSPORTELEMENTTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcTransportElementType - SUBTYPE OF (IfcElementType); - PredefinedType : IfcTransportElementTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcTransportElementTypeEnum.USERDEFINED) OR -((PredefinedType = IfcTransportElementTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcTrapeziumProfileDef - SUBTYPE OF (IfcParameterizedProfileDef); - BottomXDim : IfcPositiveLengthMeasure; - TopXDim : IfcPositiveLengthMeasure; - YDim : IfcPositiveLengthMeasure; - TopXOffset : IfcLengthMeasure; -END_ENTITY; - -ENTITY IfcTriangulatedFaceSet - SUBTYPE OF (IfcTessellatedFaceSet); - Normals : OPTIONAL LIST [1:?] OF LIST [3:3] OF IfcParameterValue; - Closed : OPTIONAL IfcBoolean; - CoordIndex : LIST [1:?] OF LIST [3:3] OF IfcPositiveInteger; - PnIndex : OPTIONAL LIST [1:?] OF IfcPositiveInteger; - DERIVE - NumberOfTriangles : IfcInteger := SIZEOF(CoordIndex); -END_ENTITY; - -ENTITY IfcTrimmedCurve - SUBTYPE OF (IfcBoundedCurve); - BasisCurve : IfcCurve; - Trim1 : SET [1:2] OF IfcTrimmingSelect; - Trim2 : SET [1:2] OF IfcTrimmingSelect; - SenseAgreement : IfcBoolean; - MasterRepresentation : IfcTrimmingPreference; - WHERE - Trim1ValuesConsistent : (HIINDEX(Trim1) = 1) OR (TYPEOF(Trim1[1]) <> TYPEOF(Trim1[2])); - Trim2ValuesConsistent : (HIINDEX(Trim2) = 1) OR (TYPEOF(Trim2[1]) <> TYPEOF(Trim2[2])); - NoTrimOfBoundedCurves : NOT('IFC4.IFCBOUNDEDCURVE' IN TYPEOF(BasisCurve)); -END_ENTITY; - -ENTITY IfcTubeBundle - SUBTYPE OF (IfcEnergyConversionDevice); - PredefinedType : OPTIONAL IfcTubeBundleTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcTubeBundleTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcTubeBundleTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCTUBEBUNDLETYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcTubeBundleType - SUBTYPE OF (IfcEnergyConversionDeviceType); - PredefinedType : IfcTubeBundleTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcTubeBundleTypeEnum.USERDEFINED) OR -((PredefinedType = IfcTubeBundleTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcTypeObject - SUPERTYPE OF (ONEOF - (IfcTypeProcess - ,IfcTypeProduct - ,IfcTypeResource)) - SUBTYPE OF (IfcObjectDefinition); - ApplicableOccurrence : OPTIONAL IfcIdentifier; - HasPropertySets : OPTIONAL SET [1:?] OF IfcPropertySetDefinition; - INVERSE - Types : SET [0:1] OF IfcRelDefinesByType FOR RelatingType; - WHERE - NameRequired : EXISTS(SELF\IfcRoot.Name); - UniquePropertySetNames : (NOT(EXISTS(HasPropertySets))) OR IfcUniquePropertySetNames(HasPropertySets); -END_ENTITY; - -ENTITY IfcTypeProcess - ABSTRACT SUPERTYPE OF (ONEOF - (IfcEventType - ,IfcProcedureType - ,IfcTaskType)) - SUBTYPE OF (IfcTypeObject); - Identification : OPTIONAL IfcIdentifier; - LongDescription : OPTIONAL IfcText; - ProcessType : OPTIONAL IfcLabel; - INVERSE - OperatesOn : SET [0:?] OF IfcRelAssignsToProcess FOR RelatingProcess; -END_ENTITY; - -ENTITY IfcTypeProduct - SUPERTYPE OF (ONEOF - (IfcDoorStyle - ,IfcElementType - ,IfcSpatialElementType - ,IfcWindowStyle)) - SUBTYPE OF (IfcTypeObject); - RepresentationMaps : OPTIONAL LIST [1:?] OF UNIQUE IfcRepresentationMap; - Tag : OPTIONAL IfcLabel; - INVERSE - ReferencedBy : SET [0:?] OF IfcRelAssignsToProduct FOR RelatingProduct; - WHERE - ApplicableOccurrence : NOT(EXISTS(SELF\IfcTypeObject.Types[1])) OR -(SIZEOF(QUERY(temp <* SELF\IfcTypeObject.Types[1].RelatedObjects | - NOT('IFC4.IFCPRODUCT' IN TYPEOF(temp))) -) = 0); -END_ENTITY; - -ENTITY IfcTypeResource - ABSTRACT SUPERTYPE OF (ONEOF - (IfcConstructionResourceType)) - SUBTYPE OF (IfcTypeObject); - Identification : OPTIONAL IfcIdentifier; - LongDescription : OPTIONAL IfcText; - ResourceType : OPTIONAL IfcLabel; - INVERSE - ResourceOf : SET [0:?] OF IfcRelAssignsToResource FOR RelatingResource; -END_ENTITY; - -ENTITY IfcUShapeProfileDef - SUBTYPE OF (IfcParameterizedProfileDef); - Depth : IfcPositiveLengthMeasure; - FlangeWidth : IfcPositiveLengthMeasure; - WebThickness : IfcPositiveLengthMeasure; - FlangeThickness : IfcPositiveLengthMeasure; - FilletRadius : OPTIONAL IfcNonNegativeLengthMeasure; - EdgeRadius : OPTIONAL IfcNonNegativeLengthMeasure; - FlangeSlope : OPTIONAL IfcPlaneAngleMeasure; - WHERE - ValidFlangeThickness : FlangeThickness < (Depth / 2.); - ValidWebThickness : WebThickness < FlangeWidth; -END_ENTITY; - -ENTITY IfcUnitAssignment; - Units : SET [1:?] OF IfcUnit; - WHERE - WR01 : IfcCorrectUnitAssignment(Units); -END_ENTITY; - -ENTITY IfcUnitaryControlElement - SUBTYPE OF (IfcDistributionControlElement); - PredefinedType : OPTIONAL IfcUnitaryControlElementTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcUnitaryControlElementTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcUnitaryControlElementTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR -('IFC4.IFCUNITARYCONTROLELEMENTTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcUnitaryControlElementType - SUBTYPE OF (IfcDistributionControlElementType); - PredefinedType : IfcUnitaryControlElementTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcUnitaryControlElementTypeEnum.USERDEFINED) OR -((PredefinedType = IfcUnitaryControlElementTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcUnitaryEquipment - SUBTYPE OF (IfcEnergyConversionDevice); - PredefinedType : OPTIONAL IfcUnitaryEquipmentTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcUnitaryEquipmentTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcUnitaryEquipmentTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCUNITARYEQUIPMENTTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcUnitaryEquipmentType - SUBTYPE OF (IfcEnergyConversionDeviceType); - PredefinedType : IfcUnitaryEquipmentTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcUnitaryEquipmentTypeEnum.USERDEFINED) OR -((PredefinedType = IfcUnitaryEquipmentTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcValve - SUBTYPE OF (IfcFlowController); - PredefinedType : OPTIONAL IfcValveTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcValveTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcValveTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCVALVETYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcValveType - SUBTYPE OF (IfcFlowControllerType); - PredefinedType : IfcValveTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcValveTypeEnum.USERDEFINED) OR -((PredefinedType = IfcValveTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcVector - SUBTYPE OF (IfcGeometricRepresentationItem); - Orientation : IfcDirection; - Magnitude : IfcLengthMeasure; - DERIVE - Dim : IfcDimensionCount := Orientation.Dim; - WHERE - MagGreaterOrEqualZero : Magnitude >= 0.0; -END_ENTITY; - -ENTITY IfcVertex - SUPERTYPE OF (ONEOF - (IfcVertexPoint)) - SUBTYPE OF (IfcTopologicalRepresentationItem); -END_ENTITY; - -ENTITY IfcVertexLoop - SUBTYPE OF (IfcLoop); - LoopVertex : IfcVertex; -END_ENTITY; - -ENTITY IfcVertexPoint - SUBTYPE OF (IfcVertex); - VertexGeometry : IfcPoint; -END_ENTITY; - -ENTITY IfcVibrationIsolator - SUBTYPE OF (IfcElementComponent); - PredefinedType : OPTIONAL IfcVibrationIsolatorTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcVibrationIsolatorTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcVibrationIsolatorTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCVIBRATIONISOLATORTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcVibrationIsolatorType - SUBTYPE OF (IfcElementComponentType); - PredefinedType : IfcVibrationIsolatorTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcVibrationIsolatorTypeEnum.USERDEFINED) OR -((PredefinedType = IfcVibrationIsolatorTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcVirtualElement - SUBTYPE OF (IfcElement); -END_ENTITY; - -ENTITY IfcVirtualGridIntersection; - IntersectingAxes : LIST [2:2] OF UNIQUE IfcGridAxis; - OffsetDistances : LIST [2:3] OF IfcLengthMeasure; -END_ENTITY; - -ENTITY IfcVoidingFeature - SUBTYPE OF (IfcFeatureElementSubtraction); - PredefinedType : OPTIONAL IfcVoidingFeatureTypeEnum; - WHERE - HasObjectType : NOT EXISTS(PredefinedType) OR (PredefinedType <> IfcVoidingFeatureTypeEnum.USERDEFINED) OR EXISTS(SELF\IfcObject.ObjectType); -END_ENTITY; - -ENTITY IfcWall - SUPERTYPE OF (ONEOF - (IfcWallElementedCase - ,IfcWallStandardCase)) - SUBTYPE OF (IfcBuildingElement); - PredefinedType : OPTIONAL IfcWallTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcWallTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcWallTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCWALLTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcWallElementedCase - SUBTYPE OF (IfcWall); - WHERE - HasDecomposition : HIINDEX(SELF\IfcObjectDefinition.IsDecomposedBy) > 0; -END_ENTITY; - -ENTITY IfcWallStandardCase - SUBTYPE OF (IfcWall); - WHERE - HasMaterialLayerSetUsage : SIZEOF (QUERY(temp <* USEDIN(SELF, 'IFC4.IFCRELASSOCIATES.RELATEDOBJECTS') | - ('IFC4.IFCRELASSOCIATESMATERIAL' IN TYPEOF(temp)) AND - ('IFC4.IFCMATERIALLAYERSETUSAGE' IN TYPEOF(temp.RelatingMaterial)) - )) = 1; -END_ENTITY; - -ENTITY IfcWallType - SUBTYPE OF (IfcBuildingElementType); - PredefinedType : IfcWallTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcWallTypeEnum.USERDEFINED) OR -((PredefinedType = IfcWallTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcWasteTerminal - SUBTYPE OF (IfcFlowTerminal); - PredefinedType : OPTIONAL IfcWasteTerminalTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR - (PredefinedType <> IfcWasteTerminalTypeEnum.USERDEFINED) OR - ((PredefinedType = IfcWasteTerminalTypeEnum.USERDEFINED) AND EXISTS (SELF\IfcObject.ObjectType)); - CorrectTypeAssigned : (SIZEOF(IsTypedBy) = 0) OR - ('IFC4.IFCWASTETERMINALTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcWasteTerminalType - SUBTYPE OF (IfcFlowTerminalType); - PredefinedType : IfcWasteTerminalTypeEnum; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcWasteTerminalTypeEnum.USERDEFINED) OR -((PredefinedType = IfcWasteTerminalTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcWindow - SUPERTYPE OF (ONEOF - (IfcWindowStandardCase)) - SUBTYPE OF (IfcBuildingElement); - OverallHeight : OPTIONAL IfcPositiveLengthMeasure; - OverallWidth : OPTIONAL IfcPositiveLengthMeasure; - PredefinedType : OPTIONAL IfcWindowTypeEnum; - PartitioningType : OPTIONAL IfcWindowTypePartitioningEnum; - UserDefinedPartitioningType : OPTIONAL IfcLabel; - WHERE - CorrectStyleAssigned : (SIZEOF(IsTypedBy) = 0) -OR ('IFC4.IFCWINDOWTYPE' IN TYPEOF(SELF\IfcObject.IsTypedBy[1].RelatingType)); -END_ENTITY; - -ENTITY IfcWindowLiningProperties - SUBTYPE OF (IfcPreDefinedPropertySet); - LiningDepth : OPTIONAL IfcPositiveLengthMeasure; - LiningThickness : OPTIONAL IfcNonNegativeLengthMeasure; - TransomThickness : OPTIONAL IfcNonNegativeLengthMeasure; - MullionThickness : OPTIONAL IfcNonNegativeLengthMeasure; - FirstTransomOffset : OPTIONAL IfcNormalisedRatioMeasure; - SecondTransomOffset : OPTIONAL IfcNormalisedRatioMeasure; - FirstMullionOffset : OPTIONAL IfcNormalisedRatioMeasure; - SecondMullionOffset : OPTIONAL IfcNormalisedRatioMeasure; - ShapeAspectStyle : OPTIONAL IfcShapeAspect; - LiningOffset : OPTIONAL IfcLengthMeasure; - LiningToPanelOffsetX : OPTIONAL IfcLengthMeasure; - LiningToPanelOffsetY : OPTIONAL IfcLengthMeasure; - WHERE - WR31 : NOT(EXISTS(LiningDepth) AND NOT(EXISTS(LiningThickness))); - WR32 : NOT(NOT(EXISTS(FirstTransomOffset)) AND EXISTS(SecondTransomOffset)); - WR33 : NOT(NOT(EXISTS(FirstMullionOffset)) AND EXISTS(SecondMullionOffset)); - WR34 : (EXISTS(SELF\IfcPropertySetDefinition.DefinesType[1])) -AND -( - ('IFC4.IFCWINDOWTYPE' IN TYPEOF(SELF\IfcPropertySetDefinition.DefinesType[1])) - OR - ('IFC4.IFCWINDOWSTYLE' IN TYPEOF(SELF\IfcPropertySetDefinition.DefinesType[1])) -); -END_ENTITY; - -ENTITY IfcWindowPanelProperties - SUBTYPE OF (IfcPreDefinedPropertySet); - OperationType : IfcWindowPanelOperationEnum; - PanelPosition : IfcWindowPanelPositionEnum; - FrameDepth : OPTIONAL IfcPositiveLengthMeasure; - FrameThickness : OPTIONAL IfcPositiveLengthMeasure; - ShapeAspectStyle : OPTIONAL IfcShapeAspect; - WHERE - ApplicableToType : (EXISTS(SELF\IfcPropertySetDefinition.DefinesType[1])) -AND -( - ('IFC4.IFCWINDOWTYPE' IN TYPEOF(SELF\IfcPropertySetDefinition.DefinesType[1])) - OR - ('IFC4.IFCWINDOWSTYLE' IN TYPEOF(SELF\IfcPropertySetDefinition.DefinesType[1])) -); -END_ENTITY; - -ENTITY IfcWindowStandardCase - SUBTYPE OF (IfcWindow); -END_ENTITY; - -ENTITY IfcWindowStyle - SUBTYPE OF (IfcTypeProduct); - ConstructionType : IfcWindowStyleConstructionEnum; - OperationType : IfcWindowStyleOperationEnum; - ParameterTakesPrecedence : IfcBoolean; - Sizeable : IfcBoolean; -END_ENTITY; - -ENTITY IfcWindowType - SUBTYPE OF (IfcBuildingElementType); - PredefinedType : IfcWindowTypeEnum; - PartitioningType : IfcWindowTypePartitioningEnum; - ParameterTakesPrecedence : OPTIONAL IfcBoolean; - UserDefinedPartitioningType : OPTIONAL IfcLabel; - WHERE - CorrectPredefinedType : (PredefinedType <> IfcWindowTypeEnum.USERDEFINED) OR -((PredefinedType = IfcWindowTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcElementType.ElementType)); -END_ENTITY; - -ENTITY IfcWorkCalendar - SUBTYPE OF (IfcControl); - WorkingTimes : OPTIONAL SET [1:?] OF IfcWorkTime; - ExceptionTimes : OPTIONAL SET [1:?] OF IfcWorkTime; - PredefinedType : OPTIONAL IfcWorkCalendarTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR (PredefinedType <> IfcWorkCalendarTypeEnum.USERDEFINED) OR -((PredefinedType = IfcWorkCalendarTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcObject.ObjectType)); -END_ENTITY; - -ENTITY IfcWorkControl - ABSTRACT SUPERTYPE OF (ONEOF - (IfcWorkPlan - ,IfcWorkSchedule)) - SUBTYPE OF (IfcControl); - CreationDate : IfcDateTime; - Creators : OPTIONAL SET [1:?] OF IfcPerson; - Purpose : OPTIONAL IfcLabel; - Duration : OPTIONAL IfcDuration; - TotalFloat : OPTIONAL IfcDuration; - StartTime : IfcDateTime; - FinishTime : OPTIONAL IfcDateTime; -END_ENTITY; - -ENTITY IfcWorkPlan - SUBTYPE OF (IfcWorkControl); - PredefinedType : OPTIONAL IfcWorkPlanTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR (PredefinedType <> IfcWorkPlanTypeEnum.USERDEFINED) OR -((PredefinedType = IfcWorkPlanTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcObject.ObjectType)); -END_ENTITY; - -ENTITY IfcWorkSchedule - SUBTYPE OF (IfcWorkControl); - PredefinedType : OPTIONAL IfcWorkScheduleTypeEnum; - WHERE - CorrectPredefinedType : NOT(EXISTS(PredefinedType)) OR (PredefinedType <> IfcWorkScheduleTypeEnum.USERDEFINED) OR -((PredefinedType = IfcWorkScheduleTypeEnum.USERDEFINED) AND EXISTS(SELF\IfcObject.ObjectType)); -END_ENTITY; - -ENTITY IfcWorkTime - SUBTYPE OF (IfcSchedulingTime); - RecurrencePattern : OPTIONAL IfcRecurrencePattern; - Start : OPTIONAL IfcDate; - Finish : OPTIONAL IfcDate; -END_ENTITY; - -ENTITY IfcZShapeProfileDef - SUBTYPE OF (IfcParameterizedProfileDef); - Depth : IfcPositiveLengthMeasure; - FlangeWidth : IfcPositiveLengthMeasure; - WebThickness : IfcPositiveLengthMeasure; - FlangeThickness : IfcPositiveLengthMeasure; - FilletRadius : OPTIONAL IfcNonNegativeLengthMeasure; - EdgeRadius : OPTIONAL IfcNonNegativeLengthMeasure; - WHERE - ValidFlangeThickness : FlangeThickness < (Depth / 2.); -END_ENTITY; - -ENTITY IfcZone - SUBTYPE OF (IfcSystem); - LongName : OPTIONAL IfcLabel; - WHERE - WR1 : (SIZEOF(SELF\IfcGroup.IsGroupedBy) = 0) OR - (SIZEOF (QUERY (temp <* SELF\IfcGroup.IsGroupedBy[1].RelatedObjects | - NOT(('IFC4.IFCZONE' IN TYPEOF(temp)) OR - ('IFC4.IFCSPACE' IN TYPEOF(temp)) OR - ('IFC4.IFCSPATIALZONE' IN TYPEOF(temp)) - ))) = 0); -END_ENTITY; - -FUNCTION IfcAssociatedSurface -(Arg : IfcPcurve) : IfcSurface; - - LOCAL - Surf : IfcSurface; - END_LOCAL; - - Surf := Arg\IfcPcurve.BasisSurface; - - RETURN(Surf); -END_FUNCTION; - -FUNCTION IfcBaseAxis -(Dim : INTEGER; - Axis1, Axis2, Axis3 : IfcDirection) - : LIST [2:3] OF IfcDirection; - -LOCAL - U : LIST [2:3] OF IfcDirection; - Factor : REAL; - D1, D2 : IfcDirection; -END_LOCAL; - - IF (Dim = 3) THEN - D1 := NVL(IfcNormalise(Axis3), IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([0.0,0.0,1.0])); - D2 := IfcFirstProjAxis(D1, Axis1); - U := [D2, IfcSecondProjAxis(D1, D2, Axis2), D1]; - ELSE - IF EXISTS(Axis1) THEN - D1 := IfcNormalise(Axis1); - U := [D1, IfcOrthogonalComplement(D1)]; - IF EXISTS(Axis2) THEN - Factor := IfcDotProduct(Axis2, U[2]); - IF (Factor < 0.0) THEN - U[2].DirectionRatios[1] := -U[2].DirectionRatios[1]; - U[2].DirectionRatios[2] := -U[2].DirectionRatios[2]; - END_IF; - END_IF; - ELSE - IF EXISTS(Axis2) THEN - D1 := IfcNormalise(Axis2); - U := [IfcOrthogonalComplement(D1), D1]; - U[1].DirectionRatios[1] := -U[1].DirectionRatios[1]; - U[1].DirectionRatios[2] := -U[1].DirectionRatios[2]; - ELSE - U := [IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([1.0, 0.0]), - IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([0.0, 1.0])]; - END_IF; - END_IF; - END_IF; - RETURN(U); -END_FUNCTION; - -FUNCTION IfcBooleanChoose -(B : BOOLEAN ; - Choice1, Choice2 : GENERIC : Item) : GENERIC : Item; - IF B THEN - RETURN (Choice1); - ELSE - RETURN (Choice2); - END_IF; -END_FUNCTION; - -FUNCTION IfcBuild2Axes -(RefDirection : IfcDirection) - : LIST [2:2] OF IfcDirection; -LOCAL - D : IfcDirection := NVL(IfcNormalise(RefDirection), - IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([1.0,0.0])); -END_LOCAL; - RETURN([D, IfcOrthogonalComplement(D)]); -END_FUNCTION; - -FUNCTION IfcBuildAxes -(Axis, RefDirection : IfcDirection) - : LIST [3:3] OF IfcDirection; -LOCAL - D1, D2 : IfcDirection; -END_LOCAL; - D1 := NVL(IfcNormalise(Axis), IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([0.0,0.0,1.0])); - D2 := IfcFirstProjAxis(D1, RefDirection); - RETURN ([D2, IfcNormalise(IfcCrossProduct(D1,D2))\IfcVector.Orientation, D1]); -END_FUNCTION; - -FUNCTION IfcConsecutiveSegments -(Segments : LIST [1:?] OF IfcSegmentIndexSelect) - : BOOLEAN; - - LOCAL - Result : BOOLEAN := TRUE; - END_LOCAL; - - REPEAT i := 1 TO (HIINDEX(Segments)-1); - IF Segments[i][HIINDEX(Segments[i])] <> Segments[i+1][1] THEN - BEGIN - Result := FALSE; - ESCAPE; - END; - END_IF; - END_REPEAT; - - RETURN (Result); -END_FUNCTION; - -FUNCTION IfcConstraintsParamBSpline -( Degree, UpKnots, UpCp : INTEGER; - KnotMult : LIST OF INTEGER; - Knots : LIST OF IfcParameterValue ) -: BOOLEAN; - - - LOCAL - Result : BOOLEAN := TRUE; - K, Sum : INTEGER; - END_LOCAL; - - (* Find sum of knot multiplicities. *) - Sum := KnotMult[1]; - REPEAT i := 2 TO UpKnots; - Sum := Sum + KnotMult[i]; - END_REPEAT; - - (* Check limits holding for all B-spline parametrisations *) - IF (Degree < 1) OR (UpKnots < 2) OR (UpCp < Degree) OR - (Sum <> (Degree + UpCp + 2)) THEN - Result := FALSE; - RETURN(Result); - END_IF; - - K := KnotMult[1]; - IF (K < 1) OR (K > Degree + 1) THEN - Result := FALSE; - RETURN(Result); - END_IF; - - REPEAT i := 2 TO UpKnots; - IF (KnotMult[i] < 1) OR (Knots[i] <= Knots[i-1]) THEN - Result := FALSE; - RETURN(Result); - END_IF; - K := KnotMult[i]; - IF (i < UpKnots) AND (K > Degree) THEN - Result := FALSE; - RETURN(Result); - END_IF; - IF (i = UpKnots) AND (K > Degree + 1) THEN - Result := FALSE; - RETURN(Result); - END_IF; - END_REPEAT; - - RETURN(result); -END_FUNCTION; - -FUNCTION IfcConvertDirectionInto2D -(Direction : IfcDirection) - : IfcDirection; - - LOCAL - Direction2D : IfcDirection := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([0.,1.]); - END_LOCAL; - - Direction2D.DirectionRatios[1] := Direction.DirectionRatios[1]; - Direction2D.DirectionRatios[2] := Direction.DirectionRatios[2]; - - RETURN (Direction2D); -END_FUNCTION; - -FUNCTION IfcCorrectDimensions -(m : IfcUnitEnum; Dim : IfcDimensionalExponents) : LOGICAL; -CASE m OF - LENGTHUNIT : IF - Dim = (IfcDimensionalExponents (1, 0, 0, 0, 0, 0, 0)) - THEN RETURN(TRUE); - ELSE RETURN(FALSE); - END_IF; - MASSUNIT : IF - Dim = (IfcDimensionalExponents (0, 1, 0, 0, 0, 0, 0)) - THEN RETURN(TRUE); - ELSE RETURN(FALSE); - END_IF; - TIMEUNIT : IF - Dim = (IfcDimensionalExponents (0, 0, 1, 0, 0, 0, 0)) - THEN RETURN(TRUE); - ELSE RETURN(FALSE); - END_IF; - ELECTRICCURRENTUNIT : IF - Dim = (IfcDimensionalExponents (0, 0, 0, 1, 0, 0, 0)) - THEN RETURN(TRUE); - ELSE RETURN(FALSE); - END_IF; - THERMODYNAMICTEMPERATUREUNIT : IF - Dim = (IfcDimensionalExponents (0, 0, 0, 0, 1, 0, 0)) - THEN RETURN(TRUE); - ELSE RETURN(FALSE); - END_IF; - AMOUNTOFSUBSTANCEUNIT : IF - Dim = (IfcDimensionalExponents (0, 0, 0, 0, 0, 1, 0)) - THEN RETURN(TRUE); - ELSE RETURN(FALSE); - END_IF; - LUMINOUSINTENSITYUNIT : IF - Dim = (IfcDimensionalExponents (0, 0, 0, 0, 0, 0, 1)) - THEN RETURN(TRUE); - ELSE RETURN(FALSE); - END_IF; - PLANEANGLEUNIT : IF - Dim = (IfcDimensionalExponents (0, 0, 0, 0, 0, 0, 0)) - THEN RETURN(TRUE); - ELSE RETURN(FALSE); - END_IF; - SOLIDANGLEUNIT : IF - Dim = (IfcDimensionalExponents (0, 0, 0, 0, 0, 0, 0)) - THEN RETURN(TRUE); - ELSE RETURN(FALSE); - END_IF; - AREAUNIT : IF - Dim = (IfcDimensionalExponents (2, 0, 0, 0, 0, 0, 0)) - THEN RETURN(TRUE); - ELSE RETURN(FALSE); - END_IF; - VOLUMEUNIT : IF - Dim = (IfcDimensionalExponents (3, 0, 0, 0, 0, 0, 0)) - THEN RETURN(TRUE); - ELSE RETURN(FALSE); - END_IF; - - ABSORBEDDOSEUNIT : IF - Dim = (IfcDimensionalExponents (2, 0, -2, 0, 0, 0, 0)) - THEN RETURN(TRUE); - ELSE RETURN(FALSE); - END_IF; - RADIOACTIVITYUNIT : IF - Dim = (IfcDimensionalExponents (0, 0, -1, 0, 0, 0, 0)) - THEN RETURN(TRUE); - ELSE RETURN(FALSE); - END_IF; - ELECTRICCAPACITANCEUNIT : IF - Dim = (IfcDimensionalExponents (-2, -1, 4, 2, 0, 0, 0)) - THEN RETURN(TRUE); - ELSE RETURN(FALSE); - END_IF; - DOSEEQUIVALENTUNIT : IF - Dim = (IfcDimensionalExponents (2, 0, -2, 0, 0, 0, 0)) - THEN RETURN(TRUE); - ELSE RETURN(FALSE); - END_IF; - ELECTRICCHARGEUNIT : IF - Dim = (IfcDimensionalExponents (0, 0, 1, 1, 0, 0, 0)) - THEN RETURN(TRUE); - ELSE RETURN(FALSE); - END_IF; - ELECTRICCONDUCTANCEUNIT : IF - Dim = (IfcDimensionalExponents (-2, -1, 3, 2, 0, 0, 0)) - THEN RETURN(TRUE); - ELSE RETURN(FALSE); - END_IF; - ELECTRICVOLTAGEUNIT : IF - Dim = (IfcDimensionalExponents (2, 1, -3, -1, 0, 0, 0)) - THEN RETURN(TRUE); - ELSE RETURN(FALSE); - END_IF; - ELECTRICRESISTANCEUNIT : IF - Dim = (IfcDimensionalExponents (2, 1, -3, -2, 0, 0, 0)) - THEN RETURN(TRUE); - ELSE RETURN(FALSE); - END_IF; - ENERGYUNIT : IF - Dim = (IfcDimensionalExponents (2, 1, -2, 0, 0, 0, 0)) - THEN RETURN(TRUE); - ELSE RETURN(FALSE); - END_IF; - FORCEUNIT : IF - Dim = (IfcDimensionalExponents (1, 1, -2, 0, 0, 0, 0)) - THEN RETURN(TRUE); - ELSE RETURN(FALSE); - END_IF; - FREQUENCYUNIT : IF - Dim = (IfcDimensionalExponents (0, 0, -1, 0, 0, 0, 0)) - THEN RETURN(TRUE); - ELSE RETURN(FALSE); - END_IF; - INDUCTANCEUNIT : IF - Dim = (IfcDimensionalExponents (2, 1, -2, -2, 0, 0, 0)) - THEN RETURN(TRUE); - ELSE RETURN(FALSE); - END_IF; - ILLUMINANCEUNIT : IF - Dim = (IfcDimensionalExponents (-2, 0, 0, 0, 0, 0, 1)) - THEN RETURN(TRUE); - ELSE RETURN(FALSE); - END_IF; - LUMINOUSFLUXUNIT : IF - Dim = (IfcDimensionalExponents (0, 0, 0, 0, 0, 0, 1)) - THEN RETURN(TRUE); - ELSE RETURN(FALSE); - END_IF; - MAGNETICFLUXUNIT : IF - Dim = (IfcDimensionalExponents (2, 1, -2, -1, 0, 0, 0)) - THEN RETURN(TRUE); - ELSE RETURN(FALSE); - END_IF; - MAGNETICFLUXDENSITYUNIT : IF - Dim = (IfcDimensionalExponents (0, 1, -2, -1, 0, 0, 0)) - THEN RETURN(TRUE); - ELSE RETURN(FALSE); - END_IF; - POWERUNIT : IF - Dim = (IfcDimensionalExponents (2, 1, -3, 0, 0, 0, 0)) - THEN RETURN(TRUE); - ELSE RETURN(FALSE); - END_IF; - PRESSUREUNIT : IF - Dim = (IfcDimensionalExponents (-1, 1, -2, 0, 0, 0, 0)) - THEN RETURN(TRUE); - ELSE RETURN(FALSE); - END_IF; - - OTHERWISE : - RETURN (UNKNOWN); -END_CASE; -END_FUNCTION; - -FUNCTION IfcCorrectFillAreaStyle -(Styles : SET[1:?] OF IfcFillStyleSelect) - :LOGICAL; - -LOCAL - Hatching : INTEGER := 0; - Tiles : INTEGER := 0; - Colour : INTEGER := 0; - External : INTEGER := 0; -END_LOCAL; - - -External := SIZEOF(QUERY(Style <* Styles | - 'IFC4.IFCEXTERNALLYDEFINEDHATCHSTYLE' IN - TYPEOF(Style))); - -Hatching := SIZEOF(QUERY(Style <* Styles | - 'IFC4.IFCFILLAREASTYLEHATCHING' IN - TYPEOF(Style))); - -Tiles := SIZEOF(QUERY(Style <* Styles | - 'IFC4.IFCFILLAREASTYLETILES' IN - TYPEOF(Style))); - -Colour := SIZEOF(QUERY(Style <* Styles | - 'IFC4.IFCCOLOUR' IN - TYPEOF(Style))); - - -IF (External > 1) THEN - RETURN (FALSE); -END_IF; - - -IF ((External = 1) AND ((Hatching > 0) OR (Tiles > 0) OR (Colour > 0))) THEN - RETURN (FALSE); -END_IF; - - -IF (Colour > 1) THEN - RETURN (FALSE); -END_IF; - -IF ((Hatching > 0) AND (Tiles >0)) THEN - RETURN (FALSE); -END_IF; - -RETURN(TRUE); -END_FUNCTION; - -FUNCTION IfcCorrectLocalPlacement -(AxisPlacement:IfcAxis2Placement; - RelPlacement : IfcObjectPlacement):LOGICAL; - - IF (EXISTS(RelPlacement)) THEN - IF ('IFC4.IFCGRIDPLACEMENT' IN TYPEOF(RelPlacement)) THEN - RETURN(?); - END_IF; - IF ('IFC4.IFCLOCALPLACEMENT' IN TYPEOF(RelPlacement)) THEN - IF ('IFC4.IFCAXIS2PLACEMENT2D' IN TYPEOF(AxisPlacement)) THEN - RETURN(TRUE); - END_IF; - IF ('IFC4.IFCAXIS2PLACEMENT3D' IN TYPEOF(AxisPlacement)) THEN - IF (RelPlacement\IfcLocalPlacement.RelativePlacement.Dim = 3) THEN - RETURN(TRUE); - ELSE - RETURN(FALSE); - END_IF; - END_IF; - END_IF; - ELSE - RETURN(TRUE); - END_IF; - RETURN(?); -END_FUNCTION; - -FUNCTION IfcCorrectObjectAssignment -(Constraint: IfcObjectTypeEnum; Objects : SET[1:?] OF IfcObjectDefinition) - : LOGICAL ; - -LOCAL - Count : INTEGER := 0; -END_LOCAL; - - IF NOT(EXISTS(Constraint)) THEN - RETURN(TRUE); - END_IF; - - CASE Constraint OF - IfcObjectTypeEnum.NOTDEFINED : RETURN(TRUE); - IfcObjectTypeEnum.PRODUCT : - BEGIN - Count := SIZEOF(QUERY(temp <* Objects | NOT('IFC4.IFCPRODUCT' IN TYPEOF(temp)))); - RETURN(Count = 0); - END; - IfcObjectTypeEnum.PROCESS : - BEGIN - Count := SIZEOF(QUERY(temp <* Objects | NOT('IFC4.IFCPROCESS' IN TYPEOF(temp)))); - RETURN(Count = 0); - END; - IfcObjectTypeEnum.CONTROL : - BEGIN - Count := SIZEOF(QUERY(temp <* Objects | NOT('IFC4.IFCCONTROL' IN TYPEOF(temp)))); - RETURN(Count = 0); - END; - IfcObjectTypeEnum.RESOURCE : - BEGIN - Count := SIZEOF(QUERY(temp <* Objects | NOT('IFC4.IFCRESOURCE' IN TYPEOF(temp)))); - RETURN(Count = 0); - END; - IfcObjectTypeEnum.ACTOR : - BEGIN - Count := SIZEOF(QUERY(temp <* Objects | NOT('IFC4.IFCACTOR' IN TYPEOF(temp)))); - RETURN(Count = 0); - END; - IfcObjectTypeEnum.GROUP : - BEGIN - Count := SIZEOF(QUERY(temp <* Objects | NOT('IFC4.IFCGROUP' IN TYPEOF(temp)))); - RETURN(Count = 0); - END; - IfcObjectTypeEnum.PROJECT : - BEGIN - Count := SIZEOF(QUERY(temp <* Objects | NOT('IFC4.IFCPROJECT' IN TYPEOF(temp)))); - RETURN(Count = 0); - END; - OTHERWISE : RETURN(?); - END_CASE; -END_FUNCTION; - -FUNCTION IfcCorrectUnitAssignment -(Units : SET [1:?] OF IfcUnit) - : LOGICAL; - - LOCAL - NamedUnitNumber : INTEGER := 0; - DerivedUnitNumber : INTEGER := 0; - MonetaryUnitNumber : INTEGER := 0; - NamedUnitNames : SET OF IfcUnitEnum := []; - DerivedUnitNames : SET OF IfcDerivedUnitEnum := []; - END_LOCAL; - - NamedUnitNumber := SIZEOF(QUERY(temp <* Units | ('IFC4.IFCNAMEDUNIT' IN TYPEOF(temp)) AND NOT(temp\IfcNamedUnit.UnitType = IfcUnitEnum.USERDEFINED))); - DerivedUnitNumber := SIZEOF(QUERY(temp <* Units | ('IFC4.IFCDERIVEDUNIT' IN TYPEOF(temp)) AND NOT(temp\IfcDerivedUnit.UnitType = IfcDerivedUnitEnum.USERDEFINED))); - MonetaryUnitNumber := SIZEOF(QUERY(temp <* Units | 'IFC4.IFCMONETARYUNIT' IN TYPEOF(temp))); - - REPEAT i := 1 TO SIZEOF(Units); - IF (('IFC4.IFCNAMEDUNIT' IN TYPEOF(Units[i])) AND NOT(Units[i]\IfcNamedUnit.UnitType = IfcUnitEnum.USERDEFINED)) THEN - NamedUnitNames := NamedUnitNames + Units[i]\IfcNamedUnit.UnitType; - END_IF; - IF (('IFC4.IFCDERIVEDUNIT' IN TYPEOF(Units[i])) AND NOT(Units[i]\IfcDerivedUnit.UnitType = IfcDerivedUnitEnum.USERDEFINED)) THEN - DerivedUnitNames := DerivedUnitNames + Units[i]\IfcDerivedUnit.UnitType; - END_IF; - END_REPEAT; - - RETURN((SIZEOF(NamedUnitNames) = NamedUnitNumber) AND (SIZEOF(DerivedUnitNames) = DerivedUnitNumber) AND (MonetaryUnitNumber <= 1)); -END_FUNCTION; - -FUNCTION IfcCrossProduct -(Arg1, Arg2 : IfcDirection) - : IfcVector; -LOCAL - Mag : REAL; - Res : IfcDirection; - V1,V2 : LIST[3:3] OF REAL; - Result : IfcVector; -END_LOCAL; - - IF (NOT EXISTS (Arg1) OR (Arg1.Dim = 2)) OR (NOT EXISTS (Arg2) OR (Arg2.Dim = 2)) THEN - RETURN(?); - ELSE - BEGIN - V1 := IfcNormalise(Arg1)\IfcDirection.DirectionRatios; - - V2 := IfcNormalise(Arg2)\IfcDirection.DirectionRatios; - Res := IfcRepresentationItem() || IfcGeometricRepresentationItem () - || IfcDirection([(V1[2]*V2[3] - V1[3]*V2[2]), (V1[3]*V2[1] - V1[1]*V2[3]), (V1[1]*V2[2] - V1[2]*V2[1])]); - Mag := 0.0; - REPEAT i := 1 TO 3; - Mag := Mag + Res.DirectionRatios[i]*Res.DirectionRatios[i]; - END_REPEAT; - IF (Mag > 0.0) THEN - Result := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector(Res, SQRT(Mag)); - ELSE - Result := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector(Arg1, 0.0); - END_IF; - RETURN(Result); - END; - END_IF; -END_FUNCTION; - -FUNCTION IfcCurveDim -(Curve : IfcCurve) - : IfcDimensionCount; - - IF ('IFC4.IFCLINE' IN TYPEOF(Curve)) - THEN RETURN(Curve\IfcLine.Pnt.Dim); - END_IF; - IF ('IFC4.IFCCONIC' IN TYPEOF(Curve)) - THEN RETURN(Curve\IfcConic.Position.Dim); - END_IF; - IF ('IFC4.IFCPOLYLINE' IN TYPEOF(Curve)) - THEN RETURN(Curve\IfcPolyline.Points[1].Dim); - END_IF; - IF ('IFC4.IFCTRIMMEDCURVE' IN TYPEOF(Curve)) - THEN RETURN(IfcCurveDim(Curve\IfcTrimmedCurve.BasisCurve)); - END_IF; - IF ('IFC4.IFCCOMPOSITECURVE' IN TYPEOF(Curve)) - THEN RETURN(Curve\IfcCompositeCurve.Segments[1].Dim); - END_IF; - IF ('IFC4.IFCBSPLINECURVE' IN TYPEOF(Curve)) - THEN RETURN(Curve\IfcBSplineCurve.ControlPointsList[1].Dim); - END_IF; - IF ('IFC4.IFCOFFSETCURVE2D' IN TYPEOF(Curve)) - THEN RETURN(2); - END_IF; - IF ('IFC4.IFCOFFSETCURVE3D' IN TYPEOF(Curve)) - THEN RETURN(3); - END_IF; - IF ('IFC4.IFCPCURVE' IN TYPEOF(Curve)) - THEN RETURN(3); - END_IF; - IF ('IFC4.IFCINDEXEDPOLYCURVE' IN TYPEOF(Curve)) - THEN RETURN(Curve\IfcIndexedPolyCurve.Points.Dim); - END_IF; -RETURN (?); -END_FUNCTION; - -FUNCTION IfcCurveWeightsPositive -( B: IfcRationalBSplineCurveWithKnots) -: BOOLEAN; - - LOCAL - Result : BOOLEAN := TRUE; - END_LOCAL; - - REPEAT i := 0 TO B.UpperIndexOnControlPoints; - IF B.Weights[i] <= 0.0 THEN - Result := FALSE; - RETURN(Result); - END_IF; - END_REPEAT; - RETURN(Result); -END_FUNCTION; - -FUNCTION IfcDeriveDimensionalExponents -(UnitElements : SET [1:?] OF IfcDerivedUnitElement) - : IfcDimensionalExponents; - LOCAL - Result : IfcDimensionalExponents := - IfcDimensionalExponents(0, 0, 0, 0, 0, 0, 0); - END_LOCAL; - REPEAT i := LOINDEX(UnitElements) TO HIINDEX(UnitElements); - Result.LengthExponent := Result.LengthExponent + - (UnitElements[i].Exponent * - UnitElements[i].Unit.Dimensions.LengthExponent); - Result.MassExponent := Result.MassExponent + - (UnitElements[i].Exponent * - UnitElements[i].Unit.Dimensions.MassExponent); - Result.TimeExponent := Result.TimeExponent + - (UnitElements[i].Exponent * - UnitElements[i].Unit.Dimensions.TimeExponent); - Result.ElectricCurrentExponent := Result.ElectricCurrentExponent + - (UnitElements[i].Exponent * - UnitElements[i].Unit.Dimensions.ElectricCurrentExponent); - Result.ThermodynamicTemperatureExponent := Result.ThermodynamicTemperatureExponent + - (UnitElements[i].Exponent * - UnitElements[i].Unit.Dimensions.ThermodynamicTemperatureExponent); - Result.AmountOfSubstanceExponent := Result.AmountOfSubstanceExponent + - (UnitElements[i].Exponent * - UnitElements[i].Unit.Dimensions.AmountOfSubstanceExponent); - Result.LuminousIntensityExponent := Result.LuminousIntensityExponent + - (UnitElements[i].Exponent * - UnitElements[i].Unit.Dimensions.LuminousIntensityExponent); - END_REPEAT; - RETURN (Result); -END_FUNCTION; - -FUNCTION IfcDimensionsForSiUnit -(n : IfcSiUnitName ) : IfcDimensionalExponents; - CASE n OF - METRE : RETURN (IfcDimensionalExponents - (1, 0, 0, 0, 0, 0, 0)); - SQUARE_METRE : RETURN (IfcDimensionalExponents - (2, 0, 0, 0, 0, 0, 0)); - CUBIC_METRE : RETURN (IfcDimensionalExponents - (3, 0, 0, 0, 0, 0, 0)); - GRAM : RETURN (IfcDimensionalExponents - (0, 1, 0, 0, 0, 0, 0)); - SECOND : RETURN (IfcDimensionalExponents - (0, 0, 1, 0, 0, 0, 0)); - AMPERE : RETURN (IfcDimensionalExponents - (0, 0, 0, 1, 0, 0, 0)); - KELVIN : RETURN (IfcDimensionalExponents - (0, 0, 0, 0, 1, 0, 0)); - MOLE : RETURN (IfcDimensionalExponents - (0, 0, 0, 0, 0, 1, 0)); - CANDELA : RETURN (IfcDimensionalExponents - (0, 0, 0, 0, 0, 0, 1)); - RADIAN : RETURN (IfcDimensionalExponents - (0, 0, 0, 0, 0, 0, 0)); - STERADIAN : RETURN (IfcDimensionalExponents - (0, 0, 0, 0, 0, 0, 0)); - HERTZ : RETURN (IfcDimensionalExponents - (0, 0, -1, 0, 0, 0, 0)); - NEWTON : RETURN (IfcDimensionalExponents - (1, 1, -2, 0, 0, 0, 0)); - PASCAL : RETURN (IfcDimensionalExponents - (-1, 1, -2, 0, 0, 0, 0)); - JOULE : RETURN (IfcDimensionalExponents - (2, 1, -2, 0, 0, 0, 0)); - WATT : RETURN (IfcDimensionalExponents - (2, 1, -3, 0, 0, 0, 0)); - COULOMB : RETURN (IfcDimensionalExponents - (0, 0, 1, 1, 0, 0, 0)); - VOLT : RETURN (IfcDimensionalExponents - (2, 1, -3, -1, 0, 0, 0)); - FARAD : RETURN (IfcDimensionalExponents - (-2, -1, 4, 2, 0, 0, 0)); - OHM : RETURN (IfcDimensionalExponents - (2, 1, -3, -2, 0, 0, 0)); - SIEMENS : RETURN (IfcDimensionalExponents - (-2, -1, 3, 2, 0, 0, 0)); - WEBER : RETURN (IfcDimensionalExponents - (2, 1, -2, -1, 0, 0, 0)); - TESLA : RETURN (IfcDimensionalExponents - (0, 1, -2, -1, 0, 0, 0)); - HENRY : RETURN (IfcDimensionalExponents - (2, 1, -2, -2, 0, 0, 0)); - DEGREE_CELSIUS : RETURN (IfcDimensionalExponents - (0, 0, 0, 0, 1, 0, 0)); - LUMEN : RETURN (IfcDimensionalExponents - (0, 0, 0, 0, 0, 0, 1)); - LUX : RETURN (IfcDimensionalExponents - (-2, 0, 0, 0, 0, 0, 1)); - BECQUEREL : RETURN (IfcDimensionalExponents - (0, 0, -1, 0, 0, 0, 0)); - GRAY : RETURN (IfcDimensionalExponents - (2, 0, -2, 0, 0, 0, 0)); - SIEVERT : RETURN (IfcDimensionalExponents - (2, 0, -2, 0, 0, 0, 0)); - OTHERWISE : RETURN (IfcDimensionalExponents - (0, 0, 0, 0, 0, 0, 0)); - END_CASE; -END_FUNCTION; - -FUNCTION IfcDotProduct -(Arg1, Arg2 : IfcDirection) - : REAL; -LOCAL - Scalar : REAL; - Vec1, Vec2 : IfcDirection; - Ndim : INTEGER; -END_LOCAL; - - IF NOT EXISTS (Arg1) OR NOT EXISTS (Arg2) THEN - Scalar := ?; - ELSE - IF (Arg1.Dim <> Arg2.Dim) THEN - Scalar := ?; - ELSE - BEGIN - Vec1 := IfcNormalise(Arg1); - Vec2 := IfcNormalise(Arg2); - Ndim := Arg1.Dim; - Scalar := 0.0; - REPEAT i := 1 TO Ndim; - Scalar := Scalar + Vec1.DirectionRatios[i]*Vec2.DirectionRatios[i]; - END_REPEAT; - END; - END_IF; - END_IF; - RETURN (Scalar); -END_FUNCTION; - -FUNCTION IfcFirstProjAxis -(ZAxis, Arg : IfcDirection) : IfcDirection; -LOCAL - XAxis : IfcDirection; - V : IfcDirection; - Z : IfcDirection; - XVec : IfcVector; -END_LOCAL; - - IF (NOT EXISTS(ZAxis)) THEN - RETURN (?) ; - ELSE - Z := IfcNormalise(ZAxis); - IF NOT EXISTS(Arg) THEN - IF (Z.DirectionRatios <> [1.0,0.0,0.0]) THEN - V := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([1.0,0.0,0.0]); - ELSE - V := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([0.0,1.0,0.0]); - END_IF; - ELSE - IF (Arg.Dim <> 3) THEN - RETURN (?) ; - END_IF; - IF ((IfcCrossProduct(Arg,Z).Magnitude) = 0.0) THEN - RETURN (?); - ELSE - V := IfcNormalise(Arg); - END_IF; - END_IF; - XVec := IfcScalarTimesVector(IfcDotProduct(V, Z), Z); - XAxis := IfcVectorDifference(V, XVec).Orientation; - XAxis := IfcNormalise(XAxis); - END_IF; - RETURN(XAxis); -END_FUNCTION; - -FUNCTION IfcGetBasisSurface -(C : IfcCurveOnSurface) : SET[0:2] OF IfcSurface; - - LOCAL - Surfs : SET[0:2] OF IfcSurface; - N : INTEGER; - END_LOCAL; - - Surfs := []; - IF 'IFC4.IFCPCURVE' IN TYPEOF (C) THEN - Surfs := [C\IfcPCurve.BasisSurface]; - ELSE - IF 'IFC4.IFCSURFACECURVE' IN TYPEOF (C) THEN - N := SIZEOF(C\IfcSurfaceCurve.AssociatedGeometry); - REPEAT i := 1 TO N; - Surfs := Surfs + IfcAssociatedSurface(C\IfcSurfaceCurve.AssociatedGeometry[i]); - END_REPEAT; - END_IF; - END_IF; - IF 'IFC4.IFCCOMPOSITECURVEONSURFACE' IN TYPEOF (C) THEN - - (* For an IfcCompositeCurveOnSurface the BasisSurface is the intersection of the BasisSurface of all the segments. *) - - N := SIZEOF(C\IfcCompositeCurve.Segments); - Surfs := IfcGetBasisSurface(C\IfcCompositeCurve.Segments[1].ParentCurve); - IF N > 1 THEN - REPEAT i := 2 TO N; - Surfs := Surfs * IfcGetBasisSurface(C\IfcCompositeCurve.Segments[1].ParentCurve); - END_REPEAT; - END_IF; - END_IF; - RETURN(Surfs); -END_FUNCTION; - -FUNCTION IfcListToArray -(Lis : LIST [0:?] OF GENERIC : T; - Low,U : INTEGER) : ARRAY OF GENERIC : T; - LOCAL - N : INTEGER; - Res : ARRAY [Low:U] OF GENERIC : T; - END_LOCAL; - - N := SIZEOF(Lis); - IF (N <> (U-Low +1)) THEN - RETURN(?); - ELSE - Res := [Lis[1] : N]; - REPEAT i := 2 TO N; - Res[Low+i-1] := Lis[i]; - END_REPEAT; - RETURN(Res); - END_IF; -END_FUNCTION; - -FUNCTION IfcLoopHeadToTail -(ALoop : IfcEdgeLoop) : LOGICAL; - LOCAL - N : INTEGER; - P : LOGICAL := TRUE; - END_LOCAL; - - N := SIZEOF (ALoop.EdgeList); - REPEAT i := 2 TO N; - P := P AND (ALoop.EdgeList[i-1].EdgeEnd :=: - ALoop.EdgeList[i].EdgeStart); - END_REPEAT; - RETURN (P); -END_FUNCTION; - -FUNCTION IfcMakeArrayOfArray -(Lis : LIST[1:?] OF LIST [1:?] OF GENERIC : T; - Low1, U1, Low2, U2 : INTEGER): -ARRAY [Low1:U1] OF ARRAY [Low2:U2] OF GENERIC : T; - - LOCAL - Res : ARRAY[Low1:U1] OF ARRAY [Low2:U2] OF GENERIC : T; - END_LOCAL; - - (* Check input dimensions for consistency *) - IF (U1-Low1+1) <> SIZEOF(Lis) THEN - RETURN (?); - END_IF; - IF (U2 - Low2 + 1 ) <> SIZEOF(Lis[1]) THEN - RETURN (?) ; - END_IF; - - (* Initialise Res with values from Lis[1] *) - Res := [IfcListToArray(Lis[1], Low2, U2) : (U1-Low1 + 1)]; - REPEAT i := 2 TO HIINDEX(Lis); - IF (U2-Low2+1) <> SIZEOF(Lis[i]) THEN - RETURN (?); - END_IF; - Res[Low1+i-1] := IfcListToArray(Lis[i], Low2, U2); - END_REPEAT; - RETURN (Res); -END_FUNCTION; - -FUNCTION IfcMlsTotalThickness -(LayerSet : IfcMaterialLayerSet) : IfcLengthMeasure; - LOCAL - Max : IfcLengthMeasure := LayerSet.MaterialLayers[1].LayerThickness; - END_LOCAL; - - IF SIZEOF(LayerSet.MaterialLayers) > 1 THEN - REPEAT i := 2 TO HIINDEX(LayerSet.MaterialLayers); - Max := Max + LayerSet.MaterialLayers[i].LayerThickness; - END_REPEAT; - END_IF; - RETURN (Max); -END_FUNCTION; - -FUNCTION IfcNormalise -(Arg : IfcVectorOrDirection) - : IfcVectorOrDirection; -LOCAL - Ndim : INTEGER; - V : IfcDirection - := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([1.,0.]); - Vec : IfcVector - := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector ( - IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([1.,0.]), 1.); - Mag : REAL; - Result : IfcVectorOrDirection - := V; -END_LOCAL; - - IF NOT EXISTS (Arg) THEN - RETURN (?); - ELSE - IF 'IFC4.IFCVECTOR' IN TYPEOF(Arg) THEN - BEGIN - Ndim := Arg\IfcVector.Dim; - V.DirectionRatios := Arg\IfcVector.Orientation.DirectionRatios; - Vec.Magnitude := Arg\IfcVector.Magnitude; - Vec.Orientation := V; - IF Arg\IfcVector.Magnitude = 0.0 THEN - RETURN(?); - ELSE - Vec.Magnitude := 1.0; - END_IF; - END; - ELSE - BEGIN - Ndim := Arg\IfcDirection.Dim; - V.DirectionRatios := Arg\IfcDirection.DirectionRatios; - END; - END_IF; - - Mag := 0.0; - REPEAT i := 1 TO Ndim; - Mag := Mag + V.DirectionRatios[i]*V.DirectionRatios[i]; - END_REPEAT; - IF Mag > 0.0 THEN - Mag := SQRT(Mag); - REPEAT i := 1 TO Ndim; - V.DirectionRatios[i] := V.DirectionRatios[i]/Mag; - END_REPEAT; - IF 'IFC4.IFCVECTOR' IN TYPEOF(arg) THEN - Vec.Orientation := V; - Result := Vec; - ELSE - Result := V; - END_IF; - ELSE - RETURN(?); - END_IF; - END_IF; - RETURN (Result); -END_FUNCTION; - -FUNCTION IfcOrthogonalComplement -(Vec : IfcDirection) - : IfcDirection; -LOCAL - Result : IfcDirection ; -END_LOCAL; - IF NOT EXISTS (Vec) OR (Vec.Dim <> 2) THEN - RETURN(?); - ELSE - Result := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([-Vec.DirectionRatios[2], Vec.DirectionRatios[1]]); - RETURN(Result); - END_IF; -END_FUNCTION; - -FUNCTION IfcPathHeadToTail -(APath : IfcPath) : LOGICAL; - LOCAL - N : INTEGER := 0; - P : LOGICAL := UNKNOWN; - END_LOCAL; - N := SIZEOF (APath.EdgeList); - REPEAT i := 2 TO N; - P := P AND (APath.EdgeList[i-1].EdgeEnd :=: - APath.EdgeList[i].EdgeStart); - END_REPEAT; - RETURN (P); -END_FUNCTION; - -FUNCTION IfcPointListDim -(PointList : IfcCartesianPointList) - : IfcDimensionCount; - - IF ('IFC4.IFCCARTESIANPOINTLIST2D' IN TYPEOF(PointList)) - THEN RETURN(2); - END_IF; - IF ('IFC4.IFCCARTESIANPOINTLIST3D' IN TYPEOF(PointList)) - THEN RETURN(3); - END_IF; - RETURN (?); -END_FUNCTION; - -FUNCTION IfcSameAxis2Placement -(ap1, ap2 : IfcAxis2Placement; Epsilon : REAL) - : LOGICAL ; - - RETURN (IfcSameDirection(ap1.P[1],ap2.P[1],Epsilon) AND - IfcSameDirection(ap1.P[2],ap2.P[2],Epsilon) AND - IfcSameCartesianPoint(ap1.Location,ap1.Location,Epsilon)); -END_FUNCTION; - -FUNCTION IfcSameCartesianPoint -(cp1, cp2 : IfcCartesianPoint; Epsilon : REAL) - : LOGICAL; - - LOCAL - cp1x : REAL := cp1.Coordinates[1]; - cp1y : REAL := cp1.Coordinates[2]; - cp1z : REAL := 0; - cp2x : REAL := cp2.Coordinates[1]; - cp2y : REAL := cp2.Coordinates[2]; - cp2z : REAL := 0; - END_LOCAL; - - IF (SIZEOF(cp1.Coordinates) > 2) THEN - cp1z := cp1.Coordinates[3]; - END_IF; - - IF (SIZEOF(cp2.Coordinates) > 2) THEN - cp2z := cp2.Coordinates[3]; - END_IF; - - RETURN (IfcSameValue(cp1x,cp2x,Epsilon) AND - IfcSameValue(cp1y,cp2y,Epsilon) AND - IfcSameValue(cp1z,cp2z,Epsilon)); -END_FUNCTION; - -FUNCTION IfcSameDirection -(dir1, dir2 : IfcDirection; Epsilon : REAL) - : LOGICAL; - LOCAL - dir1x : REAL := dir1.DirectionRatios[1]; - dir1y : REAL := dir1.DirectionRatios[2]; - dir1z : REAL := 0; - dir2x : REAL := dir2.DirectionRatios[1]; - dir2y : REAL := dir2.DirectionRatios[2]; - dir2z : REAL := 0; - END_LOCAL; - - IF (SIZEOF(dir1.DirectionRatios) > 2) THEN - dir1z := dir1.DirectionRatios[3]; - END_IF; - - IF (SIZEOF(dir2.DirectionRatios) > 2) THEN - dir2z := dir2.DirectionRatios[3]; - END_IF; - - RETURN (IfcSameValue(dir1x,dir2x,Epsilon) AND - IfcSameValue(dir1y,dir2y,Epsilon) AND - IfcSameValue(dir1z,dir2z,Epsilon)); -END_FUNCTION; - -FUNCTION IfcSameValidPrecision -(Epsilon1, Epsilon2 : REAL) : LOGICAL ; - LOCAL - ValidEps1, ValidEps2 : REAL; - DefaultEps : REAL := 0.000001; - DerivationOfEps : REAL := 1.001; - UpperEps : REAL := 1.0; - END_LOCAL; - - ValidEps1 := NVL(Epsilon1, DefaultEps); - ValidEps2 := NVL(Epsilon2, DefaultEps); - RETURN ((0.0 < ValidEps1) AND (ValidEps1 <= (DerivationOfEps * ValidEps2)) AND - (ValidEps2 <= (DerivationOfEps * ValidEps1)) AND (ValidEps2 < UpperEps)); -END_FUNCTION; - -FUNCTION IfcSameValue -(Value1, Value2 : REAL; Epsilon : REAL) - : LOGICAL; - LOCAL - ValidEps : REAL; - DefaultEps : REAL := 0.000001; - END_LOCAL; - - ValidEps := NVL(Epsilon, DefaultEps); - RETURN ((Value1 + ValidEps > Value2) AND (Value1 < Value2 + ValidEps)); -END_FUNCTION; - -FUNCTION IfcScalarTimesVector -(Scalar : REAL; Vec : IfcVectorOrDirection) - : IfcVector; -LOCAL - V : IfcDirection; - Mag : REAL; - Result : IfcVector; -END_LOCAL; - - IF NOT EXISTS (Scalar) OR NOT EXISTS (Vec) THEN - RETURN (?) ; - ELSE - IF 'IFC4.IFCVECTOR' IN TYPEOF (Vec) THEN - V := Vec\IfcVector.Orientation; - Mag := Scalar * Vec\IfcVector.Magnitude; - ELSE - V := Vec; - Mag := Scalar; - END_IF; - IF (Mag < 0.0 ) THEN - REPEAT i := 1 TO SIZEOF(V.DirectionRatios); - V.DirectionRatios[i] := -V.DirectionRatios[i]; - END_REPEAT; - Mag := -Mag; - END_IF; - Result := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector(IfcNormalise(V), Mag); - END_IF; - RETURN (Result); -END_FUNCTION; - -FUNCTION IfcSecondProjAxis -(ZAxis, XAxis, Arg: IfcDirection) - : IfcDirection; -LOCAL - YAxis : IfcVector; - V : IfcDirection; - Temp : IfcVector; -END_LOCAL; - - IF NOT EXISTS(Arg) THEN - V := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([0.0,1.0,0.0]); - ELSE - V := Arg; - END_IF; - Temp := IfcScalarTimesVector(IfcDotProduct(V, ZAxis), ZAxis); - YAxis := IfcVectorDifference(V, Temp); - Temp := IfcScalarTimesVector(IfcDotProduct(V, XAxis), XAxis); - YAxis := IfcVectorDifference(YAxis, Temp); - YAxis := IfcNormalise(YAxis); - RETURN(YAxis.Orientation); -END_FUNCTION; - -FUNCTION IfcShapeRepresentationTypes -(RepType : IfcLabel; Items : SET OF IfcRepresentationItem) : LOGICAL; - - LOCAL - Count : INTEGER := 0; - END_LOCAL; - - CASE RepType OF - 'Point' : - BEGIN - Count := SIZEOF(QUERY(temp <* Items | ('IFC4.IFCPOINT' IN TYPEOF(temp)))); - END; - - 'PointCloud' : - BEGIN - Count := SIZEOF(QUERY(temp <* Items | ('IFC4.IFCCARTESIANPOINTLIST3D' IN TYPEOF(temp)))); - END; - - 'Curve' : - BEGIN - Count := SIZEOF(QUERY(temp <* Items | ('IFC4.IFCCURVE' IN TYPEOF(temp)))); - END; - - 'Curve2D' : - BEGIN - Count := SIZEOF(QUERY(temp <* Items | ('IFC4.IFCCURVE' IN TYPEOF(temp)) - AND (temp\IfcCurve.Dim = 2))); - END; - - 'Curve3D' : - BEGIN - Count := SIZEOF(QUERY(temp <* Items | ('IFC4.IFCCURVE' IN TYPEOF(temp)) - AND (temp\IfcCurve.Dim = 3))); - END; - - 'Surface' : - BEGIN - Count := SIZEOF(QUERY(temp <* Items | ('IFC4.IFCSURFACE' IN TYPEOF(temp)))); - END; - - 'Surface2D' : - BEGIN - Count := SIZEOF(QUERY(temp <* Items | ('IFC4.IFCSURFACE' IN TYPEOF(temp)) - AND (temp\IfcSurface.Dim = 2))); - END; - - 'Surface3D' : - BEGIN - Count := SIZEOF(QUERY(temp <* Items | ('IFC4.IFCSURFACE' IN TYPEOF(temp)) - AND (temp\IfcSurface.Dim = 3))); - END; - - 'FillArea' : - BEGIN - Count := SIZEOF(QUERY(temp <* Items | ('IFC4.IFCANNOTATIONFILLAREA' IN TYPEOF(temp)))); - END; - - 'Text' : - BEGIN - Count := SIZEOF(QUERY(temp <* Items | ('IFC4.IFCTEXTLITERAL' IN TYPEOF(temp)))); - END; - - 'AdvancedSurface' : - BEGIN - Count := SIZEOF(QUERY(temp <* Items | 'IFC4.IFCBSPLINESURFACE' IN TYPEOF(temp))); - END; - - 'Annotation2D' : - BEGIN - Count := SIZEOF(QUERY(temp <* Items | ( - SIZEOF(TYPEOF(temp) * [ - 'IFC4.IFCPOINT', - 'IFC4.IFCCURVE', - 'IFC4.IFCGEOMETRICCURVESET', - 'IFC4.IFCANNOTATIONFILLAREA', - 'IFC4.IFCTEXTLITERAL']) = 1) - )); - END; - - 'GeometricSet' : - BEGIN - Count := SIZEOF(QUERY(temp <* Items | ('IFC4.IFCGEOMETRICSET' IN TYPEOF(temp)) - OR ('IFC4.IFCPOINT' IN TYPEOF(temp)) - OR ('IFC4.IFCCURVE' IN TYPEOF(temp)) - OR ('IFC4.IFCSURFACE' IN TYPEOF(temp)))); - END; - - 'GeometricCurveSet' : - BEGIN - Count := SIZEOF(QUERY(temp <* Items | ('IFC4.IFCGEOMETRICCURVESET' IN TYPEOF(temp)) - OR ('IFC4.IFCGEOMETRICSET' IN TYPEOF(temp)) - OR ('IFC4.IFCPOINT' IN TYPEOF(temp)) - OR ('IFC4.IFCCURVE' IN TYPEOF(temp)))); - REPEAT i:=1 TO HIINDEX(Items); - IF ('IFC4.IFCGEOMETRICSET' IN TYPEOF(Items[i])) - THEN - IF (SIZEOF(QUERY(temp <* Items[i]\IfcGeometricSet.Elements | 'IFC4.IFCSURFACE' IN TYPEOF(temp))) > 0) - THEN - Count := Count - 1; - END_IF; - END_IF; - END_REPEAT; - END; - - 'Tessellation' : - BEGIN - Count := SIZEOF(QUERY(temp <* Items | 'IFC4.IFCTESSELLATEDITEM' IN TYPEOF(temp))); - END; - - 'SurfaceOrSolidModel' : - BEGIN - Count := SIZEOF(QUERY(temp <* Items | SIZEOF([ - 'IFC4.IFCTESSELLATEDITEM', - 'IFC4.IFCSHELLBASEDSURFACEMODEL', - 'IFC4.IFCFACEBASEDSURFACEMODEL', - 'IFC4.IFCSOLIDMODEL'] * TYPEOF(temp)) >= 1 - )); - END; - - 'SurfaceModel' : - BEGIN - Count := SIZEOF(QUERY(temp <* Items | SIZEOF([ - 'IFC4.IFCTESSELLATEDITEM', - 'IFC4.IFCSHELLBASEDSURFACEMODEL', - 'IFC4.IFCFACEBASEDSURFACEMODEL'] * TYPEOF(temp)) >= 1 - )); - END; - - 'SolidModel' : - BEGIN - Count := SIZEOF(QUERY(temp <* Items | ('IFC4.IFCSOLIDMODEL' IN TYPEOF(temp)))); - END; - - 'SweptSolid' : - BEGIN - Count := SIZEOF(QUERY(temp <* Items | (SIZEOF([ - 'IFC4.IFCEXTRUDEDAREASOLID', - 'IFC4.IFCREVOLVEDAREASOLID'] * TYPEOF(temp)) >= 1 - ) AND (SIZEOF([ - 'IFC4.IFCEXTRUDEDAREASOLIDTAPERED', - 'IFC4.IFCREVOLVEDAREASOLIDTAPERED'] * TYPEOF(temp)) = 0 - ) - )); - END; - - 'AdvancedSweptSolid' : - BEGIN - Count := SIZEOF(QUERY(temp <* Items | SIZEOF([ - 'IFC4.IFCSWEPTAREASOLID', - 'IFC4.IFCSWEPTDISKSOLID'] * TYPEOF(temp)) >= 1 - )); - END; - - 'CSG' : - BEGIN - Count := SIZEOF(QUERY(temp <* Items | SIZEOF([ - 'IFC4.IFCBOOLEANRESULT', - 'IFC4.IFCCSGPRIMITIVE3D', - 'IFC4.IFCCSGSOLID'] * TYPEOF(temp)) >= 1 - )); - END; - - 'Clipping' : - BEGIN - Count := SIZEOF(QUERY(temp <* Items | SIZEOF([ - 'IFC4.IFCCSGSOLID', - 'IFC4.IFCBOOLEANCLIPPINGRESULT'] * TYPEOF(temp)) >= 1 - )); - END; - - 'Brep' : - BEGIN - Count := SIZEOF(QUERY(temp <* Items | ('IFC4.IFCFACETEDBREP' IN TYPEOF(temp)))); - END; - - 'AdvancedBrep' : - BEGIN - Count := SIZEOF(QUERY(temp <* Items | ('IFC4.IFCMANIFOLDSOLIDBREP' IN TYPEOF(temp)))); - END; - - 'BoundingBox' : - BEGIN - Count := SIZEOF(QUERY(temp <* Items | ('IFC4.IFCBOUNDINGBOX' IN TYPEOF(temp)))); - IF (SIZEOF(Items) > 1) - THEN - Count := 0; - END_IF; - END; - - 'SectionedSpine' : - BEGIN - Count := SIZEOF(QUERY(temp <* Items | ('IFC4.IFCSECTIONEDSPINE' IN TYPEOF(temp)))); - END; - - 'LightSource' : - BEGIN - Count := SIZEOF(QUERY(temp <* Items | ('IFC4.IFCLIGHTSOURCE' IN TYPEOF(temp)))); - END; - - 'MappedRepresentation' : - BEGIN - Count := SIZEOF(QUERY(temp <* Items | ('IFC4.IFCMAPPEDITEM' IN TYPEOF(temp)))); - END; - - OTHERWISE : RETURN(?); - END_CASE; - RETURN (Count = SIZEOF(Items)); -END_FUNCTION; - -FUNCTION IfcSurfaceWeightsPositive -( B: IfcRationalBSplineSurfaceWithKnots) -: BOOLEAN; - - LOCAL - Result : BOOLEAN := TRUE; - END_LOCAL; - - REPEAT i := 0 TO B\IfcBSplineSurface.UUpper; - REPEAT j := 0 TO B\IfcBSplineSurface.VUpper; - IF (B.Weights[i][j] <= 0.0) THEN - Result := FALSE; - RETURN(Result); - END_IF; - END_REPEAT; - END_REPEAT; - RETURN(Result); -END_FUNCTION; - -FUNCTION IfcTaperedSweptAreaProfiles -(StartArea, EndArea : IfcProfileDef) - : LOGICAL; - -LOCAL - Result : LOGICAL := FALSE; -END_LOCAL; - -IF ('IFC4.IFCPARAMETERIZEDPROFILEDEF' IN TYPEOF(StartArea)) THEN - IF ('IFC4.IFCDERIVEDPROFILEDEF' IN TYPEOF(EndArea)) THEN - Result := (StartArea :=: EndArea\IfcDerivedProfileDef.ParentProfile); - ELSE - Result := (TYPEOF(StartArea) = TYPEOF(EndArea)); - END_IF; -ELSE - IF ('IFC4.IFCDERIVEDPROFILEDEF' IN TYPEOF(EndArea)) THEN - Result := (StartArea :=: EndArea\IfcDerivedProfileDef.ParentProfile); - ELSE - Result := FALSE; - END_IF; -END_IF; - -RETURN(Result); -END_FUNCTION; - -FUNCTION IfcTopologyRepresentationTypes -(RepType : IfcLabel; Items : SET OF IfcRepresentationItem) : LOGICAL; - - LOCAL - Count : INTEGER := 0; - END_LOCAL; - - CASE RepType OF - 'Vertex' : - BEGIN - Count := SIZEOF(QUERY(temp <* Items | - ('IFC4.IFCVERTEX' IN TYPEOF(temp)))); - END; - 'Edge' : - BEGIN - Count := SIZEOF(QUERY(temp <* Items | - ('IFC4.IFCEDGE' IN TYPEOF(temp)))); - END; - 'Path' : - BEGIN - Count := SIZEOF(QUERY(temp <* Items | - ('IFC4.IFCPATH' IN TYPEOF(temp)))); - END; - 'Face' : - BEGIN - Count := SIZEOF(QUERY(temp <* Items | - ('IFC4.IFCFACE' IN TYPEOF(temp)))); - END; - 'Shell' : - BEGIN - Count := SIZEOF(QUERY(temp <* Items | - ('IFC4.IFCOPENSHELL' IN TYPEOF(temp)) - OR ('IFC4.IFCCLOSEDSHELL' IN TYPEOF(temp)))); - END; - 'Undefined': RETURN(TRUE); - OTHERWISE : RETURN(?); - END_CASE; - RETURN (Count = SIZEOF(Items)); -END_FUNCTION; - -FUNCTION IfcUniqueDefinitionNames -(Relations : SET [1:?] OF IfcRelDefinesByProperties) -:LOGICAL; - -LOCAL - Definition : IfcPropertySetDefinitionSelect; - DefinitionSet : IfcPropertySetDefinitionSet; - Properties : SET OF IfcPropertySetDefinition := []; - Result : LOGICAL; -END_LOCAL; - -IF SIZEOF(Relations) = 0 THEN - RETURN(TRUE); -END_IF; - -REPEAT i:=1 TO HIINDEX(Relations); - Definition := Relations[i].RelatingPropertyDefinition; - IF 'IFC4.IFCPROPERTYSETDEFINITION' IN TYPEOF(Definition) THEN - Properties := Properties + Definition; - ELSE - IF 'IFC4.IFCPROPERTYSETDEFINITIONSET' IN TYPEOF(Definition) THEN - BEGIN - DefinitionSet := Definition; - REPEAT j:= 1 TO HIINDEX(DefinitionSet); - Properties := Properties + DefinitionSet[j]; - END_REPEAT; - END; - END_IF; - END_IF; -END_REPEAT; - -Result := IfcUniquePropertySetNames(Properties); -RETURN (Result); -END_FUNCTION; - -FUNCTION IfcUniquePropertyName -(Properties : SET [1:?] OF IfcProperty) - :LOGICAL; - - LOCAL - Names : SET OF IfcIdentifier := []; - END_LOCAL; - - REPEAT i:=1 TO HIINDEX(Properties); - Names := Names + Properties[i].Name; - END_REPEAT; - - RETURN (SIZEOF(Names) = SIZEOF(Properties)); -END_FUNCTION; - -FUNCTION IfcUniquePropertySetNames -(Properties : SET [1:?] OF IfcPropertySetDefinition) -:LOGICAL; - -LOCAL - Names : SET OF IfcLabel := []; - Unnamed : INTEGER := 0; -END_LOCAL; - -REPEAT i:=1 TO HIINDEX(Properties); - IF 'IFC4.IFCPROPERTYSET' IN TYPEOF(Properties[i]) THEN - Names := Names + Properties[i]\IfcRoot.Name; - ELSE - Unnamed := Unnamed + 1; - END_IF; -END_REPEAT; - -RETURN (SIZEOF(Names) + Unnamed = SIZEOF(Properties)); -END_FUNCTION; - -FUNCTION IfcUniquePropertyTemplateNames -(Properties : SET [1:?] OF IfcPropertyTemplate) -:LOGICAL; - -LOCAL - Names : SET OF IfcLabel := []; -END_LOCAL; - -REPEAT i:=1 TO HIINDEX(Properties); - Names := Names + Properties[i].Name; -END_REPEAT; -RETURN (SIZEOF(Names) = SIZEOF(Properties)); -END_FUNCTION; - -FUNCTION IfcUniqueQuantityNames -(Properties : SET [1:?] OF IfcPhysicalQuantity) -:LOGICAL; - -LOCAL - Names : SET OF IfcLabel := []; -END_LOCAL; - -REPEAT i:=1 TO HIINDEX(Properties); - Names := Names + Properties[i].Name; -END_REPEAT; -RETURN (SIZEOF(Names) = SIZEOF(Properties)); -END_FUNCTION; - -FUNCTION IfcVectorDifference -(Arg1, Arg2 : IfcVectorOrDirection) - : IfcVector; -LOCAL - Result : IfcVector; - Res, Vec1, Vec2 : IfcDirection; - Mag, Mag1, Mag2 : REAL; - Ndim : INTEGER; -END_LOCAL; - - IF ((NOT EXISTS (Arg1)) OR (NOT EXISTS (Arg2))) OR (Arg1.Dim <> Arg2.Dim) THEN - RETURN (?) ; - ELSE - BEGIN - IF 'IFC4.IFCVECTOR' IN TYPEOF(Arg1) THEN - Mag1 := Arg1\IfcVector.Magnitude; - Vec1 := Arg1\IfcVector.Orientation; - ELSE - Mag1 := 1.0; - Vec1 := Arg1; - END_IF; - IF 'IFC4.IFCVECTOR' IN TYPEOF(Arg2) THEN - Mag2 := Arg2\IfcVector.Magnitude; - Vec2 := Arg2\IfcVector.Orientation; - ELSE - Mag2 := 1.0; - Vec2 := Arg2; - END_IF; - Vec1 := IfcNormalise (Vec1); - Vec2 := IfcNormalise (Vec2); - Ndim := SIZEOF(Vec1.DirectionRatios); - Mag := 0.0; - Res := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([0.0:Ndim]); - - REPEAT i := 1 TO Ndim; - Res.DirectionRatios[i] := Mag1*Vec1.DirectionRatios[i] - Mag2*Vec2.DirectionRatios[i]; - Mag := Mag + (Res.DirectionRatios[i]*Res.DirectionRatios[i]); - END_REPEAT; - - IF (Mag > 0.0 ) THEN - Result := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector( Res, SQRT(Mag)); - ELSE - Result := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector( Vec1, 0.0); - END_IF; - END; - END_IF; - RETURN (Result); -END_FUNCTION; - -FUNCTION IfcVectorSum -(Arg1, Arg2 : IfcVectorOrDirection) - : IfcVector; -LOCAL - Result : IfcVector; - Res, Vec1, Vec2 : IfcDirection; - Mag, Mag1, Mag2 : REAL; - Ndim : INTEGER; -END_LOCAL; - - IF ((NOT EXISTS (Arg1)) OR (NOT EXISTS (Arg2))) OR (Arg1.Dim <> Arg2.Dim) THEN - RETURN (?) ; - ELSE - BEGIN - IF 'IFC4.IFCVECTOR' IN TYPEOF(Arg1) THEN - Mag1 := Arg1\IfcVector.Magnitude; - Vec1 := Arg1\IfcVector.Orientation; - ELSE - Mag1 := 1.0; - Vec1 := Arg1; - END_IF; - IF 'IFC4.IFCVECTOR' IN TYPEOF(Arg2) THEN - Mag2 := Arg2\IfcVector.Magnitude; - Vec2 := Arg2\IfcVector.Orientation; - ELSE - Mag2 := 1.0; - Vec2 := Arg2; - END_IF; - Vec1 := IfcNormalise (Vec1); - Vec2 := IfcNormalise (Vec2); - Ndim := SIZEOF(Vec1.DirectionRatios); - Mag := 0.0; - Res := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([0.0:Ndim]); - - REPEAT i := 1 TO Ndim; - Res.DirectionRatios[i] := Mag1*Vec1.DirectionRatios[i] + Mag2*Vec2.DirectionRatios[i]; - Mag := Mag + (Res.DirectionRatios[i]*Res.DirectionRatios[i]); - END_REPEAT; - - IF (Mag > 0.0 ) THEN - Result := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector( Res, SQRT(Mag)); - ELSE - Result := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector( Vec1, 0.0); - END_IF; - END; - END_IF; - RETURN (Result); -END_FUNCTION; - -RULE IfcRepresentationContextSameWCS FOR - (IfcGeometricRepresentationContext); -LOCAL - IsDifferent : LOGICAL := FALSE; -END_LOCAL; - IF (SIZEOF(IfcGeometricRepresentationContext) > 1) - THEN - REPEAT i := 2 TO HIINDEX(IfcGeometricRepresentationContext); - IF (IfcGeometricRepresentationContext[1].WorldCoordinateSystem :<>: IfcGeometricRepresentationContext[i].WorldCoordinateSystem) - THEN - IsDifferent := (NOT(IfcSameValidPrecision(IfcGeometricRepresentationContext[1].Precision, - IfcGeometricRepresentationContext[i].Precision))) - OR (NOT(IfcSameAxis2Placement(IfcGeometricRepresentationContext[1].WorldCoordinateSystem, - IfcGeometricRepresentationContext[i].WorldCoordinateSystem, - IfcGeometricRepresentationContext[1].Precision))); - IF (IsDifferent = TRUE) THEN - ESCAPE; - END_IF; - END_IF; - END_REPEAT; - END_IF; - WHERE - WR1 : IsDifferent = FALSE; -END_RULE; - -RULE IfcSingleProjectInstance FOR - (IfcProject); - - WHERE - WR1 : SIZEOF(IfcProject) <= 1; -END_RULE; - -END_SCHEMA; diff --git a/scripts/IFCImporter/CppGenerator.py b/scripts/StepImporter/CppGenerator.py similarity index 89% rename from scripts/IFCImporter/CppGenerator.py rename to scripts/StepImporter/CppGenerator.py index a05716619..156f19523 100644 --- a/scripts/IFCImporter/CppGenerator.py +++ b/scripts/StepImporter/CppGenerator.py @@ -5,7 +5,7 @@ # Open Asset Import Library (ASSIMP) # --------------------------------------------------------------------------- # -# Copyright (c) 2006-2010, ASSIMP Development Team +# Copyright (c) 2006-2018, ASSIMP Development Team # # All rights reserved. # @@ -48,11 +48,27 @@ if sys.version_info < (3, 0): print("must use python 3.0 or greater") sys.exit(-2) -input_template_h = 'IFCReaderGen.h.template' -input_template_cpp = 'IFCReaderGen.cpp.template' +use_ifc_template = False + +input_step_template_h = 'StepReaderGen.h.template' +input_step_template_cpp = 'StepReaderGen.cpp.template' +input_ifc_template_h = 'IFCReaderGen.h.template' +input_ifc_template_cpp = 'IFCReaderGen.cpp.template' -output_file_h = os.path.join('..','..','code','IFCReaderGen.h') -output_file_cpp = os.path.join('..','..','code','IFCReaderGen.cpp') +cpp_keywords = "class" + +output_file_h = "" +output_file_cpp = "" +if (use_ifc_template ): + input_template_h = input_ifc_template_h + input_template_cpp = input_ifc_template_cpp + output_file_h = os.path.join('..','..','code','IFCReaderGen.h') + output_file_cpp = os.path.join('..','..','code','IFCReaderGen.cpp') +else: + input_template_h = input_step_template_h + input_template_cpp = input_step_template_cpp + output_file_h = os.path.join('..','..','code/Importer/StepFile','StepReaderGen.h') + output_file_cpp = os.path.join('..','..','code/Importer/StepFile','StepReaderGen.cpp') template_entity_predef = '\tstruct {entity};\n' template_entity_predef_ni = '\ttypedef NotImplemented {entity}; // (not currently used by Assimp)\n' @@ -99,7 +115,6 @@ template_converter_epilogue = '\treturn base;' import ExpressReader - def get_list_bounds(collection_spec): start,end = [(int(n) if n!='?' else 0) for n in re.findall(r'(\d+|\?)',collection_spec)] return start,end @@ -221,9 +236,11 @@ def work(filename): schema = ExpressReader.read(filename,silent=True) entities, stub_decls, schema_table, converters, typedefs, predefs = '','',[],'','','' - + entitylist = 'ifc_entitylist.txt' + if not use_ifc_template: + entitylist = 'step_entitylist.txt' whitelist = [] - with open('entitylist.txt', 'rt') as inp: + with open(entitylist, 'rt') as inp: whitelist = [n.strip() for n in inp.read().split('\n') if n[:1]!='#' and n.strip()] schema.whitelist = set() @@ -242,12 +259,14 @@ def work(filename): schema.blacklist_partial -= schema.whitelist schema.whitelist |= schema.blacklist_partial + # Generate list with reserved keywords from c++ + cpp_types = cpp_keywords.split(',') + # uncomment this to disable automatic code reduction based on whitelisting all used entities # (blacklisted entities are those who are in the whitelist and may be instanced, but will # only be accessed through a pointer to a base-class. #schema.whitelist = set(schema.entities.keys()) #schema.blacklist_partial = set() - for ntype in schema.types.values(): typedefs += gen_type_struct(ntype,schema) schema_table.append(template_schema_type.format(normalized_name=ntype.name.lower())) @@ -256,6 +275,9 @@ def work(filename): for entity in sorted_entities: parent = entity.parent+',' if entity.parent else '' + if ( entity.name in cpp_types ): + entity.name = entity.name + "_t" + print( "renaming " + entity.name) if entity.name in schema.whitelist: converters += template_converter.format(type=entity.name,contents=gen_converter(entity,schema)) schema_table.append(template_schema.format(type=entity.name,normalized_name=entity.name.lower(),argcnt=len(entity.members))) @@ -280,8 +302,3 @@ def work(filename): if __name__ == "__main__": sys.exit(work(sys.argv[1] if len(sys.argv)>1 else 'schema.exp')) - - - - - diff --git a/scripts/IFCImporter/ExpressReader.py b/scripts/StepImporter/ExpressReader.py similarity index 100% rename from scripts/IFCImporter/ExpressReader.py rename to scripts/StepImporter/ExpressReader.py diff --git a/scripts/IFCImporter/IFCReaderGen.cpp.template b/scripts/StepImporter/IFCReaderGen.cpp.template similarity index 94% rename from scripts/IFCImporter/IFCReaderGen.cpp.template rename to scripts/StepImporter/IFCReaderGen.cpp.template index 8cd6658ba..562b69807 100644 --- a/scripts/IFCImporter/IFCReaderGen.cpp.template +++ b/scripts/StepImporter/IFCReaderGen.cpp.template @@ -2,7 +2,7 @@ Open Asset Import Library (ASSIMP) ---------------------------------------------------------------------- -Copyright (c) 2006-2010, ASSIMP Development Team +Copyright (c) 2006-2018, ASSIMP Development Team All rights reserved. Redistribution and use of this software in source and binary forms, @@ -40,7 +40,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** MACHINE-GENERATED by scripts/ICFImporter/CppGenerator.py */ -#include "AssimpPCH.h" #ifndef ASSIMP_BUILD_NO_IFC_IMPORTER #include "IFCReaderGen.h" diff --git a/scripts/IFCImporter/IFCReaderGen.h.template b/scripts/StepImporter/IFCReaderGen.h.template similarity index 100% rename from scripts/IFCImporter/IFCReaderGen.h.template rename to scripts/StepImporter/IFCReaderGen.h.template diff --git a/scripts/StepImporter/StepReaderGen.cpp.template b/scripts/StepImporter/StepReaderGen.cpp.template new file mode 100644 index 000000000..343c43019 --- /dev/null +++ b/scripts/StepImporter/StepReaderGen.cpp.template @@ -0,0 +1,78 @@ +/* +Open Asset Import Library (ASSIMP) +---------------------------------------------------------------------- + +Copyright (c) 2006-2018, ASSIMP Development Team +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the ASSIMP team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the ASSIMP Development Team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +/** MACHINE-GENERATED by scripts/ICFImporter/CppGenerator.py */ + +#ifndef ASSIMP_BUILD_NO_STEPFILE_IMPORTER + +#include "code/Importer/StepFile/StepReaderGen.h" + +namespace Assimp { +using namespace StepFile; + +namespace { + + typedef EXPRESS::ConversionSchema::SchemaEntry SchemaEntry; + const SchemaEntry schema_raw[] = { +{schema-static-table} + }; +} + +// ----------------------------------------------------------------------------------------------------------- +void StepFile::GetSchema(EXPRESS::ConversionSchema& out) +{ + out = EXPRESS::ConversionSchema(schema_raw); +} + +namespace STEP { + +// ----------------------------------------------------------------------------------------------------------- +template <> size_t GenericFill(const STEP::DB& db, const LIST& params, NotImplemented* in) +{ + return 0; +} + + +{converter-impl} + +} // ! STEP +} // ! Assimp + +#endif diff --git a/scripts/StepImporter/StepReaderGen.h.template b/scripts/StepImporter/StepReaderGen.h.template new file mode 100644 index 000000000..5f9a2fd5d --- /dev/null +++ b/scripts/StepImporter/StepReaderGen.h.template @@ -0,0 +1,91 @@ +/* +Open Asset Import Library (ASSIMP) +---------------------------------------------------------------------- + +Copyright (c) 2006-2018, ASSIMP Development Team +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the +following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of the ASSIMP team, nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of the ASSIMP Development Team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +---------------------------------------------------------------------- +*/ + +/** MACHINE-GENERATED by scripts/ICFImporter/CppGenerator.py */ + +#ifndef INCLUDED_STEPFILE_READER_GEN_H +#define INCLUDED_STEPFILE_READER_GEN_H + +#include "code/STEPFile.h" + +namespace Assimp { +namespace StepFile { + using namespace STEP; + using namespace STEP::EXPRESS; + + + struct NotImplemented : public ObjectHelper { + + }; + + + // ****************************************************************************** + // StepFile Custom data types + // ****************************************************************************** + +{types} + + + // ****************************************************************************** + // StepFile Entities + // ****************************************************************************** + +{predefs} +{entities} + + void GetSchema(EXPRESS::ConversionSchema& out); + +} //! StepFile +namespace STEP { + + // ****************************************************************************** + // Converter stubs + // ****************************************************************************** + +#define DECL_CONV_STUB(type) template <> size_t GenericFill(const STEP::DB& db, const EXPRESS::LIST& params, IFC::type* in) + +{converter-decl} + +#undef DECL_CONV_STUB + +} //! STEP +} //! Assimp + +#endif // INCLUDED_STEPFILE_READER_GEN_H diff --git a/scripts/StepImporter/extract_step_token.py b/scripts/StepImporter/extract_step_token.py new file mode 100644 index 000000000..c7f89537a --- /dev/null +++ b/scripts/StepImporter/extract_step_token.py @@ -0,0 +1,64 @@ +#!/usr/bin/env python3 +# -*- Coding: UTF-8 -*- + +# --------------------------------------------------------------------------- +# Open Asset Import Library (ASSIMP) +# --------------------------------------------------------------------------- +# +# Copyright (c) 2006-2018, ASSIMP Development Team +# +# All rights reserved. +# +# Redistribution and use of this software in source and binary forms, +# with or without modification, are permitted provided that the following +# conditions are met: +# +# * Redistributions of source code must retain the above +# copyright notice, this list of conditions and the +# following disclaimer. +# +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the +# following disclaimer in the documentation and/or other +# materials provided with the distribution. +# +# * Neither the name of the ASSIMP team, nor the names of its +# contributors may be used to endorse or promote products +# derived from this software without specific prior +# written permission of the ASSIMP Development Team. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# --------------------------------------------------------------------------- + +import sys + +Entity_token = "ENTITY" +Type_token = "TYPE" +token = [] +file = open(sys.argv[1]) +output = open("step_entitylist.txt", "a") +lines = file.readlines() +for line in lines: + pos = line.find(Entity_token) + if pos != -1: + token = line.split(" ") + if len(token) > 1: + name = token[1] + print( "Writing entity " + name) + output.write(name) + +output.close() +file.close() + + + diff --git a/scripts/IFCImporter/genentitylist.sh b/scripts/StepImporter/genentitylist.sh similarity index 100% rename from scripts/IFCImporter/genentitylist.sh rename to scripts/StepImporter/genentitylist.sh diff --git a/scripts/IFCImporter/entitylist.txt b/scripts/StepImporter/ifc_entitylist.txt similarity index 100% rename from scripts/IFCImporter/entitylist.txt rename to scripts/StepImporter/ifc_entitylist.txt diff --git a/scripts/StepImporter/part403ts_wg3n2635mim_lf.exp b/scripts/StepImporter/part403ts_wg3n2635mim_lf.exp new file mode 100644 index 000000000..79353049a --- /dev/null +++ b/scripts/StepImporter/part403ts_wg3n2635mim_lf.exp @@ -0,0 +1,16378 @@ +(* + $Id: mim_lf.exp,v 1.43 2009/09/10 20:08:09 darla Exp $ + ISO TC184/SC4/WG3 N2635 - ISO/TS 10303-403 AP203 configuration controlled 3d design of mechanical parts and assemblies - EXPRESS MIM Long form + Supersedes ISO TC184/SC4/WG3 N2464 +*) + +SCHEMA Ap203_configuration_controlled_3d_design_of_mechanical_parts_and_assemblies_mim_lf; + + +CONSTANT + deprecated_constructed_data_types : SET [0:?] OF STRING := ['approved_item', + 'certified_item', + 'change_request_item', + 'contracted_item', + 'cc_classified_item', + 'date_time_item', + 'cc_person_organization_item', + 'cc_specified_item', + 'start_request_item', + 'work_item']; + + + deprecated_entity_data_types : SET [0:?] OF STRING := ['cc_design_approval', + 'cc_design_certification', + 'cc_design_contract', + 'cc_design_date_and_time_assignment', + 'cc_design_person_and_organization_assignment', + 'cc_design_security_classification', + 'cc_design_specification_reference', + 'change', + 'change_request', + 'design_context', + 'design_make_from_relationship', + 'mechanical_context', + 'start_request', + 'start_work', + 'supplied_part_relationship']; + + + deprecated_interfaced_data_types : SET [0:?] OF STRING := ['document_with_class', + 'ordinal_date', + 'product_definition_formation_with_specified_source', + 'week_of_year_and_day_date']; + + + dummy_gri : geometric_representation_item := representation_item('')|| + geometric_representation_item(); + + + dummy_tri : topological_representation_item := representation_item('')|| + topological_representation_item(); + + + pre_defined_picture_representation_types : SET [0:?] OF STRING := [ 'JPEG', 'PNG', 'TIFF', 'BMP', 'GIF']; + + + +END_CONSTANT; + +TYPE absorbed_dose_measure = REAL; +END_TYPE; + +TYPE acceleration_measure = REAL; +END_TYPE; + +TYPE action_items = SELECT ( + action_directive, + certification_item, + characterized_object, + classification_item, + configuration_effectivity, + document_reference_item, + identification_item, + organization, + person_and_organization, + product_definition, + product_definition_formation, + product_definition_formation_relationship, + product_definition_relationship, + requirement_assigned_item); +END_TYPE; + +TYPE action_method_items = SELECT ( + product, + product_definition_formation); +END_TYPE; + +TYPE action_request_item = SELECT ( + product_definition, + product_definition_formation, + product_definition_formation_relationship, + product_definition_relationship, + property_definition, + versioned_action_request); +END_TYPE; + +TYPE ahead_or_behind = ENUMERATION OF ( + ahead, + exact, + behind ); +END_TYPE; + +TYPE amount_of_substance_measure = REAL; +END_TYPE; + +TYPE angle_direction_reference_select = SELECT ( + direction, + curve, + point_path); +END_TYPE; + +TYPE angle_direction_reference_with_a2p3d_select = SELECT ( + angle_direction_reference_select, + axis2_placement_3d); +END_TYPE; + +TYPE angle_relator = ENUMERATION OF ( + equal, + large, + small ); +END_TYPE; + +TYPE annotation_plane_element = SELECT ( + draughting_callout, + styled_item); +END_TYPE; + +TYPE annotation_representation_select = SELECT ( + presentation_area, + presentation_view, + symbol_representation); +END_TYPE; + +TYPE annotation_symbol_occurrence_item = SELECT ( + annotation_symbol, + defined_symbol); +END_TYPE; + +TYPE annotation_text_occurrence_item = SELECT ( + text_literal, + annotation_text, + annotation_text_character, + composite_text); +END_TYPE; + +TYPE approval_item = SELECT ( + action, + action_directive, + alternate_product_relationship, + applied_action_assignment, + applied_usage_right, + assembly_component_usage_substitute, + certification, + configuration_effectivity, + configuration_item, + contract, + date, + directed_action, + document, + document_file, + effectivity, + executed_action, + general_property_relationship, + group, + group_relationship, + information_usage_right, + product, + product_definition, + product_definition_formation, + product_definition_formation_relationship, + product_definition_relationship, + representation, + requirement_assignment, + security_classification, + shape_aspect_relationship, + versioned_action_request); +END_TYPE; + +TYPE approved_item = SELECT ( + certification, + change, + change_request, + configuration_effectivity, + configuration_item, + contract, + product, + security_classification, + start_request, + start_work); +END_TYPE; + +TYPE area_measure = REAL; +END_TYPE; + +TYPE area_or_view = SELECT ( + presentation_area, + presentation_view); +END_TYPE; + +TYPE attribute_classification_item = SELECT ( + action_directive, + action_method, + action_property, + action_property_representation, + action_relationship, + action_request_solution, + action_request_status, + alternate_product_relationship, + applied_action_assignment, + applied_action_request_assignment, + applied_approval_assignment, + applied_certification_assignment, + applied_document_reference, + applied_document_usage_constraint_assignment, + applied_effectivity_assignment, + applied_event_occurrence_assignment, + applied_external_identification_assignment, + applied_identification_assignment, + applied_organization_assignment, + applied_organizational_project_assignment, + applied_person_and_organization_assignment, + approval, + approval_person_organization, + approval_relationship, + approval_status, + certification, + context_dependent_unit, + contract, + date_and_time_assignment, + date_assignment, + derived_unit, + descriptive_representation_item, + document_file, + document_relationship, + effectivity, + event_occurrence_relationship, + executed_action, + general_property, + general_property_relationship, + group, + group_relationship, + information_right, + information_usage_right, + language, + measure_representation_item, + measure_with_unit, + named_unit, + organization_relationship, + organizational_address, + organizational_project_relationship, + person_and_organization, + person_and_organization_address, + product, + product_category, + product_concept, + product_concept_context, + product_definition, + product_definition_context, + product_definition_formation, + product_definition_formation_relationship, + product_definition_relationship, + property_definition, + property_definition_relationship, + property_definition_representation, + representation, + representation_context, + representation_item, + security_classification, + time_interval_relationship, + uncertainty_measure_with_unit, + usage_association, + versioned_action_request); +END_TYPE; + +TYPE attribute_language_item = SELECT ( + alternate_product_relationship, + application_context, + applied_certification_assignment, + applied_document_reference, + applied_document_usage_constraint_assignment, + applied_external_identification_assignment, + applied_identification_assignment, + applied_organizational_project_assignment, + applied_security_classification_assignment, + approval, + approval_relationship, + approval_status, + assembly_component_usage_substitute, + attribute_value_assignment, + certification, + certification_type, + configuration_design, + configuration_item, + contract, + date_role, + date_time_role, + descriptive_representation_item, + document_relationship, + document_usage_role, + effectivity, + effectivity_relationship, + event_occurrence, + external_source, + general_property, + general_property_relationship, + geometric_representation_item, + geometric_tolerance, + identification_role, + information_right, + information_usage_right, + make_from_usage_option, + mapped_item, + multi_language_attribute_assignment, + object_role, + organization_relationship, + organization_role, + organizational_project, + organizational_project_relationship, + organizational_project_role, + person_and_organization, + person_and_organization_role, + product, + product_concept, + product_concept_relationship, + product_definition, + product_definition_context, + product_definition_formation, + product_definition_formation_relationship, + product_definition_relationship, + product_definition_shape, + product_related_product_category, + property_definition, + representation, + security_classification, + security_classification_assignment, + shape_aspect, + shape_aspect_relationship, + shape_representation, + time_interval_role, + topological_representation_item, + uncertainty_measure_with_unit, + uncertainty_qualifier, + usage_association); +END_TYPE; + +TYPE attribute_type = SELECT ( + label, + text); +END_TYPE; + +TYPE axis2_placement = SELECT ( + axis2_placement_2d, + axis2_placement_3d); +END_TYPE; + +TYPE b_spline_curve_form = ENUMERATION OF ( + polyline_form, + circular_arc, + elliptic_arc, + parabolic_arc, + hyperbolic_arc, + unspecified ); +END_TYPE; + +TYPE b_spline_surface_form = ENUMERATION OF ( + plane_surf, + cylindrical_surf, + conical_surf, + spherical_surf, + toroidal_surf, + surf_of_revolution, + ruled_surf, + generalised_cone, + quadric_surf, + surf_of_linear_extrusion, + unspecified ); +END_TYPE; + +TYPE base_solid_select = SELECT ( + solid_model, + csg_primitive, + boolean_result); +WHERE + WR1 : NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRIMITIVE_2D' IN TYPEOF(SELF)); +END_TYPE; + +TYPE blend_end_condition_select = SELECT ( + point_on_curve, + edge_curve, + vertex); +END_TYPE; + +TYPE blend_radius_variation_type = ENUMERATION OF ( + linear_blend, + cubic_blend, + unspecified_blend ); +END_TYPE; + +TYPE boolean_operand = SELECT ( + solid_model, + half_space_solid, + csg_primitive, + boolean_result); +END_TYPE; + +TYPE boolean_operator = ENUMERATION OF ( + union, + intersection, + difference ); +END_TYPE; + +TYPE box_characteristic_select = SELECT ( + box_height, + box_width, + box_slant_angle, + box_rotate_angle); +END_TYPE; + +TYPE box_height = positive_ratio_measure; +END_TYPE; + +TYPE box_rotate_angle = plane_angle_measure; +END_TYPE; + +TYPE box_slant_angle = plane_angle_measure; +END_TYPE; + +TYPE box_width = positive_ratio_measure; +END_TYPE; + +TYPE camera_model_d3_multi_clipping_interection_select = SELECT ( + camera_model_d3_multi_clipping_union, + plane); +END_TYPE; + +TYPE camera_model_d3_multi_clipping_union_select = SELECT ( + camera_model_d3_multi_clipping_intersection, + plane); +END_TYPE; + +TYPE capacitance_measure = REAL; +END_TYPE; + +TYPE category_usage_item = SELECT ( + product_class); +END_TYPE; + +TYPE cc_classified_item = SELECT ( + assembly_component_usage, + product_definition_formation); +END_TYPE; + +TYPE cc_person_organization_item = SELECT ( + change, + change_request, + configuration_item, + contract, + product, + product_definition, + product_definition_formation, + security_classification, + start_request, + start_work); +END_TYPE; + +TYPE cc_specified_item = SELECT ( + product_definition, + shape_aspect); +END_TYPE; + +TYPE celsius_temperature_measure = REAL; +END_TYPE; + +TYPE central_or_parallel = ENUMERATION OF ( + central, + parallel ); +END_TYPE; + +TYPE certification_item = SELECT ( + alternate_product_relationship, + make_from_usage_option, + product_definition_formation, + product_definition_formation_relationship); +END_TYPE; + +TYPE certified_item = SELECT ( + supplied_part_relationship); +END_TYPE; + +TYPE change_request_item = SELECT ( + product_definition_formation); +END_TYPE; + +TYPE character_spacing_select = SELECT ( + length_measure, + ratio_measure, + measure_with_unit, + descriptive_measure); +END_TYPE; + +TYPE character_style_select = SELECT ( + character_glyph_style_stroke, + character_glyph_style_outline, + text_style_for_defined_font); +END_TYPE; + +TYPE characterized_action_definition = SELECT ( + action, + action_method, + action_method_relationship, + action_relationship); +END_TYPE; + +TYPE characterized_definition = SELECT ( + characterized_object, + characterized_product_definition, + shape_definition); +END_TYPE; + +TYPE characterized_material_property = SELECT ( + material_property_representation, + product_material_composition_relationship); +END_TYPE; + +TYPE characterized_product_composition_value = SELECT ( + measure_with_unit); +END_TYPE; + +TYPE characterized_product_definition = SELECT ( + product_definition, + product_definition_relationship); +END_TYPE; + +TYPE class_usage_effectivity_context_item = SELECT ( + product_definition); +END_TYPE; + +TYPE classification_item = SELECT ( + action, + action_directive, + action_method, + action_property, + action_relationship, + action_request_solution, + action_request_status, + address, + alternate_product_relationship, + applied_action_assignment, + applied_action_request_assignment, + applied_approval_assignment, + applied_certification_assignment, + applied_contract_assignment, + applied_date_and_time_assignment, + applied_date_assignment, + applied_document_reference, + applied_document_usage_constraint_assignment, + applied_effectivity_assignment, + applied_event_occurrence_assignment, + applied_external_identification_assignment, + applied_identification_assignment, + applied_organization_assignment, + applied_organizational_project_assignment, + applied_person_and_organization_assignment, + applied_security_classification_assignment, + approval, + approval_person_organization, + approval_relationship, + approval_status, + assembly_component_usage_substitute, + calendar_date, + certification, + characterized_class, + characterized_object, + class, + classified_item, + configuration_item, + context_dependent_unit, + contract, + conversion_based_unit, + date_and_time, + date_and_time_assignment, + date_assignment, + derived_unit, + descriptive_representation_item, + directed_action, + document_file, + document_relationship, + effectivity, + event_occurrence, + executed_action, + general_property, + general_property_relationship, + group, + identification_assignment, + information_right, + information_usage_right, + language, + measure_representation_item, + measure_with_unit, + multi_language_attribute_assignment, + named_unit, + organization, + organization_relationship, + organizational_address, + organizational_project, + organizational_project_relationship, + person, + person_and_organization_address, + product, + product_concept, + product_definition, + product_definition_context, + product_definition_formation, + product_definition_formation_relationship, + product_definition_relationship, + property_definition, + property_definition_representation, + representation, + representation_context, + representation_item, + security_classification, + uncertainty_measure_with_unit, + usage_association, + versioned_action_request); +END_TYPE; + +TYPE classified_item = SELECT ( + product, + product_definition, + product_definition_formation); +END_TYPE; + +TYPE compound_item_definition = SELECT ( + list_representation_item, + set_representation_item); +END_TYPE; + +TYPE conductance_measure = REAL; +END_TYPE; + +TYPE configuration_design_item = SELECT ( + product_definition, + product_definition_formation); +END_TYPE; + +TYPE configured_effectivity_context_item = SELECT ( + product_concept_feature_association); +END_TYPE; + +TYPE configured_effectivity_item = SELECT ( + product_definition); +END_TYPE; + +TYPE constructive_geometry_representation_or_shape_represenation = SELECT ( + constructive_geometry_representation, + shape_representation); +END_TYPE; + +TYPE context_dependent_measure = REAL; +END_TYPE; + +TYPE contract_item = SELECT ( + action_directive, + alternate_product_relationship, + directed_action, + executed_action, + information_usage_right, + organization, + person_and_organization, + product, + product_definition_formation); +END_TYPE; + +TYPE contracted_item = SELECT ( + product_definition_formation); +END_TYPE; + +TYPE count_measure = NUMBER; +END_TYPE; + +TYPE csg_primitive = SELECT ( + sphere, + block, + right_angular_wedge, + torus, + right_circular_cone, + right_circular_cylinder); +END_TYPE; + +TYPE csg_select = SELECT ( + boolean_result, + csg_primitive); +END_TYPE; + +TYPE curve_font_or_scaled_curve_font_select = SELECT ( + curve_style_font_select, + curve_style_font_and_scaling); +END_TYPE; + +TYPE curve_on_surface = SELECT ( + pcurve, + surface_curve, + composite_curve_on_surface); +END_TYPE; + +TYPE curve_or_annotation_curve_occurrence = SELECT ( + curve, + annotation_curve_occurrence); +END_TYPE; + +TYPE curve_or_render = SELECT ( + curve_style, + curve_style_rendering); +END_TYPE; + +TYPE curve_style_font_select = SELECT ( + curve_style_font, + pre_defined_curve_font, + externally_defined_curve_font); +END_TYPE; + +TYPE date_and_time_item = SELECT ( + action, + action_directive, + applied_action_assignment, + applied_organization_assignment, + applied_person_and_organization_assignment, + applied_security_classification_assignment, + approval_person_organization, + certification, + contract, + directed_action, + document, + document_file, + event_occurrence, + executed_action, + information_usage_right, + organizational_project, + product_definition, + product_definition_formation, + product_definition_relationship, + rule_action, + security_classification, + versioned_action_request); +END_TYPE; + +TYPE date_item = SELECT ( + action, + action_directive, + applied_action_assignment, + applied_organization_assignment, + applied_person_and_organization_assignment, + applied_security_classification_assignment, + approval_person_organization, + certification, + contract, + directed_action, + document, + document_file, + event_occurrence, + executed_action, + information_usage_right, + organizational_project, + product_definition, + product_definition_formation, + product_definition_relationship, + security_classification, + versioned_action_request); +END_TYPE; + +TYPE date_time_item = SELECT ( + approval_person_organization, + certification, + change, + change_request, + contract, + product_definition, + security_classification, + start_request, + start_work); +END_TYPE; + +TYPE date_time_or_event_occurrence = SELECT ( + date_time_select, + event_occurrence); +END_TYPE; + +TYPE date_time_select = SELECT ( + date, + date_and_time, + local_time); +END_TYPE; + +TYPE day_in_month_number = INTEGER; +WHERE + WR1 : {1 <= SELF <= 31}; +END_TYPE; + +TYPE day_in_week_number = INTEGER; +WHERE + WR1 : { 1 <= SELF <= 7 }; +END_TYPE; + +TYPE day_in_year_number = INTEGER; +WHERE + WR1 : {1 <= SELF <= 366}; +END_TYPE; + +TYPE defined_symbol_select = SELECT ( + pre_defined_symbol, + externally_defined_symbol); +END_TYPE; + +TYPE derived_property_select = SELECT ( + property_definition, + action_property); +END_TYPE; + +TYPE description_attribute_select = SELECT ( + action_request_solution, + application_context, + approval_role, + configuration_design, + date_role, + date_time_role, + context_dependent_shape_representation, + effectivity, + external_source, + organization_role, + person_and_organization_role, + person_and_organization, + property_definition_representation, + representation); +END_TYPE; + +TYPE descriptive_measure = STRING; +END_TYPE; + +TYPE dimension_count = INTEGER; +WHERE + WR1 : SELF > 0; +END_TYPE; + +TYPE dimension_extent_usage = ENUMERATION OF ( + origin, + target ); +END_TYPE; + +TYPE dimensional_characteristic = SELECT ( + dimensional_location, + dimensional_size); +END_TYPE; + +TYPE direction_count_select = SELECT ( + u_direction_count, + v_direction_count); +END_TYPE; + +TYPE document_identifier_assigned_item = SELECT ( + document); +END_TYPE; + +TYPE document_reference_item = SELECT ( + action_method, + applied_external_identification_assignment, + assembly_component_usage, + characterized_class, + characterized_object, + configuration_item, + descriptive_representation_item, + dimensional_size, + executed_action, + externally_defined_dimension_definition, + externally_defined_item, + group, + group_relationship, + information_right, + information_usage_right, + material_designation, + measure_representation_item, + product, + product_category, + product_definition, + product_definition_formation, + product_definition_formation_relationship, + product_definition_relationship, + property_definition, + representation, + representation_item, + rule_set, + shape_aspect, + shape_aspect_relationship, + usage_association, + versioned_action_request); +END_TYPE; + +TYPE dose_equivalent_measure = REAL; +END_TYPE; + +TYPE draughting_callout_element = SELECT ( + annotation_text_occurrence, + annotation_symbol_occurrence, + annotation_curve_occurrence); +END_TYPE; + +TYPE draughting_model_item_association_select = SELECT ( + annotation_occurrence, + draughting_callout); +END_TYPE; + +TYPE draughting_model_item_select = SELECT ( + mapped_item, + styled_item, + axis2_placement, + camera_model, + draughting_callout); +END_TYPE; + +TYPE draughting_titled_item = SELECT ( + drawing_revision, + drawing_sheet_revision); +END_TYPE; + +TYPE effectivity_item = SELECT ( + assembly_component_usage_substitute, + product, + product_definition, + product_definition_formation, + product_definition_relationship, + product_definition_substitute); +END_TYPE; + +TYPE electric_charge_measure = REAL; +END_TYPE; + +TYPE electric_current_measure = REAL; +END_TYPE; + +TYPE electric_potential_measure = REAL; +END_TYPE; + +TYPE energy_measure = REAL; +END_TYPE; + +TYPE event_occurrence_item = SELECT ( + organizational_project); +END_TYPE; + +TYPE external_identification_item = SELECT ( + action_relationship, + action_request_status, + applied_organization_assignment, + applied_person_and_organization_assignment, + approval, + approval_status, + date_and_time_assignment, + date_assignment, + document_file, + external_source, + externally_defined_class, + externally_defined_context_dependent_unit, + externally_defined_conversion_based_unit, + externally_defined_general_property, + externally_defined_picture_representation_item, + externally_defined_representation_item, + organizational_address, + product_definition, + security_classification, + trimmed_curve, + versioned_action_request); +END_TYPE; + +TYPE fill_area_style_tile_shape_select = SELECT ( + fill_area_style_tile_curve_with_style, + fill_area_style_tile_coloured_region, + fill_area_style_tile_symbol_with_style, + pre_defined_tile, + externally_defined_tile); +END_TYPE; + +TYPE fill_style_select = SELECT ( + fill_area_style_colour, + externally_defined_tile_style, + fill_area_style_tiles, + externally_defined_hatch_style, + fill_area_style_hatching); +END_TYPE; + +TYPE font_select = SELECT ( + pre_defined_text_font, + externally_defined_text_font, + text_font); +END_TYPE; + +TYPE force_measure = REAL; +END_TYPE; + +TYPE founded_item_select = SELECT ( + founded_item, + representation_item); +END_TYPE; + +TYPE frequency_measure = REAL; +END_TYPE; + +TYPE generalized_surface_select = SELECT ( + surface, + face_surface, + surfaced_open_shell); +END_TYPE; + +TYPE geometric_item_specific_usage_select = SELECT ( + shape_aspect, + shape_aspect_relationship); +END_TYPE; + +TYPE geometric_set_select = SELECT ( + point, + curve, + surface); +END_TYPE; + +TYPE groupable_item = SELECT ( + geometric_representation_item, + group_relationship, + mapped_item, + package_product_concept_feature, + product_concept_feature, + product_definition, + product_definition_formation, + property_definition_representation, + representation, + representation_item, + representation_relationship_with_transformation, + shape_aspect, + shape_aspect_relationship, + shape_representation_relationship, + styled_item, + topological_representation_item); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GROUP' IN TYPEOF(SELF)); +END_TYPE; + +TYPE hour_in_day = INTEGER; +WHERE + WR1 : { 0 <= SELF < 24 }; +END_TYPE; + +TYPE id_attribute_select = SELECT ( + action, + address, + product_category, + property_definition, + shape_aspect, + shape_aspect_relationship, + application_context, + group, + organizational_project, + representation); +END_TYPE; + +TYPE identification_item = SELECT ( + approval_status, + characterized_class, + class, + configuration_item, + contract, + dimensional_size, + document_file, + general_property, + group, + group_relationship, + information_right, + information_usage_right, + material_designation, + organization, + person_and_organization, + product, + product_category, + product_class, + product_concept, + product_concept_feature, + product_definition, + product_definition_formation, + product_identification, + representation, + rule_set, + security_classification, + security_classification_level, + shape_aspect_relationship, + shape_representation, + usage_association); +END_TYPE; + +TYPE identifier = STRING; +END_TYPE; + +TYPE illuminance_measure = REAL; +END_TYPE; + +TYPE inductance_measure = REAL; +END_TYPE; + +TYPE instance_usage_context_select = SELECT ( + product_definition_relationship, + product_definition_usage); +END_TYPE; + +TYPE invisibility_context = SELECT ( + draughting_model, + presentation_representation, + presentation_set); +END_TYPE; + +TYPE invisible_item = SELECT ( + draughting_callout, + presentation_layer_assignment, + representation, + styled_item); +END_TYPE; + +TYPE ir_usage_item = action_items; +WHERE + wr1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONFIGURATION_EFFECTIVITY' IN TYPEOF(SELF)); +END_TYPE; + +TYPE knot_type = ENUMERATION OF ( + uniform_knots, + quasi_uniform_knots, + piecewise_bezier_knots, + unspecified ); +END_TYPE; + +TYPE label = STRING; +END_TYPE; + +TYPE layered_item = SELECT ( + presentation_representation, + representation_item); +END_TYPE; + +TYPE length_measure = REAL; +END_TYPE; + +TYPE limit_condition = ENUMERATION OF ( + maximum_material_condition, + least_material_condition, + regardless_of_feature_size ); +END_TYPE; + +TYPE list_of_reversible_topology_item = LIST [0:?] OF reversible_topology_item; +END_TYPE; + +TYPE list_representation_item = LIST [1:?] OF representation_item; +END_TYPE; + +TYPE luminous_flux_measure = REAL; +END_TYPE; + +TYPE luminous_intensity_measure = REAL; +END_TYPE; + +TYPE magnetic_flux_density_measure = REAL; +END_TYPE; + +TYPE magnetic_flux_measure = REAL; +END_TYPE; + +TYPE marker_select = SELECT ( + marker_type, + pre_defined_marker); +END_TYPE; + +TYPE marker_type = ENUMERATION OF ( + dot, + x, + plus, + asterisk, + ring, + square, + triangle ); +END_TYPE; + +TYPE mass_measure = REAL; +END_TYPE; + +TYPE measure_value = SELECT ( + absorbed_dose_measure, + dose_equivalent_measure, + radioactivity_measure, + acceleration_measure, + amount_of_substance_measure, + area_measure, + celsius_temperature_measure, + context_dependent_measure, + count_measure, + descriptive_measure, + capacitance_measure, + electric_charge_measure, + conductance_measure, + electric_current_measure, + electric_potential_measure, + energy_measure, + magnetic_flux_density_measure, + force_measure, + frequency_measure, + illuminance_measure, + inductance_measure, + length_measure, + luminous_flux_measure, + luminous_intensity_measure, + magnetic_flux_measure, + mass_measure, + numeric_measure, + non_negative_length_measure, + parameter_value, + plane_angle_measure, + positive_length_measure, + positive_plane_angle_measure, + positive_ratio_measure, + power_measure, + pressure_measure, + ratio_measure, + resistance_measure, + solid_angle_measure, + thermodynamic_temperature_measure, + time_measure, + velocity_measure, + volume_measure); +END_TYPE; + +TYPE mechanical_design_and_draughting_relationship_select = SELECT ( + draughting_model, + mechanical_design_geometric_presentation_representation, + mechanical_design_presentation_representation_with_draughting, + mechanical_design_shaded_presentation_representation, + shape_representation); +END_TYPE; + +TYPE mechanical_design_geometric_presentation_area_items = SELECT ( + axis2_placement, + mapped_item); +END_TYPE; + +TYPE mechanical_design_geometric_presentation_representation_items = SELECT ( + axis2_placement, + camera_model_d3, + mapped_item, + styled_item); +END_TYPE; + +TYPE message = STRING; +END_TYPE; + +TYPE minute_in_hour = INTEGER; +WHERE + WR1 : { 0 <= SELF <= 59 }; +END_TYPE; + +TYPE month_in_year_number = INTEGER; +WHERE + WR1 : { 1 <= SELF <= 12 }; +END_TYPE; + +TYPE multi_language_attribute_item = SELECT ( + alternate_product_relationship, + application_context, + applied_certification_assignment, + applied_document_reference, + applied_document_usage_constraint_assignment, + applied_external_identification_assignment, + applied_identification_assignment, + applied_organizational_project_assignment, + approval, + approval_relationship, + approval_status, + assembly_component_usage_substitute, + attribute_value_assignment, + certification, + certification_type, + colour, + configuration_design, + configuration_item, + contract, + date_role, + date_time_role, + descriptive_representation_item, + document_relationship, + document_usage_role, + effectivity, + effectivity_relationship, + event_occurrence, + external_source, + general_property, + general_property_relationship, + geometric_representation_item, + geometric_tolerance, + identification_role, + information_right, + information_usage_right, + make_from_usage_option, + mapped_item, + object_role, + organization_relationship, + organization_role, + organizational_project, + organizational_project_relationship, + organizational_project_role, + person_and_organization, + person_and_organization_role, + product, + product_concept, + product_concept_relationship, + product_definition, + product_definition_context, + product_definition_formation, + product_definition_formation_relationship, + product_definition_relationship, + product_definition_shape, + product_related_product_category, + property_definition, + representation, + representation_relationship, + security_classification, + security_classification_assignment, + shape_aspect, + shape_aspect_relationship, + shape_representation, + time_interval_role, + topological_representation_item, + uncertainty_measure_with_unit, + usage_association); +END_TYPE; + +TYPE name_attribute_select = SELECT ( + action_request_solution, + address, + configuration_design, + context_dependent_shape_representation, + derived_unit, + effectivity, + person_and_organization, + product_definition, + product_definition_substitute, + property_definition_representation); +END_TYPE; + +TYPE name_item = SELECT ( + assembly_component_usage, + external_class_library, + group, + group_relationship, + product, + product_definition); +END_TYPE; + +TYPE non_negative_length_measure = length_measure; +WHERE + WR1 : SELF >= 0.0; +END_TYPE; + +TYPE nonnegative_integer = INTEGER; +WHERE + nonnegativity : SELF >= 0; +END_TYPE; + +TYPE null_style = ENUMERATION OF ( + null ); +END_TYPE; + +TYPE numeric_measure = NUMBER; +END_TYPE; + +TYPE organization_item = SELECT ( + action, + action_directive, + alternate_product_relationship, + applied_action_assignment, + applied_classification_assignment, + applied_identification_assignment, + applied_security_classification_assignment, + approval, + assembly_component_usage_substitute, + certification, + class, + configuration_item, + contract, + document_file, + executed_action, + general_property, + information_usage_right, + organizational_project, + product, + product_definition, + product_definition_formation, + product_definition_formation_relationship, + property_definition, + rule_action, + security_classification, + shape_representation, + versioned_action_request); +END_TYPE; + +TYPE orientation_basis_select = SELECT ( + axis2_placement_3d, + min_and_major_ply_orientation_basis); +END_TYPE; + +TYPE parameter_value = REAL; +END_TYPE; + +TYPE pcurve_or_surface = SELECT ( + pcurve, + surface); +END_TYPE; + +TYPE person_and_organization_item = SELECT ( + action, + action_directive, + alternate_product_relationship, + applied_action_assignment, + applied_classification_assignment, + applied_identification_assignment, + applied_security_classification_assignment, + approval, + assembly_component_usage_substitute, + certification, + configuration_item, + contract, + document_file, + executed_action, + general_property, + information_usage_right, + organizational_project, + person_and_organization, + product, + product_definition, + product_definition_formation, + product_definition_formation_relationship, + property_definition, + rule_action, + security_classification, + shape_representation, + versioned_action_request); +END_TYPE; + +TYPE person_organization_select = SELECT ( + person, + organization, + person_and_organization); +END_TYPE; + +TYPE picture_representation_item_select = SELECT ( + styled_item, + planar_box, + axis2_placement_2d); +END_TYPE; + +TYPE plane_angle_measure = REAL; +END_TYPE; + +TYPE plane_or_planar_box = SELECT ( + plane, + planar_box); +END_TYPE; + +TYPE point_and_vector_member = SELECT ( + point, + direction); +END_TYPE; + +TYPE point_and_vector_members = LIST [2:3] OF point_and_vector_member; +END_TYPE; + +TYPE point_path_members = LIST [1:?] OF point_and_vector; +END_TYPE; + +TYPE positive_integer = nonnegative_integer; +WHERE + positivity : SELF > 0; +END_TYPE; + +TYPE positive_length_measure = non_negative_length_measure; +WHERE + WR1 : SELF > 0.0; +END_TYPE; + +TYPE positive_plane_angle_measure = plane_angle_measure; +WHERE + WR1 : SELF > 0.0; +END_TYPE; + +TYPE positive_ratio_measure = ratio_measure; +WHERE + WR1 : SELF > 0.0; +END_TYPE; + +TYPE power_measure = REAL; +END_TYPE; + +TYPE preferred_surface_curve_representation = ENUMERATION OF ( + curve_3d, + pcurve_s1, + pcurve_s2 ); +END_TYPE; + +TYPE presentable_text = STRING; +WHERE + WR1 : control_characters_free(SELF); +END_TYPE; + +TYPE presentation_representation_select = SELECT ( + presentation_representation, + presentation_set); +END_TYPE; + +TYPE presentation_size_assignment_select = SELECT ( + presentation_view, + presentation_area, + area_in_set); +END_TYPE; + +TYPE presentation_style_select = SELECT ( + point_style, + curve_style, + surface_style_usage, + symbol_style, + fill_area_style, + text_style, + null_style); +END_TYPE; + +TYPE presented_item_select = SELECT ( + action, + action_method, + action_relationship, + product_concept, + product_concept_feature, + product_concept_feature_category, + product_definition, + product_definition_formation, + product_definition_relationship); +END_TYPE; + +TYPE pressure_measure = REAL; +END_TYPE; + +TYPE product_definition_or_assembly_relationship = SELECT ( + assembly_component_usage, + product_definition); +END_TYPE; + +TYPE product_definition_or_breakdown_element_usage = SELECT ( + product_definition, + product_definition_usage); +END_TYPE; + +TYPE product_definition_or_product_definition_relationship = SELECT ( + product_definition, + product_definition_usage); +END_TYPE; + +TYPE product_or_formation_or_definition = SELECT ( + product, + product_definition_formation, + product_definition); +END_TYPE; + +TYPE project_item = SELECT ( + executed_action, + product_concept); +END_TYPE; + +TYPE radioactivity_measure = REAL; +END_TYPE; + +TYPE ratio_measure = REAL; +END_TYPE; + +TYPE rendering_properties_select = SELECT ( + surface_style_reflectance_ambient, + surface_style_transparent); +END_TYPE; + +TYPE represented_definition = SELECT ( + general_property, + property_definition, + property_definition_relationship, + shape_aspect, + shape_aspect_relationship); +END_TYPE; + +TYPE requirement_assigned_item = SELECT ( + configuration_item, + descriptive_representation_item, + product, + product_class, + product_definition, + product_definition_formation, + product_definition_relationship, + representation, + shape_aspect); +END_TYPE; + +TYPE requirement_satisfaction_item = SELECT ( + requirement_assigned_item); +END_TYPE; + +TYPE requirement_source_item = SELECT ( + characterized_object, + group, + group_relationship, + product, + product_definition, + product_definition_formation, + product_definition_relationship, + shape_aspect); +END_TYPE; + +TYPE resistance_measure = REAL; +END_TYPE; + +TYPE reversible_topology = SELECT ( + reversible_topology_item, + list_of_reversible_topology_item, + set_of_reversible_topology_item); +END_TYPE; + +TYPE reversible_topology_item = SELECT ( + edge, + path, + face, + face_bound, + closed_shell, + open_shell); +END_TYPE; + +TYPE role_select = SELECT ( + action_assignment, + action_request_assignment, + approval_assignment, + approval_date_time, + certification_assignment, + contract_assignment, + document_reference, + effectivity_assignment, + group_assignment, + name_assignment, + security_classification_assignment); +END_TYPE; + +TYPE rule_superseded_item = SELECT ( + product_definition_formation); +END_TYPE; + +TYPE second_in_minute = REAL; +WHERE + WR1 : { 0 <= SELF <= 60.0 }; +END_TYPE; + +TYPE security_classification_item = SELECT ( + assembly_component_usage, + document, + document_file, + make_from_usage_option, + product, + product_definition, + product_definition_formation, + product_definition_usage); +END_TYPE; + +TYPE set_of_reversible_topology_item = SET [0:?] OF reversible_topology_item; +END_TYPE; + +TYPE set_representation_item = SET [1:?] OF representation_item; +END_TYPE; + +TYPE shading_curve_method = ENUMERATION OF ( + constant_colour, + linear_colour ); +END_TYPE; + +TYPE shading_surface_method = ENUMERATION OF ( + constant_shading, + colour_shading, + dot_shading, + normal_shading ); +END_TYPE; + +TYPE shape_definition = SELECT ( + product_definition_shape, + shape_aspect, + shape_aspect_relationship); +END_TYPE; + +TYPE shell = SELECT ( + vertex_shell, + wire_shell, + open_shell, + closed_shell); +END_TYPE; + +TYPE si_prefix = ENUMERATION OF ( + exa, + peta, + tera, + giga, + mega, + kilo, + hecto, + deca, + deci, + centi, + milli, + micro, + nano, + pico, + femto, + atto ); +END_TYPE; + +TYPE si_unit_name = ENUMERATION OF ( + metre, + gram, + second, + ampere, + kelvin, + mole, + candela, + radian, + steradian, + hertz, + newton, + pascal, + joule, + watt, + coulomb, + volt, + farad, + ohm, + siemens, + weber, + tesla, + henry, + degree_Celsius, + lumen, + lux, + becquerel, + gray, + sievert ); +END_TYPE; + +TYPE size_select = SELECT ( + positive_length_measure, + measure_with_unit, + descriptive_measure); +END_TYPE; + +TYPE sketch_basis_select = SELECT ( + curve_bounded_surface, + face_surface); +END_TYPE; + +TYPE solid_angle_measure = REAL; +END_TYPE; + +TYPE source = ENUMERATION OF ( + made, + bought, + not_known ); +END_TYPE; + +TYPE source_item = SELECT ( + identifier, + message); +END_TYPE; + +TYPE start_request_item = SELECT ( + product_definition_formation); +END_TYPE; + +TYPE string_representation_item_select = SELECT ( + descriptive_representation_item, + included_text_block, + structured_text_composition); +END_TYPE; + +TYPE style_context_select = SELECT ( + group, + presentation_layer_assignment, + presentation_set, + representation, + representation_item, + representation_relationship); +END_TYPE; + +TYPE surface_side = ENUMERATION OF ( + positive, + negative, + both ); +END_TYPE; + +TYPE surface_side_style_select = SELECT ( + surface_side_style, + pre_defined_surface_side_style); +END_TYPE; + +TYPE surface_style_element_select = SELECT ( + surface_style_fill_area, + surface_style_boundary, + surface_style_silhouette, + surface_style_segmentation_curve, + surface_style_control_grid, + surface_style_parameter_line, + surface_style_rendering); +END_TYPE; + +TYPE symbol_style_select = SELECT ( + symbol_colour); +END_TYPE; + +TYPE text = STRING; +END_TYPE; + +TYPE text_alignment = label; +END_TYPE; + +TYPE text_delineation = label; +END_TYPE; + +TYPE text_or_character = SELECT ( + annotation_text, + annotation_text_character, + composite_text, + text_literal); +END_TYPE; + +TYPE text_path = ENUMERATION OF ( + left, + right, + up, + down ); +END_TYPE; + +TYPE text_string_representation_item = SELECT ( + text_literal, + annotation_text, + annotation_text_character, + composite_text, + axis2_placement); +END_TYPE; + +TYPE thermodynamic_temperature_measure = REAL; +END_TYPE; + +TYPE time_interval_item = SELECT ( + action, + time_interval_based_effectivity); +END_TYPE; + +TYPE time_measure = REAL; +END_TYPE; + +TYPE tolerance_method_definition = SELECT ( + tolerance_value, + limits_and_fits); +END_TYPE; + +TYPE transformation = SELECT ( + item_defined_transformation, + functionally_defined_transformation); +END_TYPE; + +TYPE transition_code = ENUMERATION OF ( + discontinuous, + continuous, + cont_same_gradient, + cont_same_gradient_same_curvature ); +END_TYPE; + +TYPE trim_condition_select = SELECT ( + length_measure, + plane_angle_measure, + generalized_surface_select, + solid_model); +END_TYPE; + +TYPE trim_intent = ENUMERATION OF ( + blind, + offset, + through_all, + unspecified, + up_to_next ); +END_TYPE; + +TYPE trimming_preference = ENUMERATION OF ( + cartesian, + parameter, + unspecified ); +END_TYPE; + +TYPE trimming_select = SELECT ( + cartesian_point, + parameter_value); +END_TYPE; + +TYPE u_direction_count = INTEGER; +WHERE + WR1 : SELF > 1; +END_TYPE; + +TYPE unit = SELECT ( + derived_unit, + named_unit); +END_TYPE; + +TYPE v_direction_count = INTEGER; +WHERE + WR1 : SELF > 1; +END_TYPE; + +TYPE value_qualifier = SELECT ( + precision_qualifier, + type_qualifier, + uncertainty_qualifier); +END_TYPE; + +TYPE vector_or_direction = SELECT ( + vector, + direction); +END_TYPE; + +TYPE velocity_measure = REAL; +END_TYPE; + +TYPE volume_measure = REAL; +END_TYPE; + +TYPE week_in_year_number = INTEGER; +WHERE + WR1 : { 1 <= SELF <= 53 }; +END_TYPE; + +TYPE work_item = SELECT ( + product_definition_formation); +END_TYPE; + +TYPE year_number = INTEGER; +END_TYPE; + +ENTITY absorbed_dose_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ABSORBED_DOSE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY absorbed_dose_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.gray); +END_ENTITY; + + +ENTITY abstract_variable + SUBTYPE OF (property_definition, property_definition_representation, representation, representation_item); +END_ENTITY; + + +ENTITY acceleration_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ACCELERATION_UNIT' IN TYPEOF (SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY acceleration_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = + dimensional_exponents ( 1.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0 ); +END_ENTITY; + + +ENTITY action; + name : label; + description : OPTIONAL text; + chosen_method : action_method; +DERIVE + id : identifier := get_id_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY action_assignment + ABSTRACT SUPERTYPE; + assigned_action : action; +DERIVE + role : object_role := get_role(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; +END_ENTITY; + + +ENTITY action_directive; + name : label; + description : OPTIONAL text; + analysis : text; + comment : text; + requests : SET [1:?] OF versioned_action_request; +END_ENTITY; + + +ENTITY action_method; + name : label; + description : OPTIONAL text; + consequence : text; + purpose : text; +END_ENTITY; + + +ENTITY action_method_assignment + ABSTRACT SUPERTYPE; + assigned_action_method : action_method; + role : action_method_role; +END_ENTITY; + + +ENTITY action_method_relationship; + name : label; + description : OPTIONAL text; + relating_method : action_method; + related_method : action_method; +END_ENTITY; + + +ENTITY action_method_role; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY action_property; + name : label; + description : text; + definition : characterized_action_definition; +END_ENTITY; + + +ENTITY action_property_representation; + name : label; + description : text; + property : action_property; + representation : representation; +END_ENTITY; + + +ENTITY action_relationship; + name : label; + description : OPTIONAL text; + relating_action : action; + related_action : action; +END_ENTITY; + + +ENTITY action_request_assignment + ABSTRACT SUPERTYPE; + assigned_action_request : versioned_action_request; +DERIVE + role : object_role := get_role(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; +END_ENTITY; + + +ENTITY action_request_solution; + method : action_method; + request : versioned_action_request; +DERIVE + description : text := get_description_value(SELF); + name : label := get_name_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; + WR2 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY action_request_status; + status : label; + assigned_request : versioned_action_request; +END_ENTITY; + + +ENTITY action_status; + status : label; + assigned_action : executed_action; +END_ENTITY; + + +ENTITY address; + internal_location : OPTIONAL label; + street_number : OPTIONAL label; + street : OPTIONAL label; + postal_box : OPTIONAL label; + town : OPTIONAL label; + region : OPTIONAL label; + postal_code : OPTIONAL label; + country : OPTIONAL label; + facsimile_number : OPTIONAL label; + telephone_number : OPTIONAL label; + electronic_mail_address : OPTIONAL label; + telex_number : OPTIONAL label; +DERIVE + name : label := get_name_value(SELF); + url : identifier := get_id_value(SELF); +WHERE + WR1 : EXISTS(internal_location) OR EXISTS(street_number) OR EXISTS(street) OR EXISTS(postal_box) OR EXISTS(town) OR EXISTS(region) OR EXISTS(postal_code) OR EXISTS(country) OR EXISTS(facsimile_number) OR EXISTS(telephone_number) OR EXISTS(electronic_mail_address) OR EXISTS(telex_number); +END_ENTITY; + + +ENTITY advanced_brep_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF ( +QUERY ( it <* SELF.items| NOT ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACETED_BREP', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D' ] * TYPEOF (it)) = 1) )) = 0; + WR2 : SIZEOF ( +QUERY ( it <* SELF.items| ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' ] * TYPEOF (it)) = 1) )) > 0; + WR3 : SIZEOF ( +QUERY ( msb <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( csh <* msb_shells(msb)| NOT ( SIZEOF ( +QUERY ( fcs <* csh\connected_face_set.cfs_faces| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fcs)) )) = 0) )) = 0) )) = 0; + WR4 : SIZEOF ( +QUERY ( msb <* +QUERY ( it <* items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF (it)) )| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_CLOSED_SHELL' IN TYPEOF (msb\manifold_solid_brep.outer)) )) = 0; + WR5 : SIZEOF ( +QUERY ( brv <* +QUERY ( it <* items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BREP_WITH_VOIDS' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( csh <* brv\brep_with_voids.voids| csh\oriented_closed_shell.orientation )) = 0) )) = 0; + WR6 : SIZEOF ( +QUERY ( mi <* +QUERY ( it <* items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) )| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_BREP_SHAPE_REPRESENTATION' IN TYPEOF (mi\mapped_item.mapping_source.mapped_representation)) )) = 0; +END_ENTITY; + + +ENTITY advanced_face + SUBTYPE OF (face_surface); +WHERE + WR1 : SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELEMENTARY_SURFACE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_SURFACE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SWEPT_SURFACE' ] * TYPEOF (face_geometry)) = 1; + WR2 : SIZEOF ( +QUERY ( elp_fbnds <* +QUERY ( bnds <* bounds| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) )| NOT ( SIZEOF ( +QUERY ( oe <* elp_fbnds.bound\path.edge_list| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_CURVE' IN TYPEOF (oe\oriented_edge.edge_element)) )) = 0) )) = 0; + WR3 : SIZEOF ( +QUERY ( elp_fbnds <* +QUERY ( bnds <* bounds| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) )| NOT ( SIZEOF ( +QUERY ( oe <* elp_fbnds.bound\path.edge_list| NOT ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE' ] * TYPEOF (oe.edge_element\edge_curve.edge_geometry)) = 1) )) = 0) )) = 0; + WR4 : SIZEOF ( +QUERY ( elp_fbnds <* +QUERY ( bnds <* bounds| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) )| NOT ( SIZEOF ( +QUERY ( oe <* elp_fbnds.bound\path.edge_list| NOT ((('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF (oe\edge.edge_start)) AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT' IN TYPEOF (oe\edge.edge_start\vertex_point.vertex_geometry))) AND (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF (oe\edge.edge_end)) AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT' IN TYPEOF (oe\edge.edge_end\vertex_point.vertex_geometry)))) )) = 0) )) = 0; + WR5 : SIZEOF ( +QUERY ( elp_fbnds <* +QUERY ( bnds <* bounds| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) )| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_PATH' IN TYPEOF (elp_fbnds.bound)) )) = 0; + WR6 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SWEPT_SURFACE' IN TYPEOF (face_geometry)) OR ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE' ] * TYPEOF (face_geometry\swept_surface.swept_curve)) = 1); + WR7 : SIZEOF ( +QUERY ( vlp_fbnds <* +QUERY ( bnds <* bounds| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP' IN TYPEOF (bnds.bound)) )| NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF (vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex)) AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT' IN TYPEOF (vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex\vertex_point.vertex_geometry))) )) = 0; + WR8 : SIZEOF ( +QUERY ( bnd <* bounds| NOT ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP' ] * TYPEOF (bnd.bound)) = 1) )) = 0; + WR9 : SIZEOF ( +QUERY ( elp_fbnds <* +QUERY ( bnds <* bounds| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) )| NOT ( SIZEOF ( +QUERY ( oe <* elp_fbnds.bound\path.edge_list| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE' IN TYPEOF (oe\oriented_edge.edge_element\edge_curve.edge_geometry)) AND NOT ( SIZEOF ( +QUERY ( sc_ag <* oe.edge_element\edge_curve.edge_geometry\surface_curve.associated_geometry| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF (sc_ag)) )) = 0) )) = 0) )) = 0; + WR10 : (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SWEPT_SURFACE' IN TYPEOF (face_geometry)) OR (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF (face_geometry\swept_surface.swept_curve)) OR ( SIZEOF (face_geometry\swept_surface.swept_curve\polyline.points) >= 3))) AND ( SIZEOF ( +QUERY ( elp_fbnds <* +QUERY ( bnds <* bounds| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) )| NOT ( SIZEOF ( +QUERY ( oe <* elp_fbnds.bound\path.edge_list| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF (oe\oriented_edge.edge_element\edge_curve.edge_geometry)) AND NOT ( SIZEOF (oe\oriented_edge.edge_element\edge_curve.edge_geometry\polyline.points) >= 3) )) = 0) )) = 0); +END_ENTITY; + + +ENTITY alternate_product_relationship; + name : label; + definition : OPTIONAL text; + alternate : product; + base : product; + basis : text; +UNIQUE + UR1 : alternate, base; +WHERE + WR1 : alternate :<>: base; +END_ENTITY; + + +ENTITY amount_of_substance_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AMOUNT_OF_SUBSTANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY amount_of_substance_unit + SUBTYPE OF (named_unit); +WHERE + WR1 : (SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 0.0) AND (SELF\named_unit.dimensions.time_exponent = 0.0) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 1.0) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0); +END_ENTITY; + + +ENTITY angle_direction_reference + SUBTYPE OF (representation_item_relationship, geometric_representation_item); + SELF\representation_item_relationship.related_representation_item : angle_direction_reference_select; + SELF\representation_item_relationship.relating_representation_item : orientation_basis_select; +WHERE + WR1 : ((('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_PATH' IN TYPEOF(related_representation_item)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MIN_AND_MAJOR_PLY_ORIENTATION_BASIS' IN TYPEOF(relating_representation_item))) + OR + (NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_PATH' IN TYPEOF(related_representation_item)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D' IN TYPEOF(relating_representation_item)))); +END_ENTITY; + + +ENTITY angular_dimension + SUBTYPE OF (dimension_curve_directed_callout); +END_ENTITY; + + +ENTITY angular_location + SUBTYPE OF (dimensional_location); + angle_selection : angle_relator; +END_ENTITY; + + +ENTITY angular_size + SUBTYPE OF (dimensional_size); + angle_selection : angle_relator; +END_ENTITY; + + +ENTITY angularity_tolerance + SUBTYPE OF (geometric_tolerance_with_datum_reference); +WHERE + WR1 : SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) < 3; +END_ENTITY; + + +ENTITY annotation_curve_occurrence + SUBTYPE OF (annotation_occurrence); + SELF\styled_item.item : curve; +END_ENTITY; + + +ENTITY annotation_fill_area + SUBTYPE OF (geometric_representation_item); + boundaries : SET [1:?] OF curve; +WHERE + WR1 : (SELF\geometric_representation_item.dim = 3) OR (SIZEOF (QUERY (curve <* SELF.boundaries | + NOT ( + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CIRCLE' IN TYPEOF (curve)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELLIPSE' IN TYPEOF (curve)) OR + ( ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE' IN TYPEOF (curve)) + AND (curve\b_spline_curve.closed_curve = TRUE) ) OR + ( ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_CURVE' IN TYPEOF (curve)) + AND (curve\composite_curve.closed_curve = TRUE) ) OR + ( ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF (curve)) + AND (curve\polyline.points[LOINDEX(curve\polyline.points)] = + curve\polyline.points[HIINDEX(curve\polyline.points)]) ) + ) )) = 0); +END_ENTITY; + + +ENTITY annotation_fill_area_occurrence + SUBTYPE OF (annotation_occurrence); + fill_style_target : point; + SELF\styled_item.item : annotation_fill_area; +END_ENTITY; + + +ENTITY annotation_occurrence + SUPERTYPE OF (ONEOF (annotation_curve_occurrence, annotation_fill_area_occurrence, annotation_text_occurrence, annotation_symbol_occurrence)) + SUBTYPE OF (styled_item); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN + TYPEOF (SELF); + WR2 : SIZEOF (QUERY (reps <* using_representations(SELF) | + NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_REPRESENTATION_SELECT' IN TYPEOF(reps)))) = 0; +END_ENTITY; + + +ENTITY annotation_occurrence_associativity + SUBTYPE OF (annotation_occurrence_relationship); +WHERE + WR1 : SIZEOF (TYPEOF (SELF.related_annotation_occurrence) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_FILL_AREA_OCCURRENCE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROJECTION_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_CURVE']) = 1; +END_ENTITY; + + +ENTITY annotation_occurrence_relationship; + name : label; + description : text; + relating_annotation_occurrence : annotation_occurrence; + related_annotation_occurrence : annotation_occurrence; +END_ENTITY; + + +ENTITY annotation_plane + SUBTYPE OF (annotation_occurrence, geometric_representation_item); + elements : OPTIONAL SET [1:?] OF annotation_plane_element; + SELF\styled_item.item : plane_or_planar_box; +WHERE + WR1 : SELF\geometric_representation_item.dim = 3; + WR2 : NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PLANAR_BOX' IN TYPEOF(SELF\styled_item.item)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'AXIS2_PLACEMENT_3D' IN TYPEOF(SELF\styled_item.item\planar_box.placement)); + WR3 : (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PLANAR_BOX' IN TYPEOF(SELF\styled_item.item)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'CURVE_STYLE' IN TYPEOF(SELF\styled_item.styles[1]\presentation_style_assignment.styles[1]))) OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PLANE' IN TYPEOF(SELF\styled_item.item)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'FILL_AREA_STYLE' IN TYPEOF(SELF\styled_item.styles[1]\presentation_style_assignment.styles[1]))); + WR4 : (SIZEOF(SELF\styled_item.styles) = 1) AND + (SIZEOF(SELF\styled_item.styles[1]\presentation_style_assignment.styles) = 1); +END_ENTITY; + + +ENTITY annotation_subfigure_occurrence + SUBTYPE OF (annotation_symbol_occurrence); +WHERE + WR1 : SIZEOF (QUERY (sty <* SELF.styles | + NOT (SIZEOF (sty.styles) = 1) + )) = 0; + WR2 : SIZEOF (QUERY (sty <* SELF.styles | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.NULL_STYLE' + IN TYPEOF (sty.styles[1])) ))=0; + WR3 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_SYMBOL' + IN TYPEOF (SELF.item)); + WR4 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_SUBFIGURE_REPRESENTATION' + IN TYPEOF + (SELF.item\mapped_item.mapping_source.mapped_representation)); +END_ENTITY; + + +ENTITY annotation_symbol + SUBTYPE OF (mapped_item); + SELF\mapped_item.mapping_source : symbol_representation_map; + SELF\mapped_item.mapping_target : symbol_target; +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN + TYPEOF (SELF); +END_ENTITY; + + +ENTITY annotation_symbol_occurrence + SUBTYPE OF (annotation_occurrence); + SELF\styled_item.item : annotation_symbol_occurrence_item; +END_ENTITY; + + +ENTITY annotation_text + SUBTYPE OF (mapped_item); + SELF\mapped_item.mapping_target : axis2_placement; +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_STRING_REPRESENTATION' IN + TYPEOF( SELF\mapped_item.mapping_source.mapped_representation); + WR2 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN + TYPEOF( SELF); +END_ENTITY; + + +ENTITY annotation_text_character + SUBTYPE OF (mapped_item); + alignment : text_alignment; + SELF\mapped_item.mapping_target : axis2_placement; +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CHARACTER_GLYPH_SYMBOL' IN + TYPEOF (SELF\mapped_item.mapping_source.mapped_representation); + WR2 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN + TYPEOF (SELF); +END_ENTITY; + + +ENTITY annotation_text_occurrence + SUBTYPE OF (annotation_occurrence); + SELF\styled_item.item : annotation_text_occurrence_item; +END_ENTITY; + + +ENTITY apex + SUBTYPE OF (derived_shape_aspect); +END_ENTITY; + + +ENTITY application_context; + application : label; +DERIVE + description : text := get_description_value(SELF); + id : identifier := get_id_value(SELF); +INVERSE + context_elements: SET [1:?] OF application_context_element FOR frame_of_reference; +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; + WR2 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY application_context_element + SUPERTYPE OF (ONEOF (product_concept_context, product_context, product_definition_context)); + name : label; + frame_of_reference : application_context; +END_ENTITY; + + +ENTITY application_protocol_definition; + status : label; + application_interpreted_model_schema_name : label; + application_protocol_year : year_number; + application : application_context; +END_ENTITY; + + +ENTITY applied_action_assignment + SUBTYPE OF (action_assignment); + items : SET [1:?] OF action_items; +END_ENTITY; + + +ENTITY applied_action_method_assignment + SUBTYPE OF (action_method_assignment); + items : SET [1:?] OF action_method_items; +END_ENTITY; + + +ENTITY applied_action_request_assignment + SUBTYPE OF (action_request_assignment); + items : SET [1:?] OF action_request_item; +END_ENTITY; + + +ENTITY applied_approval_assignment + SUBTYPE OF (approval_assignment); + items : SET [1:?] OF approval_item; +END_ENTITY; + + +ENTITY applied_attribute_classification_assignment + SUBTYPE OF (attribute_classification_assignment); + items : SET [1:?] OF attribute_classification_item; + SELF\attribute_classification_assignment.assigned_class : class; +END_ENTITY; + + +ENTITY applied_certification_assignment + SUBTYPE OF (certification_assignment); + items : SET [1:?] OF certification_item; +END_ENTITY; + + +ENTITY applied_classification_assignment + SUBTYPE OF (classification_assignment); + items : SET [1:?] OF classification_item; +END_ENTITY; + + +ENTITY applied_contract_assignment + SUBTYPE OF (contract_assignment); + items : SET [1:?] OF contract_item; +END_ENTITY; + + +ENTITY applied_date_and_time_assignment + SUBTYPE OF (date_and_time_assignment); + items : SET [1:?] OF date_and_time_item; +END_ENTITY; + + +ENTITY applied_date_assignment + SUBTYPE OF (date_assignment); + items : SET [1:?] OF date_item; +END_ENTITY; + + +ENTITY applied_document_reference + SUBTYPE OF (document_reference); + items : SET [1:?] OF document_reference_item; +END_ENTITY; + + +ENTITY applied_document_usage_constraint_assignment + SUBTYPE OF (document_usage_constraint_assignment); + items : SET [1:?] OF document_reference_item; +END_ENTITY; + + +ENTITY applied_effectivity_assignment + SUBTYPE OF (effectivity_assignment); + items : SET [1:?] OF effectivity_item; +END_ENTITY; + + +ENTITY applied_event_occurrence_assignment + SUBTYPE OF (event_occurrence_assignment); + items : SET [1:?] OF event_occurrence_item; +END_ENTITY; + + +ENTITY applied_external_identification_assignment + SUBTYPE OF (external_identification_assignment); + items : SET [1:?] OF external_identification_item; +END_ENTITY; + + +ENTITY applied_group_assignment + SUBTYPE OF (group_assignment); + items : SET [1:?] OF groupable_item; +END_ENTITY; + + +ENTITY applied_identification_assignment + SUBTYPE OF (identification_assignment); + items : SET [1:?] OF identification_item; +END_ENTITY; + + +ENTITY applied_name_assignment + SUBTYPE OF (name_assignment); + item : name_item; +END_ENTITY; + + +ENTITY applied_organization_assignment + SUBTYPE OF (organization_assignment); + items : SET [1:?] OF organization_item; +END_ENTITY; + + +ENTITY applied_organizational_project_assignment + SUBTYPE OF (organizational_project_assignment); + items : SET [1:?] OF project_item; +END_ENTITY; + + +ENTITY applied_person_and_organization_assignment + SUBTYPE OF (person_and_organization_assignment); + items : SET [1:?] OF person_and_organization_item; +END_ENTITY; + + +ENTITY applied_presented_item + SUBTYPE OF (presented_item); + items : SET [1:?] OF presented_item_select; +END_ENTITY; + + +ENTITY applied_security_classification_assignment + SUBTYPE OF (security_classification_assignment); + items : SET [1:?] OF security_classification_item; +END_ENTITY; + + +ENTITY applied_time_interval_assignment + SUBTYPE OF (time_interval_assignment); + items : SET [0:?] OF time_interval_item; +END_ENTITY; + + +ENTITY applied_usage_right + SUBTYPE OF (applied_action_assignment); + SELF\applied_action_assignment.items : SET [1:?] OF ir_usage_item; +END_ENTITY; + + +ENTITY approval; + status : approval_status; + level : label; +END_ENTITY; + + +ENTITY approval_assignment + ABSTRACT SUPERTYPE; + assigned_approval : approval; +DERIVE + role : object_role := get_role(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; +END_ENTITY; + + +ENTITY approval_date_time; + date_time : date_time_select; + dated_approval : approval; +DERIVE + role : object_role := get_role(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; +END_ENTITY; + + +ENTITY approval_person_organization; + person_organization : person_organization_select; + authorized_approval : approval; + role : approval_role; +END_ENTITY; + + +ENTITY approval_relationship; + name : label; + description : OPTIONAL text; + relating_approval : approval; + related_approval : approval; +END_ENTITY; + + +ENTITY approval_role; + role : label; +DERIVE + description : text := get_description_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY approval_status; + name : label; +END_ENTITY; + + +ENTITY area_in_set; + area : presentation_area; + in_set : presentation_set; +END_ENTITY; + + +ENTITY area_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AREA_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY area_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = + dimensional_exponents ( 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ); +END_ENTITY; + + +ENTITY assembly_component_usage + SUPERTYPE OF (ONEOF (next_assembly_usage_occurrence, specified_higher_usage_occurrence, promissory_usage_occurrence)) + SUBTYPE OF (product_definition_usage); + reference_designator : OPTIONAL identifier; +END_ENTITY; + + +ENTITY assembly_component_usage_substitute; + name : label; + definition : OPTIONAL text; + base : assembly_component_usage; + substitute : assembly_component_usage; +UNIQUE + UR1 : base, substitute; +WHERE + WR1 : base.relating_product_definition :=: + substitute.relating_product_definition; + WR2 : base :<>: substitute; +END_ENTITY; + + +ENTITY assigned_requirement + SUBTYPE OF (group_assignment); + items : SET [1:1] OF product_definition; + SELF\group_assignment.assigned_group : requirement_assignment; +END_ENTITY; + + +ENTITY atomic_formula + SUBTYPE OF (compound_representation_item); +END_ENTITY; + + +ENTITY attribute_assertion + SUBTYPE OF (fact_type, property_definition_representation, representation); +END_ENTITY; + + +ENTITY attribute_classification_assignment + ABSTRACT SUPERTYPE; + assigned_class : group; + attribute_name : label; + role : classification_role; +END_ENTITY; + + +ENTITY attribute_language_assignment + SUBTYPE OF (attribute_classification_assignment); + items : SET [1:?] OF attribute_language_item; + SELF\attribute_classification_assignment.assigned_class : language; +WHERE + WR1 : SELF\attribute_classification_assignment.role.name IN ['primary', 'translated']; + WR2 : SELF\attribute_classification_assignment.attribute_name<> ''; +END_ENTITY; + + +ENTITY attribute_value_assignment + ABSTRACT SUPERTYPE; + attribute_name : label; + attribute_value : attribute_type; + role : attribute_value_role; +END_ENTITY; + + +ENTITY attribute_value_role; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY auxiliary_geometric_representation_item + SUBTYPE OF (geometric_representation_item, variational_representation_item); +END_ENTITY; + + +ENTITY axis1_placement + SUBTYPE OF (placement); + axis : OPTIONAL direction; +DERIVE + z : direction := NVL(normalise(axis), dummy_gri || + direction([0.0,0.0,1.0])); +WHERE + WR1 : SELF\geometric_representation_item.dim = 3; +END_ENTITY; + + +ENTITY axis2_placement_2d + SUBTYPE OF (placement); + ref_direction : OPTIONAL direction; +DERIVE + p : LIST [2:2] OF direction := build_2axes(ref_direction); +WHERE + WR1 : SELF\geometric_representation_item.dim = 2; +END_ENTITY; + + +ENTITY axis2_placement_3d + SUBTYPE OF (placement); + axis : OPTIONAL direction; + ref_direction : OPTIONAL direction; +DERIVE + p : LIST [3:3] OF direction := build_axes(axis,ref_direction); +WHERE + WR1 : SELF\placement.location.dim = 3; + WR2 : (NOT (EXISTS (axis))) OR (axis.dim = 3); + WR3 : (NOT (EXISTS (ref_direction))) OR (ref_direction.dim = 3); + WR4 : (NOT (EXISTS (axis))) OR (NOT (EXISTS (ref_direction))) OR + (cross_product(axis,ref_direction).magnitude > 0.0); +END_ENTITY; + + +ENTITY b_spline_curve + SUPERTYPE OF ((ONEOF (uniform_curve, b_spline_curve_with_knots, quasi_uniform_curve, bezier_curve) ANDOR rational_b_spline_curve)) + SUBTYPE OF (bounded_curve); + degree : INTEGER; + control_points_list : LIST [2:?] OF cartesian_point; + curve_form : b_spline_curve_form; + closed_curve : LOGICAL; + self_intersect : LOGICAL; +DERIVE + control_points : ARRAY [0:upper_index_on_control_points] OF cartesian_point := list_to_array(control_points_list,0, + upper_index_on_control_points); + upper_index_on_control_points : INTEGER := (SIZEOF(control_points_list) - 1); +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.UNIFORM_CURVE' IN TYPEOF(self)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.QUASI_UNIFORM_CURVE' IN TYPEOF(self)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BEZIER_CURVE' IN TYPEOF(self)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE_WITH_KNOTS' IN TYPEOF(self)); +END_ENTITY; + + +ENTITY b_spline_curve_with_knots + SUBTYPE OF (b_spline_curve); + knot_multiplicities : LIST [2:?] OF INTEGER; + knots : LIST [2:?] OF parameter_value; + knot_spec : knot_type; +DERIVE + upper_index_on_knots : INTEGER := SIZEOF(knots); +WHERE + WR1 : constraints_param_b_spline(degree, upper_index_on_knots, + upper_index_on_control_points, + knot_multiplicities, knots); + WR2 : SIZEOF(knot_multiplicities) = upper_index_on_knots; +END_ENTITY; + + +ENTITY b_spline_surface + SUPERTYPE OF ((ONEOF (b_spline_surface_with_knots, uniform_surface, quasi_uniform_surface, bezier_surface) ANDOR rational_b_spline_surface)) + SUBTYPE OF (bounded_surface); + u_degree : INTEGER; + v_degree : INTEGER; + control_points_list : LIST [2:?] OF LIST [2:?] OF cartesian_point; + surface_form : b_spline_surface_form; + u_closed : LOGICAL; + v_closed : LOGICAL; + self_intersect : LOGICAL; +DERIVE + control_points : ARRAY [0:u_upper] OF ARRAY [0:v_upper] OF cartesian_point := make_array_of_array(control_points_list, + 0,u_upper,0,v_upper); + u_upper : INTEGER := SIZEOF(control_points_list) - 1; + v_upper : INTEGER := SIZEOF(control_points_list[1]) - 1; +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.UNIFORM_SURFACE' IN TYPEOF(SELF)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.QUASI_UNIFORM_SURFACE' IN TYPEOF(SELF)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BEZIER_SURFACE' IN TYPEOF(SELF)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_SURFACE_WITH_KNOTS' IN TYPEOF(SELF)); +END_ENTITY; + + +ENTITY b_spline_surface_with_knots + SUBTYPE OF (b_spline_surface); + u_multiplicities : LIST [2:?] OF INTEGER; + v_multiplicities : LIST [2:?] OF INTEGER; + u_knots : LIST [2:?] OF parameter_value; + v_knots : LIST [2:?] OF parameter_value; + knot_spec : knot_type; +DERIVE + knot_u_upper : INTEGER := SIZEOF(u_knots); + knot_v_upper : INTEGER := SIZEOF(v_knots); +WHERE + WR1 : constraints_param_b_spline(SELF\b_spline_surface.u_degree, + knot_u_upper, SELF\b_spline_surface.u_upper, + u_multiplicities, u_knots); + WR2 : constraints_param_b_spline(SELF\b_spline_surface.v_degree, + knot_v_upper, SELF\b_spline_surface.v_upper, + v_multiplicities, v_knots); + WR3 : SIZEOF(u_multiplicities) = knot_u_upper; + WR4 : SIZEOF(v_multiplicities) = knot_v_upper; +END_ENTITY; + + +ENTITY back_chaining_rule + SUBTYPE OF (rule_definition); +END_ENTITY; + + +ENTITY back_chaining_rule_body + SUBTYPE OF (property_definition, property_definition_representation, representation); +END_ENTITY; + + +ENTITY background_colour + SUBTYPE OF (colour); + presentation : area_or_view; +UNIQUE + UR1 : presentation; +END_ENTITY; + + +ENTITY beveled_sheet_representation + SUBTYPE OF (shape_representation); +END_ENTITY; + + +ENTITY bezier_curve + SUBTYPE OF (b_spline_curve); +END_ENTITY; + + +ENTITY bezier_surface + SUBTYPE OF (b_spline_surface); +END_ENTITY; + + +ENTITY binary_generic_expression + ABSTRACT SUPERTYPE + SUBTYPE OF (generic_expression); + operands : LIST [2:2] OF generic_expression; +END_ENTITY; + + +ENTITY binary_numeric_expression + ABSTRACT SUPERTYPE + SUBTYPE OF (numeric_expression, binary_generic_expression); + SELF\binary_generic_expression.operands : LIST [2:2] OF numeric_expression; +END_ENTITY; + + +ENTITY binary_representation_item + SUBTYPE OF (representation_item); + binary_value : BINARY; +END_ENTITY; + + +ENTITY block + SUBTYPE OF (geometric_representation_item); + position : axis2_placement_3d; + x : positive_length_measure; + y : positive_length_measure; + z : positive_length_measure; +END_ENTITY; + + +ENTITY boolean_expression + ABSTRACT SUPERTYPE OF (ONEOF (simple_boolean_expression, multiple_arity_boolean_expression, comparison_expression, interval_expression)) + SUBTYPE OF (expression); +END_ENTITY; + + +ENTITY boolean_literal + SUBTYPE OF (simple_boolean_expression, generic_literal); + the_value : BOOLEAN; +END_ENTITY; + + +ENTITY boolean_representation_item + SUBTYPE OF (representation_item, boolean_literal); +END_ENTITY; + + +ENTITY boolean_result + SUBTYPE OF (geometric_representation_item); + operator : boolean_operator; + first_operand : boolean_operand; + second_operand : boolean_operand; +END_ENTITY; + + +ENTITY boundary_curve + SUBTYPE OF (composite_curve_on_surface); +WHERE + WR1 : SELF\composite_curve.closed_curve; +END_ENTITY; + + +ENTITY bounded_curve + SUPERTYPE OF (ONEOF (polyline, b_spline_curve, trimmed_curve, bounded_pcurve, bounded_surface_curve, composite_curve)) + SUBTYPE OF (curve); +END_ENTITY; + + +ENTITY bounded_pcurve + SUBTYPE OF (pcurve, bounded_curve); +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOUNDED_CURVE' IN + TYPEOF(SELF\pcurve.reference_to_curve.items[1])); +END_ENTITY; + + +ENTITY bounded_surface + SUPERTYPE OF (ONEOF (b_spline_surface, rectangular_trimmed_surface, curve_bounded_surface, rectangular_composite_surface)) + SUBTYPE OF (surface); +END_ENTITY; + + +ENTITY bounded_surface_curve + SUBTYPE OF (surface_curve, bounded_curve); +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOUNDED_CURVE' IN + TYPEOF(SELF\surface_curve.curve_3d)); +END_ENTITY; + + +ENTITY box_domain + SUBTYPE OF (founded_item); + corner : cartesian_point; + xlength : positive_length_measure; + ylength : positive_length_measure; + zlength : positive_length_measure; +WHERE + WR1 : SIZEOF(QUERY(item <* USEDIN(SELF,'')| + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOXED_HALF_SPACE' + IN TYPEOF(item)))) = 0; +END_ENTITY; + + +ENTITY boxed_half_space + SUBTYPE OF (half_space_solid); + enclosure : box_domain; +END_ENTITY; + + +ENTITY breakdown_context + SUBTYPE OF (product_definition_relationship); +END_ENTITY; + + +ENTITY breakdown_element_group_assignment + SUBTYPE OF (group_assignment); + items : SET [1:1] OF product_definition_or_breakdown_element_usage; + SELF\group_assignment.assigned_group : product_definition_element_relationship; +END_ENTITY; + + +ENTITY breakdown_element_realization + SUBTYPE OF (characterized_object, product_definition_element_relationship); +END_ENTITY; + + +ENTITY breakdown_element_usage + SUBTYPE OF (product_definition_relationship); +END_ENTITY; + + +ENTITY breakdown_of + SUBTYPE OF (product_definition_relationship); +END_ENTITY; + + +ENTITY brep_with_voids + SUBTYPE OF (manifold_solid_brep); + voids : SET [1:?] OF oriented_closed_shell; +END_ENTITY; + + +ENTITY bytes_representation_item + SUBTYPE OF (binary_representation_item); +DERIVE + no_of_bytes : INTEGER := BLENGTH(SELF\binary_representation_item.binary_value) DIV 8; +WHERE + WR1 : BLENGTH(SELF\binary_representation_item.binary_value) MOD 8 = 0; +END_ENTITY; + + +ENTITY calendar_date + SUBTYPE OF (date); + day_component : day_in_month_number; + month_component : month_in_year_number; +WHERE + WR1 : valid_calendar_date (SELF); +END_ENTITY; + + +ENTITY camera_image + SUBTYPE OF (mapped_item); + SELF\mapped_item.mapping_source : camera_usage; + SELF\mapped_item.mapping_target : planar_box; +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' + IN TYPEOF (SELF); +END_ENTITY; + + +ENTITY camera_image_3d_with_scale + SUBTYPE OF (camera_image); +DERIVE + scale : positive_ratio_measure := ((SELF\mapped_item.mapping_target\ + planar_extent.size_in_x) / (SELF\mapped_item.mapping_source. + mapping_origin\camera_model_d3.perspective_of_volume.view_window. + size_in_x)); +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CAMERA_MODEL_D3' + IN TYPEOF (SELF\mapped_item.mapping_source.mapping_origin)); + WR2 : aspect_ratio(SELF\mapped_item.mapping_target) = + aspect_ratio(SELF\mapped_item.mapping_source.mapping_origin\ + camera_model_d3.perspective_of_volume.view_window); + WR3 : SELF\mapped_item.mapping_source.mapping_origin\camera_model_d3. + perspective_of_volume.front_plane_clipping + AND + SELF\mapped_item.mapping_source.mapping_origin\camera_model_d3. + perspective_of_volume.view_volume_sides_clipping; + WR4 : (SELF\mapped_item.mapping_target\planar_extent.size_in_x > 0) + AND + (SELF\mapped_item.mapping_target\planar_extent.size_in_y > 0); + WR5 : (SELF\mapped_item.mapping_source.mapping_origin\camera_model_d3. + perspective_of_volume.view_window.size_in_x > 0) + AND + (SELF\mapped_item.mapping_source.mapping_origin\camera_model_d3. + perspective_of_volume.view_window.size_in_y > 0); + WR6 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AXIS2_PLACEMENT_2D' IN TYPEOF (SELF\mapped_item. + mapping_target\planar_box.placement)) + AND NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AXIS2_PLACEMENT_3D' IN TYPEOF (SELF\mapped_item. + mapping_target\planar_box.placement)); +END_ENTITY; + + +ENTITY camera_model + ABSTRACT SUPERTYPE + SUBTYPE OF (geometric_representation_item); +WHERE + WR1 : (SIZEOF (USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'ITEM_DEFINED_TRANSFORMATION.' + + 'TRANSFORM_ITEM_1')) + + SIZEOF (USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'REPRESENTATION_MAP.MAPPING_ORIGIN')) + ) > 0; + WR2 : SIZEOF(USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'STYLED_ITEM.ITEM')) = 0; +END_ENTITY; + + +ENTITY camera_model_d3 + SUBTYPE OF (camera_model); + view_reference_system : axis2_placement_3d; + perspective_of_volume : view_volume; +WHERE + WR1 : (dot_product (SELF.view_reference_system.p[3], + SELF.perspective_of_volume.view_window.placement.p[3]) = 1.0) + AND + (SELF.view_reference_system.location.coordinates[3] = + SELF.perspective_of_volume.view_window. + placement.location.coordinates[3]); + WR2 : SELF\geometric_representation_item.dim = 3; +END_ENTITY; + + +ENTITY camera_model_d3_multi_clipping + SUBTYPE OF (camera_model_d3); + shape_clipping : SET [1:?] OF camera_model_d3_multi_clipping_interection_select; +END_ENTITY; + + +ENTITY camera_model_d3_multi_clipping_intersection + SUBTYPE OF (geometric_representation_item); + shape_clipping : SET [2:?] OF camera_model_d3_multi_clipping_interection_select; +END_ENTITY; + + +ENTITY camera_model_d3_multi_clipping_union + SUBTYPE OF (geometric_representation_item); + shape_clipping : SET [2:?] OF camera_model_d3_multi_clipping_union_select; +END_ENTITY; + + +ENTITY camera_model_d3_with_hlhsr + SUBTYPE OF (camera_model_d3); + hidden_line_surface_removal : BOOLEAN; +END_ENTITY; + + +ENTITY camera_model_with_light_sources + SUBTYPE OF (camera_model_d3); + sources : SET [1:?] OF light_source; +END_ENTITY; + + +ENTITY camera_usage + SUBTYPE OF (representation_map); + SELF\representation_map.mapping_origin : camera_model; +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESENTATION_REPRESENTATION' + IN TYPEOF(SELF\representation_map.mapped_representation)); +END_ENTITY; + + +ENTITY capacitance_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CAPACITANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY capacitance_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.farad); +END_ENTITY; + + +ENTITY cartesian_point + SUBTYPE OF (point); + coordinates : LIST [1:3] OF length_measure; +END_ENTITY; + + +ENTITY cartesian_transformation_operator + SUPERTYPE OF (ONEOF (cartesian_transformation_operator_2d, cartesian_transformation_operator_3d)) + SUBTYPE OF (geometric_representation_item, functionally_defined_transformation); + axis1 : OPTIONAL direction; + axis2 : OPTIONAL direction; + local_origin : cartesian_point; + scale : OPTIONAL REAL; +DERIVE + scl : REAL := NVL(scale, 1.0); +WHERE + WR1 : scl > 0.0; +END_ENTITY; + + +ENTITY cartesian_transformation_operator_2d + SUBTYPE OF (cartesian_transformation_operator); +DERIVE + u : LIST [2:2] OF direction := base_axis(2,SELF\cartesian_transformation_operator.axis1, + SELF\cartesian_transformation_operator.axis2,?); +WHERE + WR1 : SELF\geometric_representation_item.dim = 2; +END_ENTITY; + + +ENTITY cartesian_transformation_operator_3d + SUBTYPE OF (cartesian_transformation_operator); + axis3 : OPTIONAL direction; +DERIVE + u : LIST [3:3] OF direction := base_axis(3,SELF\cartesian_transformation_operator.axis1, + SELF\cartesian_transformation_operator.axis2,axis3); +WHERE + WR1 : SELF\geometric_representation_item.dim = 3; +END_ENTITY; + + +ENTITY cc_design_approval + SUBTYPE OF (approval_assignment); + items : SET [1:?] OF approved_item; +END_ENTITY; + + +ENTITY cc_design_certification + SUBTYPE OF (certification_assignment); + items : SET [1:?] OF certified_item; +END_ENTITY; + + +ENTITY cc_design_contract + SUBTYPE OF (contract_assignment); + items : SET [1:?] OF contracted_item; +END_ENTITY; + + +ENTITY cc_design_date_and_time_assignment + SUBTYPE OF (date_and_time_assignment); + items : SET [1:?] OF date_time_item; +END_ENTITY; + + +ENTITY cc_design_person_and_organization_assignment + SUBTYPE OF (person_and_organization_assignment); + items : SET [1:?] OF cc_person_organization_item; +WHERE + WR1 : cc_design_person_and_organization_correlation(SELF); +END_ENTITY; + + +ENTITY cc_design_security_classification + SUBTYPE OF (security_classification_assignment); + items : SET [1:?] OF cc_classified_item; +END_ENTITY; + + +ENTITY cc_design_specification_reference + SUBTYPE OF (document_reference); + items : SET [1:?] OF cc_specified_item; +END_ENTITY; + + +ENTITY celsius_temperature_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.THERMODYNAMIC_TEMPERATURE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY centre_of_symmetry + SUBTYPE OF (derived_shape_aspect); +WHERE + WR1 : SIZEOF + (QUERY(sadr<*SELF\derived_shape_aspect.deriving_relationships| + NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SYMMETRIC_SHAPE_ASPECT' + IN TYPEOF + (sadr\shape_aspect_relationship.related_shape_aspect))))=0; +END_ENTITY; + + +ENTITY certification; + name : label; + purpose : text; + kind : certification_type; +END_ENTITY; + + +ENTITY certification_assignment + ABSTRACT SUPERTYPE; + assigned_certification : certification; +DERIVE + role : object_role := get_role(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; +END_ENTITY; + + +ENTITY certification_type; + description : label; +END_ENTITY; + + +ENTITY change + SUBTYPE OF (action_assignment); + items : SET [1:?] OF work_item; +END_ENTITY; + + +ENTITY change_request + SUBTYPE OF (action_request_assignment); + items : SET [1:?] OF change_request_item; +END_ENTITY; + + +ENTITY character_glyph_font_usage; + character : generic_character_glyph_symbol; + font : text_font; +END_ENTITY; + + +ENTITY character_glyph_style_outline + SUBTYPE OF (founded_item); + outline_style : curve_style; +END_ENTITY; + + +ENTITY character_glyph_style_stroke + SUBTYPE OF (founded_item); + stroke_style : curve_style; +END_ENTITY; + + +ENTITY character_glyph_symbol + SUBTYPE OF (generic_character_glyph_symbol); + character_box : planar_extent; + baseline_ratio : ratio_measure; +DERIVE + box_height : length_measure := character_box.size_in_y; +WHERE + WR1 : {0.0 <= baseline_ratio <= 1.0}; + WR2 : item_in_context(SELF.character_box, + SELF\representation.context_of_items); + WR3 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITIVE_LENGTH_MEASURE' + IN TYPEOF (SELF.box_height); +END_ENTITY; + + +ENTITY character_glyph_symbol_outline + SUBTYPE OF (character_glyph_symbol); + outlines : SET [1:?] OF annotation_fill_area; +WHERE + WR1 : SELF.outlines <= SELF\representation.items; +END_ENTITY; + + +ENTITY character_glyph_symbol_stroke + SUBTYPE OF (character_glyph_symbol); + strokes : SET [1:?] OF curve; +WHERE + WR1 : SELF.strokes <= SELF\representation.items; +END_ENTITY; + + +ENTITY characteristic_data_column_header + SUBTYPE OF (general_property); +END_ENTITY; + + +ENTITY characteristic_data_column_header_link + SUBTYPE OF (general_property_relationship); +END_ENTITY; + + +ENTITY characteristic_data_table_header + SUBTYPE OF (general_property); +END_ENTITY; + + +ENTITY characteristic_data_table_header_decomposition + SUBTYPE OF (general_property_relationship); +END_ENTITY; + + +ENTITY characteristic_type + SUBTYPE OF (group); +END_ENTITY; + + +ENTITY characterized_class + SUBTYPE OF (characterized_object, class); +END_ENTITY; + + +ENTITY characterized_object; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY circle + SUBTYPE OF (conic); + radius : positive_length_measure; +END_ENTITY; + + +ENTITY circular_runout_tolerance + SUBTYPE OF (geometric_tolerance_with_datum_reference); +WHERE + WR1 : SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) <= 2; +END_ENTITY; + + +ENTITY class + SUBTYPE OF (group); +END_ENTITY; + + +ENTITY class_by_extension + SUBTYPE OF (class); +END_ENTITY; + + +ENTITY class_by_intension + SUBTYPE OF (class); +END_ENTITY; + + +ENTITY class_system + SUBTYPE OF (group); +END_ENTITY; + + +ENTITY class_usage_effectivity_context_assignment + SUBTYPE OF (effectivity_context_assignment); + items : SET [1:?] OF class_usage_effectivity_context_item; +WHERE + WR1 : SELF.role.name = 'class usage influence'; + WR2 : SIZEOF( QUERY( i <* SELF.items | NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF(i)) )) = 0; + WR3 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.APPLIED_EFFECTIVITY_ASSIGNMENT' IN TYPEOF(SELF.assigned_effectivity_assignment)) AND + (SIZEOF(TYPEOF(SELF.assigned_effectivity_assignment.assigned_effectivity) ) = 1) AND + (SELF.assigned_effectivity_assignment.assigned_effectivity.id = 'class usage') AND + (SIZEOF( QUERY( i <* SELF.assigned_effectivity_assignment\applied_effectivity_assignment.items | + NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_CONCEPT_FEATURE_CATEGORY_USAGE' IN TYPEOF(i)) )) = 0); +END_ENTITY; + + +ENTITY classification_assignment + ABSTRACT SUPERTYPE; + assigned_class : group; + role : classification_role; +END_ENTITY; + + +ENTITY classification_role; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY closed_shell + SUBTYPE OF (connected_face_set); +END_ENTITY; + + +ENTITY coaxiality_tolerance + SUBTYPE OF (geometric_tolerance_with_datum_reference); +WHERE + WR1 : SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) <= 2; +END_ENTITY; + + +ENTITY colour; +END_ENTITY; + + +ENTITY colour_rgb + SUBTYPE OF (colour_specification); + red : REAL; + green : REAL; + blue : REAL; +WHERE + WR1 : {0.0 <= red <= 1.0}; + WR2 : {0.0 <= green <= 1.0}; + WR3 : {0.0 <= blue <= 1.0}; +END_ENTITY; + + +ENTITY colour_specification + SUBTYPE OF (colour); + name : label; +END_ENTITY; + + +ENTITY common_datum + SUBTYPE OF (composite_shape_aspect, datum); +WHERE + WR1 : SIZEOF (SELF\composite_shape_aspect.component_relationships) = 2; + WR2 : SIZEOF (QUERY ( sar <* SELF\composite_shape_aspect.component_relationships| + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DATUM' IN TYPEOF (sar.related_shape_aspect)) AND + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMMON_DATUM' IN TYPEOF (sar.related_shape_aspect))) )) = 0; +END_ENTITY; + + +ENTITY comparison_expression + ABSTRACT SUPERTYPE + SUBTYPE OF (boolean_expression, binary_generic_expression); + SELF\binary_generic_expression.operands : LIST [2:2] OF expression; +WHERE + WR1 : (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.NUMERIC_EXPRESSION' +IN TYPEOF(SELF\binary_generic_expression.operands[1])) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.NUMERIC_EXPRESSION' +IN TYPEOF(SELF\binary_generic_expression.operands[2]))) +OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOOLEAN_EXPRESSION' +IN TYPEOF(SELF\binary_generic_expression.operands[1])) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOOLEAN_EXPRESSION' + IN TYPEOF(SELF\binary_generic_expression.operands[2]))) +OR +(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRING_EXPRESSION' +IN TYPEOF(SELF\binary_generic_expression.operands[1])) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRING_EXPRESSION' +IN TYPEOF(SELF\binary_generic_expression.operands[2]))); +END_ENTITY; + + +ENTITY complex_clause + SUBTYPE OF (compound_representation_item); +END_ENTITY; + + +ENTITY complex_conjunctive_clause + SUBTYPE OF (complex_clause); +END_ENTITY; + + +ENTITY complex_disjunctive_clause + SUBTYPE OF (complex_clause); +END_ENTITY; + + +ENTITY complex_shelled_solid + SUBTYPE OF (shelled_solid); + thickened_face_list : LIST [1:?] OF SET [1:?] OF face_surface; + thickness_list : LIST [1:?] OF length_measure; +WHERE + WR1 : SIZEOF(thickened_face_list) = SIZEOF(thickness_list); + WR2 : SIZEOF(QUERY(q <* thickness_list | (q = 0))) = 0; +END_ENTITY; + + +ENTITY composite_assembly_definition + SUBTYPE OF (product_definition); +WHERE + WR1 : SIZEOF (QUERY (pdr <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRODUCT_DEFINITION_RELATIONSHIP.' + + 'RELATING_PRODUCT_DEFINITION') | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'NEXT_ASSEMBLY_USAGE_OCCURRENCE' IN + TYPEOF (pdr))) = 1; +END_ENTITY; + + +ENTITY composite_assembly_sequence_definition + SUBTYPE OF (product_definition); +WHERE + WR1 : SIZEOF (QUERY (pdr <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRODUCT_DEFINITION_RELATIONSHIP.' + + 'RELATING_PRODUCT_DEFINITION') | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'NEXT_ASSEMBLY_USAGE_OCCURRENCE' IN + TYPEOF (pdr))) > 0; +END_ENTITY; + + +ENTITY composite_assembly_table + SUBTYPE OF (part_laminate_table); +END_ENTITY; + + +ENTITY composite_curve + SUBTYPE OF (bounded_curve); + segments : LIST [1:?] OF composite_curve_segment; + self_intersect : LOGICAL; +DERIVE + closed_curve : LOGICAL := segments[n_segments].transition <> discontinuous; + n_segments : INTEGER := SIZEOF(segments); +WHERE + WR1 : ((NOT closed_curve) AND (SIZEOF(QUERY(temp <* segments | + temp.transition = discontinuous)) = 1)) OR + ((closed_curve) AND (SIZEOF(QUERY(temp <* segments | + temp.transition = discontinuous)) = 0)); +END_ENTITY; + + +ENTITY composite_curve_on_surface + SUPERTYPE OF (boundary_curve) + SUBTYPE OF (composite_curve); +DERIVE + basis_surface : SET [0:2] OF surface := get_basis_surface(SELF); +WHERE + WR1 : SIZEOF(basis_surface) > 0; + WR2 : constraints_composite_curve_on_surface(SELF); +END_ENTITY; + + +ENTITY composite_curve_segment + SUBTYPE OF (founded_item); + transition : transition_code; + same_sense : BOOLEAN; + parent_curve : curve; +INVERSE + using_curves: BAG [1:?] OF composite_curve FOR segments; +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOUNDED_CURVE' IN TYPEOF(parent_curve)); +END_ENTITY; + + +ENTITY composite_material_designation + SUBTYPE OF (material_designation); +END_ENTITY; + + +ENTITY composite_shape_aspect + SUBTYPE OF (shape_aspect); +INVERSE + component_relationships: SET [2:?] OF shape_aspect_relationship FOR relating_shape_aspect; +END_ENTITY; + + +ENTITY composite_sheet_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'MANIFOLD_SURFACE_SHAPE_REPRESENTATION'] * TYPEOF (SELF)) = 1; +END_ENTITY; + + +ENTITY composite_text + SUBTYPE OF (geometric_representation_item); + collected_text : SET [2:?] OF text_or_character; +WHERE + WR1 : acyclic_composite_text( SELF, SELF.collected_text); +END_ENTITY; + + +ENTITY composite_text_with_associated_curves + SUBTYPE OF (composite_text); + associated_curves : SET [1:?] OF curve; +END_ENTITY; + + +ENTITY composite_text_with_blanking_box + SUBTYPE OF (composite_text); + blanking : planar_box; +END_ENTITY; + + +ENTITY composite_text_with_delineation + SUBTYPE OF (composite_text); + delineation : text_delineation; +END_ENTITY; + + +ENTITY composite_text_with_extent + SUBTYPE OF (composite_text); + extent : planar_extent; +END_ENTITY; + + +ENTITY compound_representation_item + SUPERTYPE OF (ONEOF (point_and_vector, point_path, row_representation_item, table_representation_item)) + SUBTYPE OF (representation_item); + item_element : compound_item_definition; +END_ENTITY; + + +ENTITY compound_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'GEOMETRIC_REPRESENTATION_CONTEXT' + IN TYPEOF ( SELF.context_of_items ) ) AND ( + SELF.context_of_items\ + geometric_representation_context.coordinate_space_dimension =3 ); + WR2 : SIZEOF ( QUERY ( cbsr_i <* SELF.items | SIZEOF ( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'EDGE_BASED_WIREFRAME_MODEL' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'FACE_BASED_SURFACE_MODEL' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'MAPPED_ITEM' , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'AXIS2_PLACEMENT_3D']* TYPEOF ( cbsr_i ) ) <>1 ) ) =0; + WR3 : SIZEOF ( QUERY ( cbsr_i <* SELF.items | SIZEOF ( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'EDGE_BASED_WIREFRAME_MODEL' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'FACE_BASED_SURFACE_MODEL' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'MAPPED_ITEM']* TYPEOF ( cbsr_i ) ) =1 ) ) >0; + WR4 : SIZEOF ( QUERY ( cbsr_i <* SELF.items | ( + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'MAPPED_ITEM' IN TYPEOF ( cbsr_i ) ) + AND ( SIZEOF ( ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'COMPOUND_SHAPE_REPRESENTATION' , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'EDGE_BASED_WIREFRAME_SHAPE_REPRESENTATION' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'NON_MANIFOLD_SURFACE_SHAPE_REPRESENTATION']* TYPEOF ( + cbsr_i\ mapped_item.mapping_source ) ) <>1 ) ) ) =0; +END_ENTITY; + + +ENTITY concentricity_tolerance + SUBTYPE OF (geometric_tolerance_with_datum_reference); +WHERE + WR1 : SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) = 1; +END_ENTITY; + + +ENTITY concept_feature_operator; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY concept_feature_relationship; + name : label; + description : OPTIONAL text; + relating_product_concept_feature : product_concept_feature; + related_product_concept_feature : product_concept_feature; +END_ENTITY; + + +ENTITY concept_feature_relationship_with_condition + SUBTYPE OF (concept_feature_relationship); + conditional_operator : concept_feature_operator; +END_ENTITY; + + +ENTITY conditional_concept_feature + SUBTYPE OF (product_concept_feature); + condition : concept_feature_relationship_with_condition; +END_ENTITY; + + +ENTITY conductance_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONDUCTANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY conductance_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.siemens); +END_ENTITY; + + +ENTITY configurable_item + SUBTYPE OF (configuration_item); + item_concept_feature : SET [1:?] OF product_concept_feature_association; +END_ENTITY; + + +ENTITY configuration_design; + configuration : configuration_item; + design : configuration_design_item; +DERIVE + description : text := get_description_value (SELF); + name : label := get_name_value (SELF); +UNIQUE + UR1 : configuration, design; +WHERE + WR1 : SIZEOF (USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1; + WR2 : SIZEOF (USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY configuration_effectivity + SUBTYPE OF (product_definition_effectivity); + configuration : configuration_design; +UNIQUE + UR1: configuration, SELF\product_definition_effectivity.usage, SELF\effectivity.id; +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION_USAGE' IN + TYPEOF (SELF\product_definition_effectivity.usage); +END_ENTITY; + + +ENTITY configuration_item; + id : identifier; + name : label; + description : OPTIONAL text; + item_concept : product_concept; + purpose : OPTIONAL label; +END_ENTITY; + + +ENTITY configuration_item_hierarchical_relationship + SUBTYPE OF (configuration_item_relationship); +END_ENTITY; + + +ENTITY configuration_item_relationship; + name : label; + description : OPTIONAL text; + relating_configuration_item : configuration_item; + related_configuration_item : configuration_item; +END_ENTITY; + + +ENTITY configuration_item_revision_sequence + SUBTYPE OF (configuration_item_relationship); +END_ENTITY; + + +ENTITY configured_effectivity_assignment + SUBTYPE OF (effectivity_assignment); + items : SET [1:?] OF configured_effectivity_item; +WHERE + WR1 : (SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EFFECTIVITY'] * TYPEOF(SELF.assigned_effectivity) ) = 1) + AND (SELF.assigned_effectivity.id = 'configuration validity'); + WR2 : SIZEOF(SELF.items) = 1; + WR3 : SIZEOF( QUERY( i <* SELF.items | NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF(i)) + OR NOT (i\product_definition.frame_of_reference.name IN ['conceptual definition','part occurrence', 'functional definition','alternative definition']) )) = 0; + WR4 : SELF.role.name IN ['design', 'usage']; + WR5 : (SELF.role.name <> 'design') + OR (SIZEOF( QUERY( i <* SELF.items | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF(i)) AND (i\product_definition.frame_of_reference.name = 'part occurrence') )) = 0); + WR6 : (SELF.role.name <> 'usage') OR (SIZEOF( QUERY( i <* SELF.items | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF(i)) AND (i\product_definition.frame_of_reference.name = 'conceptual definition') )) = 0); + WR7 : SELF.role.description IN ['exception', 'inherited', 'local']; + WR8 : SIZEOF( QUERY( x <* USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'EFFECTIVITY_CONTEXT_ASSIGNMENT.ASSIGNED_EFFECTIVITY_ASSIGNMENT') | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONFIGURED_EFFECTIVITY_CONTEXT_ASSIGNMENT' IN TYPEOF(x) )) = 1; +END_ENTITY; + + +ENTITY configured_effectivity_context_assignment + SUBTYPE OF (effectivity_context_assignment); + items : SET [1:?] OF configured_effectivity_context_item; + SELF\effectivity_context_assignment.assigned_effectivity_assignment : configured_effectivity_assignment; +WHERE + WR1 : SIZEOF(SELF.items) = 1; +END_ENTITY; + + +ENTITY conic + SUPERTYPE OF (ONEOF (circle, ellipse, hyperbola, parabola)) + SUBTYPE OF (curve); + position : axis2_placement; +END_ENTITY; + + +ENTITY conical_stepped_hole_transition + SUBTYPE OF (geometric_representation_item); + transition_number : positive_integer; + cone_apex_angle : plane_angle_measure; + cone_base_radius : positive_length_measure; +END_ENTITY; + + +ENTITY conical_surface + SUBTYPE OF (elementary_surface); + radius : length_measure; + semi_angle : plane_angle_measure; +WHERE + WR1 : radius >= 0.0; +END_ENTITY; + + +ENTITY connected_edge_set + SUBTYPE OF (topological_representation_item); + ces_edges : SET [1:?] OF edge; +END_ENTITY; + + +ENTITY connected_face_set + SUPERTYPE OF (ONEOF (closed_shell, open_shell)) + SUBTYPE OF (topological_representation_item); + cfs_faces : SET [1:?] OF face; +END_ENTITY; + + +ENTITY connected_face_sub_set + SUBTYPE OF (connected_face_set); + parent_face_set : connected_face_set; +END_ENTITY; + + +ENTITY constructive_geometry_representation + SUBTYPE OF (representation); +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_REPRESENTATION_CONTEXT' IN TYPEOF(SELF.context_of_items)) AND ({2 <= SELF.context_of_items\geometric_representation_context. coordinate_space_dimension <= 3}); + WR2 : SIZEOF( QUERY( cgr_i <* SELF.items | SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLACEMENT', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_SURFACE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT'] * TYPEOF(cgr_i)) <> 1 )) = 0; + WR3 : SIZEOF( USEDIN( SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'REPRESENTATION_RELATIONSHIP.REP_2') ) > 0; + WR4 : SIZEOF( USEDIN( SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'REPRESENTATION_MAP.MAPPED_REPRESENTATION') ) = 0; +END_ENTITY; + + +ENTITY constructive_geometry_representation_relationship + SUBTYPE OF (representation_relationship); + SELF\representation_relationship.rep_1 : constructive_geometry_representation_or_shape_represenation; + SELF\representation_relationship.rep_2 : constructive_geometry_representation; +WHERE + WR1 : (SELF.rep_1.context_of_items :=: SELF.rep_2.context_of_items) AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_REPRESENTATION_CONTEXT' IN TYPEOF(SELF.rep_1.context_of_items)); + WR2 : NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION' IN TYPEOF(SELF)); +END_ENTITY; + + +ENTITY contact_ratio_representation + SUBTYPE OF (representation); +WHERE + WR1 : ( SIZEOF ( SELF.items ) =1 ) AND ( SIZEOF ( QUERY ( i <* + SELF.items | ( SIZEOF ( ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'MEASURE_REPRESENTATION_ITEM' , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'VALUE_RANGE']* TYPEOF ( i ) ) =1 ) AND ( i.name = + 'ratio value' ) ) ) =1 ); + WR2 : ( SIZEOF ( QUERY ( pdr <* USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) | pdr. name = + 'contact ratio reference' ) ) =1 ) AND ( SIZEOF ( QUERY ( + pdr <* USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) | ( pdr. name = + 'contact ratio reference' ) AND ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'PRODUCT_DEFINITION' IN TYPEOF ( pdr. + definition.definition ) ) ) ) =1 ); + WR3 : ( SIZEOF ( USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) ) =1 ) AND ( SIZEOF ( QUERY ( pdr + <* USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) | SIZEOF ( QUERY ( gpa <* USEDIN ( + pdr. definition , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'GENERAL_PROPERTY_ASSOCIATION.'+ + 'DERIVED_DEFINITION' ) | ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'GENERAL_PROPERTY' IN TYPEOF ( gpa. base_definition ) ) AND + ( gpa. base_definition.name ='surface_condition' ) ) ) =1 ) + ) =1 ); +END_ENTITY; + + +ENTITY context_dependent_invisibility + SUBTYPE OF (invisibility); + presentation_context : invisibility_context; +END_ENTITY; + + +ENTITY context_dependent_over_riding_styled_item + SUBTYPE OF (over_riding_styled_item); + style_context : LIST [1:?] OF style_context_select; +WHERE + WR1 : (SIZEOF(QUERY(sc <* SELF.style_context | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION_ITEM' IN TYPEOF(sc)))= 1) OR +(SIZEOF(QUERY(sc <* SELF.style_context | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF(sc)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION_RELATIONSHIP' IN TYPEOF(sc)) )) + = SIZEOF(style_context)); +END_ENTITY; + + +ENTITY context_dependent_shape_representation; + representation_relation : shape_representation_relationship; + represented_product_relation : product_definition_shape; +DERIVE + description : text := get_description_value(SELF); + name : label := get_name_value(SELF); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION_RELATIONSHIP' IN TYPEOF(SELF.represented_product_relation.definition); + WR2 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; + WR3 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY context_dependent_unit + SUBTYPE OF (named_unit); + name : label; +END_ENTITY; + + +ENTITY contract; + name : label; + purpose : text; + kind : contract_type; +END_ENTITY; + + +ENTITY contract_assignment + ABSTRACT SUPERTYPE; + assigned_contract : contract; +DERIVE + role : object_role := get_role(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; +END_ENTITY; + + +ENTITY contract_relationship; + id : identifier; + name : label; + description : OPTIONAL text; + relating_contract : contract; + related_contract : contract; +END_ENTITY; + + +ENTITY contract_type; + description : label; +END_ENTITY; + + +ENTITY conversion_based_unit + SUBTYPE OF (named_unit); + name : label; + conversion_factor : measure_with_unit; +WHERE + WR1 : SELF\named_unit.dimensions = derive_dimensional_exponents(conversion_factor\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY coordinated_universal_time_offset; + hour_offset : INTEGER; + minute_offset : OPTIONAL INTEGER; + sense : ahead_or_behind; +DERIVE + actual_minute_offset : INTEGER := NVL(minute_offset,0); +WHERE + WR1 : { 0 <= hour_offset < 24 }; + WR2 : { 0 <= actual_minute_offset <= 59 }; + WR3 : NOT (((hour_offset <> 0) OR (actual_minute_offset <>0)) AND (sense = exact)); +END_ENTITY; + + +ENTITY csg_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SELF.context_of_items\geometric_representation_context.coordinate_space_dimension = 3; + WR2 : SIZEOF ( +QUERY ( it <* SELF.items| ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CSG_SOLID', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_REPLICA', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REVOLVED_FACE_SOLID', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EXTRUDED_FACE_SOLID' ] * TYPEOF (it)) <> 1) )) = 0; + WR3 : SIZEOF ( +QUERY ( mi <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) )| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CSG_SHAPE_REPRESENTATION' IN TYPEOF (mi\mapped_item.mapping_source.mapped_representation)) )) = 0; + WR4 : SIZEOF ( +QUERY ( sr <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_REPLICA' IN TYPEOF (it)) )| ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CSG_SOLID', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REVOLVED_FACE_SOLID', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EXTRUDED_FACE_SOLID' ] * TYPEOF (sr\solid_replica.parent_solid)) = 0) )) = 0; + WR5 : SIZEOF ( +QUERY ( it <* SELF.items| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D' IN TYPEOF (it)) )) > 0; +END_ENTITY; + + +ENTITY csg_solid + SUBTYPE OF (solid_model); + tree_root_expression : csg_select; +END_ENTITY; + + +ENTITY currency + ABSTRACT SUPERTYPE OF (ONEOF (externally_defined_currency, iso4217_currency)) + SUBTYPE OF (context_dependent_unit); +WHERE + WR1 : ((SELF\named_unit.dimensions.length_exponent = 0.0) AND + (SELF\named_unit.dimensions.mass_exponent = 0.0) AND + (SELF\named_unit.dimensions.time_exponent = 0.0) AND + (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND + (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND + (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND + (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0)); +END_ENTITY; + + +ENTITY currency_measure_with_unit + SUBTYPE OF (measure_with_unit); + SELF\measure_with_unit.unit_component : currency; +END_ENTITY; + + +ENTITY curve + SUPERTYPE OF (ONEOF (line, conic, pcurve, surface_curve, offset_curve_2d, offset_curve_3d, curve_replica)) + SUBTYPE OF (geometric_representation_item); +END_ENTITY; + + +ENTITY curve_bounded_surface + SUBTYPE OF (bounded_surface); + basis_surface : surface; + boundaries : SET [1:?] OF boundary_curve; + implicit_outer : BOOLEAN; +WHERE + WR1 : (NOT implicit_outer) OR + (SIZEOF (QUERY (temp <* boundaries | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OUTER_BOUNDARY_CURVE' IN TYPEOF(temp))) = 0); + WR2 : (NOT(implicit_outer)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOUNDED_SURFACE' IN TYPEOF(basis_surface)); + WR3 : SIZEOF(QUERY(temp <* boundaries | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OUTER_BOUNDARY_CURVE' IN + TYPEOF(temp))) <= 1; + WR4 : SIZEOF(QUERY(temp <* boundaries | + (temp\composite_curve_on_surface.basis_surface [1] <> + SELF.basis_surface))) = 0; +END_ENTITY; + + +ENTITY curve_dimension + SUBTYPE OF (dimension_curve_directed_callout); +END_ENTITY; + + +ENTITY curve_replica + SUBTYPE OF (curve); + parent_curve : curve; + transformation : cartesian_transformation_operator; +WHERE + WR1 : transformation.dim = parent_curve.dim; + WR2 : acyclic_curve_replica (SELF, parent_curve); +END_ENTITY; + + +ENTITY curve_style + SUBTYPE OF (founded_item); + name : label; + curve_font : curve_font_or_scaled_curve_font_select; + curve_width : size_select; + curve_colour : colour; +END_ENTITY; + + +ENTITY curve_style_font + SUBTYPE OF (founded_item); + name : label; + pattern_list : LIST [1:?] OF curve_style_font_pattern; +END_ENTITY; + + +ENTITY curve_style_font_and_scaling + SUBTYPE OF (founded_item); + name : label; + curve_font : curve_style_font_select; + curve_font_scaling : REAL; +END_ENTITY; + + +ENTITY curve_style_font_pattern + SUBTYPE OF (founded_item); + visible_segment_length : positive_length_measure; + invisible_segment_length : positive_length_measure; +END_ENTITY; + + +ENTITY curve_style_rendering; + rendering_method : shading_curve_method; + rendering_properties : surface_rendering_properties; +END_ENTITY; + + +ENTITY curve_swept_solid_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF (QUERY (it <* SELF.items | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SWEPT_AREA_SOLID', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SWEPT_DISK_SOLID', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D'] * + TYPEOF(it)) = 1))) = 0; + WR2 : SIZEOF (QUERY (it <* SELF.items | + SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SWEPT_AREA_SOLID', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SWEPT_DISK_SOLID', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM'] * TYPEOF(it)) =1 )) > 0; + WR3 : SIZEOF (QUERY (mi <* QUERY (it <* items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_SWEPT_SOLID_SHAPE_REPRESENTATION' IN + TYPEOF(mi\mapped_item.mapping_source. + mapped_representation)))) = 0; + WR4 : SIZEOF (QUERY (scsas <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE_SWEPT_AREA_SOLID' IN + TYPEOF(it)) | + NOT(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE' IN + TYPEOF(scsas\surface_curve_swept_area_solid.directrix)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN + TYPEOF(scsas\surface_curve_swept_area_solid.directrix))))) = 0; +END_ENTITY; + + +ENTITY cylindrical_surface + SUBTYPE OF (elementary_surface); + radius : positive_length_measure; +END_ENTITY; + + +ENTITY cylindricity_tolerance + SUBTYPE OF (geometric_tolerance); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF (SELF)); +END_ENTITY; + + +ENTITY data_environment; + name : label; + description : text; + elements : SET [1:?] OF property_definition_representation; +END_ENTITY; + + +ENTITY date + SUPERTYPE OF (ONEOF (calendar_date, ordinal_date, week_of_year_and_day_date, year_month)); + year_component : year_number; +END_ENTITY; + + +ENTITY date_and_time; + date_component : date; + time_component : local_time; +END_ENTITY; + + +ENTITY date_and_time_assignment + ABSTRACT SUPERTYPE; + assigned_date_and_time : date_and_time; + role : date_time_role; +END_ENTITY; + + +ENTITY date_assignment + ABSTRACT SUPERTYPE; + assigned_date : date; + role : date_role; +END_ENTITY; + + +ENTITY date_representation_item + SUBTYPE OF (representation_item, date); +END_ENTITY; + + +ENTITY date_role; + name : label; +DERIVE + description : text := get_description_value (SELF); +WHERE + WR1 : SIZEOF (USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY date_time_representation_item + SUBTYPE OF (representation_item, date_and_time); +END_ENTITY; + + +ENTITY date_time_role; + name : label; +DERIVE + description : text := get_description_value (SELF); +WHERE + WR1 : SIZEOF (USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY dated_effectivity + SUBTYPE OF (effectivity); + effectivity_end_date : OPTIONAL date_time_or_event_occurrence; + effectivity_start_date : date_time_or_event_occurrence; +END_ENTITY; + + +ENTITY datum + SUBTYPE OF (shape_aspect); + identification : identifier; +INVERSE + established_by_relationships: SET [1:?] OF shape_aspect_relationship FOR related_shape_aspect; +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMMON_DATUM' IN TYPEOF(SELF)) XOR + ((SIZEOF(QUERY(x <* SELF\datum.established_by_relationships | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DATUM_FEATURE' IN TYPEOF(x\shape_aspect_relationship.relating_shape_aspect)))) = 1) XOR + (SIZEOF(QUERY(x <* SELF\datum.established_by_relationships | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DATUM_TARGET' IN TYPEOF(x\shape_aspect_relationship.relating_shape_aspect)))) >= 1)); +END_ENTITY; + + +ENTITY datum_feature + SUBTYPE OF (shape_aspect); +INVERSE + feature_basis_relationship: SET [1:?] OF shape_aspect_relationship FOR relating_shape_aspect; +WHERE + WR1 : SIZEOF(QUERY(sar <* SELF\datum_feature.feature_basis_relationship + | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DATUM' IN TYPEOF + (sar\shape_aspect_relationship.related_shape_aspect)))) = 1; + WR2 : SELF\shape_aspect.product_definitional = TRUE; +END_ENTITY; + + +ENTITY datum_feature_callout + SUBTYPE OF (draughting_callout); +END_ENTITY; + + +ENTITY datum_reference; + precedence : INTEGER; + referenced_datum : datum; +WHERE + WR1 : precedence > 0; +END_ENTITY; + + +ENTITY datum_target + SUBTYPE OF (shape_aspect); + target_id : identifier; +INVERSE + target_basis_relationship: SET [1:?] OF shape_aspect_relationship FOR relating_shape_aspect; +WHERE + WR1 : SIZEOF(QUERY(sar <* SELF\datum_target.target_basis_relationship + | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DATUM' IN TYPEOF + (sar\shape_aspect_relationship.related_shape_aspect)))) = 1; + WR2 : SELF\shape_aspect.product_definitional = TRUE; +END_ENTITY; + + +ENTITY datum_target_callout + SUBTYPE OF (draughting_callout); +END_ENTITY; + + +ENTITY default_tolerance_table + SUBTYPE OF (representation); +WHERE + WR1 : SIZEOF( QUERY( i <* SELF.items | NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DEFAULT_TOLERANCE_TABLE_CELL' IN TYPEOF(i)) )) = 0; + WR2 : (SIZEOF( QUERY( rr <* USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'REPRESENTATION_RELATIONSHIP.REP_1') | rr.name < 'general tolerance definition' )) = 0) AND (SIZEOF( QUERY( rr <* USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'REPRESENTATION_RELATIONSHIP.REP_1') | (rr.name = 'general tolerance definition') AND (rr.rep_2.name < 'default tolerance') )) = 0) AND (SIZEOF( USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'REPRESENTATION_RELATIONSHIP.REP_2') ) = 0); +END_ENTITY; + + +ENTITY default_tolerance_table_cell + SUBTYPE OF (compound_representation_item); +WHERE + WR1 : SIZEOF(QUERY( x <* USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'REPRESENTATION.ITEMS') | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DEFAULT_TOLERANCE_TABLE' IN TYPEOF(x)))=1; + WR2 : default_tolerance_table_cell_wr2(SELF\compound_representation_item.item_element); + WR3 : default_tolerance_table_cell_wr3(SELF\compound_representation_item.item_element); + WR4 : default_tolerance_table_cell_wr4(SELF\compound_representation_item.item_element); + WR5 : default_tolerance_table_cell_wr5(SELF\compound_representation_item.item_element); +END_ENTITY; + + +ENTITY defined_symbol + SUBTYPE OF (geometric_representation_item); + definition : defined_symbol_select; + target : symbol_target; +END_ENTITY; + + +ENTITY definitional_representation + SUBTYPE OF (representation); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PARAMETRIC_REPRESENTATION_CONTEXT' IN + TYPEOF (SELF\representation.context_of_items ); +END_ENTITY; + + +ENTITY definitional_representation_relationship + SUBTYPE OF (representation_relationship); +WHERE + WR1 : acyclic_representation_relationship(SELF, + [SELF\representation_relationship.rep_2], + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'REPRESENTATION'); +END_ENTITY; + + +ENTITY definitional_representation_relationship_with_same_context + SUBTYPE OF (definitional_representation_relationship); +WHERE + WR1 : SELF\representation_relationship.rep_1.context_of_items :=: + SELF\representation_relationship.rep_2.context_of_items; +END_ENTITY; + + +ENTITY degenerate_pcurve + SUBTYPE OF (point); + basis_surface : surface; + reference_to_curve : definitional_representation; +WHERE + WR1 : SIZEOF(reference_to_curve\representation.items) = 1; + WR2 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE' IN TYPEOF + (reference_to_curve\representation.items[1]); + WR3 : reference_to_curve\representation. + items[1]\geometric_representation_item.dim =2; +END_ENTITY; + + +ENTITY degenerate_toroidal_surface + SUBTYPE OF (toroidal_surface); + select_outer : BOOLEAN; +WHERE + WR1 : major_radius < minor_radius; +END_ENTITY; + + +ENTITY derived_shape_aspect + SUPERTYPE OF (ONEOF (apex, centre_of_symmetry, geometric_alignment, geometric_intersection, parallel_offset, perpendicular_to, extension, tangent)) + SUBTYPE OF (shape_aspect); +INVERSE + deriving_relationships: SET [1:?] OF shape_aspect_relationship FOR relating_shape_aspect; +WHERE + WR1 : SIZEOF (QUERY (dr <* + SELF\derived_shape_aspect.deriving_relationships | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SHAPE_ASPECT_DERIVING_RELATIONSHIP' + IN TYPEOF (dr)))) = 0; +END_ENTITY; + + +ENTITY derived_unit + SUPERTYPE OF (ONEOF (absorbed_dose_unit, acceleration_unit, radioactivity_unit, area_unit, capacitance_unit, dose_equivalent_unit, electric_charge_unit, conductance_unit, electric_potential_unit, energy_unit, magnetic_flux_density_unit, force_unit, frequency_unit, illuminance_unit, inductance_unit, magnetic_flux_unit, power_unit, pressure_unit, resistance_unit, velocity_unit, volume_unit)); + elements : SET [1:?] OF derived_unit_element; +DERIVE + name : label := get_name_value(SELF); +WHERE + WR1 : (SIZEOF(elements) > 1) OR ((SIZEOF(elements) = 1) AND (elements[1].exponent <> 1.0)); + WR2 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY derived_unit_element; + unit : named_unit; + exponent : REAL; +END_ENTITY; + + +ENTITY description_attribute; + attribute_value : text; + described_item : description_attribute_select; +END_ENTITY; + + +ENTITY descriptive_representation_item + SUPERTYPE OF (ONEOF (tagged_text_item, uniform_resource_identifier)) + SUBTYPE OF (representation_item); + description : text; +END_ENTITY; + + +ENTITY design_context + SUBTYPE OF (product_definition_context); +WHERE + WR1 : SELF.life_cycle_stage = 'design'; +END_ENTITY; + + +ENTITY design_make_from_relationship + SUBTYPE OF (product_definition_relationship); +END_ENTITY; + + +ENTITY diameter_dimension + SUBTYPE OF (dimension_curve_directed_callout); +END_ENTITY; + + +ENTITY dielectric_constant_measure_with_unit + SUBTYPE OF (ratio_measure_with_unit); +END_ENTITY; + + +ENTITY dimension_callout + SUBTYPE OF (draughting_callout); +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_DIRECTED_CALLOUT' + IN (TYPEOF (SELF))) XOR + (SIZEOF (QUERY(dce_1 <* SELF\draughting_callout.contents | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_CURVE' + IN (TYPEOF(dce_1))))) = 0); + WR2 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROJECTION_DIRECTED_CALLOUT' + IN (TYPEOF (SELF))) XOR + (SIZEOF (QUERY(dce_1 <* SELF\draughting_callout.contents | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROJECTION_CURVE' + IN (TYPEOF(dce_1))))) = 0); + WR3 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT' + IN (TYPEOF (SELF))) XOR + (SIZEOF (QUERY(dce_1 <* SELF\draughting_callout.contents | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIMENSION_CURVE' + IN (TYPEOF(dce_1))))) = 0); +END_ENTITY; + + +ENTITY dimension_callout_component_relationship + SUBTYPE OF (draughting_callout_relationship); +WHERE + WR1 : SELF.name IN ['prefix', 'suffix']; + WR2 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRUCTURED_DIMENSION_CALLOUT' + IN TYPEOF (SELF.relating_draughting_callout); + WR3 : SIZEOF (TYPEOF (SELF.related_draughting_callout) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_DIRECTED_CALLOUT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROJECTION_DIRECTED_CALLOUT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRUCTURED_DIMENSION_CALLOUT']) = 0; + WR4 : SELF.related_draughting_callout.contents * + SELF.relating_draughting_callout.contents = + SELF.related_draughting_callout.contents; + WR5 : ((SELF.name = 'prefix') AND + (SIZEOF (QUERY (ato <* QUERY (con <* + SELF.related_draughting_callout.contents | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF(con))) | + NOT (ato.name = 'prefix text') + )) = 0)); + WR6 : ((SELF.name = 'suffix') AND + (SIZEOF (QUERY (ato <* QUERY (con <* + SELF.related_draughting_callout.contents | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF(con))) | + NOT (ato.name = 'suffix text') + )) = 0)); +END_ENTITY; + + +ENTITY dimension_callout_relationship + SUBTYPE OF (draughting_callout_relationship); +WHERE + WR1 : SELF.name IN ['primary', 'secondary']; + WR2 : SIZEOF (TYPEOF (SELF.relating_draughting_callout) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANGULAR_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIAMETER_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_DIRECTED_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINEAR_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORDINATE_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RADIUS_DIMENSION'])>=1; + WR3 : SIZEOF (TYPEOF (SELF.related_draughting_callout) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROJECTION_DIRECTED_CALLOUT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_DIRECTED_CALLOUT']) = 0; + WR4 : SELF.related_draughting_callout.contents * + SELF.relating_draughting_callout.contents = + SELF.related_draughting_callout.contents; +END_ENTITY; + + +ENTITY dimension_curve + SUBTYPE OF (annotation_curve_occurrence); +WHERE + WR1 : (SIZEOF( + QUERY(dct <* USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'TERMINATOR_SYMBOL.ANNOTATED_CURVE') + | (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DIMENSION_CURVE_TERMINATOR' IN TYPEOF(dct)) + )) + ) <= 2); + WR2 : SIZEOF( + QUERY( dcdc <* USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_CALLOUT.CONTENTS') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DIMENSION_CURVE_DIRECTED_CALLOUT' IN TYPEOF(dcdc))) + )>= 1; + WR3 : (SIZEOF( + QUERY(dct1 <* USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'TERMINATOR_SYMBOL.ANNOTATED_CURVE') + | (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DIMENSION_CURVE_TERMINATOR' IN TYPEOF(dct1)) + AND (dct1\dimension_curve_terminator.role = dimension_extent_usage.origin))) + ) <= 1) + AND + (SIZEOF( + QUERY (dct2 <* USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'TERMINATOR_SYMBOL.ANNOTATED_CURVE') + | (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DIMENSION_CURVE_TERMINATOR' IN TYPEOF(dct2)) + AND (dct2\dimension_curve_terminator.role = dimension_extent_usage.target))) + ) <= 1); +END_ENTITY; + + +ENTITY dimension_curve_directed_callout + SUBTYPE OF (draughting_callout); +WHERE + WR1 : SIZEOF(QUERY(d_c<*SELF\draughting_callout.contents | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIMENSION_CURVE' IN (TYPEOF(d_c))))=1; + WR2 : SIZEOF(SELF\draughting_callout.contents) >= 2; +END_ENTITY; + + +ENTITY dimension_curve_terminator + SUBTYPE OF (terminator_symbol); + role : dimension_extent_usage; +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIMENSION_CURVE' IN TYPEOF + (SELF\terminator_symbol.annotated_curve); +END_ENTITY; + + +ENTITY dimension_curve_terminator_to_projection_curve_associativity + SUBTYPE OF (annotation_occurrence_associativity); + SELF\annotation_occurrence_relationship.related_annotation_occurrence : projection_curve; + SELF\annotation_occurrence_relationship.relating_annotation_occurrence : dimension_curve_terminator; +END_ENTITY; + + +ENTITY dimension_pair + SUBTYPE OF (draughting_callout_relationship); +WHERE + WR1 : SELF.name IN ['chained', 'parallel']; + WR2 : SIZEOF (TYPEOF (SELF.relating_draughting_callout) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANGULAR_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIAMETER_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINEAR_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORDINATE_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RADIUS_DIMENSION'])=1; + WR3 : SIZEOF (TYPEOF (SELF.related_draughting_callout) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANGULAR_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIAMETER_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINEAR_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORDINATE_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RADIUS_DIMENSION'])=1; +END_ENTITY; + + +ENTITY dimension_related_tolerance_zone_element; + related_dimension : dimensional_location; + related_element : tolerance_zone_definition; +END_ENTITY; + + +ENTITY dimension_text_associativity + SUBTYPE OF (text_literal, mapped_item); +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_DIMENSION_REPRESENTATION' + IN TYPEOF (SELF\mapped_item. + mapping_source.mapped_representation)); + WR2 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_CALLOUT' + IN TYPEOF (SELF\mapped_item.mapping_target)); + WR3 : SIZEOF (QUERY (ato <* QUERY (si <* + USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM.ITEM') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF(si))) | + NOT (SIZEOF( QUERY (dc <* + USEDIN (ato, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_CALLOUT.CONTENTS') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_CALLOUT' + IN TYPEOF (dc))) + * [SELF\mapped_item.mapping_target]) = 1) + )) = 0; +END_ENTITY; + + +ENTITY dimensional_characteristic_representation; + dimension : dimensional_characteristic; + representation : shape_dimension_representation; +END_ENTITY; + + +ENTITY dimensional_exponents; + length_exponent : REAL; + mass_exponent : REAL; + time_exponent : REAL; + electric_current_exponent : REAL; + thermodynamic_temperature_exponent : REAL; + amount_of_substance_exponent : REAL; + luminous_intensity_exponent : REAL; +END_ENTITY; + + +ENTITY dimensional_location + SUPERTYPE OF (ONEOF (angular_location, dimensional_location_with_path)) + SUBTYPE OF (shape_aspect_relationship); +END_ENTITY; + + +ENTITY dimensional_location_with_path + SUBTYPE OF (dimensional_location); + path : shape_aspect; +END_ENTITY; + + +ENTITY dimensional_size + SUPERTYPE OF (ONEOF (angular_size, dimensional_size_with_path)); + applies_to : shape_aspect; + name : label; +WHERE + WR1 : applies_to.product_definitional = TRUE; +END_ENTITY; + + +ENTITY dimensional_size_with_path + SUBTYPE OF (dimensional_size); + path : shape_aspect; +END_ENTITY; + + +ENTITY directed_action + SUBTYPE OF (executed_action); + directive : action_directive; +END_ENTITY; + + +ENTITY directed_dimensional_location + SUBTYPE OF (dimensional_location); +END_ENTITY; + + +ENTITY direction + SUBTYPE OF (geometric_representation_item); + direction_ratios : LIST [2:3] OF REAL; +WHERE + WR1 : SIZEOF(QUERY(tmp <* direction_ratios | tmp <> 0.0)) > 0; +END_ENTITY; + + +ENTITY document; + id : identifier; + name : label; + description : OPTIONAL text; + kind : document_type; +INVERSE + representation_types: SET [0:?] OF document_representation_type FOR represented_document; +END_ENTITY; + + +ENTITY document_file + SUBTYPE OF (document, characterized_object); +WHERE + WR1 : SELF\characterized_object.name = ''; + WR2 : NOT EXISTS(SELF\characterized_object.description); + WR3 : SIZEOF( QUERY( drt <* SELF\document.representation_types | + drt.name IN ['digital','physical'])) = 1; +END_ENTITY; + + +ENTITY document_identifier + SUBTYPE OF (group); +UNIQUE + UR1: SELF\group.name, SELF\group.description; +END_ENTITY; + + +ENTITY document_identifier_assignment + SUBTYPE OF (group_assignment); + items : SET [1:?] OF document_identifier_assigned_item; + SELF\group_assignment.assigned_group : document_identifier; +END_ENTITY; + + +ENTITY document_product_association; + name : label; + description : OPTIONAL text; + relating_document : document; + related_product : product_or_formation_or_definition; +END_ENTITY; + + +ENTITY document_product_equivalence + SUBTYPE OF (document_product_association); +WHERE + WR1 : SELF\document_product_association.name = 'equivalence'; + WR2 : NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT' IN TYPEOF(SELF\document_product_association.related_product)) OR ((SELF\document_product_association.relating_document.kind. product_data_type = 'configuration controlled document') AND (SIZEOF( QUERY( prpc <* USEDIN(SELF\document_product_association.related_product,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.name = 'document' )) = 1)); + WR3 : NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION_FORMATION' IN TYPEOF(SELF.related_product)) OR ((SELF\document_product_association.relating_document.kind.product_data_type = 'configuration controlled document version') AND (SIZEOF( QUERY( prpc <* USEDIN(SELF.related_product\product_definition_formation.of_product, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.name = 'document')) = 1)); + WR4 : NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF(SELF.related_product)) OR ((SELF\document_product_association.relating_document.kind.product_data_type = 'configuration controlled document definition') AND (SIZEOF( QUERY( prpc <* USEDIN(SELF\document_product_association.related_product\product_definition.formation.of_product, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.name = 'document' )) = 1)); +END_ENTITY; + + +ENTITY document_reference + ABSTRACT SUPERTYPE; + assigned_document : document; + source : label; +DERIVE + role : object_role := get_role(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; +END_ENTITY; + + +ENTITY document_relationship; + name : label; + description : OPTIONAL text; + relating_document : document; + related_document : document; +END_ENTITY; + + +ENTITY document_representation_type; + name : label; + represented_document : document; +END_ENTITY; + + +ENTITY document_type; + product_data_type : label; +END_ENTITY; + + +ENTITY document_usage_constraint; + source : document; + subject_element : label; + subject_element_value : text; +END_ENTITY; + + +ENTITY document_usage_constraint_assignment + ABSTRACT SUPERTYPE; + assigned_document_usage : document_usage_constraint; + role : document_usage_role; +END_ENTITY; + + +ENTITY document_usage_role; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY dose_equivalent_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DOSE_EQUIVALENT_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY dose_equivalent_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.sievert); +END_ENTITY; + + +ENTITY double_offset_shelled_solid + SUBTYPE OF (shelled_solid); + thickness2 : length_measure; +WHERE + WR1 : thickness2 <> 0; + WR2 : SELF\shelled_solid.thickness <> thickness2; +END_ENTITY; + + +ENTITY draped_defined_transformation + SUBTYPE OF (transformation_with_derived_angle); +END_ENTITY; + + +ENTITY draughting_annotation_occurrence + SUBTYPE OF (annotation_occurrence); +WHERE + WR1 : (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_CURVE_OCCURRENCE' + IN TYPEOF (SELF))) OR + (SIZEOF (QUERY (sty <* SELF.styles | + NOT ((SIZEOF (sty.styles) = 1) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF (sty.styles[1]))) )) = 0); + WR2 : (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_FILL_AREA_OCCURRENCE' + IN TYPEOF (SELF))) OR (SIZEOF (QUERY (sty <* SELF.styles | + NOT ((SIZEOF (sty.styles) = 1) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FILL_AREA_STYLE' + IN TYPEOF (sty.styles[1]))) )) = 0); + WR3 : (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_FILL_AREA_OCCURRENCE' + IN TYPEOF (SELF))) OR (SIZEOF (QUERY (bound <* + SELF.item\annotation_fill_area.boundaries | + NOT (SIZEOF (QUERY (si <* + USEDIN (bound, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'STYLED_ITEM.ITEM') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'ANNOTATION_CURVE_OCCURRENCE' IN TYPEOF (si)))) > 0))) = 0); + WR4 : (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_SYMBOL_OCCURRENCE' + IN TYPEOF (SELF))) OR (SIZEOF (QUERY (sty <* SELF.styles | + NOT ((SIZEOF (sty.styles) = 1) AND + (SIZEOF (TYPEOF (sty.styles[1]) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SYMBOL_STYLE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.NULL_STYLE']) = 1)) )) = 0); + WR5 : (NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_SYMBOL_OCCURRENCE' + IN TYPEOF (SELF)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_SYMBOL' + IN TYPEOF(SELF.item)))) OR + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_SYMBOL_REPRESENTATION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_SUBFIGURE_REPRESENTATION'] * + TYPEOF (SELF.item\mapped_item.mapping_source. + mapped_representation)) = 1); + WR6 : (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF (SELF))) OR + (SIZEOF (QUERY (sty <* SELF.styles | + NOT ((SIZEOF (sty.styles) = 1) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_STYLE' + IN TYPEOF (sty.styles[1]))) )) = 0); + WR7 : (NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF (SELF))) OR + (SIZEOF (TYPEOF(SELF.item) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_TEXT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_LITERAL']) = 1); + WR8 : (NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF (SELF)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_TEXT' + IN TYPEOF (SELF.item)))) OR (SIZEOF (QUERY (tl <* + SELF.item\composite_text.collected_text | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_LITERAL' + IN TYPEOF (tl)) )) = 0); + WR9 : (NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF (SELF)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_LITERAL' + IN TYPEOF (SELF.item)))) OR (SELF.item\text_literal.alignment + IN ['baseline left', 'baseline centre', 'baseline right']); + WR10 : (NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF (SELF)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_TEXT' + IN TYPEOF (SELF.item)))) OR + (SIZEOF (QUERY (tl <* QUERY (text <* SELF. + item\composite_text.collected_text + |('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_LITERAL' IN TYPEOF(text))) | + NOT (tl\text_literal.alignment IN + ['baseline left', 'baseline centre', 'baseline right']) )) = 0); + WR11 : NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF(SELF)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_TEXT' + IN TYPEOF (SELF.item))) OR check_text_alignment(SELF.item); + WR12 : NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF(SELF)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_TEXT' + IN TYPEOF (SELF.item))) OR check_text_font(SELF.item); + WR13 : (NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF(SELF)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_TEXT' + IN TYPEOF (SELF.item)))) OR + (SIZEOF (QUERY (tl <* QUERY (text <* + SELF.item\composite_text.collected_text | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_LITERAL' IN TYPEOF (text))) | + NOT (SIZEOF (TYPEOF(tl) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'TEXT_LITERAL_WITH_BLANKING_BOX', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'TEXT_LITERAL_WITH_ASSOCIATED_CURVES']) = 0) )) = 0); + WR14 : (NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF (SELF)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_LITERAL_WITH_ASSOCIATED_CURVES' + IN TYPEOF (SELF.item)))) OR + (SIZEOF (QUERY (crv <* + SELF.item\text_literal_with_associated_curves. + associated_curves | + NOT (SIZEOF (QUERY (si <* USEDIN (crv, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM.ITEM') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_CURVE_OCCURRENCE' + IN TYPEOF (si)) )) > 0) )) = 0); + WR15 : (NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF (SELF)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_TEXT_WITH_ASSOCIATED_CURVES' + IN TYPEOF (SELF.item)))) OR + (SIZEOF (QUERY (crv <* + SELF.item\composite_text_with_associated_curves. + associated_curves | + NOT (SIZEOF (QUERY (si <* USEDIN (crv, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM.ITEM') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_CURVE_OCCURRENCE' + IN TYPEOF (si)) )) > 0) )) = 0); + WR16 : SIZEOF (QUERY (cs <* QUERY (sty <* SELF.styles | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' IN TYPEOF (sty.styles[1]))) + | NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE_WITH_UNIT' + IN TYPEOF (cs.styles[1]\curve_style.curve_width)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITIVE_LENGTH_MEASURE' + IN TYPEOF (cs.styles[1]\curve_style. + curve_width\measure_with_unit.value_component))))) = 0; + WR17 : SIZEOF (QUERY (fas <* QUERY (sty <* SELF.styles | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FILL_AREA_STYLE' + IN TYPEOF (sty.styles[1]))) | + NOT ((SIZEOF (QUERY (fs <* fas.styles[1]\fill_area_style.fill_styles + | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FILL_AREA_STYLE_TILES' + IN TYPEOF (fs)))) <= 1) + AND (SIZEOF (QUERY (fst <* QUERY (fs <* + fas.styles[1]\fill_area_style.fill_styles | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FILL_AREA_STYLE_TILES' + IN TYPEOF (fs))) | + NOT (SIZEOF (fst\fill_area_style_tiles.tiles) = 1) + )) = 0)) + )) = 0; + WR18 : SIZEOF (QUERY (fas <* QUERY (sty <* SELF.styles | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FILL_AREA_STYLE' + IN TYPEOF (sty.styles[1]))) | + NOT (SIZEOF (QUERY (fsh <* QUERY (fs <* + fas.styles[1]\fill_area_style.fill_styles | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FILL_AREA_STYLE_HATCHING' + IN TYPEOF (fs))) | + NOT (fsh\fill_area_style_hatching.point_of_reference_hatch_line :=: + fsh\fill_area_style_hatching.pattern_start) )) = 0) )) = 0; + WR19 : SIZEOF (QUERY (ts <* QUERY (sty <* SELF.styles | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_STYLE' + IN TYPEOF(sty.styles[1]))) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'TEXT_STYLE_WITH_BOX_CHARACTERISTICS' + IN TYPEOF (ts.styles[1])))) = 0; + WR20 : SIZEOF (QUERY (ts <* QUERY (sty <* SELF.styles | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_STYLE_WITH_BOX_CHARACTERISTICS' + IN TYPEOF (sty.styles[1]))) | + NOT (SIZEOF (ts.styles[1]\text_style_with_box_characteristics. + characteristics) = 4) )) = 0; +END_ENTITY; + + +ENTITY draughting_callout + SUPERTYPE OF ((ONEOF (datum_feature_callout, datum_target_callout, dimension_curve_directed_callout, draughting_elements, geometrical_tolerance_callout, leader_directed_callout, projection_directed_callout, structured_dimension_callout) ANDOR surface_condition_callout)) + SUBTYPE OF (geometric_representation_item); + contents : SET [1:?] OF draughting_callout_element; +WHERE + WR1 : (SIZEOF (QUERY (l_1 <* SELF\draughting_callout.contents | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_CURVE' IN (TYPEOF(l_1)))) = 0) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_DIRECTED_CALLOUT' IN (TYPEOF(SELF))) AND + (SIZEOF (QUERY (l_1 <* SELF\draughting_callout.contents | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROJECTION_CURVE' IN (TYPEOF(l_1)))) = 0) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROJECTION_DIRECTED_CALLOUT' IN (TYPEOF(SELF))) AND + (SIZEOF (QUERY (l_1 <* SELF\draughting_callout.contents | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIMENSION_CURVE' IN (TYPEOF(l_1)))) = 0) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT' IN (TYPEOF(SELF))); +END_ENTITY; + + +ENTITY draughting_callout_relationship; + name : label; + description : text; + relating_draughting_callout : draughting_callout; + related_draughting_callout : draughting_callout; +END_ENTITY; + + +ENTITY draughting_elements + SUBTYPE OF (draughting_callout); +WHERE + WR1 : SIZEOF (QUERY (l_c <* QUERY (con <* SELF.contents | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_CURVE' IN TYPEOF(con))) | + NOT (SIZEOF (QUERY (ldc <* USEDIN (l_c, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DRAUGHTING_CALLOUT.CONTENTS') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_DIRECTED_CALLOUT' + IN TYPEOF (ldc)))) <= 1)))=0; + WR2 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT' + IN TYPEOF(SELF)) OR + (SIZEOF (QUERY (con <* SELF.contents | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROJECTION_CURVE' IN + TYPEOF (con)))) <= 2); + WR3 : SIZEOF (QUERY (rc <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_CALLOUT_' + + 'RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DIMENSION_CALLOUT_RELATIONSHIP' IN TYPEOF (rc)) AND + (rc.name = 'primary') )) <= 1; + WR4 : SIZEOF (QUERY (rc <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_CALLOUT_' + + 'RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DIMENSION_CALLOUT_RELATIONSHIP' IN TYPEOF (rc)) AND + (rc.name = 'secondary') )) <= 1; + WR5 : SIZEOF (QUERY (sec <* QUERY (rc <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_CALLOUT_' + + 'RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DIMENSION_CALLOUT_RELATIONSHIP' IN TYPEOF (rc)) AND + (rc.name = 'secondary') ) | + NOT (SIZEOF (QUERY (prim <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_CALLOUT_' + + 'RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DIMENSION_CALLOUT_RELATIONSHIP' IN TYPEOF (prim)) AND + (prim.name = 'primary') )) = 1))) = 0; +END_ENTITY; + + +ENTITY draughting_model + SUBTYPE OF (representation); + SELF\representation.items : SET [1:?] OF draughting_model_item_select; +UNIQUE + UR1: SELF\representation.name; +WHERE + WR1 : SIZEOF (QUERY (mi <* QUERY (it <* SELF.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF(it))) | + NOT ( + SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_REPRESENTATION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_MODEL'] * + TYPEOF (mi\mapped_item.mapping_source. + mapped_representation)) = 1 + ))) = 0; + WR2 : SIZEOF (QUERY (smi <* QUERY (si <* QUERY (it <* SELF.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' IN TYPEOF(it))) | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN + TYPEOF(si\styled_item.item))) | + (NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_REPRESENTATION' IN + TYPEOF(smi\styled_item.item\mapped_item. + mapping_source.mapped_representation)) + AND + (SIZEOF (QUERY (sty <* smi\styled_item.styles | + (NOT (SIZEOF (QUERY (psa <* sty.styles | + (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' IN TYPEOF(psa))))) = 1 + )))) = 1))) + )) = 0; +END_ENTITY; + + +ENTITY draughting_model_item_association + SUBTYPE OF (item_identified_representation_usage); + SELF\item_identified_representation_usage.definition : shape_definition; + SELF\item_identified_representation_usage.identified_item : draughting_model_item_association_select; + SELF\item_identified_representation_usage.used_representation : draughting_model; +END_ENTITY; + + +ENTITY draughting_pre_defined_colour + SUBTYPE OF (pre_defined_colour); +WHERE + WR1 : SELF.name IN + ['red', + 'green', + 'blue', + 'yellow', + 'magenta', + 'cyan', + 'black', + 'white']; +END_ENTITY; + + +ENTITY draughting_pre_defined_curve_font + SUBTYPE OF (pre_defined_curve_font); +WHERE + WR1 : SELF.name IN + ['continuous', + 'chain', + 'chain double dash', + 'dashed', + 'dotted']; +END_ENTITY; + + +ENTITY draughting_pre_defined_text_font + SUBTYPE OF (pre_defined_text_font); +WHERE + WR1 : SELF.name[1:8] = 'ISO 3098'; +END_ENTITY; + + +ENTITY draughting_subfigure_representation + SUBTYPE OF (symbol_representation); +WHERE + WR1 : SIZEOF (QUERY (item <* SELF\representation.items | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_OCCURRENCE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_CALLOUT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT'] + * TYPEOF (item)) = 1))) = 0; + WR2 : SIZEOF (QUERY (item <* SELF\representation.items | + SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_OCCURRENCE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_CALLOUT'] * + TYPEOF (item)) = 1)) >= 1; + WR3 : SIZEOF (QUERY (srm <* QUERY (rm <* + USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'REPRESENTATION_MAP.MAPPED_REPRESENTATION') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SYMBOL_REPRESENTATION_MAP' + IN TYPEOF(rm))) | + NOT (SIZEOF (QUERY (a_s <* QUERY (mi <* srm.map_usage | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_SYMBOL' IN TYPEOF(mi))) + | NOT (SIZEOF (QUERY (aso <* + USEDIN (a_s, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'STYLED_ITEM.ITEM') | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_SUBFIGURE_OCCURRENCE' + IN TYPEOF(aso)))) = 0))) = 0))) > 0; + WR4 : NOT (acyclic_mapped_item_usage (SELF)); + WR5 : SIZEOF (SELF.context_of_items.representations_in_context) = 1; +END_ENTITY; + + +ENTITY draughting_symbol_representation + SUBTYPE OF (symbol_representation); +UNIQUE + UR1: SELF\representation.name; +WHERE + WR1 : SIZEOF (QUERY (item <* SELF\representation.items | + NOT (SIZEOF (TYPEOF (item) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_CURVE_OCCURRENCE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_SYMBOL_OCCURRENCE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_FILL_AREA_OCCURRENCE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT']) = 1) + )) = 0; + WR2 : SIZEOF (QUERY (item <* SELF\representation.items | + (SIZEOF (TYPEOF (item) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_CURVE_OCCURRENCE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_SYMBOL_OCCURRENCE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_FILL_AREA_OCCURRENCE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE']) = 1) + )) >= 1; + WR3 : SIZEOF (QUERY (item <* SELF\representation.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_SUBFIGURE_OCCURRENCE' + IN TYPEOF (item))) = 0; + WR4 : SIZEOF (QUERY (srm <* QUERY (rm <* + USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'REPRESENTATION_MAP.MAPPED_REPRESENTATION') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SYMBOL_REPRESENTATION_MAP' + IN TYPEOF(rm))) | + (SIZEOF (QUERY (a_s <* QUERY (mi <* srm.map_usage | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_SYMBOL' IN TYPEOF(mi))) | + NOT (SIZEOF (QUERY(aso <* + USEDIN(a_s, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'STYLED_ITEM.ITEM') | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_SYMBOL_OCCURRENCE' + IN TYPEOF(aso)) + )) = 0) )) = 0) )) > 0; + WR5 : NOT (acyclic_mapped_item_usage (SELF)); + WR6 : SIZEOF (SELF.context_of_items.representations_in_context) = 1; +END_ENTITY; + + +ENTITY draughting_text_literal_with_delineation + SUBTYPE OF (text_literal_with_delineation); +WHERE + WR1 : SELF.delineation IN ['underline', 'overline']; +END_ENTITY; + + +ENTITY draughting_title; + items : SET [1:?] OF draughting_titled_item; + language : label; + contents : text; +END_ENTITY; + + +ENTITY drawing_definition; + drawing_number : identifier; + drawing_type : OPTIONAL label; +END_ENTITY; + + +ENTITY drawing_revision + SUBTYPE OF (presentation_set); + revision_identifier : identifier; + drawing_identifier : drawing_definition; + intended_scale : OPTIONAL text; +UNIQUE + UR1 : revision_identifier, drawing_identifier; +END_ENTITY; + + +ENTITY drawing_revision_sequence; + predecessor : drawing_revision; + successor : drawing_revision; +WHERE + WR1 : predecessor :<>: successor; +END_ENTITY; + + +ENTITY drawing_sheet_revision + SUBTYPE OF (presentation_area); + revision_identifier : identifier; +WHERE + WR1 : SIZEOF( QUERY(item <* SELF\representation.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN (TYPEOF(item))) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAWING_SHEET_REVISION' IN + (TYPEOF(item\mapped_item.mapping_source.mapped_representation)))))=0; +END_ENTITY; + + +ENTITY drawing_sheet_revision_sequence + SUBTYPE OF (representation_relationship); +WHERE + WR1 : SELF\representation_relationship.rep_1 :<>: + SELF\representation_relationship.rep_2; + WR2 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAWING_SHEET_REVISION' + IN TYPEOF (SELF\representation_relationship.rep_1); + WR3 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAWING_SHEET_REVISION' + IN TYPEOF (SELF\representation_relationship.rep_2); +END_ENTITY; + + +ENTITY drawing_sheet_revision_usage + SUBTYPE OF (area_in_set); + sheet_number : identifier; +UNIQUE + UR1: sheet_number, SELF\area_in_set.in_set; +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAWING_SHEET_REVISION' IN + TYPEOF(SELF\area_in_set.area)) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAWING_REVISION' + IN TYPEOF (SELF\area_in_set.in_set)); +END_ENTITY; + + +ENTITY edge + SUPERTYPE OF (ONEOF (edge_curve, oriented_edge, subedge)) + SUBTYPE OF (topological_representation_item); + edge_start : vertex; + edge_end : vertex; +END_ENTITY; + + +ENTITY edge_based_wireframe_model + SUBTYPE OF (geometric_representation_item); + ebwm_boundary : SET [1:?] OF connected_edge_set; +END_ENTITY; + + +ENTITY edge_based_wireframe_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF ( +QUERY ( it <* SELF.items| NOT ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_BASED_WIREFRAME_MODEL', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D' ] * TYPEOF (it)) = 1) )) = 0; + WR2 : SIZEOF ( +QUERY ( it <* SELF.items| ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_BASED_WIREFRAME_MODEL', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' ] * TYPEOF (it)) = 1) )) >= 1; + WR3 : SIZEOF ( +QUERY ( ebwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( eb <* ebwm\edge_based_wireframe_model.ebwm_boundary| NOT ( SIZEOF ( +QUERY ( edges <* eb.ces_edges| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_CURVE' IN TYPEOF (edges)) )) = 0) )) = 0) )) = 0; + WR4 : SIZEOF ( +QUERY ( ebwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( eb <* ebwm\edge_based_wireframe_model.ebwm_boundary| NOT ( SIZEOF ( +QUERY ( pline_edges <* +QUERY ( edges <* eb.ces_edges| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF (edges\edge_curve.edge_geometry)) )| NOT ( SIZEOF (pline_edges\edge_curve.edge_geometry\polyline.points) > 2) )) = 0) )) = 0) )) = 0; + WR5 : SIZEOF ( +QUERY ( ebwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( eb <* ebwm\edge_based_wireframe_model.ebwm_boundary| NOT ( SIZEOF ( +QUERY ( edges <* eb.ces_edges| NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF (edges.edge_start)) AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF (edges.edge_end))) )) = 0) )) = 0) )) = 0; + WR6 : SIZEOF ( +QUERY ( ebwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( eb <* ebwm\edge_based_wireframe_model.ebwm_boundary| NOT ( SIZEOF ( +QUERY ( edges <* eb.ces_edges| NOT valid_wireframe_edge_curve(edges\edge_curve.edge_geometry) )) = 0) )) = 0) )) = 0; + WR7 : SIZEOF ( +QUERY ( ebwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( eb <* ebwm\edge_based_wireframe_model.ebwm_boundary| NOT ( SIZEOF ( +QUERY ( edges <* eb.ces_edges| NOT (valid_wireframe_vertex_point(edges.edge_start\vertex_point.vertex_geometry) AND valid_wireframe_vertex_point(edges.edge_end\vertex_point.vertex_geometry)) )) = 0) )) = 0) )) = 0; + WR8 : SIZEOF ( +QUERY ( mi <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) )| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'EDGE_BASED_WIREFRAME_SHAPE_REPRESENTATION' IN TYPEOF (mi\mapped_item.mapping_source.mapped_representation)) )) = 0; + WR9 : SELF.context_of_items\geometric_representation_context.coordinate_space_dimension = 3; +END_ENTITY; + + +ENTITY edge_blended_solid + ABSTRACT SUPERTYPE OF ((track_blended_solid ANDOR ONEOF (solid_with_constant_radius_edge_blend, solid_with_variable_radius_edge_blend, solid_with_chamfered_edges))) + SUBTYPE OF (modified_solid); + blended_edges : LIST [1:?] OF UNIQUE edge_curve; +END_ENTITY; + + +ENTITY edge_curve + SUBTYPE OF (edge, geometric_representation_item); + edge_geometry : curve; + same_sense : BOOLEAN; +END_ENTITY; + + +ENTITY edge_loop + SUBTYPE OF (loop, path); +DERIVE + ne : INTEGER := SIZEOF(SELF\path.edge_list); +WHERE + WR1 : (SELF\path.edge_list[1].edge_start) :=: + (SELF\path.edge_list[ne].edge_end); +END_ENTITY; + + +ENTITY effectivity + SUPERTYPE OF (ONEOF (serial_numbered_effectivity, dated_effectivity, lot_effectivity, time_interval_based_effectivity)); + id : identifier; +DERIVE + description : text := get_description_value(SELF); + name : label := get_name_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1; + WR2 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY effectivity_assignment + ABSTRACT SUPERTYPE; + assigned_effectivity : effectivity; +DERIVE + role : object_role := get_role(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; +END_ENTITY; + + +ENTITY effectivity_context_assignment + ABSTRACT SUPERTYPE; + assigned_effectivity_assignment : effectivity_assignment; + role : effectivity_context_role; +END_ENTITY; + + +ENTITY effectivity_context_role; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY effectivity_relationship; + name : label; + description : OPTIONAL text; + related_effectivity : effectivity; + relating_effectivity : effectivity; +END_ENTITY; + + +ENTITY electric_charge_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELECTRIC_CHARGE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY electric_charge_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.coulomb); +END_ENTITY; + + +ENTITY electric_current_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELECTRIC_CURRENT_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY electric_current_unit + SUBTYPE OF (named_unit); +WHERE + WR1 : (SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 0.0) AND (SELF\named_unit.dimensions.time_exponent = 0.0) AND (SELF\named_unit.dimensions.electric_current_exponent = 1.0) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0); +END_ENTITY; + + +ENTITY electric_potential_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELECTRIC_POTENTIAL_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY electric_potential_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.volt); +END_ENTITY; + + +ENTITY elementary_brep_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF (QUERY (it <* SELF.items | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACETED_BREP', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D'] * + TYPEOF(it)) = 1))) = 0; + WR2 : SIZEOF (QUERY (it <* SELF.items | + SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM'] * TYPEOF(it)) =1 )) > 0; + WR3 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY (csh <* msb_shells(msb) | + NOT (SIZEOF (QUERY(fcs <* csh.cfs_faces | + NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_SURFACE' IN TYPEOF(fcs)))) = 0 + ))) = 0 + ))) = 0; + WR4 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY (csh <* msb_shells(msb) | + NOT (SIZEOF (QUERY(fcs <* csh\connected_face_set.cfs_faces | + NOT(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELEMENTARY_SURFACE' IN + TYPEOF(fcs\face_surface.face_geometry)) + ))) = 0 + ))) = 0 + ))) = 0; + WR5 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY (csh <* msb_shells(msb) | + NOT (SIZEOF (QUERY(fcs <* csh\connected_face_set.cfs_faces | + NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list | + NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_CURVE' IN + TYPEOF(oe.edge_element)))) = 0 + ))) = 0 + ))) = 0 + ))) = 0 + ))) = 0; + WR6 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY (csh <* msb_shells(msb) | + NOT (SIZEOF (QUERY(fcs <* csh\connected_face_set.cfs_faces | + NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE'] * + TYPEOF(oe.edge_element\edge_curve.edge_geometry)) = 1 ) + )) = 0 + ))) = 0 + ))) = 0 + ))) = 0 + ))) = 0; + WR7 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY (csh <* msb_shells(msb) | + NOT (SIZEOF (QUERY(fcs <* csh\connected_face_set.cfs_faces | + NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list | + NOT(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF(oe.edge_start)) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN + TYPEOF(oe.edge_end)) + ))) = 0 + ))) = 0 + ))) = 0 + ))) = 0 + ))) = 0; + WR8 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY (csh <* msb_shells(msb) | + NOT (SIZEOF (QUERY(fcs <* csh\connected_face_set.cfs_faces | + NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN + TYPEOF(oe.edge_element\edge_curve.edge_geometry)) AND + (NOT (SIZEOF (oe\oriented_edge.edge_element\ + edge_curve.edge_geometry\polyline.points) >= 3)) + )) = 0 + ))) = 0 + ))) = 0 + ))) = 0 + ))) = 0; + WR9 : SIZEOF (QUERY (msb <* QUERY (it <* items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_CLOSED_SHELL' IN TYPEOF + (msb\manifold_solid_brep.outer))) + = 0; + WR10 : SIZEOF (QUERY (brv <* QUERY (it <* items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BREP_WITH_VOIDS' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY (csh <* brv\brep_with_voids.voids | + csh\oriented_closed_shell.orientation)) = 0))) = 0; + WR11 : SIZEOF (QUERY (mi <* QUERY (it <* items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELEMENTARY_BREP_SHAPE_REPRESENTATION' IN + TYPEOF(mi\mapped_item.mapping_source. + mapped_representation)))) = 0; + WR12 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY (csh <* msb_shells(msb) | + NOT (SIZEOF (QUERY(fcs <* csh\connected_face_set.cfs_faces | + NOT (SIZEOF(QUERY (vlp_fbnds <* QUERY (bnds <* fcs.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP' IN TYPEOF(bnds.bound)) | + NOT(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN + TYPEOF(vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT' IN + TYPEOF(vlp_fbnds\face_bound.bound\vertex_loop. + loop_vertex\vertex_point.vertex_geometry)) + ))) = 0))) = 0))) = 0))) =0; +END_ENTITY; + + +ENTITY elementary_surface + SUPERTYPE OF (ONEOF (plane, cylindrical_surface, conical_surface, spherical_surface, toroidal_surface)) + SUBTYPE OF (surface); + position : axis2_placement_3d; +END_ENTITY; + + +ENTITY ellipse + SUBTYPE OF (conic); + semi_axis_1 : positive_length_measure; + semi_axis_2 : positive_length_measure; +END_ENTITY; + + +ENTITY energy_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ENERGY_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY energy_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.joule); +END_ENTITY; + + +ENTITY entity_assertion + SUBTYPE OF (fact_type); +END_ENTITY; + + +ENTITY enum_reference_prefix + SUBTYPE OF (descriptive_representation_item); +END_ENTITY; + + +ENTITY environment; + syntactic_representation : generic_variable; + semantics : variable_semantics; +END_ENTITY; + + +ENTITY evaluated_characteristic + SUBTYPE OF (representation, representation_relationship); +UNIQUE + UR1: SELF\representation_relationship.rep_1, SELF\representation_relationship.rep_2; +WHERE + WR1 : SELF\representation_relationship.rep_1 <> + SELF\representation_relationship.rep_2; +END_ENTITY; + + +ENTITY evaluated_degenerate_pcurve + SUBTYPE OF (degenerate_pcurve); + equivalent_point : cartesian_point; +END_ENTITY; + + +ENTITY evaluation_product_definition + SUBTYPE OF (product_definition); +END_ENTITY; + + +ENTITY event_occurrence; + id : identifier; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY event_occurrence_assignment + ABSTRACT SUPERTYPE; + assigned_event_occurrence : event_occurrence; + role : event_occurrence_role; +END_ENTITY; + + +ENTITY event_occurrence_relationship; + name : label; + description : OPTIONAL text; + relating_event : event_occurrence; + related_event : event_occurrence; +END_ENTITY; + + +ENTITY event_occurrence_role; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY exclusive_product_concept_feature_category + SUBTYPE OF (product_concept_feature_category); +END_ENTITY; + + +ENTITY executed_action + SUBTYPE OF (action); +END_ENTITY; + + +ENTITY expanded_uncertainty + SUBTYPE OF (standard_uncertainty); + coverage_factor : REAL; +END_ENTITY; + + +ENTITY explicit_procedural_geometric_representation_item_relationship + SUBTYPE OF (explicit_procedural_representation_item_relationship); + SELF\representation_item_relationship.related_representation_item : geometric_representation_item; + SELF\representation_item_relationship.relating_representation_item : procedural_shape_representation_sequence; +WHERE + WR1 : NOT ( + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROCEDURAL_SHAPE_REPRESENTATION_SEQUENCE' + IN TYPEOF( + SELF\representation_item_relationship.related_representation_item)); +END_ENTITY; + + +ENTITY explicit_procedural_representation_item_relationship + SUBTYPE OF (representation_item_relationship); + SELF\representation_item_relationship.relating_representation_item : procedural_representation_sequence; +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROCEDURAL_REPRESENTATION_SEQUENCE' + IN TYPEOF( + SELF\representation_item_relationship.related_representation_item)); + WR2 : SIZEOF(QUERY(q <* using_representations( + SELF\representation_item_relationship.related_representation_item) | + item_in_context( + SELF\representation_item_relationship.relating_representation_item, + q.context_of_items))) > 0; +END_ENTITY; + + +ENTITY explicit_procedural_representation_relationship + SUBTYPE OF (representation_relationship); + SELF\representation_relationship.rep_1 : procedural_representation; +WHERE + WR1 : (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROCEDURAL_REPRESENTATION' + IN TYPEOF(SELF\representation_relationship.rep_2))) AND + (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VARIATIONAL_REPRESENTATION' + IN TYPEOF(SELF\representation_relationship.rep_2))); + WR2 : SELF\representation_relationship.rep_1.context_of_items :=: + SELF\representation_relationship.rep_2.context_of_items; +END_ENTITY; + + +ENTITY explicit_procedural_shape_representation_relationship + SUBTYPE OF (explicit_procedural_representation_relationship); + SELF\representation_relationship.rep_1 : procedural_shape_representation; + SELF\representation_relationship.rep_2 : shape_representation; +END_ENTITY; + + +ENTITY expression + ABSTRACT SUPERTYPE OF (ONEOF (numeric_expression, boolean_expression)) + SUBTYPE OF (generic_expression); +END_ENTITY; + + +ENTITY expression_conversion_based_unit + SUBTYPE OF (context_dependent_unit, variable_semantics); +INVERSE + associated_variable_environment: environment FOR semantics; +END_ENTITY; + + +ENTITY extension + SUBTYPE OF (derived_shape_aspect); +WHERE + WR1 : SIZEOF (SELF\derived_shape_aspect.deriving_relationships)= 1; +END_ENTITY; + + +ENTITY extent + SUBTYPE OF (characterized_object); +END_ENTITY; + + +ENTITY external_class_library + SUBTYPE OF (external_source); +END_ENTITY; + + +ENTITY external_identification_assignment + ABSTRACT SUPERTYPE + SUBTYPE OF (identification_assignment); + source : external_source; +END_ENTITY; + + +ENTITY external_source; + source_id : source_item; +DERIVE + description : text := get_description_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY external_source_relationship; + name : label; + description : OPTIONAL text; + relating_source : external_source; + related_source : external_source; +END_ENTITY; + + +ENTITY externally_defined_class + SUBTYPE OF (class, externally_defined_item); +END_ENTITY; + + +ENTITY externally_defined_colour + SUBTYPE OF (colour_specification, externally_defined_item); +END_ENTITY; + + +ENTITY externally_defined_context_dependent_unit + SUBTYPE OF (context_dependent_unit, externally_defined_item); +END_ENTITY; + + +ENTITY externally_defined_conversion_based_unit + SUBTYPE OF (conversion_based_unit, externally_defined_item); +END_ENTITY; + + +ENTITY externally_defined_currency + SUBTYPE OF (currency, externally_defined_context_dependent_unit); +END_ENTITY; + + +ENTITY externally_defined_curve_font + SUBTYPE OF (externally_defined_item); +END_ENTITY; + + +ENTITY externally_defined_dimension_definition + SUBTYPE OF (dimensional_size, externally_defined_item); +WHERE + WR1 : (SELF\externally_defined_item.item_id = 'external size dimension') AND (SELF\externally_defined_item.source.source_id = 'external size dimension specification'); + WR2 : 1 >= SIZEOF(QUERY ( adr <* USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.APPLIED_DOCUMENT_REFERENCE.ITEMS')| (adr.assigned_document.description = 'external size dimension specification') )); +END_ENTITY; + + +ENTITY externally_defined_general_property + SUBTYPE OF (general_property, externally_defined_item); +END_ENTITY; + + +ENTITY externally_defined_hatch_style + SUBTYPE OF (externally_defined_item, geometric_representation_item); +END_ENTITY; + + +ENTITY externally_defined_item; + item_id : source_item; + source : external_source; +END_ENTITY; + + +ENTITY externally_defined_item_relationship; + name : label; + description : OPTIONAL text; + relating_item : externally_defined_item; + related_item : externally_defined_item; +END_ENTITY; + + +ENTITY externally_defined_marker + SUBTYPE OF (externally_defined_symbol, pre_defined_marker); +END_ENTITY; + + +ENTITY externally_defined_picture_representation_item + SUBTYPE OF (picture_representation_item); +INVERSE + source: applied_external_identification_assignment FOR items; +WHERE + WR1 : NOT (SELF\representation_item.name IN pre_defined_picture_representation_types); +END_ENTITY; + + +ENTITY externally_defined_representation_item + SUBTYPE OF (representation_item, externally_defined_item); +END_ENTITY; + + +ENTITY externally_defined_string + SUBTYPE OF (externally_defined_representation_item); +END_ENTITY; + + +ENTITY externally_defined_symbol + SUBTYPE OF (externally_defined_item); +END_ENTITY; + + +ENTITY externally_defined_terminator_symbol + SUBTYPE OF (externally_defined_symbol); +END_ENTITY; + + +ENTITY externally_defined_text_font + SUBTYPE OF (externally_defined_item); +END_ENTITY; + + +ENTITY externally_defined_tile + SUBTYPE OF (externally_defined_item); +END_ENTITY; + + +ENTITY externally_defined_tile_style + SUBTYPE OF (externally_defined_item, geometric_representation_item); +END_ENTITY; + + +ENTITY extruded_area_solid + SUBTYPE OF (swept_area_solid); + extruded_direction : direction; + depth : positive_length_measure; +WHERE + WR1 : dot_product( + (SELF\swept_area_solid.swept_area.basis_surface\ + elementary_surface.position.p[3]), extruded_direction) <> 0.0; +END_ENTITY; + + +ENTITY extruded_face_solid + SUBTYPE OF (swept_face_solid); + extruded_direction : direction; + depth : positive_length_measure; +WHERE + WR1 : dot_product( + (SELF\swept_face_solid.swept_face.face_geometry\ + elementary_surface.position.p[3]), extruded_direction) <> 0.0; +END_ENTITY; + + +ENTITY extruded_face_solid_with_draft_angle + SUBTYPE OF (extruded_face_solid_with_trim_conditions); + draft_angle : plane_angle_measure; +WHERE + WR1 : draft_angle <> 0; +END_ENTITY; + + +ENTITY extruded_face_solid_with_multiple_draft_angles + SUBTYPE OF (extruded_face_solid_with_trim_conditions); + drafted_edges : LIST [2:?] OF SET [1:?] OF edge_curve; + draft_angles : LIST [2:?] OF plane_angle_measure; +WHERE + WR1 : SIZEOF(drafted_edges) = SIZEOF(draft_angles); + WR2 : SIZEOF(QUERY(q <* draft_angles | q = 0)) = 0; + WR3 : SIZEOF(QUERY(q <* drafted_edges | (SIZEOF(QUERY(r <* q | NOT + (SELF\swept_face_solid.swept_face IN + using_items(r,[])))) > 0))) = 0; +END_ENTITY; + + +ENTITY extruded_face_solid_with_trim_conditions + SUPERTYPE OF (ONEOF (extruded_face_solid_with_draft_angle, extruded_face_solid_with_multiple_draft_angles)) + SUBTYPE OF (extruded_face_solid); + first_trim_condition : trim_condition_select; + second_trim_condition : trim_condition_select; + first_trim_intent : trim_intent; + second_trim_intent : trim_intent; + first_offset : non_negative_length_measure; + second_offset : non_negative_length_measure; +WHERE + WR1 : NOT(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE_ANGLE_MEASURE' + IN TYPEOF(first_trim_condition)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE_ANGLE_MEASURE' + IN TYPEOF(second_trim_condition))); + WR2 : NOT ((('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE' + IN TYPEOF(first_trim_condition)) AND + ((first_trim_intent = trim_intent.offset) + OR (first_trim_intent = trim_intent.up_to_next))) OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE' + IN TYPEOF(second_trim_condition)) AND + ((second_trim_intent = trim_intent.offset) + OR (second_trim_intent = trim_intent.up_to_next)))); + WR3 : NOT (((NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE' + IN TYPEOF(first_trim_condition))) AND + ((first_trim_intent = trim_intent.blind) + OR (first_trim_intent = trim_intent.through_all))) OR + ((NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE' + IN TYPEOF(second_trim_condition))) AND + ((second_trim_intent = trim_intent.blind) + OR (second_trim_intent = trim_intent.through_all)))); + WR4 : (((first_trim_intent = trim_intent.offset) + AND (first_offset > 0)) XOR + ((first_trim_intent <> trim_intent.offset) + AND (first_offset = 0))) AND + (((second_trim_intent = trim_intent.offset) + AND (second_offset > 0)) XOR + ((second_trim_intent <> trim_intent.offset) + AND (second_offset = 0))); + WR5 : NOT((('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE' + IN TYPEOF(first_trim_condition)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE' + IN TYPEOF(second_trim_condition))) AND + (first_trim_condition = second_trim_condition)); +END_ENTITY; + + +ENTITY face + SUPERTYPE OF (ONEOF (face_surface, subface, oriented_face)) + SUBTYPE OF (topological_representation_item); + bounds : SET [1:?] OF face_bound; +WHERE + WR1 : NOT (mixed_loop_type_set(list_to_set(list_face_loops(SELF)))); + WR2 : SIZEOF(QUERY(temp <* bounds | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_OUTER_BOUND' IN + TYPEOF(temp))) <= 1; +END_ENTITY; + + +ENTITY face_based_surface_model + SUBTYPE OF (geometric_representation_item); + fbsm_faces : SET [1:?] OF connected_face_set; +END_ENTITY; + + +ENTITY face_bound + SUBTYPE OF (topological_representation_item); + bound : loop; + orientation : BOOLEAN; +END_ENTITY; + + +ENTITY face_outer_bound + SUBTYPE OF (face_bound); +END_ENTITY; + + +ENTITY face_surface + SUBTYPE OF (face, geometric_representation_item); + face_geometry : surface; + same_sense : BOOLEAN; +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_SURFACE' IN TYPEOF(face_geometry)); +END_ENTITY; + + +ENTITY faceted_brep + SUBTYPE OF (manifold_solid_brep); +END_ENTITY; + + +ENTITY faceted_brep_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF ( +QUERY ( it <* items| NOT ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACETED_BREP', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D' ] * TYPEOF (it)) = 1) )) = 0; + WR2 : SIZEOF ( +QUERY ( it <* items| ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACETED_BREP', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' ] * TYPEOF (it)) = 1) )) > 0; + WR3 : SIZEOF ( +QUERY ( fbrep <* +QUERY ( it <* items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACETED_BREP' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( csh <* msb_shells(fbrep)| NOT ( SIZEOF ( +QUERY ( fcs <* csh\connected_face_set.cfs_faces| NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_SURFACE' IN TYPEOF (fcs)) AND (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE' IN TYPEOF (fcs\face_surface.face_geometry)) AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT' IN TYPEOF (fcs\face_surface.face_geometry\elementary_surface.position.location)))) )) = 0) )) = 0) )) = 0; + WR4 : SIZEOF ( +QUERY ( fbrep <* +QUERY ( it <* items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACETED_BREP' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( csh <* msb_shells(fbrep)| NOT ( SIZEOF ( +QUERY ( fcs <* csh\connected_face_set.cfs_faces| NOT ( SIZEOF ( +QUERY ( bnds <* fcs.bounds| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_OUTER_BOUND' IN TYPEOF (bnds)) )) = 1) )) = 0) )) = 0) )) = 0; + WR5 : SIZEOF ( +QUERY ( msb <* +QUERY ( it <* items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF (it)) )| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_CLOSED_SHELL' IN TYPEOF (msb\manifold_solid_brep.outer)) )) = 0; + WR6 : SIZEOF ( +QUERY ( brv <* +QUERY ( it <* items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BREP_WITH_VOIDS' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( csh <* brv\brep_with_voids.voids| csh\oriented_closed_shell.orientation )) = 0) )) = 0; + WR7 : SIZEOF ( +QUERY ( mi <* +QUERY ( it <* items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) )| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACETED_BREP_SHAPE_REPRESENTATION' IN TYPEOF (mi\mapped_item.mapping_source.mapped_representation)) )) = 0; +END_ENTITY; + + +ENTITY fact_type + SUBTYPE OF (property_definition); +END_ENTITY; + + +ENTITY fill_area_style + SUBTYPE OF (founded_item); + name : label; + fill_styles : SET [1:?] OF fill_style_select; +WHERE + WR1 : SIZEOF(QUERY(fill_style <* SELF.fill_styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'FILL_AREA_STYLE_COLOUR' IN + TYPEOF(fill_style) + )) <= 1; +END_ENTITY; + + +ENTITY fill_area_style_colour; + name : label; + fill_colour : colour; +END_ENTITY; + + +ENTITY fill_area_style_hatching + SUBTYPE OF (geometric_representation_item); + hatch_line_appearance : curve_style; + start_of_next_hatch_line : one_direction_repeat_factor; + point_of_reference_hatch_line : cartesian_point; + pattern_start : cartesian_point; + hatch_line_angle : plane_angle_measure; +END_ENTITY; + + +ENTITY fill_area_style_tile_coloured_region + SUBTYPE OF (geometric_representation_item); + closed_curve : curve_or_annotation_curve_occurrence; + region_colour : colour; +WHERE + WR1 : (NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE' IN TYPEOF (closed_curve))) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CIRCLE' IN TYPEOF (closed_curve)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELLIPSE' IN TYPEOF (closed_curve)) OR + ( ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE' IN TYPEOF (closed_curve)) + AND (closed_curve\b_spline_curve.closed_curve = TRUE) ) OR + ( ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_CURVE' IN TYPEOF (closed_curve)) + AND (closed_curve\composite_curve.closed_curve = TRUE) ) OR + ( ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF (closed_curve)) + AND (closed_curve\polyline.points[LOINDEX(closed_curve\polyline.points)] = + closed_curve\polyline.points[HIINDEX(closed_curve\polyline.points)]) ); +END_ENTITY; + + +ENTITY fill_area_style_tile_curve_with_style + SUBTYPE OF (geometric_representation_item); + styled_curve : annotation_curve_occurrence; +END_ENTITY; + + +ENTITY fill_area_style_tile_symbol_with_style + SUBTYPE OF (geometric_representation_item); + symbol : annotation_symbol_occurrence; +END_ENTITY; + + +ENTITY fill_area_style_tiles + SUBTYPE OF (geometric_representation_item); + tiling_pattern : two_direction_repeat_factor; + tiles : SET [1:?] OF fill_area_style_tile_shape_select; + tiling_scale : positive_ratio_measure; +END_ENTITY; + + +ENTITY flat_pattern_ply_representation_relationship + SUBTYPE OF (shape_representation_relationship); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_REPRESENTATION' IN + (TYPEOF (SELF\representation_relationship.rep_1) * + TYPEOF (SELF\representation_relationship.rep_2)); + WR2 : SELF\representation_relationship.rep_1. + context_of_items\geometric_representation_context. + coordinate_space_dimension = 3; +END_ENTITY; + + +ENTITY flatness_tolerance + SUBTYPE OF (geometric_tolerance); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF (SELF)); +END_ENTITY; + + +ENTITY force_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FORCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY force_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.newton); +END_ENTITY; + + +ENTITY forward_chaining_rule + SUBTYPE OF (rule_definition); +END_ENTITY; + + +ENTITY forward_chaining_rule_premise + SUBTYPE OF (property_definition, property_definition_representation, representation); +END_ENTITY; + + +ENTITY founded_item + SUPERTYPE OF (ONEOF (character_glyph_style_outline, character_glyph_style_stroke, curve_style, curve_style_font, curve_style_font_and_scaling, curve_style_font_pattern, fill_area_style, point_style, presentation_style_assignment, surface_side_style, surface_style_boundary, surface_style_control_grid, surface_style_fill_area, surface_style_parameter_line, surface_style_segmentation_curve, surface_style_silhouette, surface_style_usage, symbol_style, text_style)); +DERIVE + users : SET [0:?] OF founded_item_select := using_items(SELF,[]); +WHERE + WR1 : SIZEOF(users) > 0; + WR2 : NOT(SELF IN users); +END_ENTITY; + + +ENTITY frequency_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FREQUENCY_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY frequency_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.hertz); +END_ENTITY; + + +ENTITY func + SUBTYPE OF (compound_representation_item); +END_ENTITY; + + +ENTITY functional_breakdown_context + SUBTYPE OF (breakdown_context); +END_ENTITY; + + +ENTITY functional_element_usage + SUBTYPE OF (breakdown_element_usage); +END_ENTITY; + + +ENTITY functionally_defined_transformation; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY general_material_property + SUBTYPE OF (general_property); +WHERE + WR1 : SIZEOF( QUERY( gpa <* USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GENERAL_PROPERTY_ASSOCIATION.BASE_DEFINITION') | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MATERIAL_PROPERTY' IN TYPEOF(gpa.derived_definition)) )) = 0; +END_ENTITY; + + +ENTITY general_property; + id : identifier; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY general_property_association; + name : label; + description : OPTIONAL text; + base_definition : general_property; + derived_definition : derived_property_select; +WHERE + WR1 : SIZEOF(USEDIN(derived_definition, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GENERAL_PROPERTY_ASSOCIATION.' + 'DERIVED_DEFINITION')) = 1; + WR2 : derived_definition.name = base_definition.name; +END_ENTITY; + + +ENTITY general_property_relationship; + name : label; + description : OPTIONAL text; + relating_property : general_property; + related_property : general_property; +END_ENTITY; + + +ENTITY generic_character_glyph_symbol + ABSTRACT SUPERTYPE + SUBTYPE OF (symbol_representation); +END_ENTITY; + + +ENTITY generic_expression + ABSTRACT SUPERTYPE OF (ONEOF (simple_generic_expression, unary_generic_expression, binary_generic_expression, multiple_arity_generic_expression)); +WHERE + WR1 : is_acyclic(SELF); +END_ENTITY; + + +ENTITY generic_literal + ABSTRACT SUPERTYPE + SUBTYPE OF (simple_generic_expression); +END_ENTITY; + + +ENTITY generic_variable + ABSTRACT SUPERTYPE + SUBTYPE OF (simple_generic_expression); +INVERSE + interpretation: environment FOR syntactic_representation; +END_ENTITY; + + +ENTITY geometric_alignment + SUBTYPE OF (derived_shape_aspect); +WHERE + WR1 : SIZEOF (SELF\derived_shape_aspect.deriving_relationships)> 1; +END_ENTITY; + + +ENTITY geometric_curve_set + SUBTYPE OF (geometric_set); +WHERE + WR1 : SIZEOF(QUERY(temp <* SELF\geometric_set.elements | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE' IN TYPEOF(temp))) = 0; +END_ENTITY; + + +ENTITY geometric_intersection + SUBTYPE OF (derived_shape_aspect); +WHERE + WR1 : SIZEOF (SELF\derived_shape_aspect.deriving_relationships)> 1; +END_ENTITY; + + +ENTITY geometric_item_specific_usage + SUBTYPE OF (item_identified_representation_usage); + SELF\item_identified_representation_usage.definition : geometric_item_specific_usage_select; + SELF\item_identified_representation_usage.identified_item : geometric_representation_item; + SELF\item_identified_representation_usage.used_representation : shape_representation; +END_ENTITY; + + +ENTITY geometric_model_element_relationship + SUBTYPE OF (geometric_representation_item, representation_item_relationship); + SELF\representation_item_relationship.related_representation_item : geometric_representation_item; + SELF\representation_item_relationship.relating_representation_item : geometric_representation_item; +UNIQUE + UR1 : relating_representation_item, related_representation_item; +WHERE + WR1 : SELF\representation_item_relationship.relating_representation_item :<>: + SELF\representation_item_relationship.related_representation_item; +END_ENTITY; + + +ENTITY geometric_representation_context + SUBTYPE OF (representation_context); + coordinate_space_dimension : dimension_count; +END_ENTITY; + + +ENTITY geometric_representation_item + SUPERTYPE OF (ONEOF (point, direction, vector, placement, cartesian_transformation_operator, curve, surface, edge_curve, face_surface, poly_loop, vertex_point, solid_model, boolean_result, sphere, right_circular_cone, right_circular_cylinder, torus, block, right_angular_wedge, half_space_solid, shell_based_surface_model, face_based_surface_model, shell_based_wireframe_model, edge_based_wireframe_model, geometric_set, camera_model, camera_model_d3_multi_clipping_intersection, camera_model_d3_multi_clipping_union, light_source)) + SUBTYPE OF (representation_item); +DERIVE + dim : dimension_count := dimension_of(SELF); +WHERE + WR1 : SIZEOF (QUERY (using_rep <* using_representations (SELF) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_REPRESENTATION_CONTEXT' IN + TYPEOF (using_rep.context_of_items)))) = 0; +END_ENTITY; + + +ENTITY geometric_set + SUBTYPE OF (geometric_representation_item); + elements : SET [1:?] OF geometric_set_select; +END_ENTITY; + + +ENTITY geometric_tolerance; + name : label; + description : text; + magnitude : measure_with_unit; + toleranced_shape_aspect : shape_aspect; +WHERE + WR1 : ('NUMBER' IN TYPEOF + (magnitude\measure_with_unit.value_component)) AND + (magnitude\measure_with_unit.value_component >= 0.0); +END_ENTITY; + + +ENTITY geometric_tolerance_relationship; + name : label; + description : text; + relating_geometric_tolerance : geometric_tolerance; + related_geometric_tolerance : geometric_tolerance; +END_ENTITY; + + +ENTITY geometric_tolerance_with_datum_reference + SUBTYPE OF (geometric_tolerance); + datum_system : SET [1:?] OF datum_reference; +END_ENTITY; + + +ENTITY geometric_tolerance_with_defined_unit + SUBTYPE OF (geometric_tolerance); + unit_size : measure_with_unit; +WHERE + WR1 : ('NUMBER' IN TYPEOF + (unit_size\measure_with_unit.value_component)) AND + (unit_size\measure_with_unit.value_component > 0.0); +END_ENTITY; + + +ENTITY geometrical_tolerance_callout + SUBTYPE OF (draughting_callout); +END_ENTITY; + + +ENTITY geometrically_bounded_2d_wireframe_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SELF.context_of_items\geometric_representation_context. + coordinate_space_dimension = 2; + WR2 : SIZEOF (QUERY (item <* SELF.items | + NOT (SIZEOF (TYPEOF (item) * +['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_CURVE_SET', +'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_2D', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM']) = 1) + )) = 0; + WR3 : SIZEOF (QUERY (item <* SELF.items | + SIZEOF (TYPEOF (item) * +['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_CURVE_SET', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM']) = 1 + )) >= 1; + WR4 : SIZEOF (QUERY (mi <* QUERY (item <* SELF.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF (item))) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'GEOMETRICALLY_BOUNDED_2D_WIREFRAME_REPRESENTATION' + IN TYPEOF + (mi\mapped_item.mapping_source.mapped_representation)) + )) = 0; + WR5 : SIZEOF (QUERY (gcs <* QUERY (item <* SELF.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_CURVE_SET' + IN TYPEOF (item))) | + NOT (SIZEOF (QUERY (elem <* gcs\geometric_set.elements | + NOT (SIZEOF (TYPEOF (elem) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CIRCLE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELLIPSE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_2D', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TRIMMED_CURVE']) = + 1) + )) = 0) + )) = 0; + WR6 : SIZEOF (QUERY (gcs <* QUERY (item <* SELF.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_CURVE_SET' + IN TYPEOF (item))) | + NOT (SIZEOF (QUERY (crv <* + QUERY (elem <* gcs\geometric_set.elements | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE' + IN TYPEOF (elem))) | + NOT (valid_basis_curve_in_2d_wireframe + (crv)) + )) = 0) + )) = 0; + WR7 : SIZEOF (QUERY (gcs <* QUERY (item <* SELF.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_CURVE_SET' + IN TYPEOF (item))) | + NOT (SIZEOF (QUERY (pnt <* + QUERY (elem <* gcs\geometric_set.elements | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT' + IN TYPEOF(elem))) | + NOT (SIZEOF (TYPEOF (pnt) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_CURVE']) + = 1) + )) = 0) + )) = 0; +END_ENTITY; + + +ENTITY geometrically_bounded_surface_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF(QUERY(it <* SELF.items | NOT (SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_SET', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D'] * TYPEOF(it)) = 1))) = 0; + WR2 : SIZEOF(QUERY(it <* SELF.items | SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_SET', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM'] * TYPEOF(it)) = 1)) > 0; + WR3 : SIZEOF(QUERY(mi <* QUERY(it <* SELF.items | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)) | NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION' IN TYPEOF(mi\mapped_item.mapping_source.mapped_representation)) AND (SIZEOF(QUERY(mr_it <* mi\mapped_item.mapping_source.mapped_representation.items | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_SET' IN TYPEOF(mr_it)))) > 0)))) = 0; + WR4 : SIZEOF(QUERY(gs <* QUERY(it <* SELF.items | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_SET' IN TYPEOF(it)) | NOT (SIZEOF(QUERY(pnt <* QUERY(gsel <* gs\geometric_set.elements | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT' IN TYPEOF(gsel)) | NOT (gbsf_check_point(pnt)))) = 0))) = 0; + WR5 : SIZEOF(QUERY(gs <* QUERY(it <* SELF.items | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_SET' IN TYPEOF(it)) | NOT (SIZEOF(QUERY(cv <* QUERY(gsel <* gs\geometric_set.elements | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE' IN TYPEOF(gsel)) | NOT (gbsf_check_curve(cv)))) = 0))) = 0; + WR6 : SIZEOF(QUERY(gs <* QUERY(it <* SELF.items | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_SET' IN TYPEOF(it)) | NOT (SIZEOF(QUERY(sf <* QUERY(gsel <* gs\geometric_set.elements | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE' IN TYPEOF(gsel)) | NOT (gbsf_check_surface(sf)))) = 0))) = 0; + WR7 : SIZEOF(QUERY(gs <* QUERY(it <* SELF.items | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_SET' IN TYPEOF(it)) | SIZEOF(QUERY(gsel <* gs\geometric_set.elements | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE' IN TYPEOF(gsel))) > 0)) > 0; +END_ENTITY; + + +ENTITY geometrically_bounded_wireframe_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF ( +QUERY ( it <* SELF.items| NOT ( SIZEOF ( TYPEOF (it) * [ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_CURVE_SET', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' ]) = 1) )) = 0; + WR2 : SIZEOF ( +QUERY ( it <* SELF.items| ( SIZEOF ( TYPEOF (it) * [ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_CURVE_SET', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' ]) = 1) )) >= 1; + WR3 : SIZEOF ( +QUERY ( gcs <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_CURVE_SET' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( crv <* +QUERY ( elem <* gcs\geometric_set.elements| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE' IN TYPEOF (elem)) )| NOT valid_geometrically_bounded_wf_curve(crv) )) = 0) )) = 0; + WR4 : SIZEOF ( +QUERY ( gcs <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_CURVE_SET' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( pnts <* +QUERY ( elem <* gcs\geometric_set.elements| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT' IN TYPEOF (elem)) )| NOT valid_geometrically_bounded_wf_point(pnts) )) = 0) )) = 0; + WR5 : SIZEOF ( +QUERY ( gcs <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_CURVE_SET' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( cnc <* +QUERY ( elem <* gcs\geometric_set.elements| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC' IN TYPEOF (elem)) )| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D' IN TYPEOF (cnc\conic.position)) )) = 0) )) = 0; + WR6 : SIZEOF ( +QUERY ( gcs <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_CURVE_SET' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( pline <* +QUERY ( elem <* gcs\geometric_set.elements| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF (elem)) )| NOT ( SIZEOF (pline\polyline.points) > 2) )) = 0) )) = 0; + WR7 : SIZEOF ( +QUERY ( mi <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) )| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION' IN TYPEOF (mi\mapped_item.mapping_source.mapped_representation)) )) = 0; +END_ENTITY; + + +ENTITY global_assignment + SUBTYPE OF (representation_item_relationship); +END_ENTITY; + + +ENTITY global_uncertainty_assigned_context + SUBTYPE OF (representation_context); + uncertainty : SET [1:?] OF uncertainty_measure_with_unit; +END_ENTITY; + + +ENTITY global_unit_assigned_context + SUBTYPE OF (representation_context); + units : SET [1:?] OF unit; +END_ENTITY; + + +ENTITY ground_fact + SUBTYPE OF (atomic_formula); +END_ENTITY; + + +ENTITY group; + name : label; + description : OPTIONAL text; +DERIVE + id : identifier := get_id_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY group_assignment + ABSTRACT SUPERTYPE; + assigned_group : group; +DERIVE + role : object_role := get_role(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; +END_ENTITY; + + +ENTITY group_relationship; + name : label; + description : OPTIONAL text; + relating_group : group; + related_group : group; +END_ENTITY; + + +ENTITY half_space_solid + SUBTYPE OF (geometric_representation_item); + base_surface : surface; + agreement_flag : BOOLEAN; +END_ENTITY; + + +ENTITY hardness_representation + SUBTYPE OF (representation); +WHERE + WR1 : ( {2<= SIZEOF ( SELF.items ) <=4} ) AND ( SIZEOF ( QUERY ( + i <* items | ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF ( i ) ) AND ( + i.name IN [ 'measuring method' , 'measuring position' ] ) ) + ) + SIZEOF ( QUERY ( i <* items | ( SIZEOF ( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'MEASURE_REPRESENTATION_ITEM' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'VALUE_RANGE']* TYPEOF ( i ) ) =1 ) + AND ( i.name IN ['depth' , 'hardness'] ) ) ) = SIZEOF ( + SELF.items ) ); + WR2 : SIZEOF ( QUERY ( i <* SELF.items | i.name = + 'measuring method' ) ) =1; + WR3 : SIZEOF ( QUERY ( i <* SELF.items | i.name ='hardness' ) ) + =1; + WR4 : SIZEOF ( QUERY ( i <* SELF.items | i.name = + 'measuring position' ) ) <=1; + WR5 : SIZEOF ( QUERY ( i <* SELF.items | i.name ='depth' ) ) + <=1; + WR6 : ( SIZEOF ( USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) ) =1 ) AND ( SIZEOF ( QUERY ( pdr + <* USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) | SIZEOF ( QUERY ( gpa <* USEDIN ( + pdr. definition , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'GENERAL_PROPERTY_ASSOCIATION.'+ + 'DERIVED_DEFINITION' ) | ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'GENERAL_PROPERTY' IN TYPEOF ( gpa. base_definition ) ) AND + ( gpa. base_definition.name ='surface_condition' ) ) ) =1 ) + ) =1 ); +END_ENTITY; + + +ENTITY hidden_element_over_riding_styled_item + SUBTYPE OF (context_dependent_over_riding_styled_item); + SELF\styled_item.item : camera_image; + SELF\context_dependent_over_riding_styled_item.style_context : LIST [1:1] OF presentation_view; +INVERSE + container: SET [1:?] OF presentation_view FOR items; +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CAMERA_MODEL_D3_WITH_HLHSR' IN TYPEOF + (SELF.item\mapped_item.mapping_source.mapping_origin); +END_ENTITY; + + +ENTITY hyperbola + SUBTYPE OF (conic); + semi_axis : positive_length_measure; + semi_imag_axis : positive_length_measure; +END_ENTITY; + + +ENTITY id_attribute; + attribute_value : identifier; + identified_item : id_attribute_select; +END_ENTITY; + + +ENTITY identification_assignment + ABSTRACT SUPERTYPE; + assigned_id : identifier; + role : identification_role; +END_ENTITY; + + +ENTITY identification_role; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY illuminance_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ILLUMINANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY illuminance_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.lux); +END_ENTITY; + + +ENTITY included_text_block + SUBTYPE OF (mapped_item); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRUCTURED_TEXT_REPRESENTATION' IN TYPEOF(SELF\mapped_item.mapping_source.mapped_representation); +END_ENTITY; + + +ENTITY inclusion_product_concept_feature + SUBTYPE OF (conditional_concept_feature); +WHERE + WR1 : NOT ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'PACKAGE_PRODUCT_CONCEPT_FEATURE' IN TYPEOF ( SELF ) ); + WR2 : SIZEOF (QUERY + ( cfr <* USEDIN + ( SELF ,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONCEPT_FEATURE_RELATIONSHIP.RELATING_PRODUCT_CONCEPT_FEATURE' ) + | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION' IN TYPEOF( cfr ) + ) + ) + + SIZEOF(QUERY + ( cfr <* USEDIN + (SELF , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONCEPT_FEATURE_RELATIONSHIP.RELATED_PRODUCT_CONCEPT_FEATURE' ) + | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION' IN TYPEOF(cfr) + ) + )= 0; + WR3 : SELF.condition.conditional_operator.name = 'implication'; +END_ENTITY; + + +ENTITY indirectly_selected_elements + SUBTYPE OF (user_selected_elements); + indirectly_picked_items : SET [1:?] OF representation_item; +END_ENTITY; + + +ENTITY indirectly_selected_shape_elements + SUBTYPE OF (indirectly_selected_elements, user_selected_shape_elements); +WHERE + WR1 : SIZEOF(QUERY(q <* + SELF\indirectly_selected_elements.indirectly_picked_items + | NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_REPRESENTATION_ITEM' + IN TYPEOF(q)))) = 0; +END_ENTITY; + + +ENTITY inductance_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.INDUCTANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY inductance_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.henry); +END_ENTITY; + + +ENTITY information_right + SUBTYPE OF (action_method); +END_ENTITY; + + +ENTITY information_usage_right + SUBTYPE OF (action_method); +END_ENTITY; + + +ENTITY instance_usage_context_assignment + SUBTYPE OF (product_definition_context); + items : SET [1:?] OF instance_usage_context_select; +END_ENTITY; + + +ENTITY instanced_feature + SUBTYPE OF (shape_aspect, shape_feature_definition); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION' IN + TYPEOF(SELF\shape_aspect.of_shape.definition); + WR2 : SELF\shape_aspect.product_definitional; +END_ENTITY; + + +ENTITY int_literal + SUBTYPE OF (literal_number); + SELF\literal_number.the_value : INTEGER; +END_ENTITY; + + +ENTITY integer_representation_item + SUBTYPE OF (representation_item, int_literal); +END_ENTITY; + + +ENTITY intersection_curve + SUBTYPE OF (surface_curve); +WHERE + WR1 : SIZEOF(SELF\surface_curve.associated_geometry) = 2; + WR2 : associated_surface(SELF\surface_curve.associated_geometry[1]) <> + associated_surface(SELF\surface_curve.associated_geometry[2]); +END_ENTITY; + + +ENTITY interval_expression + SUBTYPE OF (boolean_expression, multiple_arity_generic_expression); +DERIVE + interval_high : generic_expression := SELF\multiple_arity_generic_expression.operands[3]; + interval_item : generic_expression := SELF\multiple_arity_generic_expression.operands[2]; + interval_low : generic_expression := SELF\multiple_arity_generic_expression.operands[1]; +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EXPRESSION' + IN TYPEOF(interval_low)) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EXPRESSION' + IN TYPEOF(interval_item) ) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EXPRESSION' + IN TYPEOF(interval_high)); + WR2 : (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRING_EXPRESSION' + IN TYPEOF (SELF.interval_low)) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRING_EXPRESSION' + IN TYPEOF (SELF.interval_high)) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRING_EXPRESSION' + IN TYPEOF (SELF.interval_item))) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRING_EXPRESSION' + IN TYPEOF(SELF.interval_low)) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.NUMERIC_EXPRESSION' + IN TYPEOF(SELF.interval_item)) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.NUMERIC_EXPRESSION' + IN TYPEOF(SELF.interval_high))); +END_ENTITY; + + +ENTITY invisibility; + invisible_items : SET [1:?] OF invisible_item; +END_ENTITY; + + +ENTITY iso4217_currency + SUBTYPE OF (currency); +END_ENTITY; + + +ENTITY item_defined_transformation; + name : label; + description : OPTIONAL text; + transform_item_1 : representation_item; + transform_item_2 : representation_item; +END_ENTITY; + + +ENTITY item_identified_representation_usage; + name : label; + description : OPTIONAL text; + definition : represented_definition; + used_representation : representation; + identified_item : representation_item; +WHERE + WR1 : SELF.used_representation IN using_representations(SELF.identified_item); +END_ENTITY; + + +ENTITY known_source + SUBTYPE OF (external_source, pre_defined_item); +END_ENTITY; + + +ENTITY laid_defined_transformation + SUBTYPE OF (transformation_with_derived_angle); +END_ENTITY; + + +ENTITY laminate_table + SUPERTYPE OF (ONEOF (part_laminate_table, zone_structural_makeup)) + SUBTYPE OF (product_definition); +END_ENTITY; + + +ENTITY language + SUBTYPE OF (group); +WHERE + WR1 : SELF\group.name <> ''; +END_ENTITY; + + +ENTITY leader_curve + SUBTYPE OF (annotation_curve_occurrence); +WHERE + WR1 : SIZEOF( + QUERY(ldc <* USEDIN( SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_CALLOUT.CONTENTS') + | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'LEADER_DIRECTED_CALLOUT' IN TYPEOF(ldc))) >= 1; +END_ENTITY; + + +ENTITY leader_directed_callout + SUBTYPE OF (draughting_callout); +WHERE + WR1 : SIZEOF (QUERY (l_1 <* SELF\draughting_callout.contents | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_CURVE' IN (TYPEOF(l_1)))) >= 1; + WR2 : SIZEOF(SELF\draughting_callout.contents) >=2; +END_ENTITY; + + +ENTITY leader_directed_dimension + SUBTYPE OF (leader_directed_callout); +WHERE + WR1 : SIZEOF (QUERY (con <* SELF.contents | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_CURVE' IN TYPEOF (con)))=1; +END_ENTITY; + + +ENTITY leader_terminator + SUBTYPE OF (terminator_symbol); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_CURVE' IN TYPEOF + (SELF\terminator_symbol.annotated_curve); +END_ENTITY; + + +ENTITY length_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY length_unit + SUBTYPE OF (named_unit); +WHERE + WR1 : (SELF\named_unit.dimensions.length_exponent = 1.0) AND + (SELF\named_unit.dimensions.mass_exponent = 0.0) AND + (SELF\named_unit.dimensions.time_exponent = 0.0) AND + (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND + (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND + (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND + (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0); +END_ENTITY; + + +ENTITY light_source + SUPERTYPE OF (ONEOF (light_source_ambient, light_source_directional, light_source_positional, light_source_spot)) + SUBTYPE OF (geometric_representation_item); + light_colour : colour; +WHERE + WR1 : SIZEOF(USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'STYLED_ITEM.ITEM')) = 0; +END_ENTITY; + + +ENTITY light_source_ambient + SUBTYPE OF (light_source); +END_ENTITY; + + +ENTITY light_source_directional + SUBTYPE OF (light_source); + orientation : direction; +END_ENTITY; + + +ENTITY light_source_positional + SUBTYPE OF (light_source); + position : cartesian_point; + constant_attenuation : REAL; + distance_attenuation : REAL; +END_ENTITY; + + +ENTITY light_source_spot + SUBTYPE OF (light_source); + position : cartesian_point; + orientation : direction; + concentration_exponent : REAL; + constant_attenuation : REAL; + distance_attenuation : REAL; + spread_angle : positive_plane_angle_measure; +END_ENTITY; + + +ENTITY limits_and_fits; + form_variance : label; + zone_variance : label; + grade : label; + source : text; +END_ENTITY; + + +ENTITY line + SUBTYPE OF (curve); + pnt : cartesian_point; + dir : vector; +WHERE + WR1 : dir.dim = pnt.dim; +END_ENTITY; + + +ENTITY line_profile_tolerance + SUBTYPE OF (geometric_tolerance); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF (SELF)) OR ( SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) <= 3); + WR2 : SIZEOF ( +QUERY ( sar <* USEDIN (SELF\geometric_tolerance.toleranced_shape_aspect, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')| (sar.name IN [ 'affected plane association', 'resulting intersection curve association' ]) )) = 1; +END_ENTITY; + + +ENTITY linear_dimension + SUBTYPE OF (dimension_curve_directed_callout); +END_ENTITY; + + +ENTITY literal_conjunction + SUBTYPE OF (simple_clause); +END_ENTITY; + + +ENTITY literal_disjunction + SUBTYPE OF (simple_clause); +END_ENTITY; + + +ENTITY literal_number + ABSTRACT SUPERTYPE OF (ONEOF (int_literal, real_literal)) + SUBTYPE OF (simple_numeric_expression, generic_literal); + the_value : NUMBER; +END_ENTITY; + + +ENTITY local_time; + hour_component : hour_in_day; + minute_component : OPTIONAL minute_in_hour; + second_component : OPTIONAL second_in_minute; + zone : coordinated_universal_time_offset; +WHERE + WR1 : valid_time (SELF); +END_ENTITY; + + +ENTITY logical_literal + SUBTYPE OF (generic_literal); + lit_value : LOGICAL; +END_ENTITY; + + +ENTITY logical_representation_item + SUBTYPE OF (representation_item, logical_literal); +END_ENTITY; + + +ENTITY loop + SUPERTYPE OF (ONEOF (vertex_loop, edge_loop, poly_loop)) + SUBTYPE OF (topological_representation_item); +END_ENTITY; + + +ENTITY loss_tangent_measure_with_unit + SUBTYPE OF (ratio_measure_with_unit); +END_ENTITY; + + +ENTITY lot_effectivity + SUBTYPE OF (effectivity); + effectivity_lot_id : identifier; + effectivity_lot_size : measure_with_unit; +END_ENTITY; + + +ENTITY luminous_flux_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LUMINOUS_FLUX_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY luminous_flux_unit + SUBTYPE OF (named_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.lumen); +END_ENTITY; + + +ENTITY luminous_intensity_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LUMINOUS_INTENSITY_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY luminous_intensity_unit + SUBTYPE OF (named_unit); +WHERE + WR1 : (SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 0.0) AND (SELF\named_unit.dimensions.time_exponent = 0.0) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 1.0); +END_ENTITY; + + +ENTITY magnetic_flux_density_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAGNETIC_FLUX_DENSITY_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY magnetic_flux_density_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.tesla); +END_ENTITY; + + +ENTITY magnetic_flux_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAGNETIC_FLUX_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY magnetic_flux_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.weber); +END_ENTITY; + + +ENTITY make_from_usage_option + SUBTYPE OF (product_definition_usage); + ranking : INTEGER; + ranking_rationale : text; + quantity : measure_with_unit; +WHERE + WR1 : (NOT ('NUMBER' IN TYPEOF(quantity.value_component))) + OR (quantity.value_component > 0); +END_ENTITY; + + +ENTITY manifold_solid_brep + SUBTYPE OF (solid_model); + outer : closed_shell; +END_ENTITY; + + +ENTITY manifold_subsurface_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF (QUERY (it <* SELF.items | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D'] * + TYPEOF(it)) = 1))) = 0; + WR2 : SIZEOF (QUERY (it <* SELF.items | + SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM'] * TYPEOF(it)) =1 )) > 0; + WR3 : SIZEOF (QUERY (mi <* QUERY (it <* items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SUBSURFACE_SHAPE_REPRESENTATION' IN + TYPEOF(mi\mapped_item.mapping_source. + mapped_representation)))) = 0; + WR4 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | + NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OPEN_SHELL' IN TYPEOF(cfss)))) = 0; + WR5 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | + NOT( (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET' IN + TYPEOF(cfss\connected_face_sub_set.parent_face_set))AND + (SIZEOF(QUERY(fac <* cfss\connected_face_sub_set.parent_face_set\connected_face_set.cfs_faces | NOT + advanced_face_properties(fac))) = 0)) OR + (SIZEOF(QUERY(fac <* cfss\connected_face_sub_set.parent_face_set\connected_face_set.cfs_faces | NOT + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF(fac)))) = 0) + ))) = 0; + WR6 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | + ( SIZEOF (QUERY (fac <* cfss\connected_face_set.cfs_faces | NOT + advanced_face_properties(fac))) = 0))) = 0; + WR7 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY(fcs <* cfss\connected_face_set.cfs_faces | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SUBFACE' IN TYPEOF(fcs)) AND + NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list | + NOT(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_CURVE' IN + TYPEOF(oe.edge_element)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SUBEDGE' IN + TYPEOF(oe.edge_element)) ))) = 0 + ))) = 0 + ))) = 0 + ))) = 0; + WR8 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY(fcs <* cfss\connected_face_set.cfs_faces | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SUBFACE' IN TYPEOF(fcs)) AND + NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list | + NOT(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF(oe.edge_start)) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN + TYPEOF(oe.edge_end)) + ))) = 0 + ))) = 0 + ))) = 0 + ))) = 0; + WR9 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY(fcs <* cfss\connected_face_set.cfs_faces | + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SUBFACE' IN TYPEOF(fcs)) AND + ( NOT (SIZEOF(QUERY (bnds <* fcs.bounds | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP'] * + TYPEOF(bnds.bound)) = 1 ) + )) = 0) + ))) = 0 + ))) = 0; + WR10 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY(fcs <* cfss\connected_face_set.cfs_faces | + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SUBFACE' IN TYPEOF(fcs)) AND + ( NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE' ] * + TYPEOF(oe.edge_element\edge_curve.edge_geometry)) = 1 ) + )) = 0 + ))) = 0 + )))) = 0 + ))) = 0; + WR11 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY(fcs <* cfss\connected_face_set.cfs_faces | + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SUBFACE' IN TYPEOF(fcs)) AND + (NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE' IN + TYPEOF(oe.edge_element\edge_curve.edge_geometry)) AND + (NOT ((SIZEOF (QUERY (sc_ag <* + oe.edge_element\edge_curve.edge_geometry\ + surface_curve.associated_geometry | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN + TYPEOF(sc_ag)))) = 0))) + )) = 0 + ))) = 0 + )))) = 0 + ))) = 0; + WR12 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY(fcs <* cfss\connected_face_set.cfs_faces | + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SUBFACE' IN TYPEOF(fcs)) AND + (NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN + TYPEOF(oe.edge_element\edge_curve.edge_geometry)) AND + (NOT (SIZEOF (oe\oriented_edge.edge_element\ + edge_curve.edge_geometry\polyline.points) >= 3)) + )) = 0 + ))) = 0 + )))) = 0 + ))) = 0; +END_ENTITY; + + +ENTITY manifold_surface_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF (QUERY (it <* SELF.items | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_SURFACE_MODEL', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D'] * TYPEOF (it)) = 1))) = 0; + WR2 : SIZEOF (QUERY (it <* SELF.items | + SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_SURFACE_MODEL', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM'] * TYPEOF (it)) = 1)) > 0; + WR3 : SIZEOF (QUERY (mi <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SURFACE_SHAPE_REPRESENTATION' + IN TYPEOF (mi\mapped_item.mapping_source.mapped_representation)) + AND + (SIZEOF(QUERY (mr_it <* + mi\mapped_item.mapping_source.mapped_representation.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_SURFACE_MODEL' + IN TYPEOF (mr_it)))) > 0 )))) = 0; + WR4 : SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (sh <* + sbsm\shell_based_surface_model.sbsm_boundary | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OPEN_SHELL', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_CLOSED_SHELL', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CLOSED_SHELL'] + * TYPEOF (sh)) = 1))) = 0))) = 0; + WR5 : SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + sbsm\shell_based_surface_model.sbsm_boundary | + NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_SURFACE' IN TYPEOF (fa)) )) = 0))) + = 0))) = 0; + WR6 : SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + sbsm\shell_based_surface_model.sbsm_boundary | + NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (msf_surface_check(fa\face_surface.face_geometry))))) = 0))) + = 0))) = 0; + WR7 : SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + sbsm\shell_based_surface_model.sbsm_boundary | + NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (bnds <* fa.bounds | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP'] + * TYPEOF (bnds.bound)) = 1))) = 0)))) = 0))) = 0))) = 0; + WR8 : SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items| + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + sbsm\shell_based_surface_model.sbsm_boundary | + NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_CURVE' IN TYPEOF + (oe.edge_element)))) = 0))) = 0)))) = 0))) = 0))) = 0; + WR9 : SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + sbsm\shell_based_surface_model.sbsm_boundary | + NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (QUERY (oe_cv <* QUERY (oe <* + elp_fbnds\path.edge_list | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_CURVE' IN TYPEOF (oe.edge_element)) | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_3D', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE'] * + TYPEOF (oe_cv.edge_element\edge_curve.edge_geometry)) + = 1))) = 0))) = 0)))) = 0))) = 0))) = 0; + WR10 : SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + sbsm\shell_based_surface_model.sbsm_boundary | + NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list | + NOT (msf_curve_check (oe.edge_element\edge_curve.edge_geometry)))) + = 0))) = 0)))) = 0))) = 0))) = 0; + WR11 : SIZEOF (QUERY(sbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + sbsm\shell_based_surface_model.sbsm_boundary | + NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list| + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF + (oe.edge_element.edge_start)) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN + TYPEOF (oe.edge_element.edge_end))))) + = 0))) = 0)))) = 0))) = 0))) = 0; + WR12 : SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + sbsm\shell_based_surface_model.sbsm_boundary | + NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list | + NOT ((SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DEGENERATE_PCURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_SURFACE'] * TYPEOF + (oe.edge_element.edge_start\vertex_point.vertex_geometry)) = 1) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DEGENERATE_PCURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_SURFACE'] * TYPEOF + (oe.edge_element.edge_end\vertex_point.vertex_geometry)) = 1 + )))) = 0))) = 0)))) = 0))) = 0))) = 0; + WR13 : SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + sbsm\shell_based_surface_model.sbsm_boundary | + NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (vlp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP' IN TYPEOF (bnds.bound)) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF + (vlp_fbnds\vertex_loop.loop_vertex)))) = 0)))) = 0))) + = 0))) = 0; + WR14 : SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + sbsm\shell_based_surface_model.sbsm_boundary | + NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (vlp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DEGENERATE_PCURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_SURFACE'] * TYPEOF + (vlp_fbnds\vertex_loop.loop_vertex\vertex_point.vertex_geometry)) + = 1))) = 0)))) = 0))) = 0))) = 0; +END_ENTITY; + + +ENTITY mapped_item + SUBTYPE OF (representation_item); + mapping_source : representation_map; + mapping_target : representation_item; +WHERE + WR1 : acyclic_mapped_representation(SELF); +END_ENTITY; + + +ENTITY mass_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MASS_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY mass_unit + SUBTYPE OF (named_unit); +WHERE + WR1 : (SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 1.0) AND (SELF\named_unit.dimensions.time_exponent = 0.0) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0); +END_ENTITY; + + +ENTITY material_designation; + name : label; + definitions : SET [1:?] OF characterized_definition; +END_ENTITY; + + +ENTITY material_designation_characterization; + name : label; + description : text; + designation : material_designation; + property : characterized_material_property; +END_ENTITY; + + +ENTITY material_property + SUBTYPE OF (property_definition); +UNIQUE + UR1: SELF\property_definition.name, SELF\property_definition.definition; +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CHARACTERIZED_OBJECT' IN + TYPEOF(SELF\property_definition.definition)) OR + (SIZEOF(bag_to_set(USEDIN(SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) - + QUERY(temp <* bag_to_set(USEDIN(SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'MATERIAL_PROPERTY_REPRESENTATION' IN + TYPEOF(temp)))) = 0); +END_ENTITY; + + +ENTITY material_property_representation + SUBTYPE OF (property_definition_representation); + dependent_environment : data_environment; +END_ENTITY; + + +ENTITY measure_qualification; + name : label; + description : text; + qualified_measure : measure_with_unit; + qualifiers : SET [1:?] OF value_qualifier; +WHERE + WR1 : SIZEOF(QUERY(temp <* qualifiers | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRECISION_QUALIFIER' + IN TYPEOF(temp))) < 2; + WR2 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION_ITEM' + IN TYPEOF(SELF\measure_qualification.qualified_measure)); +END_ENTITY; + + +ENTITY measure_representation_item + SUBTYPE OF (representation_item, measure_with_unit); +END_ENTITY; + + +ENTITY measure_with_unit + SUPERTYPE OF (ONEOF (length_measure_with_unit, mass_measure_with_unit, time_measure_with_unit, electric_current_measure_with_unit, thermodynamic_temperature_measure_with_unit, celsius_temperature_measure_with_unit, amount_of_substance_measure_with_unit, luminous_intensity_measure_with_unit, plane_angle_measure_with_unit, solid_angle_measure_with_unit, area_measure_with_unit, volume_measure_with_unit, ratio_measure_with_unit, acceleration_measure_with_unit, capacitance_measure_with_unit, electric_charge_measure_with_unit, conductance_measure_with_unit, electric_potential_measure_with_unit, energy_measure_with_unit, magnetic_flux_density_measure_with_unit, force_measure_with_unit, frequency_measure_with_unit, illuminance_measure_with_unit, inductance_measure_with_unit, luminous_flux_measure_with_unit, magnetic_flux_measure_with_unit, power_measure_with_unit, pressure_measure_with_unit, resistance_measure_with_unit, velocity_measure_with_unit, absorbed_dose_measure_with_unit, radioactivity_measure_with_unit, dose_equivalent_measure_with_unit)); + value_component : measure_value; + unit_component : unit; +WHERE + WR1 : valid_units(SELF); +END_ENTITY; + + +ENTITY mechanical_context + SUBTYPE OF (product_context); +WHERE + WR1 : SELF.discipline_type = 'mechanical'; +END_ENTITY; + + +ENTITY mechanical_design_and_draughting_relationship + SUBTYPE OF (definitional_representation_relationship_with_same_context); + SELF\representation_relationship.rep_1 : mechanical_design_and_draughting_relationship_select; + SELF\representation_relationship.rep_2 : mechanical_design_and_draughting_relationship_select; +WHERE + WR1 : NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'DRAUGHTING_MODEL' IN TYPEOF(rep_2)) OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'DRAUGHTING_MODEL' IN TYPEOF(rep_1)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'SHAPE_REPRESENTATION' IN TYPEOF(rep_1))); + WR2 : NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION' IN TYPEOF(rep_2)) OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION' IN TYPEOF(rep_1)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'SHAPE_REPRESENTATION' IN TYPEOF(rep_1))); + WR3 : NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION' IN TYPEOF(rep_2)) OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION' IN TYPEOF(rep_1)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'SHAPE_REPRESENTATION' IN TYPEOF(rep_1))); +END_ENTITY; + + +ENTITY mechanical_design_geometric_presentation_area + SUBTYPE OF (presentation_area); + SELF\representation.items : SET [1:?] OF mechanical_design_geometric_presentation_area_items; +WHERE + WR1 : SIZEOF(QUERY(it1 <* SELF.items | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF(it1)) + OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESENTATION_VIEW' + IN TYPEOF + (it1\mapped_item.mapping_source.mapped_representation)))) = 0; + WR2 : SIZEOF(QUERY(pv <* QUERY(mi1 <* QUERY(it1 <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF(it1)) | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESENTATION_VIEW' + IN TYPEOF + (mi1\mapped_item.mapping_source.mapped_representation)) | + -- search in all presentation_views for axis2_placements and + -- mapped_items and for the subtype of mapped_item + -- camera_image_3d_with_scale; the latter shall reference + -- a mechanical_design_geometric_presentation_representation; + -- the supertype mapped_item shall reference presentation_view. + NOT (SIZEOF(QUERY(it2 <* pv\mapped_item.mapping_source. + mapped_representation\representation.items | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT' + IN TYPEOF(it2)) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF(it2)) AND NOT + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'CAMERA_IMAGE_3D_WITH_SCALE' IN TYPEOF(it2))) AND NOT ( + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESENTATION_VIEW' + IN TYPEOF + (it2\mapped_item.mapping_source.mapped_representation))) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'CAMERA_IMAGE_3D_WITH_SCALE' IN TYPEOF(it2)) + AND NOT ( + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION' + IN TYPEOF (it2\mapped_item.mapping_source.mapped_representation) )) + ))) = 0))) = 0; + WR3 : (SIZEOF(QUERY(ps <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT') | ((ps.size\planar_extent.size_in_x <= 0) + OR + (ps.size\planar_extent.size_in_y <= 0)))) = 0) + AND + (SIZEOF(QUERY(ais <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AREA_IN_SET.AREA') | + (SIZEOF(QUERY(ps <* USEDIN (ais, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT') | + ((ps.size\planar_extent.size_in_x <= 0) + OR + (ps.size\planar_extent.size_in_y <= 0)))) > 0))) = 0); + WR4 : (SIZEOF(QUERY(ps <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AXIS2_PLACEMENT_2D' IN TYPEOF (ps.size.placement)))) = 1) + AND + (SIZEOF(QUERY(ps <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AXIS2_PLACEMENT_3D' IN TYPEOF (ps.size.placement)))) = 0) + OR + ((SIZEOF(QUERY(ais <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AREA_IN_SET.AREA') | + (SIZEOF(QUERY(ps <* USEDIN (ais, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AXIS2_PLACEMENT_2D' IN TYPEOF (ps.size.placement)))) = 1))) = 1) + AND + (SIZEOF(QUERY(ais <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AREA_IN_SET.AREA') | + (SIZEOF(QUERY(ps <* USEDIN (ais, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AXIS2_PLACEMENT_3D' IN TYPEOF (ps.size.placement)))) = 0))) = 1)); +END_ENTITY; + + +ENTITY mechanical_design_geometric_presentation_representation + SUBTYPE OF (representation); + SELF\representation.items : SET [1:?] OF mechanical_design_geometric_presentation_representation_items; +WHERE + WR1 : SIZEOF(QUERY(mi <* QUERY(it <* SELF.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF(it))) | NOT (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SHAPE_REPRESENTATION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION'] + * TYPEOF(mi\mapped_item.mapping_source.mapped_representation)) + = 1))) = 0; + WR2 : SIZEOF(QUERY(smi <* QUERY(si <* QUERY(it <* SELF.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it))) | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF(si\styled_item.item))) | NOT ( + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SHAPE_REPRESENTATION' IN TYPEOF (smi\styled_item. + item\mapped_item.mapping_source.mapped_representation))) )) = 0; + WR3 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles | + NOT (SIZEOF(QUERY(pss <* psa.styles | NOT (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_STYLE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE'] + * TYPEOF(pss)) = 1))) = 0))) = 0))) = 0; + WR4 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it)) | + NOT (SIZEOF(QUERY(psbc <* QUERY(psa <* si\styled_item.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_STYLE_BY_CONTEXT' IN TYPEOF(psa)) | NOT (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'REPRESENTATION_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION'] + * TYPEOF(psbc\presentation_style_by_context.style_context)) + = 1))) = 0))) = 0; + WR5 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles | + NOT (SIZEOF(QUERY(ps <* QUERY(pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_STYLE' + IN TYPEOF(pss)) | NOT + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'POSITIVE_LENGTH_MEASURE' IN TYPEOF (ps\point_style.marker_size)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_COLOUR'] + * TYPEOF(ps\point_style.marker_colour)) + = 1)))) = 0))) = 0))) = 0; + WR6 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles | + NOT (SIZEOF(QUERY(cs <* QUERY(pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF(pss)) | NOT((SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_COLOUR'] + * TYPEOF(cs\curve_style.curve_colour)) = 1) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'POSITIVE_LENGTH_MEASURE' IN TYPEOF (cs\curve_style.curve_width)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE_FONT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] + * TYPEOF(cs\curve_style.curve_font)) = 1)))) = 0))) = 0))) = 0; + WR7 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles | + NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF(pss)) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_SIDE_STYLE' IN TYPEOF + (ssu\surface_style_usage.style)))) = 0))) = 0))) = 0; + WR8 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles | + NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF(pss)) | NOT (SIZEOF(QUERY(sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + NOT (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_PARAMETER_LINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_CONTROL_GRID', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_SILHOUETTE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_SEGMENTATION_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_FILL_AREA', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_BOUNDARY'] + * TYPEOF(sses)) = 1))) = 0))) = 0))) = 0))) = 0; + WR9 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles | + NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF(pss)) | NOT (SIZEOF(QUERY(sspl <* QUERY(sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_PARAMETER_LINE' IN TYPEOF(sses)) | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF + (sspl\surface_style_parameter_line.style_of_parameter_lines)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_COLOUR'] + * TYPEOF(sspl\surface_style_parameter_line. + style_of_parameter_lines\curve_style.curve_colour)) = 1) + AND ( + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'POSITIVE_LENGTH_MEASURE' IN TYPEOF + (sspl\surface_style_parameter_line. + style_of_parameter_lines\curve_style.curve_width)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE_FONT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] + * TYPEOF(sspl\surface_style_parameter_line. + style_of_parameter_lines\curve_style.curve_font)) = 1)))) + = 0))) = 0))) = 0))) = 0; + WR10 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles | + NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF(pss)) | NOT (SIZEOF(QUERY(sscg <* QUERY(sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_CONTROL_GRID' IN TYPEOF(sses)) | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF (sscg\surface_style_control_grid.style_of_control_grid)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_COLOUR'] + * TYPEOF(sscg\surface_style_control_grid. + style_of_control_grid\curve_style.curve_colour)) = 1) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'POSITIVE_LENGTH_MEASURE' IN TYPEOF + (sscg\surface_style_control_grid. + style_of_control_grid\curve_style.curve_width)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE_FONT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] + * TYPEOF(sscg\surface_style_control_grid. + style_of_control_grid\curve_style.curve_font)) = 1)))) + = 0))) = 0))) = 0))) = 0; + WR11 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it)) | + NOT (SIZEOF(QUERY(psa <* si\styled_item.styles | + NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF(pss)) | NOT (SIZEOF(QUERY(sssh <* QUERY(sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_SILHOUETTE' IN TYPEOF(sses)) | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF (sssh\surface_style_silhouette.style_of_silhouette)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_COLOUR'] + * TYPEOF(sssh\surface_style_silhouette. + style_of_silhouette\curve_style.curve_colour)) = 1) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'POSITIVE_LENGTH_MEASURE' IN TYPEOF + (sssh\surface_style_silhouette.style_of_silhouette\curve_style. + curve_width)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE_FONT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] + * TYPEOF(sssh\surface_style_silhouette. + style_of_silhouette\curve_style.curve_font)) = 1)))) + = 0))) = 0))) = 0))) = 0; + WR12 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles | + NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF(pss)) | NOT (SIZEOF(QUERY(sssc <* QUERY(sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_SEGMENTATION_CURVE' IN TYPEOF(sses)) | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF + (sssc\surface_style_segmentation_curve.style_of_segmentation_curve)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_COLOUR'] + * TYPEOF(sssc\surface_style_segmentation_curve. + style_of_segmentation_curve\curve_style.curve_colour)) = 1) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'POSITIVE_LENGTH_MEASURE' IN TYPEOF + (sssc\surface_style_segmentation_curve. + style_of_segmentation_curve\curve_style.curve_width)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE_FONT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] + * TYPEOF(sssc\surface_style_segmentation_curve. + style_of_segmentation_curve\curve_style.curve_font)) = 1)))) + = 0))) = 0))) = 0))) = 0; + WR13 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles | + NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF(pss)) | NOT (SIZEOF(QUERY(ssbd <* QUERY(sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_BOUNDARY' IN TYPEOF(sses)) | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF (ssbd\surface_style_boundary.style_of_boundary)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_COLOUR'] + * TYPEOF(ssbd\surface_style_boundary. + style_of_boundary\curve_style.curve_colour)) = 1) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'POSITIVE_LENGTH_MEASURE' IN TYPEOF (ssbd\surface_style_boundary. + style_of_boundary\curve_style.curve_width)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE_FONT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] + * TYPEOF(ssbd\surface_style_boundary. + style_of_boundary\curve_style.curve_font)) = 1)))) = 0))) + = 0))) = 0))) = 0; +END_ENTITY; + + +ENTITY mechanical_design_presentation_representation_with_draughting + SUBTYPE OF (representation); + SELF\representation.items : SET [1:?] OF camera_model_d3; +END_ENTITY; + + +ENTITY mechanical_design_shaded_presentation_area + SUBTYPE OF (presentation_area); +WHERE + WR1 : SIZEOF (QUERY (it1 <* SELF.items | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT' + IN TYPEOF (it1)) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF (it1)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESENTATION_VIEW' + IN TYPEOF + (it1\mapped_item.mapping_source.mapped_representation)))))) = 0; + WR2 : SIZEOF (QUERY (pv <* QUERY (mi1 <* QUERY (it1 <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF (it1)) | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESENTATION_VIEW' + IN TYPEOF + (mi1\mapped_item.mapping_source.mapped_representation)) | + (* search in all presentation_views for axis2_placements and + mapped_items and for the subtype of mapped_item, + camera_image_3d_with_scale; the latter shall reference + a mechanical_design_geometric_presentation_representation; + the supertype mapped_item shall reference presentation_view. *) + NOT (SIZEOF(QUERY(it2 <* pv\mapped_item.mapping_source. + mapped_representation\representation.items | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT' + IN TYPEOF(it2)) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF(it2)) AND NOT + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'CAMERA_IMAGE_3D_WITH_SCALE' IN TYPEOF(it2))) AND NOT ( + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESENTATION_VIEW' + IN TYPEOF + (it2\mapped_item.mapping_source.mapped_representation))) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'CAMERA_IMAGE_3D_WITH_SCALE' IN TYPEOF(it2)) + AND NOT ( + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION' + IN TYPEOF (it2\mapped_item.mapping_source.mapped_representation) )) + ))) = 0))) = 0; + WR3 : (SIZEOF (QUERY(ps <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT') | + NOT ((ps.size\planar_extent.size_in_x > 0) + AND (ps.size\planar_extent.size_in_y > 0)) )) = 0) + AND + (* check secondly for presentation_set, via area_in_set *) + (SIZEOF (QUERY(pset <* QUERY(ais <* + USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AREA_IN_SET.AREA') + | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SET' IN TYPEOF (ais.in_set)) | + (* after having collected all presentation_set, check their sizes *) + SIZEOF (QUERY(psize <* USEDIN(pset, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT') + | NOT ((psize.size\planar_extent.size_in_x > 0) + AND (psize.size\planar_extent.size_in_y > 0)) )) = 0)) = 0); + WR4 : (SIZEOF(QUERY( psize <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT') + | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AXIS2_PLACEMENT_2D' + IN TYPEOF (psize.size.placement))) = 1) + AND + (* check secondly for presentation_set, via area_in_set *) + (SIZEOF (QUERY(pset <* QUERY(ais <* + USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AREA_IN_SET.AREA') + | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SET' IN TYPEOF (ais.in_set)) | + (* after having collected all presentation_set, check their + dimension *) + SIZEOF (QUERY(psize <* USEDIN(pset, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT') + | NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AXIS2_PLACEMENT_2D' + IN TYPEOF (psize.size.placement)) )) = 0)) = 0); + WR5 : SIZEOF (QUERY (pv <* QUERY (mi1 <* QUERY (it1 <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF (it1)) | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESENTATION_VIEW' + IN TYPEOF + (mi1\mapped_item.mapping_source.mapped_representation)) | + (* search in all presentation_views for + mapped_items and for the subtype of mapped_item, + camera_image_3d_with_scale; the latter shall reference + a camera_usage that shall have as its mapping_origin either + camera_model_d3, camera_model_d3_with_hlhsr, or + camera_model_with_light_sources. *) + NOT (SIZEOF(QUERY(ci <* pv\mapped_item.mapping_source. + mapped_representation\representation.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'CAMERA_IMAGE_3D_WITH_SCALE' IN TYPEOF(ci)) + AND + (SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'CAMERA_MODEL_D3', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'CAMERA_MODEL_D3_WITH_HLHSR', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'CAMERA_MODEL_WITH_LIGHT_SOURCES'] * TYPEOF + (ci\mapped_item.mapping_source.mapping_origin)) + = 1))) = 0))) = 0; +END_ENTITY; + + +ENTITY mechanical_design_shaded_presentation_representation + SUBTYPE OF (representation); +WHERE + WR1 : SIZEOF(QUERY(it <* SELF.items | + NOT (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CAMERA_MODEL_D3'] + * TYPEOF(it)) = 1))) = 0; + WR2 : SIZEOF(QUERY(mi <* QUERY(it <* SELF.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF(it))) | NOT (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SHAPE_REPRESENTATION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION'] + * TYPEOF(mi\mapped_item.mapping_source.mapped_representation)) + = 1))) = 0; + WR3 : SIZEOF(QUERY(smi <* QUERY(si <* QUERY(it <* SELF.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it))) | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF(si\styled_item.item))) | NOT ( + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SHAPE_REPRESENTATION' IN TYPEOF (smi\styled_item. + item\mapped_item.mapping_source.mapped_representation))) )) = 0; + WR4 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (pss <* psa.styles | + NOT (SIZEOF ( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_STYLE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE'] + * TYPEOF (pss)) = 1))) = 0))) = 0))) = 0; + WR5 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psbc <* QUERY (psa <* si\styled_item.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'PRESENTATION_STYLE_BY_CONTEXT' IN TYPEOF (psa)) | + NOT (SIZEOF ( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION'] + * TYPEOF (psbc\presentation_style_by_context.style_context)) = 1))) + = 0))) = 0; + WR6 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (ps <* QUERY (pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_STYLE' + IN TYPEOF (pss)) | + NOT ( + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MARKER_TYPE' + IN TYPEOF (ps\point_style.marker)) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF + (ps\point_style.marker_size)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (ps\point_style.marker_colour)) = 1)))) = 0))) = 0))) = 0; + WR7 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (cs <* QUERY (pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF (pss)) | + NOT ( + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (cs\curve_style.curve_colour)) = 1) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF + (cs\curve_style.curve_width)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'CURVE_STYLE_FONT', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF + (cs\curve_style.curve_font)) = 1)))) = 0))) = 0))) = 0; + WR8 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF (pss)) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_SIDE_STYLE' + IN TYPEOF (ssu\surface_style_usage.style)) )) = 0))) = 0 ))) = 0; + WR9 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF (pss)) | + NOT (SIZEOF (QUERY (sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + NOT (SIZEOF ( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_PARAMETER_LINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_CONTROL_GRID', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_SILHOUETTE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_SEGMENTATION_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_BOUNDARY', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_FILL_AREA', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_RENDERING'] * TYPEOF (sses)) = 1))) = 0))) = 0))) + = 0))) = 0; + WR10 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF (pss)) | + NOT (SIZEOF (QUERY (ssfa <* QUERY (sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_FILL_AREA' + IN TYPEOF (sses)) | + NOT (SIZEOF (QUERY (fss <* + ssfa\surface_style_fill_area.fill_area.fill_styles | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'FILL_AREA_STYLE_COLOUR' IN TYPEOF (fss)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (fss\fill_area_style_colour.fill_colour)) = 1)))) = 0))) = 0))) + = 0))) = 0))) = 0; + WR11 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF (pss)) | + NOT (SIZEOF (QUERY (sspl <* QUERY (sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_PARAMETER_LINE' IN TYPEOF (sses)) | + NOT (( + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' IN TYPEOF + (sspl\surface_style_parameter_line.style_of_parameter_lines)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (sspl\surface_style_parameter_line. + style_of_parameter_lines\curve_style.curve_colour)) = 1) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF + (sspl\surface_style_parameter_line. + style_of_parameter_lines\curve_style.curve_width)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'CURVE_STYLE_FONT', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF + (sspl\surface_style_parameter_line. + style_of_parameter_lines\curve_style.curve_font)) = 1)) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE_RENDERING' + IN TYPEOF + (sspl\surface_style_parameter_line.style_of_parameter_lines)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (sspl\surface_style_parameter_line.style_of_parameter_lines\ + curve_style_rendering.rendering_properties.rendered_colour)) + = 1))) )) = 0))) = 0))) = 0))) = 0; + WR12 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF (pss)) | + NOT (SIZEOF (QUERY (sscg <* QUERY (sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_CONTROL_GRID' IN TYPEOF (sses)) | + NOT (( + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF (sscg\surface_style_control_grid.style_of_control_grid)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (sscg\surface_style_control_grid. + style_of_control_grid\curve_style.curve_colour)) = 1) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF + (sscg\surface_style_control_grid. + style_of_control_grid\curve_style.curve_width)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'CURVE_STYLE_FONT', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF + (sscg\surface_style_control_grid. + style_of_control_grid\curve_style.curve_font)) = 1)) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE_RENDERING' + IN TYPEOF (sscg\surface_style_control_grid.style_of_control_grid)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (sscg\surface_style_control_grid.style_of_control_grid\ + curve_style_rendering.rendering_properties.rendered_colour)) + = 1))) )) = 0))) = 0))) = 0))) = 0; + WR13 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF (pss)) | + NOT (SIZEOF (QUERY (sssh <* QUERY (sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_SILHOUETTE' IN TYPEOF (sses)) | + NOT (( + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF (sssh\surface_style_silhouette.style_of_silhouette)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (sssh\surface_style_silhouette. + style_of_silhouette\curve_style.curve_colour)) = 1) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF + (sssh\surface_style_silhouette. + style_of_silhouette\curve_style.curve_width)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'CURVE_STYLE_FONT', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF + (sssh\surface_style_silhouette. + style_of_silhouette\curve_style.curve_font)) = 1)) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE_RENDERING' + IN TYPEOF (sssh\surface_style_silhouette.style_of_silhouette)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (sssh\surface_style_silhouette.style_of_silhouette\ + curve_style_rendering.rendering_properties.rendered_colour)) + = 1))) )) = 0))) = 0))) = 0))) = 0; + WR14 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF (pss)) | + NOT (SIZEOF (QUERY (sssc <* QUERY (sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_SEGMENTATION_CURVE' IN TYPEOF (sses)) | + NOT (( + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF + (sssc\surface_style_segmentation_curve.style_of_segmentation_curve)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (sssc\surface_style_segmentation_curve. + style_of_segmentation_curve\curve_style.curve_colour)) = 1) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF + (sssc\surface_style_segmentation_curve. + style_of_segmentation_curve\curve_style.curve_width)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'CURVE_STYLE_FONT', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF + (sssc\surface_style_segmentation_curve. + style_of_segmentation_curve\curve_style.curve_font)) = 1)) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE_RENDERING' + IN TYPEOF (sssc\surface_style_segmentation_curve. + style_of_segmentation_curve)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (sssc\surface_style_segmentation_curve.style_of_segmentation_curve\ + curve_style_rendering.rendering_properties.rendered_colour)) + = 1))) )) = 0))) = 0))) = 0))) = 0; + WR15 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF (pss)) | + NOT (SIZEOF (QUERY (ssbd <* QUERY (sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_BOUNDARY' IN TYPEOF (sses)) | + NOT (( + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF (ssbd\surface_style_boundary.style_of_boundary)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (ssbd\surface_style_boundary. + style_of_boundary\curve_style.curve_colour)) = 1) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF + (ssbd\surface_style_boundary. + style_of_boundary\curve_style.curve_width)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'CURVE_STYLE_FONT', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF + (ssbd\surface_style_boundary. + style_of_boundary\curve_style.curve_font)) = 1)) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE_RENDERING' + IN TYPEOF (ssbd\surface_style_boundary.style_of_boundary)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (ssbd\surface_style_boundary.style_of_boundary\ + curve_style_rendering.rendering_properties.rendered_colour)) + = 1))) )) = 0))) = 0))) = 0))) = 0; + WR16 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF (pss)) | + NOT (SIZEOF (QUERY (ssre <* QUERY (sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_RENDERING' IN TYPEOF (sses)) | + NOT + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (ssre\surface_style_rendering.surface_colour)) = 1))) + = 0))) = 0))) = 0))) = 0; +END_ENTITY; + + +ENTITY min_and_major_ply_orientation_basis + SUBTYPE OF (representation_item_relationship, geometric_representation_item); + SELF\representation_item_relationship.related_representation_item : axis2_placement_3d; + SELF\representation_item_relationship.relating_representation_item : axis2_placement_3d; +DERIVE + major_orientation_basis : axis2_placement_3d := SELF\representation_item_relationship.related_representation_item; + minor_orientation_basis : axis2_placement_3d := SELF\representation_item_relationship.relating_representation_item; +END_ENTITY; + + +ENTITY modified_geometric_tolerance + SUBTYPE OF (geometric_tolerance); + modifier : limit_condition; +END_ENTITY; + + +ENTITY modified_solid + ABSTRACT SUPERTYPE OF (ONEOF (edge_blended_solid, sculptured_solid, shelled_solid, modified_solid_with_placed_configuration)) + SUBTYPE OF (solid_model); + rationale : text; + base_solid : base_solid_select; +END_ENTITY; + + +ENTITY modified_solid_with_placed_configuration + ABSTRACT SUPERTYPE OF (ONEOF (solid_with_depression, solid_with_protrusion, solid_with_shape_element_pattern)) + SUBTYPE OF (modified_solid); + placing : axis2_placement_3d; +END_ENTITY; + + +ENTITY moments_of_inertia_representation + SUBTYPE OF (representation); +WHERE + WR1 : (SIZEOF(SELF.items) = 1) AND + (SIZEOF( QUERY( i <* SELF.items | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'COMPOUND_REPRESENTATION_ITEM' IN TYPEOF(i)) AND + (i.name = 'moments of inertia matrix') )) = 1); + WR2 : SIZEOF( QUERY( i <* SELF.items | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'COMPOUND_REPRESENTATION_ITEM' IN TYPEOF(i)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'LIST_REPRESENTATION_ITEM' IN TYPEOF(i\compound_representation_item.item_element)) AND + value_range_aggregate_rep_item (i\compound_representation_item.item_element) )) = 1; +END_ENTITY; + + +ENTITY multi_language_attribute_assignment + SUBTYPE OF (attribute_value_assignment); + items : SET [1:?] OF multi_language_attribute_item; +DERIVE + translation_language : language := language_indication[1]\attribute_classification_assignment.assigned_class; +INVERSE + language_indication: SET [1:1] OF attribute_language_assignment FOR items; +WHERE + WR1 : (SELF\attribute_value_assignment.role.name = 'alternate language'); + WR2 : SIZEOF( QUERY( ala <* language_indication | + (ala\attribute_classification_assignment.attribute_name = 'attribute_value') AND + (ala\attribute_classification_assignment.role.name='translated') )) = 1; + WR3 : SELF\attribute_value_assignment.attribute_name <> ''; + WR4 : SIZEOF(QUERY(ci <* items | +SIZEOF(QUERY(ata <* USEDIN(ci, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | +(ata\attribute_value_assignment.attribute_name = SELF\attribute_value_assignment.attribute_name) AND +(ata.translation_language :=: translation_language) ))>1 )) =0; + WR5 : SIZEOF(QUERY(ci <* items | +SIZEOF(QUERY(ata <* USEDIN(ci, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | + (ata\attribute_classification_assignment.role.name='primary') AND + (ata\attribute_classification_assignment.attribute_name= SELF\attribute_value_assignment.attribute_name) AND + (ata\attribute_classification_assignment.assigned_class :=: translation_language) ))>0 )) =0; +END_ENTITY; + + +ENTITY multiple_arity_boolean_expression + ABSTRACT SUPERTYPE + SUBTYPE OF (boolean_expression, multiple_arity_generic_expression); + SELF\multiple_arity_generic_expression.operands : LIST [2:?] OF boolean_expression; +END_ENTITY; + + +ENTITY multiple_arity_generic_expression + ABSTRACT SUPERTYPE + SUBTYPE OF (generic_expression); + operands : LIST [2:?] OF generic_expression; +END_ENTITY; + + +ENTITY multiple_arity_numeric_expression + ABSTRACT SUPERTYPE + SUBTYPE OF (numeric_expression, multiple_arity_generic_expression); + SELF\multiple_arity_generic_expression.operands : LIST [2:?] OF numeric_expression; +END_ENTITY; + + +ENTITY name_assignment + ABSTRACT SUPERTYPE; + assigned_name : label; +DERIVE + role : object_role := get_role(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; +END_ENTITY; + + +ENTITY name_attribute; + attribute_value : label; + named_item : name_attribute_select; +END_ENTITY; + + +ENTITY named_unit + SUPERTYPE OF ((ONEOF (si_unit, conversion_based_unit, context_dependent_unit) ANDOR ONEOF (length_unit, mass_unit, time_unit, electric_current_unit, thermodynamic_temperature_unit, amount_of_substance_unit, luminous_flux_unit, luminous_intensity_unit, plane_angle_unit, solid_angle_unit, ratio_unit))); + dimensions : dimensional_exponents; +END_ENTITY; + + +ENTITY next_assembly_usage_occurrence + SUBTYPE OF (assembly_component_usage); +END_ENTITY; + + +ENTITY non_manifold_surface_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF (QUERY (it <* SELF.items | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D'] * TYPEOF (it)) = 1))) + = 0; + WR2 : SIZEOF (QUERY (it <* SELF.items | + SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM'] * TYPEOF (it)) = 1)) > 0; + WR3 : SIZEOF (QUERY (mi <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'NON_MANIFOLD_SURFACE_SHAPE_REPRESENTATION' + IN TYPEOF (mi\mapped_item.mapping_source.mapped_representation)) + AND + (SIZEOF(QUERY (mr_it <* + mi\mapped_item.mapping_source.mapped_representation.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' + IN TYPEOF (mr_it)))) > 0 )))) = 0; + WR4 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + fbsm\face_based_surface_model.fbsm_faces | + NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_SURFACE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_FACE'] * TYPEOF (fa)) = 1))) + = 0))) = 0))) = 0; + WR5 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + fbsm\face_based_surface_model.fbsm_faces | + NOT (SIZEOF (QUERY (f_sf <* QUERY (fa <* cfs.cfs_faces | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_SURFACE' IN TYPEOF (fa))) | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (f_sf)) + OR + (nmsf_surface_check(f_sf\face_surface.face_geometry))))) = 0))) + = 0))) = 0; + WR6 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + fbsm\face_based_surface_model.fbsm_faces | + NOT (SIZEOF (QUERY (o_fa <* QUERY (fa <* cfs.cfs_faces | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_FACE' IN TYPEOF (fa))) | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF + (o_fa\oriented_face.face_element)) + OR + (nmsf_surface_check + (o_fa\oriented_face.face_element\face_surface.face_geometry))))) + = 0))) = 0))) = 0; + WR7 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + fbsm\face_based_surface_model.fbsm_faces | + NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (bnds <* fa.bounds | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP'] + * TYPEOF (bnds.bound)) = 1))) = 0)))) = 0))) = 0))) = 0; + WR8 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items| + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + fbsm\face_based_surface_model.fbsm_faces | + NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_CURVE' IN TYPEOF + (oe.edge_element)))) = 0))) = 0)))) = 0))) = 0))) = 0; + WR9 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + fbsm\face_based_surface_model.fbsm_faces | + NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (QUERY (oe_cv <* QUERY (oe <* + elp_fbnds\path.edge_list | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_CURVE' IN TYPEOF (oe.edge_element)) | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_3D', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE'] * + TYPEOF (oe_cv.edge_element\edge_curve.edge_geometry)) + = 1))) = 0))) = 0)))) = 0))) = 0))) = 0; + WR10 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + fbsm\face_based_surface_model.fbsm_faces | + NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list | + NOT (nmsf_curve_check (oe.edge_element\edge_curve.edge_geometry)))) + = 0))) = 0)))) = 0))) = 0))) = 0; + WR11 : SIZEOF (QUERY(fbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + fbsm\face_based_surface_model.fbsm_faces | + NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list| + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF + (oe.edge_element.edge_start)) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN + TYPEOF (oe.edge_element.edge_end))))) + = 0))) = 0)))) = 0))) = 0))) = 0; + WR12 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + fbsm\face_based_surface_model.fbsm_faces | + NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list | + NOT ((SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DEGENERATE_PCURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_SURFACE'] * TYPEOF + (oe.edge_element.edge_start\vertex_point.vertex_geometry)) = 1) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DEGENERATE_PCURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_SURFACE'] * TYPEOF + (oe.edge_element.edge_end\vertex_point.vertex_geometry)) = 1 + )))) = 0))) = 0)))) = 0))) = 0))) = 0; + WR13 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + fbsm\face_based_surface_model.fbsm_faces | + NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (vlp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP' IN TYPEOF (bnds.bound)) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF + (vlp_fbnds\vertex_loop.loop_vertex)))) = 0)))) = 0))) + = 0))) = 0; + WR14 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + fbsm\face_based_surface_model.fbsm_faces | + NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (vlp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DEGENERATE_PCURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_SURFACE'] * TYPEOF + (vlp_fbnds\vertex_loop.loop_vertex\vertex_point.vertex_geometry)) + = 1))) = 0)))) = 0))) = 0))) = 0; +END_ENTITY; + + +ENTITY null_representation_item + SUBTYPE OF (representation_item); +END_ENTITY; + + +ENTITY numeric_expression + ABSTRACT SUPERTYPE OF (ONEOF (simple_numeric_expression, unary_numeric_expression, binary_numeric_expression, multiple_arity_numeric_expression)) + SUBTYPE OF (expression); +DERIVE + is_int : LOGICAL := is_int_expr (SELF); + sql_mappable : LOGICAL := is_SQL_mappable (SELF); +END_ENTITY; + + +ENTITY object_role; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY offset_curve_2d + SUBTYPE OF (curve); + basis_curve : curve; + distance : length_measure; + self_intersect : LOGICAL; +WHERE + WR1 : basis_curve.dim = 2; +END_ENTITY; + + +ENTITY offset_curve_3d + SUBTYPE OF (curve); + basis_curve : curve; + distance : length_measure; + self_intersect : LOGICAL; + ref_direction : direction; +WHERE + WR1 : (basis_curve.dim = 3) AND (ref_direction.dim = 3); +END_ENTITY; + + +ENTITY offset_surface + SUBTYPE OF (surface); + basis_surface : surface; + distance : length_measure; + self_intersect : LOGICAL; +END_ENTITY; + + +ENTITY one_direction_repeat_factor + SUBTYPE OF (geometric_representation_item); + repeat_factor : vector; +END_ENTITY; + + +ENTITY open_shell + SUBTYPE OF (connected_face_set); +END_ENTITY; + + +ENTITY ordinal_date + SUBTYPE OF (date); + day_component : day_in_year_number; +WHERE + WR1 : (NOT leap_year(SELF.year_component) AND { 1 <= day_component <= 365 }) OR (leap_year(SELF.year_component) AND { 1 <= day_component <= 366 }); +END_ENTITY; + + +ENTITY ordinate_dimension + SUBTYPE OF (projection_directed_callout); +END_ENTITY; + + +ENTITY organization; + id : OPTIONAL identifier; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY organization_assignment + ABSTRACT SUPERTYPE; + assigned_organization : organization; + role : organization_role; +END_ENTITY; + + +ENTITY organization_relationship; + name : label; + description : OPTIONAL text; + relating_organization : organization; + related_organization : organization; +END_ENTITY; + + +ENTITY organization_role; + name : label; +DERIVE + description : text := get_description_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY organizational_address + SUBTYPE OF (address); + organizations : SET [1:?] OF organization; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY organizational_project; + name : label; + description : OPTIONAL text; + responsible_organizations : SET [1:?] OF organization; +DERIVE + id : identifier := get_id_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY organizational_project_assignment + ABSTRACT SUPERTYPE; + assigned_organizational_project : organizational_project; + role : organizational_project_role; +END_ENTITY; + + +ENTITY organizational_project_relationship; + name : label; + description : OPTIONAL text; + relating_organizational_project : organizational_project; + related_organizational_project : organizational_project; +END_ENTITY; + + +ENTITY organizational_project_role; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY oriented_closed_shell + SUBTYPE OF (closed_shell); + closed_shell_element : closed_shell; + orientation : BOOLEAN; +DERIVE + SELF\connected_face_set.cfs_faces : SET [1:?] OF face := conditional_reverse(SELF.orientation, + SELF.closed_shell_element.cfs_faces); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_CLOSED_SHELL' + IN TYPEOF (SELF.closed_shell_element)); +END_ENTITY; + + +ENTITY oriented_edge + SUBTYPE OF (edge); + edge_element : edge; + orientation : BOOLEAN; +DERIVE + SELF\edge.edge_end : vertex := boolean_choose (SELF.orientation, + SELF.edge_element.edge_end, + SELF.edge_element.edge_start); + SELF\edge.edge_start : vertex := boolean_choose (SELF.orientation, + SELF.edge_element.edge_start, + SELF.edge_element.edge_end); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_EDGE' IN TYPEOF (SELF.edge_element)); +END_ENTITY; + + +ENTITY oriented_face + SUBTYPE OF (face); + face_element : face; + orientation : BOOLEAN; +DERIVE + SELF\face.bounds : SET [1:?] OF face_bound := conditional_reverse(SELF.orientation,SELF.face_element.bounds); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_FACE' IN TYPEOF (SELF.face_element)); +END_ENTITY; + + +ENTITY oriented_open_shell + SUBTYPE OF (open_shell); + open_shell_element : open_shell; + orientation : BOOLEAN; +DERIVE + SELF\connected_face_set.cfs_faces : SET [1:?] OF face := conditional_reverse(SELF.orientation, + SELF.open_shell_element.cfs_faces); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_OPEN_SHELL' + IN TYPEOF (SELF.open_shell_element)); +END_ENTITY; + + +ENTITY oriented_path + SUBTYPE OF (path); + path_element : path; + orientation : BOOLEAN; +DERIVE + SELF\path.edge_list : LIST [1:?] OF UNIQUE oriented_edge := conditional_reverse(SELF.orientation, + SELF.path_element.edge_list); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_PATH' IN TYPEOF (SELF.path_element)); +END_ENTITY; + + +ENTITY oriented_surface + SUBTYPE OF (surface); + orientation : BOOLEAN; +END_ENTITY; + + +ENTITY outer_boundary_curve + SUBTYPE OF (boundary_curve); +END_ENTITY; + + +ENTITY over_riding_styled_item + SUBTYPE OF (styled_item); + over_ridden_style : styled_item; +END_ENTITY; + + +ENTITY package_product_concept_feature + SUBTYPE OF (product_concept_feature); +WHERE + WR1 : NOT ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONDITIONAL_CONCEPT_FEATURE' IN TYPEOF ( SELF ) ); + WR2 : SIZEOF ( QUERY + ( + cfr <* USEDIN ( SELF , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONCEPT_FEATURE_RELATIONSHIP.' +'RELATING_PRODUCT_CONCEPT_FEATURE' ) + | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION' IN TYPEOF (cfr ) ) + AND + ( SIZEOF ( QUERY + ( + ipcf <* USEDIN ( cfr , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONDITIONAL_CONCEPT_FEATURE.' + 'CONDITION' ) + | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'INCLUSION_PRODUCT_CONCEPT_FEATURE' IN TYPEOF ( ipcf ) + ) + )= 1 + ) + ) + )>0; +END_ENTITY; + + +ENTITY parabola + SUBTYPE OF (conic); + focal_dist : length_measure; +WHERE + WR1 : focal_dist <> 0.0; +END_ENTITY; + + +ENTITY parallel_offset + SUBTYPE OF (derived_shape_aspect); + offset : measure_with_unit; +WHERE + WR1 : SIZEOF (SELF\derived_shape_aspect.deriving_relationships)= 1; +END_ENTITY; + + +ENTITY parallelism_tolerance + SUBTYPE OF (geometric_tolerance_with_datum_reference); +WHERE + WR1 : SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) < 3; +END_ENTITY; + + +ENTITY parametric_representation_context + SUBTYPE OF (representation_context); +END_ENTITY; + + +ENTITY part_laminate_table + SUPERTYPE OF (ONEOF (composite_assembly_table, ply_laminate_table)) + SUBTYPE OF (laminate_table); +END_ENTITY; + + +ENTITY partial_document_with_structured_text_representation_assignment + SUBTYPE OF (applied_document_usage_constraint_assignment, characterized_object); +END_ENTITY; + + +ENTITY path + SUPERTYPE OF (ONEOF (edge_loop, oriented_path)) + SUBTYPE OF (topological_representation_item); + edge_list : LIST [1:?] OF UNIQUE oriented_edge; +WHERE + WR1 : path_head_to_tail(SELF); +END_ENTITY; + + +ENTITY pcurve + SUBTYPE OF (curve); + basis_surface : surface; + reference_to_curve : definitional_representation; +WHERE + WR1 : SIZEOF(reference_to_curve\representation.items) = 1; + WR2 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE' IN TYPEOF + (reference_to_curve\representation.items[1]); + WR3 : reference_to_curve\representation.items[1]\ + geometric_representation_item.dim =2; +END_ENTITY; + + +ENTITY percentage_laminate_definition + SUBTYPE OF (product_definition); +WHERE + WR1 : SIZEOF (QUERY (pdr <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRODUCT_DEFINITION_RELATIONSHIP.' + + 'RELATING_PRODUCT_DEFINITION') | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'NEXT_ASSEMBLY_USAGE_OCCURRENCE' IN + TYPEOF (pdr))) > 0; +END_ENTITY; + + +ENTITY percentage_laminate_table + SUBTYPE OF (zone_structural_makeup); +END_ENTITY; + + +ENTITY percentage_ply_definition + SUBTYPE OF (product_definition); +WHERE + WR1 : SIZEOF (QUERY (pdr <* USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRODUCT_DEFINITION_RELATIONSHIP.RELATING_PRODUCT_DEFINITION') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PERCENTAGE_LAMINATE_DEFINITION' + IN TYPEOF (pdr.related_product_definition)) AND + (pdr.name = 'makeup and properties'))) = 0; +END_ENTITY; + + +ENTITY perpendicular_to + SUBTYPE OF (derived_shape_aspect); +WHERE + WR1 : SIZEOF (SELF\derived_shape_aspect.deriving_relationships)= 1; +END_ENTITY; + + +ENTITY perpendicularity_tolerance + SUBTYPE OF (geometric_tolerance_with_datum_reference); +WHERE + WR1 : SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) <= 3; +END_ENTITY; + + +ENTITY person; + id : identifier; + last_name : OPTIONAL label; + first_name : OPTIONAL label; + middle_names : OPTIONAL LIST [1:?] OF label; + prefix_titles : OPTIONAL LIST [1:?] OF label; + suffix_titles : OPTIONAL LIST [1:?] OF label; +WHERE + WR1 : EXISTS(last_name) OR EXISTS(first_name); +END_ENTITY; + + +ENTITY person_and_organization; + the_person : person; + the_organization : organization; +DERIVE + description : text := get_description_value(SELF); + name : label := get_name_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1; + WR2 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY person_and_organization_address + SUBTYPE OF (organizational_address, personal_address); + SELF\organizational_address.organizations : SET [1:1] OF organization; + SELF\personal_address.people : SET [1:1] OF person; +WHERE + WR1 : SIZEOF(QUERY(pao <* USEDIN (SELF\personal_address.people[1], 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PERSON_AND_ORGANIZATION.THE_PERSON') | pao.the_organization :=: SELF\organizational_address.organizations[1])) = 1; +END_ENTITY; + + +ENTITY person_and_organization_assignment + ABSTRACT SUPERTYPE; + assigned_person_and_organization : person_and_organization; + role : person_and_organization_role; +END_ENTITY; + + +ENTITY person_and_organization_role; + name : label; +DERIVE + description : text := get_description_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY personal_address + SUBTYPE OF (address); + people : SET [1:?] OF person; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY physical_breakdown_context + SUBTYPE OF (breakdown_context); +END_ENTITY; + + +ENTITY physical_element_usage + SUBTYPE OF (breakdown_element_usage); +END_ENTITY; + + +ENTITY picture_representation + SUBTYPE OF (presentation_view); + SELF\representation.items : SET [2:?] OF picture_representation_item_select; +INVERSE + size: presentation_size FOR unit; +WHERE + WR1: SIZEOF(QUERY(item <* items | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' IN TYPEOF(item))) = 1; + WR2: SIZEOF (QUERY (se <* QUERY (item <* SELF.items | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' IN TYPEOF (item))) + | NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PICTURE_REPRESENTATION_ITEM' + IN TYPEOF (se\styled_item.item)) )) = 0; +END_ENTITY; + + +ENTITY picture_representation_item + ABSTRACT SUPERTYPE OF (ONEOF (externally_defined_picture_representation_item, predefined_picture_representation_item)) + SUBTYPE OF (bytes_representation_item); +END_ENTITY; + + +ENTITY placed_datum_target_feature + SUBTYPE OF (datum_target); +DERIVE + representation_associations : SET [0:?] OF property_definition_representation := get_shape_aspect_property_definition_representations(SELF); +WHERE + WR1 : SELF.description IN ['point','line','rectangle','circle', 'circular line']; + WR2 : SIZEOF (QUERY (pdr <* representation_associations | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation) )) = 1; + WR3 : valid_datum_target_parameters(SELF); +END_ENTITY; + + +ENTITY placed_feature + SUBTYPE OF (shape_aspect); +END_ENTITY; + + +ENTITY placement + SUPERTYPE OF (ONEOF (axis1_placement, axis2_placement_2d, axis2_placement_3d)) + SUBTYPE OF (geometric_representation_item); + location : cartesian_point; +END_ENTITY; + + +ENTITY planar_box + SUBTYPE OF (planar_extent); + placement : axis2_placement; +END_ENTITY; + + +ENTITY planar_extent + SUBTYPE OF (geometric_representation_item); + size_in_x : length_measure; + size_in_y : length_measure; +END_ENTITY; + + +ENTITY plane + SUBTYPE OF (elementary_surface); +END_ENTITY; + + +ENTITY plane_angle_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE_ANGLE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY plane_angle_unit + SUBTYPE OF (named_unit); +WHERE + WR1 : (SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 0.0) AND (SELF\named_unit.dimensions.time_exponent = 0.0) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0); +END_ENTITY; + + +ENTITY plus_minus_tolerance; + range : tolerance_method_definition; + toleranced_dimension : dimensional_characteristic; +UNIQUE + UR1 : toleranced_dimension; +END_ENTITY; + + +ENTITY ply_laminate_definition + SUBTYPE OF (product_definition); +WHERE + WR1 : SIZEOF (QUERY (pdr <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRODUCT_DEFINITION_RELATIONSHIP.' + + 'RELATING_PRODUCT_DEFINITION') | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'NEXT_ASSEMBLY_USAGE_OCCURRENCE' IN + TYPEOF (pdr))) = 1; +END_ENTITY; + + +ENTITY ply_laminate_sequence_definition + SUBTYPE OF (product_definition); +WHERE + WR1 : SIZEOF (QUERY (pdr <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRODUCT_DEFINITION_RELATIONSHIP.' + + 'RELATING_PRODUCT_DEFINITION') | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'NEXT_ASSEMBLY_USAGE_OCCURRENCE' IN + TYPEOF (pdr))) > 0; +END_ENTITY; + + +ENTITY ply_laminate_table + SUBTYPE OF (part_laminate_table); +END_ENTITY; + + +ENTITY point + SUPERTYPE OF (ONEOF (cartesian_point, point_on_curve, point_on_surface, point_replica, degenerate_pcurve)) + SUBTYPE OF (geometric_representation_item); +END_ENTITY; + + +ENTITY point_and_vector + SUBTYPE OF (compound_representation_item, geometric_representation_item); + SELF\compound_representation_item.item_element : point_and_vector_members; +END_ENTITY; + + +ENTITY point_on_curve + SUBTYPE OF (point); + basis_curve : curve; + point_parameter : parameter_value; +END_ENTITY; + + +ENTITY point_on_surface + SUBTYPE OF (point); + basis_surface : surface; + point_parameter_u : parameter_value; + point_parameter_v : parameter_value; +END_ENTITY; + + +ENTITY point_path + SUBTYPE OF (compound_representation_item, geometric_representation_item); + SELF\compound_representation_item.item_element : point_path_members; +END_ENTITY; + + +ENTITY point_replica + SUBTYPE OF (point); + parent_pt : point; + transformation : cartesian_transformation_operator; +WHERE + WR1 : transformation.dim = parent_pt.dim; + WR2 : acyclic_point_replica (SELF,parent_pt); +END_ENTITY; + + +ENTITY point_style + SUBTYPE OF (founded_item); + name : label; + marker : marker_select; + marker_size : size_select; + marker_colour : colour; +END_ENTITY; + + +ENTITY polar_complex_number_literal + SUBTYPE OF (generic_literal); + radius : REAL; + angle : REAL; +WHERE + WR1 : radius >= 0; + WR2 : { 0 <= angle < 2*PI }; +END_ENTITY; + + +ENTITY poly_loop + SUBTYPE OF (loop, geometric_representation_item); + polygon : LIST [3:?] OF UNIQUE cartesian_point; +END_ENTITY; + + +ENTITY polyline + SUBTYPE OF (bounded_curve); + points : LIST [2:?] OF cartesian_point; +END_ENTITY; + + +ENTITY position_tolerance + SUBTYPE OF (geometric_tolerance); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF (SELF)) OR ( SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) <= 3); +END_ENTITY; + + +ENTITY positioned_sketch + SUBTYPE OF (geometric_representation_item); + sketch_basis : sketch_basis_select; + auxiliary_elements : SET [0:?] OF auxiliary_geometric_representation_item; +WHERE + WR1 : NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_BOUNDED_SURFACE' IN + TYPEOF(sketch_basis)) AND NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE' IN + TYPEOF(sketch_basis\curve_bounded_surface.basis_surface))); + WR2 : NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_SURFACE' IN TYPEOF(sketch_basis)) AND + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE' IN TYPEOF(sketch_basis\face_surface.face_geometry))); + WR3 : SIZEOF(QUERY(q <* auxiliary_elements | (SIZEOF(TYPEOF(q) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT','AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE']) = 0))) = 0; + WR4 : SIZEOF(QUERY(q <* auxiliary_elements | + q\geometric_representation_item.dim <> 3)) = 0; +END_ENTITY; + + +ENTITY power_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POWER_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY power_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.watt); +END_ENTITY; + + +ENTITY pre_defined_colour + SUBTYPE OF (pre_defined_item, colour); +END_ENTITY; + + +ENTITY pre_defined_curve_font + SUBTYPE OF (pre_defined_item); +END_ENTITY; + + +ENTITY pre_defined_dimension_symbol + SUBTYPE OF (pre_defined_symbol); +WHERE + WR1 : SELF.name IN [ 'arc length' , 'conical taper' , 'counterbore' , 'countersink' , 'depth' , 'diameter' , 'plus minus' , 'radius' , 'slope' , 'spherical diameter' , 'spherical radius' , 'square']; +END_ENTITY; + + +ENTITY pre_defined_geometrical_tolerance_symbol + SUBTYPE OF (pre_defined_symbol); +WHERE + WR1 : SELF.name IN ['angularity' , 'basic dimension' , 'blanked datum reference' , 'circular runout' , 'circularity' , 'concentricity' , 'cylindricity' , 'datum target identification' , 'diameter' , 'filled datum reference' , 'flatness' , 'least material condition' , 'maximum material condition' , 'parallelism' , 'perpendicularity' , 'position' , 'profile of a line' , 'profile of a surface' , 'projected tolerance zone' , 'regardless of feature size' , 'straightness' , 'symmetry' , 'total runout' ]; +END_ENTITY; + + +ENTITY pre_defined_item; + name : label; +END_ENTITY; + + +ENTITY pre_defined_marker + SUBTYPE OF (pre_defined_item); +END_ENTITY; + + +ENTITY pre_defined_point_marker_symbol + SUBTYPE OF (pre_defined_marker, pre_defined_symbol); +WHERE + WR1 : SELF.name IN ['asterisk','circle','dot','plus','square','triangle','x']; +END_ENTITY; + + +ENTITY pre_defined_surface_condition_symbol + SUBTYPE OF (pre_defined_symbol); +WHERE + WR1 : SELF.name IN ['000' , '010' , '020' , '030' , '040' , '050' , '060' , '070' , '001' , '011' , '021' , '031' , '041' , '051' , '061' , '071' , '100' , '110' , '120' , '130' , '140' , '150' , '160' , '170' , '101' , '111' , '121' , '131' , '141' , '151' , '161' , '171' , '200' , '210' , '220' , '230' , '240' , '250' , '260' , '270' , '201' , '211' , '221' , '231' , '241' , '251' , '261' , '271']; +END_ENTITY; + + +ENTITY pre_defined_surface_side_style + SUBTYPE OF (pre_defined_item); +END_ENTITY; + + +ENTITY pre_defined_symbol + SUBTYPE OF (pre_defined_item); +END_ENTITY; + + +ENTITY pre_defined_terminator_symbol + SUBTYPE OF (pre_defined_symbol); +WHERE + WR1 : SELF.name IN ['blanked arrow', 'blanked box', 'blanked dot', 'blanked triangle', 'dimension origin', 'filled arrow', 'filled box', 'filled dot', 'integral symbol', 'open arrow', 'slash', 'unfilled arrow', 'unfilled triangle', 'filled triangle']; +END_ENTITY; + + +ENTITY pre_defined_text_font + SUBTYPE OF (pre_defined_item); +END_ENTITY; + + +ENTITY pre_defined_tile + SUBTYPE OF (pre_defined_item); +END_ENTITY; + + +ENTITY precision_qualifier; + precision_value : INTEGER; +END_ENTITY; + + +ENTITY predefined_picture_representation_item + SUBTYPE OF (picture_representation_item); +WHERE + WR1 : SELF\representation_item.name IN pre_defined_picture_representation_types; +END_ENTITY; + + +ENTITY presentation_area + SUBTYPE OF (presentation_representation); +WHERE + WR1 : ((SIZEOF (QUERY (ais <* USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AREA_IN_SET.AREA') | + SIZEOF (USEDIN (ais, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT')) =1)) > 0) OR + (SIZEOF (USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT')) =1)); +END_ENTITY; + + +ENTITY presentation_layer_assignment; + name : label; + description : text; + assigned_items : SET [1:?] OF layered_item; +END_ENTITY; + + +ENTITY presentation_representation + SUPERTYPE OF (ONEOF (presentation_area, presentation_view)) + SUBTYPE OF (representation); + SELF\representation.context_of_items : geometric_representation_context; +WHERE + WR1 : SELF\representation. + context_of_items\geometric_representation_context. + coordinate_space_dimension = 2; + WR2 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESENTATION_AREA' IN TYPEOF (SELF)) + OR + (SIZEOF (QUERY (prr <* USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'REPRESENTATION_RELATIONSHIP.REP_2') | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESENTATION_REPRESENTATION' IN + TYPEOF (prr\representation_relationship.rep_1))) > 0) + OR + (SIZEOF(QUERY( rm <* USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'REPRESENTATION_MAP.'+ + 'MAPPED_REPRESENTATION') | + SIZEOF(QUERY( mi <* USEDIN(rm, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'MAPPED_ITEM.'+ + 'MAPPING_SOURCE') | + SIZEOF(QUERY( rep <* using_representations (mi) | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'PRESENTATION_REPRESENTATION' IN + TYPEOF (rep))) > 0 + )) > 0)) + > 0); +END_ENTITY; + + +ENTITY presentation_set; +INVERSE + areas: SET [1:?] OF area_in_set FOR in_set; +END_ENTITY; + + +ENTITY presentation_size; + unit : presentation_size_assignment_select; + size : planar_box; +UNIQUE + UR1 : unit; +WHERE + WR1 : (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESENTATION_REPRESENTATION' + IN TYPEOF (SELF.unit)) AND + item_in_context (SELF.size, + SELF.unit\representation.context_of_items) + ) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AREA_IN_SET' + IN TYPEOF (SELF.unit)) AND + (SIZEOF (QUERY ( ais <* SELF.unit\area_in_set.in_set.areas | + NOT item_in_context (SELF.size, ais.area\representation. + context_of_items) )) = 0)); +END_ENTITY; + + +ENTITY presentation_style_assignment + SUBTYPE OF (founded_item); + styles : SET [1:?] OF presentation_style_select; +WHERE + WR1 : SIZEOF (QUERY (style1 <* SELF.styles | + NOT (SIZEOF (QUERY (style2 <* (SELF.styles - style1) | + NOT ((TYPEOF (style1) <> TYPEOF (style2)) OR + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_USAGE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'EXTERNALLY_DEFINED_STYLE'] * + TYPEOF (style1)) = 1) + ))) = 0 + ))) = 0; + WR2 : SIZEOF (QUERY (style1 <* SELF.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' IN + TYPEOF(style1) + )) <= 2; + WR3 : SIZEOF (QUERY (style1 <* SELF.styles | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' IN TYPEOF (style1)) AND + (SIZEOF (QUERY (style2 <* (SELF.styles - style1) | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' IN TYPEOF (style2)) AND + ((style1\surface_style_usage.side = both) OR + (style2\surface_style_usage.side = both) OR + (style1\surface_style_usage.side = style2\surface_style_usage.side)) )) > 0))) = 0; +END_ENTITY; + + +ENTITY presentation_style_by_context + SUBTYPE OF (presentation_style_assignment); + style_context : style_context_select; +END_ENTITY; + + +ENTITY presentation_view + SUBTYPE OF (presentation_representation); +END_ENTITY; + + +ENTITY presented_item + ABSTRACT SUPERTYPE; +END_ENTITY; + + +ENTITY presented_item_representation; + presentation : presentation_representation_select; + item : presented_item; +END_ENTITY; + + +ENTITY pressure_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESSURE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY pressure_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.pascal); +END_ENTITY; + + +ENTITY procedural_representation + SUBTYPE OF (representation); + SELF\representation.items : SET [1:?] OF procedural_representation_sequence; +END_ENTITY; + + +ENTITY procedural_representation_sequence + SUBTYPE OF (representation_item); + elements : LIST [1:?] OF representation_item; + suppressed_items : SET [0:?] OF representation_item; + rationale : text; +WHERE + WR1 : SIZEOF(QUERY(q <* suppressed_items | NOT (q IN elements))) = 0; +END_ENTITY; + + +ENTITY procedural_shape_representation + SUBTYPE OF (procedural_representation, shape_representation); + SELF\representation.items : SET [1:?] OF procedural_shape_representation_sequence; +END_ENTITY; + + +ENTITY procedural_shape_representation_sequence + SUBTYPE OF (geometric_representation_item, procedural_representation_sequence); +WHERE + WR1 : SIZEOF(QUERY(q <* SELF\procedural_representation_sequence.elements + | NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_REPRESENTATION_ITEM' + IN TYPEOF(q)))) = 0; +END_ENTITY; + + +ENTITY product; + id : identifier; + name : label; + description : OPTIONAL text; + frame_of_reference : SET [1:?] OF product_context; +END_ENTITY; + + +ENTITY product_category; + name : label; + description : OPTIONAL text; +DERIVE + id : identifier := get_id_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY product_class + SUBTYPE OF (product_concept, characterized_object); +END_ENTITY; + + +ENTITY product_concept; + id : identifier; + name : label; + description : OPTIONAL text; + market_context : product_concept_context; +UNIQUE + UR1 : id; +END_ENTITY; + + +ENTITY product_concept_context + SUBTYPE OF (application_context_element); + market_segment_type : label; +END_ENTITY; + + +ENTITY product_concept_feature; + id : identifier; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY product_concept_feature_association; + name : label; + description : OPTIONAL text; + concept : product_concept; + feature : product_concept_feature; +END_ENTITY; + + +ENTITY product_concept_feature_category + SUBTYPE OF (group); +WHERE + WR1 : SIZEOF(QUERY + ( + aga <* USEDIN( SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GROUP_ASSIGNMENT.ASSIGNED_GROUP' ) + | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'APPLIED_GROUP_ASSIGNMENT' IN TYPEOF(aga)) + AND + ( + ( aga.role.name <> 'specification category member' ) + OR + ( SIZEOF(QUERY + ( + i <* aga.items + | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'PRODUCT_CONCEPT_FEATURE' IN TYPEOF ( i ) ) + AND + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'CONDITIONAL_CONCEPT_FEATURE' IN TYPEOF (i)) + ) + ) <> SIZEOF (aga.items) + ) + ) + ) + ) =0; +END_ENTITY; + + +ENTITY product_concept_feature_category_usage + SUBTYPE OF (group_assignment); + items : SET [1:?] OF category_usage_item; + SELF\group_assignment.assigned_group : product_concept_feature_category; +WHERE + WR1 : SELF.role.name IN [ 'mandatory category usage', 'optional category usage' ]; +END_ENTITY; + + +ENTITY product_concept_relationship; + name : label; + description : OPTIONAL text; + relating_product_concept : product_concept; + related_product_concept : product_concept; +END_ENTITY; + + +ENTITY product_context + SUBTYPE OF (application_context_element); + discipline_type : label; +END_ENTITY; + + +ENTITY product_definition + SUPERTYPE OF (ONEOF (composite_assembly_definition, composite_assembly_sequence_definition, laminate_table, percentage_laminate_definition, percentage_ply_definition, ply_laminate_definition, ply_laminate_sequence_definition, thickness_laminate_definition)); + id : identifier; + description : OPTIONAL text; + formation : product_definition_formation; + frame_of_reference : product_definition_context; +DERIVE + name : label := get_name_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY product_definition_context + SUBTYPE OF (application_context_element); + life_cycle_stage : label; +END_ENTITY; + + +ENTITY product_definition_context_association; + definition : product_definition; + frame_of_reference : product_definition_context; + role : product_definition_context_role; +END_ENTITY; + + +ENTITY product_definition_context_role; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY product_definition_effectivity + SUBTYPE OF (effectivity); + usage : product_definition_relationship; +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'EFFECTIVITY_ASSIGNMENT.ASSIGNED_EFFECTIVITY')) = 0; +END_ENTITY; + + +ENTITY product_definition_element_relationship + SUBTYPE OF (group); +END_ENTITY; + + +ENTITY product_definition_formation; + id : identifier; + description : OPTIONAL text; + of_product : product; +UNIQUE + UR1 : id, of_product; +END_ENTITY; + + +ENTITY product_definition_formation_relationship; + id : identifier; + name : label; + description : OPTIONAL text; + relating_product_definition_formation : product_definition_formation; + related_product_definition_formation : product_definition_formation; +END_ENTITY; + + +ENTITY product_definition_formation_with_specified_source + SUBTYPE OF (product_definition_formation); + make_or_buy : source; +END_ENTITY; + + +ENTITY product_definition_group_assignment + SUBTYPE OF (group_assignment); + items : SET [1:1] OF product_definition_or_product_definition_relationship; + SELF\group_assignment.assigned_group : product_definition_element_relationship; +END_ENTITY; + + +ENTITY product_definition_occurrence_relationship; + name : label; + description : OPTIONAL text; + occurrence : product_definition; + occurrence_usage : assembly_component_usage; +WHERE + WR1 : occurrence_usage.relating_product_definition :<>: + occurrence; + WR2 : occurrence_usage.related_product_definition :<>: + occurrence; + WR3 : occurrence.formation :=: + occurrence_usage.related_product_definition.formation; +END_ENTITY; + + +ENTITY product_definition_relationship; + id : identifier; + name : label; + description : OPTIONAL text; + relating_product_definition : product_definition; + related_product_definition : product_definition; +END_ENTITY; + + +ENTITY product_definition_shape + SUBTYPE OF (property_definition); +UNIQUE + UR1: SELF\property_definition.definition; +WHERE + WR1 : SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CHARACTERIZED_PRODUCT_DEFINITION', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CHARACTERIZED_OBJECT'] * TYPEOF(SELF\property_definition.definition)) > 0; +END_ENTITY; + + +ENTITY product_definition_substitute; + description : OPTIONAL text; + context_relationship : product_definition_relationship; + substitute_definition : product_definition; +DERIVE + name : label := get_name_value(SELF); +WHERE + WR1 : context_relationship.related_product_definition :<>: substitute_definition; + WR2 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY product_definition_usage + SUPERTYPE OF (ONEOF (make_from_usage_option, assembly_component_usage)) + SUBTYPE OF (product_definition_relationship); +UNIQUE + UR1: SELF\product_definition_relationship.id, + SELF\product_definition_relationship.relating_product_definition, + SELF\product_definition_relationship.related_product_definition; + WHERE + WR1 : acyclic_product_definition_relationship + (SELF, + [SELF\product_definition_relationship.related_product_definition], + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION_USAGE'); +END_ENTITY; + + +ENTITY product_definition_with_associated_documents + SUBTYPE OF (product_definition); + documentation_ids : SET [1:?] OF document; +END_ENTITY; + + +ENTITY product_identification + SUBTYPE OF (configuration_item, characterized_object); + SELF\configuration_item.item_concept : product_class; +WHERE + WR1 : SIZEOF(QUERY + ( cd <* USEDIN ( SELF ,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONFIGURATION_DESIGN.CONFIGURATION' ) + | + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'PRODUCT_DEFINITION_FORMATION' IN TYPEOF ( cd. design ) ) + AND + ( SIZEOF ( QUERY + ( + prpc <* USEDIN ( cd. design\product_definition_formation.of_product , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') + | + prpc. name IN ['part' , 'raw material' , 'tool'] ) ) >0 + ) + ) + ) <=1; + WR2 : NOT ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'CONFIGURABLE_ITEM' IN TYPEOF( SELF ) ) + XOR ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'PRODUCT_SPECIFICATION' IN TYPEOF ( SELF ) ); +END_ENTITY; + + +ENTITY product_material_composition_relationship + SUBTYPE OF (product_definition_relationship); + class : label; + constituent_amount : SET [1:?] OF characterized_product_composition_value; + composition_basis : label; + determination_method : text; +END_ENTITY; + + +ENTITY product_related_product_category + SUBTYPE OF (product_category); + products : SET [1:?] OF product; +END_ENTITY; + + +ENTITY product_specification + SUBTYPE OF (product_identification, configurable_item); +END_ENTITY; + + +ENTITY projected_zone_definition + SUBTYPE OF (tolerance_zone_definition); + projection_end : shape_aspect; + projected_length : measure_with_unit; +WHERE + WR1 : ('NUMBER' IN TYPEOF + (projected_length\measure_with_unit.value_component)) AND + (projected_length\measure_with_unit.value_component > 0.0); + WR2 : (derive_dimensional_exponents + (projected_length\measure_with_unit.unit_component)= + dimensional_exponents(1,0,0,0,0,0,0)); +END_ENTITY; + + +ENTITY projection_curve + SUBTYPE OF (annotation_curve_occurrence); +END_ENTITY; + + +ENTITY projection_directed_callout + SUBTYPE OF (draughting_callout); +WHERE + WR1 : SIZEOF(QUERY(p_1<*SELF\draughting_callout.contents | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROJECTION_CURVE' IN (TYPEOF(p_1))))=1; + WR2 : SIZEOF(SELF\draughting_callout.contents) >=2; +END_ENTITY; + + +ENTITY promissory_usage_occurrence + SUBTYPE OF (assembly_component_usage); +END_ENTITY; + + +ENTITY property_definition; + name : label; + description : OPTIONAL text; + definition : characterized_definition; +DERIVE + id : identifier := get_id_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY property_definition_relationship; + name : label; + description : text; + relating_property_definition : property_definition; + related_property_definition : property_definition; +END_ENTITY; + + +ENTITY property_definition_representation; + definition : represented_definition; + used_representation : representation; +DERIVE + description : text := get_description_value(SELF); + name : label := get_name_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; + WR2 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY qualified_representation_item + SUBTYPE OF (representation_item); + qualifiers : SET [1:?] OF value_qualifier; +WHERE + WR1 : SIZEOF(QUERY(temp <* qualifiers | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRECISION_QUALIFIER' + IN TYPEOF(temp))) < 2; +END_ENTITY; + + +ENTITY qualitative_uncertainty + SUBTYPE OF (uncertainty_qualifier); + uncertainty_value : text; +END_ENTITY; + + +ENTITY quantified_assembly_component_usage + SUBTYPE OF (assembly_component_usage); + quantity : measure_with_unit; +WHERE + WR1 : (NOT ('NUMBER' IN TYPEOF(quantity.value_component))) + OR (quantity.value_component > 0); +END_ENTITY; + + +ENTITY quasi_uniform_curve + SUBTYPE OF (b_spline_curve); +END_ENTITY; + + +ENTITY quasi_uniform_surface + SUBTYPE OF (b_spline_surface); +END_ENTITY; + + +ENTITY radioactivity_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RADIOACTIVITY_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY radioactivity_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.becquerel); +END_ENTITY; + + +ENTITY radius_dimension + SUBTYPE OF (dimension_curve_directed_callout); +WHERE + WR1 : SIZEOF (QUERY (con <* SELF.contents | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROJECTION_CURVE' IN TYPEOF (con)))<=1; +END_ENTITY; + + +ENTITY range_characteristic + SUBTYPE OF (representation, descriptive_representation_item); +WHERE + WR1 : NOT(SELF\representation.name IN ['tolerance', 'minimum tolerance', 'maximum tolerance', + 'nominal tolerance', 'plus minus tolerance', 'symmetrical tolerance', 'statistical tolerance']); +END_ENTITY; + + +ENTITY ratio_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RATIO_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY ratio_unit + SUBTYPE OF (named_unit); +WHERE + WR1 : (SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 0.0) AND (SELF\named_unit.dimensions.time_exponent = 0.0) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0); +END_ENTITY; + + +ENTITY rational_b_spline_curve + SUBTYPE OF (b_spline_curve); + weights_data : LIST [2:?] OF REAL; +DERIVE + weights : ARRAY [0:upper_index_on_control_points] OF REAL := list_to_array(weights_data,0, + upper_index_on_control_points); +WHERE + WR1 : SIZEOF(weights_data) = SIZEOF(SELF\b_spline_curve. + control_points_list); + WR2 : curve_weights_positive(SELF); +END_ENTITY; + + +ENTITY rational_b_spline_surface + SUBTYPE OF (b_spline_surface); + weights_data : LIST [2:?] OF LIST [2:?] OF REAL; +DERIVE + weights : ARRAY [0:u_upper] OF ARRAY [0:v_upper] OF REAL := make_array_of_array(weights_data,0,u_upper,0,v_upper); +WHERE + WR1 : (SIZEOF(weights_data) = + SIZEOF(SELF\b_spline_surface.control_points_list)) + AND (SIZEOF(weights_data[1]) = + SIZEOF(SELF\b_spline_surface.control_points_list[1])); + WR2 : surface_weights_positive(SELF); +END_ENTITY; + + +ENTITY rational_representation_item + SUBTYPE OF (representation_item, slash_expression); +WHERE + WR1 : SIZEOF( QUERY( operand <* SELF\binary_generic_expression.operands | + NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.INT_LITERAL' IN TYPEOF(operand)))) = 0; +END_ENTITY; + + +ENTITY real_literal + SUBTYPE OF (literal_number); + SELF\literal_number.the_value : REAL; +END_ENTITY; + + +ENTITY real_representation_item + SUBTYPE OF (representation_item, real_literal); +END_ENTITY; + + +ENTITY rectangular_composite_surface + SUBTYPE OF (bounded_surface); + segments : LIST [1:?] OF LIST [1:?] OF surface_patch; +DERIVE + n_u : INTEGER := SIZEOF(segments); + n_v : INTEGER := SIZEOF(segments[1]); +WHERE + WR1 : SIZEOF(QUERY (s <* segments | n_v <> SIZEOF (s))) = 0; + WR2 : constraints_rectangular_composite_surface(SELF); +END_ENTITY; + + +ENTITY rectangular_trimmed_surface + SUBTYPE OF (bounded_surface); + basis_surface : surface; + u1 : parameter_value; + u2 : parameter_value; + v1 : parameter_value; + v2 : parameter_value; + usense : BOOLEAN; + vsense : BOOLEAN; +WHERE + WR1 : u1 <> u2; + WR2 : v1 <> v2; + WR3 : (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELEMENTARY_SURFACE' IN TYPEOF(basis_surface)) + AND (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE' IN TYPEOF(basis_surface)))) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_OF_REVOLUTION' IN TYPEOF(basis_surface)) + OR (usense = (u2 > u1)); + WR4 : (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SPHERICAL_SURFACE' IN TYPEOF(basis_surface)) + OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TOROIDAL_SURFACE' IN TYPEOF(basis_surface))) + OR (vsense = (v2 > v1)); +END_ENTITY; + + +ENTITY referenced_modified_datum + SUBTYPE OF (datum_reference); + modifier : limit_condition; +END_ENTITY; + + +ENTITY relative_event_occurrence + SUBTYPE OF (event_occurrence); + base_event : event_occurrence; + offset : time_measure_with_unit; +END_ENTITY; + + +ENTITY rep_item_group + SUBTYPE OF (group, representation_item); +WHERE + WR1 : SIZEOF(USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'PRESENTATION_LAYER_ASSIGNMENT.' + 'ASSIGNED_ITEMS')) > 0; + WR2 : SIZEOF(QUERY(r <* USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'REPRESENTATION.' + 'ITEMS') | r.name = 'group representation')) > 0; + WR3 : SIZEOF(QUERY(ga <* USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GROUP_ASSIGNMENT.' + 'ASSIGNED_GROUP') | ga.role.name <> 'group membership')) = 0; + WR4 : SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GEOMETRIC_REPRESENTATION_ITEM', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'TOPOLOGICAL_REPRESENTATION_ITEM', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'MAPPED_ITEM','AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'STYLED_ITEM'] * TYPEOF(SELF)) = 1; +END_ENTITY; + + +ENTITY reparametrised_composite_curve_segment + SUBTYPE OF (composite_curve_segment); + param_length : parameter_value; +WHERE + WR1 : param_length > 0.0; +END_ENTITY; + + +ENTITY representation; + name : label; + items : SET [1:?] OF representation_item; + context_of_items : representation_context; +DERIVE + description : text := get_description_value (SELF); + id : identifier := get_id_value (SELF); +WHERE + WR1 : SIZEOF (USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) + <= 1; + WR2 : SIZEOF (USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) + <= 1; +END_ENTITY; + + +ENTITY representation_context; + context_identifier : identifier; + context_type : text; +INVERSE + representations_in_context: SET [1:?] OF representation FOR context_of_items; +END_ENTITY; + + +ENTITY representation_item + SUPERTYPE OF (ONEOF (binary_representation_item, compound_representation_item, mapped_item, value_representation_item, mapped_item, styled_item, boolean_representation_item, date_representation_item, date_time_representation_item, integer_representation_item, logical_representation_item, rational_representation_item, real_representation_item)); + name : label; +WHERE + WR1 : SIZEOF(using_representations(SELF)) > 0; +END_ENTITY; + + +ENTITY representation_item_relationship; + name : label; + description : OPTIONAL text; + relating_representation_item : representation_item; + related_representation_item : representation_item; +END_ENTITY; + + +ENTITY representation_map; + mapping_origin : representation_item; + mapped_representation : representation; +INVERSE + map_usage: SET [1:?] OF mapped_item FOR mapping_source; +WHERE + WR1 : item_in_context(SELF.mapping_origin, + SELF.mapped_representation.context_of_items); +END_ENTITY; + + +ENTITY representation_relationship; + name : label; + description : OPTIONAL text; + rep_1 : representation; + rep_2 : representation; +END_ENTITY; + + +ENTITY representation_relationship_with_transformation + SUBTYPE OF (representation_relationship); + transformation_operator : transformation; +WHERE + WR1 : SELF\representation_relationship.rep_1.context_of_items + :<>: SELF\representation_relationship.rep_2.context_of_items; +END_ENTITY; + + +ENTITY requirement_assigned_object + SUBTYPE OF (group_assignment); + items : SET [1:1] OF requirement_assigned_item; + SELF\group_assignment.assigned_group : requirement_assignment; +END_ENTITY; + + +ENTITY requirement_assignment + SUBTYPE OF (characterized_object, group); +END_ENTITY; + + +ENTITY requirement_source + SUBTYPE OF (group); +END_ENTITY; + + +ENTITY requirement_view_definition_relationship + SUBTYPE OF (product_definition_relationship); +END_ENTITY; + + +ENTITY resistance_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RESISTANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY resistance_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.ohm); +END_ENTITY; + + +ENTITY revolved_area_solid + SUBTYPE OF (swept_area_solid); + axis : axis1_placement; + angle : plane_angle_measure; +DERIVE + axis_line : line := representation_item('')|| + geometric_representation_item()|| curve()|| + line(axis.location, representation_item('')|| + geometric_representation_item()|| + vector(axis.z, 1.0)); +END_ENTITY; + + +ENTITY revolved_face_solid + SUBTYPE OF (swept_face_solid); + axis : axis1_placement; + angle : plane_angle_measure; +DERIVE + axis_line : line := representation_item('')|| + geometric_representation_item()|| curve()|| + line(axis.location, representation_item('')|| + geometric_representation_item()|| + vector(axis.z, 1.0)); +END_ENTITY; + + +ENTITY revolved_face_solid_with_trim_conditions + SUBTYPE OF (revolved_face_solid); + first_trim_condition : trim_condition_select; + second_trim_condition : trim_condition_select; +WHERE + WR1 : NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE' + IN TYPEOF(first_trim_condition)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE' + IN TYPEOF(second_trim_condition))); + WR2 : NOT((('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE_ANGLE_MEASURE' + IN TYPEOF(first_trim_condition)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE_ANGLE_MEASURE' + IN TYPEOF(second_trim_condition))) AND + (first_trim_condition = second_trim_condition)); +END_ENTITY; + + +ENTITY right_angular_wedge + SUBTYPE OF (geometric_representation_item); + position : axis2_placement_3d; + x : positive_length_measure; + y : positive_length_measure; + z : positive_length_measure; + ltx : length_measure; +WHERE + WR1 : ((0.0 <= ltx) AND (ltx < x)); +END_ENTITY; + + +ENTITY right_circular_cone + SUBTYPE OF (geometric_representation_item); + position : axis1_placement; + height : positive_length_measure; + radius : length_measure; + semi_angle : plane_angle_measure; +WHERE + WR1 : radius >= 0.0; +END_ENTITY; + + +ENTITY right_circular_cylinder + SUBTYPE OF (geometric_representation_item); + position : axis1_placement; + height : positive_length_measure; + radius : positive_length_measure; +END_ENTITY; + + +ENTITY right_to_usage_association + SUBTYPE OF (action_method_relationship); + SELF\action_method_relationship.related_method : information_right; + SELF\action_method_relationship.relating_method : information_usage_right; +DERIVE + right_applied : information_right := SELF\action_method_relationship.related_method; + right_usage : information_usage_right := SELF\action_method_relationship.relating_method; +END_ENTITY; + + +ENTITY role_association; + role : object_role; + item_with_role : role_select; +END_ENTITY; + + +ENTITY roundness_tolerance + SUBTYPE OF (geometric_tolerance); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF (SELF)); +END_ENTITY; + + +ENTITY row_representation_item + SUBTYPE OF (compound_representation_item); + SELF\compound_representation_item.item_element : list_representation_item; +END_ENTITY; + + +ENTITY row_value + SUBTYPE OF (compound_representation_item); +END_ENTITY; + + +ENTITY row_variable + SUBTYPE OF (abstract_variable); +END_ENTITY; + + +ENTITY rule_action + SUBTYPE OF (action); +END_ENTITY; + + +ENTITY rule_condition + SUBTYPE OF (atomic_formula); +END_ENTITY; + + +ENTITY rule_definition + SUBTYPE OF (rule_software_definition); +END_ENTITY; + + +ENTITY rule_set + SUBTYPE OF (rule_software_definition); +END_ENTITY; + + +ENTITY rule_set_group + SUBTYPE OF (rule_software_definition); +END_ENTITY; + + +ENTITY rule_software_definition + SUBTYPE OF (product_definition); +END_ENTITY; + + +ENTITY rule_superseded_assignment + SUBTYPE OF (action_assignment); + items : SET [1:?] OF rule_superseded_item; +END_ENTITY; + + +ENTITY rule_supersedence + SUBTYPE OF (rule_action); +END_ENTITY; + + +ENTITY ruled_surface_swept_area_solid + SUBTYPE OF (surface_curve_swept_area_solid); +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_SURFACE' IN TYPEOF(SELF.reference_surface)) AND + (SELF.reference_surface\b_spline_surface.u_degree = 1); + WR2 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF(SELF.directrix)) OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE' IN TYPEOF(SELF.directrix\surface_curve.curve_3d)) + AND + (SELF.directrix\surface_curve.curve_3d\b_spline_curve.degree = + SELF.reference_surface\b_spline_surface.v_degree)); +END_ENTITY; + + +ENTITY runout_zone_definition + SUBTYPE OF (tolerance_zone_definition); + orientation : runout_zone_orientation; +END_ENTITY; + + +ENTITY runout_zone_orientation; + angle : measure_with_unit; +END_ENTITY; + + +ENTITY runout_zone_orientation_reference_direction + SUBTYPE OF (runout_zone_orientation); + orientation_defining_relationship : shape_aspect_relationship; +END_ENTITY; + + +ENTITY satisfied_requirement + SUBTYPE OF (group_assignment); + items : SET [1:1] OF product_definition; + SELF\group_assignment.assigned_group : satisfies_requirement; +END_ENTITY; + + +ENTITY satisfies_requirement + SUBTYPE OF (group); +END_ENTITY; + + +ENTITY satisfying_item + SUBTYPE OF (group_assignment); + items : SET [1:1] OF requirement_satisfaction_item; + SELF\group_assignment.assigned_group : satisfies_requirement; +END_ENTITY; + + +ENTITY scalar_variable + SUBTYPE OF (abstract_variable); +END_ENTITY; + + +ENTITY scattering_parameter + SUBTYPE OF (polar_complex_number_literal); +WHERE + WR1 : SIZEOF(TYPEOF(SELF) - (TYPEOF(SELF\polar_complex_number_literal || + SELF\scattering_parameter))) = 0; +END_ENTITY; + + +ENTITY sculptured_solid + SUBTYPE OF (modified_solid); + sculpturing_element : generalized_surface_select; + positive_side : BOOLEAN; +END_ENTITY; + + +ENTITY seam_curve + SUBTYPE OF (surface_curve); +WHERE + WR1 : SIZEOF(SELF\surface_curve.associated_geometry) = 2; + WR2 : associated_surface(SELF\surface_curve.associated_geometry[1]) = + associated_surface(SELF\surface_curve.associated_geometry[2]); + WR3 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN + TYPEOF(SELF\surface_curve.associated_geometry[1]); + WR4 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN + TYPEOF(SELF\surface_curve.associated_geometry[2]); +END_ENTITY; + + +ENTITY security_classification; + name : label; + purpose : text; + security_level : security_classification_level; +END_ENTITY; + + +ENTITY security_classification_assignment + ABSTRACT SUPERTYPE; + assigned_security_classification : security_classification; +DERIVE + role : object_role := get_role(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; +END_ENTITY; + + +ENTITY security_classification_level; + name : label; +END_ENTITY; + + +ENTITY serial_numbered_effectivity + SUBTYPE OF (effectivity); + effectivity_start_id : identifier; + effectivity_end_id : OPTIONAL identifier; +END_ENTITY; + + +ENTITY shape_aspect; + name : label; + description : OPTIONAL text; + of_shape : product_definition_shape; + product_definitional : LOGICAL; +DERIVE + id : identifier := get_id_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY shape_aspect_associativity + SUBTYPE OF (shape_aspect_relationship); +WHERE + WR1 : SELF.relating_shape_aspect.product_definitional; + WR2 : NOT (SELF.related_shape_aspect.product_definitional); +END_ENTITY; + + +ENTITY shape_aspect_deriving_relationship + SUBTYPE OF (shape_aspect_relationship); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DERIVED_SHAPE_ASPECT' IN +TYPEOF + (SELF\SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT); +END_ENTITY; + + +ENTITY shape_aspect_relationship; + name : label; + description : OPTIONAL text; + relating_shape_aspect : shape_aspect; + related_shape_aspect : shape_aspect; +DERIVE + id : identifier := get_id_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY shape_definition_representation + SUBTYPE OF (property_definition_representation); +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(SELF.definition)) OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_DEFINITION' IN TYPEOF(SELF.definition.definition)); + WR2 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_REPRESENTATION' IN TYPEOF(SELF.used_representation); +END_ENTITY; + + +ENTITY shape_dimension_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF (QUERY (temp <* SELF\representation.items | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM' + IN TYPEOF (temp)))) = 0; + WR2 : SIZEOF (SELF\representation.items) <= 3; + WR3 : SIZEOF (QUERY (pos_mri <* QUERY (real_mri <* + SELF\representation.items | 'REAL' IN TYPEOF + (real_mri\measure_with_unit.value_component) ) | + NOT (pos_mri\measure_with_unit.value_component > 0.0 ))) = 0; +END_ENTITY; + + +ENTITY shape_feature_definition + SUBTYPE OF (characterized_object); +END_ENTITY; + + +ENTITY shape_representation + SUBTYPE OF (representation); +END_ENTITY; + + +ENTITY shape_representation_relationship + SUBTYPE OF (representation_relationship); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_REPRESENTATION' IN (TYPEOF(SELF\representation_relationship.rep_1) + TYPEOF(SELF\representation_relationship.rep_2)); +END_ENTITY; + + +ENTITY shape_representation_with_parameters + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF( QUERY( i <* SELF.items | SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLACEMENT', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM'] * TYPEOF(i)) = 1 )) = SIZEOF(SELF.items); +END_ENTITY; + + +ENTITY shell_based_surface_model + SUBTYPE OF (geometric_representation_item); + sbsm_boundary : SET [1:?] OF shell; +WHERE + WR1 : constraints_geometry_shell_based_surface_model(SELF); +END_ENTITY; + + +ENTITY shell_based_wireframe_model + SUBTYPE OF (geometric_representation_item); + sbwm_boundary : SET [1:?] OF shell; +WHERE + WR1 : constraints_geometry_shell_based_wireframe_model(SELF); +END_ENTITY; + + +ENTITY shell_based_wireframe_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF ( +QUERY ( it <* SELF.items| NOT ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_WIREFRAME_MODEL', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D' ] * TYPEOF (it)) = 1) )) = 0; + WR2 : SIZEOF ( +QUERY ( it <* SELF.items| ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_WIREFRAME_MODEL', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' ] * TYPEOF (it)) = 1) )) >= 1; + WR3 : SIZEOF ( +QUERY ( sbwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( ws <* +QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.WIRE_SHELL' IN TYPEOF (sb)) )| NOT ( SIZEOF ( +QUERY ( eloop <* +QUERY ( wsb <* ws\wire_shell.wire_shell_extent| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (wsb)) )| NOT ( SIZEOF ( +QUERY ( el <* eloop\path.edge_list| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_CURVE' IN TYPEOF (el.edge_element)) )) = 0) )) = 0) )) = 0) )) = 0; + WR4 : SIZEOF ( +QUERY ( sbwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( ws <* +QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.WIRE_SHELL' IN TYPEOF (sb)) )| NOT ( SIZEOF ( +QUERY ( eloop <* +QUERY ( wsb <* ws\wire_shell.wire_shell_extent| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (wsb)) )| NOT ( SIZEOF ( +QUERY ( pline_el <* +QUERY ( el <* eloop\path.edge_list| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF (el.edge_element\edge_curve.edge_geometry)) )| NOT ( SIZEOF (pline_el.edge_element\edge_curve.edge_geometry\polyline.points) > 2) )) = 0) )) = 0) )) = 0) )) = 0; + WR5 : SIZEOF ( +QUERY ( sbwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( ws <* +QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.WIRE_SHELL' IN TYPEOF (sb)) )| NOT ( SIZEOF ( +QUERY ( eloop <* +QUERY ( wsb <* ws\wire_shell.wire_shell_extent| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (wsb)) )| NOT ( SIZEOF ( +QUERY ( el <* eloop\path.edge_list| NOT valid_wireframe_edge_curve(el.edge_element\edge_curve.edge_geometry) )) = 0) )) = 0) )) = 0) )) = 0; + WR6 : SIZEOF ( +QUERY ( sbwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( ws <* +QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.WIRE_SHELL' IN TYPEOF (sb)) )| NOT ( SIZEOF ( +QUERY ( eloop <* +QUERY ( wsb <* ws\wire_shell.wire_shell_extent| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (wsb)) )| NOT ( SIZEOF ( +QUERY ( el <* eloop\path.edge_list| NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF (el.edge_element.edge_start)) AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF (el.edge_element.edge_end))) )) = 0) )) = 0) )) = 0) )) = 0; + WR7 : SIZEOF ( +QUERY ( sbwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( ws <* +QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.WIRE_SHELL' IN TYPEOF (sb)) )| NOT ( SIZEOF ( +QUERY ( eloop <* +QUERY ( wsb <* ws\wire_shell.wire_shell_extent| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (wsb)) )| NOT ( SIZEOF ( +QUERY ( el <* eloop\path.edge_list| NOT (valid_wireframe_vertex_point(el.edge_element.edge_start\vertex_point.vertex_geometry) AND valid_wireframe_vertex_point(el.edge_element.edge_end\vertex_point.vertex_geometry)) )) = 0) )) = 0) )) = 0) )) = 0; + WR8 : SIZEOF ( +QUERY ( sbwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( ws <* +QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.WIRE_SHELL' IN TYPEOF (sb)) )| NOT ( SIZEOF ( +QUERY ( vloop <* +QUERY ( wsb <* ws\wire_shell.wire_shell_extent| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP' IN TYPEOF (wsb)) )| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF (vloop\vertex_loop.loop_vertex)) )) = 0) )) = 0) )) = 0; + WR9 : SIZEOF ( +QUERY ( sbwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( ws <* +QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.WIRE_SHELL' IN TYPEOF (sb)) )| NOT ( SIZEOF ( +QUERY ( vloop <* +QUERY ( wsb <* ws\wire_shell.wire_shell_extent| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP' IN TYPEOF (wsb)) )| NOT valid_wireframe_vertex_point(vloop\vertex_loop.loop_vertex\vertex_point.vertex_geometry) )) = 0) )) = 0) )) = 0; + WR10 : SIZEOF ( +QUERY ( sbwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( vs <* +QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_SHELL' IN TYPEOF (sb)) )| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF (vs\vertex_shell.vertex_shell_extent.loop_vertex)) )) = 0) )) = 0; + WR11 : SIZEOF ( +QUERY ( sbwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( vs <* +QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_SHELL' IN TYPEOF (sb)) )| NOT valid_wireframe_vertex_point(vs\vertex_shell.vertex_shell_extent.loop_vertex\vertex_point.vertex_geometry) )) = 0) )) = 0; + WR12 : SIZEOF ( +QUERY ( mi <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) )| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'SHELL_BASED_WIREFRAME_SHAPE_REPRESENTATION' IN TYPEOF (mi\mapped_item.mapping_source.mapped_representation)) )) = 0; + WR13 : SELF.context_of_items\geometric_representation_context.coordinate_space_dimension = 3; +END_ENTITY; + + +ENTITY shelled_solid + SUPERTYPE OF (ONEOF (double_offset_shelled_solid, complex_shelled_solid)) + SUBTYPE OF (modified_solid); + deleted_face_set : SET [1:?] OF face_surface; + thickness : length_measure; +WHERE + WR1 : thickness <> 0; +END_ENTITY; + + +ENTITY si_absorbed_dose_unit + SUBTYPE OF (absorbed_dose_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.gray; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_capacitance_unit + SUBTYPE OF (capacitance_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.farad; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_conductance_unit + SUBTYPE OF (conductance_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.siemens; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_dose_equivalent_unit + SUBTYPE OF (dose_equivalent_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.sievert; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_electric_charge_unit + SUBTYPE OF (electric_charge_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.coulomb; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_electric_potential_unit + SUBTYPE OF (electric_potential_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.volt; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_energy_unit + SUBTYPE OF (energy_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.joule; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_force_unit + SUBTYPE OF (force_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.newton; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_frequency_unit + SUBTYPE OF (frequency_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.hertz; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_illuminance_unit + SUBTYPE OF (illuminance_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.lux; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_inductance_unit + SUBTYPE OF (inductance_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.henry; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_magnetic_flux_density_unit + SUBTYPE OF (magnetic_flux_density_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.tesla; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_magnetic_flux_unit + SUBTYPE OF (magnetic_flux_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.weber; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_power_unit + SUBTYPE OF (power_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.watt; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_pressure_unit + SUBTYPE OF (pressure_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.pascal; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_radioactivity_unit + SUBTYPE OF (radioactivity_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.becquerel; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_resistance_unit + SUBTYPE OF (resistance_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.ohm; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_unit + SUBTYPE OF (named_unit); + prefix : OPTIONAL si_prefix; + name : si_unit_name; +DERIVE + SELF\named_unit.dimensions : dimensional_exponents := dimensions_for_si_unit(name); +WHERE + WR1 : NOT(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MASS_UNIT' IN TYPEOF(SELF)) AND + (SIZEOF(USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DERIVED_UNIT_ELEMENT.UNIT')) > 0)) OR + (prefix = si_prefix.kilo); +END_ENTITY; + + +ENTITY simple_boolean_expression + ABSTRACT SUPERTYPE + SUBTYPE OF (boolean_expression, simple_generic_expression); +END_ENTITY; + + +ENTITY simple_clause + SUBTYPE OF (compound_representation_item); +END_ENTITY; + + +ENTITY simple_generic_expression + ABSTRACT SUPERTYPE OF (ONEOF (generic_literal, generic_variable)) + SUBTYPE OF (generic_expression); +END_ENTITY; + + +ENTITY simple_numeric_expression + ABSTRACT SUPERTYPE + SUBTYPE OF (numeric_expression, simple_generic_expression); +END_ENTITY; + + +ENTITY slash_expression + SUBTYPE OF (binary_numeric_expression); +END_ENTITY; + + +ENTITY smeared_material_definition + SUBTYPE OF (zone_structural_makeup); +END_ENTITY; + + +ENTITY solid_angle_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_ANGLE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY solid_angle_unit + SUBTYPE OF (named_unit); +WHERE + WR1 : (SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 0.0) AND (SELF\named_unit.dimensions.time_exponent = 0.0) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0); +END_ENTITY; + + +ENTITY solid_curve_font + SUBTYPE OF (pre_defined_curve_font); +END_ENTITY; + + +ENTITY solid_model + SUPERTYPE OF (ONEOF (csg_solid, manifold_solid_brep, swept_face_solid, swept_area_solid, swept_disk_solid, solid_replica)) + SUBTYPE OF (geometric_representation_item); +END_ENTITY; + + +ENTITY solid_replica + SUBTYPE OF (solid_model); + parent_solid : solid_model; + transformation : cartesian_transformation_operator_3d; +WHERE + WR1 : acyclic_solid_replica(SELF, parent_solid); + WR2 : parent_solid\geometric_representation_item.dim = 3; +END_ENTITY; + + +ENTITY solid_with_angle_based_chamfer + SUBTYPE OF (solid_with_chamfered_edges); + offset_distance : positive_length_measure; + left_offset : BOOLEAN; + offset_angle : positive_plane_angle_measure; +END_ENTITY; + + +ENTITY solid_with_chamfered_edges + ABSTRACT SUPERTYPE OF (ONEOF (solid_with_single_offset_chamfer, solid_with_double_offset_chamfer, solid_with_angle_based_chamfer)) + SUBTYPE OF (edge_blended_solid); +END_ENTITY; + + +ENTITY solid_with_circular_pattern + SUPERTYPE OF (solid_with_incomplete_circular_pattern) + SUBTYPE OF (solid_with_shape_element_pattern); + replicate_count : positive_integer; + angular_spacing : plane_angle_measure; + radial_alignment : BOOLEAN; + reference_point : point; +END_ENTITY; + + +ENTITY solid_with_circular_pocket + SUBTYPE OF (solid_with_pocket); + pocket_radius : positive_length_measure; +WHERE + WR1 : SELF\solid_with_pocket.floor_blend_radius <= pocket_radius; +END_ENTITY; + + +ENTITY solid_with_circular_protrusion + SUBTYPE OF (solid_with_protrusion); + protrusion_radius : positive_length_measure; +END_ENTITY; + + +ENTITY solid_with_conical_bottom_round_hole + SUBTYPE OF (solid_with_stepped_round_hole); + semi_apex_angle : positive_plane_angle_measure; + tip_radius : non_negative_length_measure; +WHERE + WR1 : tip_radius < + SELF\solid_with_stepped_round_hole.segment_radii[segments]; +END_ENTITY; + + +ENTITY solid_with_constant_radius_edge_blend + SUBTYPE OF (edge_blended_solid); + radius : positive_length_measure; +END_ENTITY; + + +ENTITY solid_with_curved_slot + SUBTYPE OF (solid_with_slot); + slot_centreline : bounded_curve; +END_ENTITY; + + +ENTITY solid_with_depression + ABSTRACT SUPERTYPE OF ((solid_with_through_depression ANDOR ONEOF (solid_with_hole, solid_with_pocket, solid_with_slot, solid_with_groove))) + SUBTYPE OF (modified_solid_with_placed_configuration); + depth : positive_length_measure; +END_ENTITY; + + +ENTITY solid_with_double_offset_chamfer + SUBTYPE OF (solid_with_chamfered_edges); + left_offset_distance : positive_length_measure; + right_offset_distance : positive_length_measure; +END_ENTITY; + + +ENTITY solid_with_flat_bottom_round_hole + SUBTYPE OF (solid_with_stepped_round_hole); + fillet_radius : non_negative_length_measure; +WHERE + WR1 : fillet_radius < + SELF\solid_with_stepped_round_hole.segment_radii[segments]; +END_ENTITY; + + +ENTITY solid_with_general_pocket + SUBTYPE OF (solid_with_pocket); + profile : positioned_sketch; + reference_point : point; +WHERE + WR1 : SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_BOUNDED_SURFACE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_SURFACE'] * TYPEOF(profile.sketch_basis)) = 1; + WR2 : profile IN using_items(reference_point,[]); +END_ENTITY; + + +ENTITY solid_with_general_protrusion + SUBTYPE OF (solid_with_protrusion); + profile : positioned_sketch; + reference_point : point; +WHERE + WR1 : SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_BOUNDED_SURFACE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_SURFACE'] * TYPEOF(profile.sketch_basis)) = 1; + WR2 : profile IN using_items(reference_point,[]); +END_ENTITY; + + +ENTITY solid_with_groove + SUBTYPE OF (solid_with_depression); + groove_radius : positive_length_measure; + groove_width : positive_length_measure; + draft_angle : plane_angle_measure; + floor_fillet_radius : non_negative_length_measure; + external_groove : BOOLEAN; +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_THROUGH_DEPRESSION' + IN TYPEOF(SELF)); +END_ENTITY; + + +ENTITY solid_with_hole + ABSTRACT SUPERTYPE OF (solid_with_stepped_round_hole) + SUBTYPE OF (solid_with_depression); +END_ENTITY; + + +ENTITY solid_with_incomplete_circular_pattern + SUBTYPE OF (solid_with_circular_pattern); + omitted_instances : SET [1:?] OF positive_integer; +WHERE + WR1 : SIZEOF(omitted_instances) < + SELF\solid_with_circular_pattern.replicate_count; + WR2 : SIZEOF(QUERY(q <* omitted_instances | q > + SELF\solid_with_circular_pattern.replicate_count)) = 0; +END_ENTITY; + + +ENTITY solid_with_incomplete_rectangular_pattern + SUBTYPE OF (solid_with_rectangular_pattern); + omitted_instances : SET [1:?] OF LIST [2:2] OF positive_integer; +WHERE + WR1 : NOT([1,1] IN omitted_instances); + WR2 : SIZEOF(omitted_instances) < + ((SELF\solid_with_rectangular_pattern.row_count * + SELF\solid_with_rectangular_pattern.column_count) - 1); + WR3 : SIZEOF(QUERY(q <* omitted_instances | + ((q[1] > SELF\solid_with_rectangular_pattern.row_count) OR + (q[2] > SELF\solid_with_rectangular_pattern.column_count)))) = 0; +END_ENTITY; + + +ENTITY solid_with_pocket + ABSTRACT SUPERTYPE OF (ONEOF (solid_with_rectangular_pocket, solid_with_circular_pocket, solid_with_general_pocket)) + SUBTYPE OF (solid_with_depression); + floor_blend_radius : non_negative_length_measure; + draft_angle : plane_angle_measure; +END_ENTITY; + + +ENTITY solid_with_protrusion + ABSTRACT SUPERTYPE OF (ONEOF (solid_with_circular_protrusion, solid_with_rectangular_protrusion, solid_with_general_protrusion)) + SUBTYPE OF (modified_solid_with_placed_configuration); + protrusion_height : positive_length_measure; + protrusion_draft_angle : plane_angle_measure; +END_ENTITY; + + +ENTITY solid_with_rectangular_pattern + SUPERTYPE OF (solid_with_incomplete_rectangular_pattern) + SUBTYPE OF (solid_with_shape_element_pattern); + row_count : positive_integer; + column_count : positive_integer; + row_spacing : length_measure; + column_spacing : length_measure; +WHERE + WR1 : (row_count * column_count) > 1; +END_ENTITY; + + +ENTITY solid_with_rectangular_pocket + SUBTYPE OF (solid_with_pocket); + pocket_length : positive_length_measure; + pocket_width : positive_length_measure; + corner_radius : non_negative_length_measure; +WHERE + WR1 : (corner_radius < pocket_width/2) + AND (corner_radius < pocket_length/2); +END_ENTITY; + + +ENTITY solid_with_rectangular_protrusion + SUBTYPE OF (solid_with_protrusion); + protrusion_length : positive_length_measure; + protrusion_width : positive_length_measure; + protrusion_corner_radius : non_negative_length_measure; +WHERE + WR1 : (protrusion_corner_radius <= protrusion_width/2) + AND (protrusion_corner_radius <= protrusion_length/2); +END_ENTITY; + + +ENTITY solid_with_shape_element_pattern + ABSTRACT SUPERTYPE OF (ONEOF (solid_with_circular_pattern, solid_with_rectangular_pattern)) + SUBTYPE OF (modified_solid_with_placed_configuration); + replicated_element : modified_solid_with_placed_configuration; +END_ENTITY; + + +ENTITY solid_with_single_offset_chamfer + SUBTYPE OF (solid_with_chamfered_edges); + offset_distance : positive_length_measure; +END_ENTITY; + + +ENTITY solid_with_slot + ABSTRACT SUPERTYPE OF ((ONEOF (solid_with_trapezoidal_section_slot, solid_with_tee_section_slot) AND ONEOF (solid_with_straight_slot, solid_with_curved_slot))) + SUBTYPE OF (solid_with_depression); + slot_width : positive_length_measure; + closed_ends : LIST [2:2] OF LOGICAL; + end_exit_faces : LIST [2:2] OF SET [0:?] OF face_surface; +WHERE + WR1 : NOT(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_THROUGH_DEPRESSION' IN + TYPEOF(SELF)) AND (closed_ends = [FALSE,FALSE])); + WR2 : NOT(((closed_ends[1] = TRUE) AND (SIZEOF(end_exit_faces[1]) <> 0)) + OR ((closed_ends[2] = TRUE) AND (SIZEOF(end_exit_faces[2]) <> 0))); +END_ENTITY; + + +ENTITY solid_with_spherical_bottom_round_hole + SUBTYPE OF (solid_with_stepped_round_hole); + sphere_radius : positive_length_measure; +WHERE + WR1 : sphere_radius >= + SELF\solid_with_stepped_round_hole.segment_radii[segments]; +END_ENTITY; + + +ENTITY solid_with_stepped_round_hole + SUPERTYPE OF ((solid_with_stepped_round_hole_and_conical_transitions ANDOR ONEOF (solid_with_flat_bottom_round_hole, solid_with_conical_bottom_round_hole, solid_with_spherical_bottom_round_hole))) + SUBTYPE OF (solid_with_hole); + segments : positive_integer; + segment_radii : LIST [1:segments] OF positive_length_measure; + segment_depths : LIST [1:segments] OF positive_length_measure; +DERIVE + SELF\solid_with_depression.depth : positive_length_measure := compute_total_depth(SELF); +WHERE + WR1 : NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_THROUGH_DEPRESSION' + IN TYPEOF(SELF)) AND (SIZEOF(TYPEOF(SELF) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_FLAT_BOTTOM_ROUND_HOLE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_SPHERICAL_BOTTOM_ROUND_HOLE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_FLAT_BOTTOM_ROUND_HOLE']) + <> 0)); +END_ENTITY; + + +ENTITY solid_with_stepped_round_hole_and_conical_transitions + SUBTYPE OF (solid_with_stepped_round_hole); + conical_transitions : SET [1:?] OF conical_stepped_hole_transition; +WHERE + WR1 : SIZEOF (conical_transitions) <= + (SELF\solid_with_stepped_round_hole.segments + 1); + WR2 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_THROUGH_DEPRESSION' + IN TYPEOF(SELF)) XOR (SIZEOF(conical_transitions) <= + SELF\solid_with_stepped_round_hole.segments); + WR3 : validate_countersink_radii(SELF); +END_ENTITY; + + +ENTITY solid_with_straight_slot + SUBTYPE OF (solid_with_slot); + slot_length : positive_length_measure; +END_ENTITY; + + +ENTITY solid_with_tee_section_slot + SUBTYPE OF (solid_with_slot); + tee_section_width : positive_length_measure; + collar_depth : positive_length_measure; +WHERE + WR1 : collar_depth < SELF\solid_with_depression.depth; + WR2 : tee_section_width > SELF\solid_with_slot.slot_width; +END_ENTITY; + + +ENTITY solid_with_through_depression + SUBTYPE OF (solid_with_depression); + exit_faces : SET [1:?] OF face_surface; +WHERE + WR1 : SIZEOF(TYPEOF(SELF) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_HOLE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_POCKET', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_SLOT']) = 1; +END_ENTITY; + + +ENTITY solid_with_trapezoidal_section_slot + SUBTYPE OF (solid_with_slot); + draft_angle : plane_angle_measure; + floor_fillet_radius : non_negative_length_measure; +END_ENTITY; + + +ENTITY solid_with_variable_radius_edge_blend + SUBTYPE OF (edge_blended_solid, track_blended_solid); + point_list : LIST [2:?] OF point; + radius_list : LIST [2:?] OF positive_length_measure; + edge_function_list : LIST [1:?] OF blend_radius_variation_type; +WHERE + WR1 : SIZEOF(point_list) = SIZEOF(radius_list); + WR2 : SIZEOF(edge_function_list) = SIZEOF(radius_list) - 1; + WR3 : NOT((point_list[1] = point_list[HIINDEX(point_list)]) AND NOT + (radius_list[1] = radius_list[HIINDEX(radius_list)])); +END_ENTITY; + + +ENTITY source_for_requirement + SUBTYPE OF (group_assignment); + items : SET [1:1] OF requirement_source_item; + SELF\group_assignment.assigned_group : requirement_source; +END_ENTITY; + + +ENTITY sourced_requirement + SUBTYPE OF (group_assignment); + items : SET [1:1] OF product_definition; + SELF\group_assignment.assigned_group : requirement_source; +END_ENTITY; + + +ENTITY specification_definition + SUBTYPE OF (product_definition); +END_ENTITY; + + +ENTITY specified_higher_usage_occurrence + SUBTYPE OF (assembly_component_usage); + upper_usage : assembly_component_usage; + next_usage : next_assembly_usage_occurrence; +UNIQUE + UR1 : upper_usage, next_usage; +WHERE + WR1 : SELF :<>: upper_usage; + WR2 : SELF\product_definition_relationship.relating_product_definition + :=: upper_usage.relating_product_definition; + WR3 : SELF\product_definition_relationship.related_product_definition + :=: next_usage.related_product_definition; + WR4 : (upper_usage.related_product_definition :=: + next_usage.relating_product_definition) OR + (SIZEOF (QUERY (pdr <* USEDIN (upper_usage.related_product_definition, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION_RELATIONSHIP.' + + 'RELATED_PRODUCT_DEFINITION') | + pdr.relating_product_definition :=: + next_usage.relating_product_definition)) = 1); + WR5 : SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.NEXT_ASSEMBLY_USAGE_OCCURRENCE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SPECIFIED_HIGHER_USAGE_OCCURRENCE'] + * TYPEOF(upper_usage)) = 1; +END_ENTITY; + + +ENTITY sphere + SUBTYPE OF (geometric_representation_item); + radius : positive_length_measure; + centre : point; +END_ENTITY; + + +ENTITY spherical_surface + SUBTYPE OF (elementary_surface); + radius : positive_length_measure; +END_ENTITY; + + +ENTITY standard_uncertainty + SUPERTYPE OF (expanded_uncertainty) + SUBTYPE OF (uncertainty_qualifier); + uncertainty_value : REAL; +END_ENTITY; + + +ENTITY start_request + SUBTYPE OF (action_request_assignment); + items : SET [1:?] OF start_request_item; +END_ENTITY; + + +ENTITY start_work + SUBTYPE OF (action_assignment); + items : SET [1:?] OF work_item; +END_ENTITY; + + +ENTITY straightness_tolerance + SUBTYPE OF (geometric_tolerance); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF (SELF)); +END_ENTITY; + + +ENTITY structured_dimension_callout + SUBTYPE OF (draughting_callout); +WHERE + WR1 : SIZEOF (TYPEOF (SELF) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DATUM_FEATURE_CALLOUT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DATUM_TARGET_CALLOUT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRICAL_TOLERANCE_CALLOUT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_DIRECTED_CALLOUT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROJECTION_DIRECTED_CALLOUT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT']) = 0; + WR2 : SIZEOF (QUERY (ato <* QUERY (con <* SELF.contents | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF (con))) | + NOT (ato.name IN + ['dimension value', 'tolerance value', 'unit text', + 'prefix text', 'suffix text']))) = 0; + WR3 : SIZEOF (QUERY (ato <* QUERY (con <* SELF.contents | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF (con))) | + (ato.name = 'dimension value') + )) >= 1; + WR4 : SIZEOF (QUERY (dcr <* USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_CALLOUT_RELATIONSHIP.' + + 'RELATING_DRAUGHTING_CALLOUT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP' IN TYPEOF (dcr)) AND + (dcr.name = 'prefix') )) <= 1; + WR5 : SIZEOF (QUERY (dcr <* USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_CALLOUT_RELATIONSHIP.' + + 'RELATING_DRAUGHTING_CALLOUT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP' IN TYPEOF (dcr)) AND + (dcr.name = 'suffix') )) <= 1; + WR6 : NOT((SIZEOF (QUERY (ato <* QUERY (con <* SELF.contents | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF(con)) ) | + (ato.name = 'prefix text') + )) > 0)) OR + (SIZEOF (QUERY (dcr <* USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_CALLOUT_RELATIONSHIP.' + + 'RELATING_DRAUGHTING_CALLOUT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP' IN TYPEOF (dcr)) AND + (dcr.name = 'prefix') )) = 1); + WR7 : NOT(SIZEOF (QUERY (ato <* QUERY (con <* SELF.contents | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF(con))) | + (ato.name = 'suffix text') + )) > 0) OR + (SIZEOF (QUERY (dcr <* USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_CALLOUT_RELATIONSHIP.' + + 'RELATING_DRAUGHTING_CALLOUT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP' IN TYPEOF (dcr)) AND + (dcr.name = 'suffix') )) = 1); +END_ENTITY; + + +ENTITY structured_text_composition + SUBTYPE OF (compound_representation_item); +END_ENTITY; + + +ENTITY structured_text_representation + SUBTYPE OF (representation); + SELF\representation.items : SET [1:?] OF string_representation_item_select; +END_ENTITY; + + +ENTITY styled_item + SUBTYPE OF (representation_item); + styles : SET [1:?] OF presentation_style_assignment; + item : representation_item; +WHERE + WR1 : (SIZEOF(SELF.styles) = 1) + XOR + (SIZEOF(QUERY(pres_style <* SELF.styles | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_STYLE_BY_CONTEXT' IN + TYPEOF(pres_style)) + )) = 0); +END_ENTITY; + + +ENTITY subedge + SUBTYPE OF (edge); + parent_edge : edge; +END_ENTITY; + + +ENTITY subface + SUBTYPE OF (face); + parent_face : face; +WHERE + WR1 : NOT (mixed_loop_type_set(list_to_set(list_face_loops(SELF)) + + list_to_set(list_face_loops(parent_face)))); +END_ENTITY; + + +ENTITY supplied_part_relationship + SUBTYPE OF (product_definition_relationship); +END_ENTITY; + + +ENTITY surface + SUPERTYPE OF (ONEOF (elementary_surface, swept_surface, bounded_surface, offset_surface, surface_replica)) + SUBTYPE OF (geometric_representation_item); +END_ENTITY; + + +ENTITY surface_condition_callout + SUBTYPE OF (draughting_callout); +WHERE + WR1 : SIZEOF ( QUERY ( c <* SELF.contents | SIZEOF ( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'ANNOTATION_CURVE_OCCURRENCE' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'ANNOTATION_SYMBOL_OCCURRENCE' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'ANNOTATION_TEXT_OCCURRENCE']* TYPEOF + ( c ) ) <>1 ) ) =0; +END_ENTITY; + + +ENTITY surface_curve + SUPERTYPE OF ((ONEOF (intersection_curve, seam_curve) ANDOR bounded_surface_curve)) + SUBTYPE OF (curve); + curve_3d : curve; + associated_geometry : LIST [1:2] OF pcurve_or_surface; + master_representation : preferred_surface_curve_representation; +DERIVE + basis_surface : SET [1:2] OF surface := get_basis_surface(SELF); +WHERE + WR1 : curve_3d.dim = 3; + WR2 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF(associated_geometry[1])) OR + (master_representation <> pcurve_s1); + WR3 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF(associated_geometry[2])) OR + (master_representation <> pcurve_s2); + WR4 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF(curve_3d)); +END_ENTITY; + + +ENTITY surface_curve_swept_area_solid + SUBTYPE OF (swept_area_solid); + directrix : curve; + start_param : REAL; + end_param : REAL; + reference_surface : surface; +WHERE + WR1 : (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE' IN TYPEOF(directrix))) OR + (reference_surface IN (directrix\surface_curve.basis_surface)); +END_ENTITY; + + +ENTITY surface_of_linear_extrusion + SUBTYPE OF (swept_surface); + extrusion_axis : vector; +END_ENTITY; + + +ENTITY surface_of_revolution + SUBTYPE OF (swept_surface); + axis_position : axis1_placement; +DERIVE + axis_line : line := representation_item('')|| + geometric_representation_item()|| curve()|| + line(axis_position.location, representation_item('')|| + geometric_representation_item()|| + vector(axis_position.z, 1.0)); +END_ENTITY; + + +ENTITY surface_patch + SUBTYPE OF (founded_item); + parent_surface : bounded_surface; + u_transition : transition_code; + v_transition : transition_code; + u_sense : BOOLEAN; + v_sense : BOOLEAN; +INVERSE + using_surfaces: BAG [1:?] OF rectangular_composite_surface FOR segments; +WHERE + WR1 : (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_BOUNDED_SURFACE' + IN TYPEOF(parent_surface))); +END_ENTITY; + + +ENTITY surface_profile_tolerance + SUBTYPE OF (geometric_tolerance); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF (SELF)) OR ( SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) <= 3); +END_ENTITY; + + +ENTITY surface_rendering_properties; + rendered_colour : colour; +END_ENTITY; + + +ENTITY surface_replica + SUBTYPE OF (surface); + parent_surface : surface; + transformation : cartesian_transformation_operator_3d; +WHERE + WR1 : acyclic_surface_replica(SELF, parent_surface); +END_ENTITY; + + +ENTITY surface_side_style + SUBTYPE OF (founded_item); + name : label; + styles : SET [1:7] OF surface_style_element_select; +WHERE + WR1 : SIZEOF(QUERY( style1 <* SELF.styles | + SIZEOF(QUERY( style2 <* SELF.styles - style1 | + TYPEOF(style1) = TYPEOF(style2) + )) > 0 + )) = 0; +END_ENTITY; + + +ENTITY surface_style_boundary + SUBTYPE OF (founded_item); + style_of_boundary : curve_or_render; +END_ENTITY; + + +ENTITY surface_style_control_grid + SUBTYPE OF (founded_item); + style_of_control_grid : curve_or_render; +END_ENTITY; + + +ENTITY surface_style_fill_area + SUBTYPE OF (founded_item); + fill_area : fill_area_style; +END_ENTITY; + + +ENTITY surface_style_parameter_line + SUBTYPE OF (founded_item); + style_of_parameter_lines : curve_or_render; + direction_counts : SET [1:2] OF direction_count_select; +WHERE + WR1 : (HIINDEX(SELF.direction_counts) = 1) + XOR + (TYPEOF(SELF.direction_counts[1]) <> + TYPEOF(SELF.direction_counts[2])); +END_ENTITY; + + +ENTITY surface_style_reflectance_ambient; + ambient_reflectance : REAL; +END_ENTITY; + + +ENTITY surface_style_reflectance_ambient_diffuse + SUBTYPE OF (surface_style_reflectance_ambient); + diffuse_reflectance : REAL; +END_ENTITY; + + +ENTITY surface_style_reflectance_ambient_diffuse_specular + SUBTYPE OF (surface_style_reflectance_ambient_diffuse); + specular_reflectance : REAL; + specular_exponent : REAL; + specular_colour : colour; +END_ENTITY; + + +ENTITY surface_style_rendering; + rendering_method : shading_surface_method; + surface_colour : colour; +END_ENTITY; + + +ENTITY surface_style_rendering_with_properties + SUBTYPE OF (surface_style_rendering); + properties : SET [1:2] OF rendering_properties_select; +WHERE + WR1 : (HIINDEX(SELF.properties) = 1) + XOR + (TYPEOF(SELF.properties[1]) <> TYPEOF(SELF.properties[2])); +END_ENTITY; + + +ENTITY surface_style_segmentation_curve + SUBTYPE OF (founded_item); + style_of_segmentation_curve : curve_or_render; +END_ENTITY; + + +ENTITY surface_style_silhouette + SUBTYPE OF (founded_item); + style_of_silhouette : curve_or_render; +END_ENTITY; + + +ENTITY surface_style_transparent; + transparency : REAL; +WHERE + WR1 : {0.0 <= transparency <= 1.0}; +END_ENTITY; + + +ENTITY surface_style_usage + SUBTYPE OF (founded_item); + side : surface_side; + style : surface_side_style_select; +END_ENTITY; + + +ENTITY surface_texture_representation + SUBTYPE OF (representation); +WHERE + WR1 : SIZEOF ( QUERY ( i <* SELF.items | SIZEOF ( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'MEASURE_REPRESENTATION_ITEM' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'VALUE_RANGE' , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DESCRIPTIVE_REPRESENTATION_ITEM']* TYPEOF ( i ) ) <>1 ) ) + =0; + WR2 : ( SIZEOF ( QUERY ( i <* SELF.items | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF ( i ) ) ) =1 ) + AND ( SIZEOF ( QUERY ( i <* SELF.items | ( + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'DESCRIPTIVE_REPRESENTATION_ITEM' IN + TYPEOF ( i ) ) AND ( i.name = 'measuring method' ) ) ) =1 ); + WR3 : SIZEOF ( QUERY ( i <* SELF.items | SIZEOF ( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'MEASURE_REPRESENTATION_ITEM' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'VALUE_RANGE']* TYPEOF ( i ) ) =1 ) ) + >0; + WR4 : ( SIZEOF ( USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'REPRESENTATION_RELATIONSHIP.'+ + 'REP_1' ) ) <=1 ) AND ( SIZEOF ( USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'REPRESENTATION_RELATIONSHIP.'+ + 'REP_2' ) ) =0 ) AND ( SIZEOF ( QUERY ( rr <* USEDIN ( SELF + , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'REPRESENTATION_RELATIONSHIP.'+ + 'REP_1' ) | rr. rep_2.name = 'measuring direction' ) ) = + SIZEOF ( USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'REPRESENTATION_RELATIONSHIP.'+ + 'REP_1' ) ) ); + WR5 : ( SIZEOF ( USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) ) =1 ) AND ( SIZEOF ( QUERY ( pdr + <* USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) | SIZEOF ( QUERY ( gpa <* USEDIN ( + pdr. definition , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'GENERAL_PROPERTY_ASSOCIATION.'+ + 'DERIVED_DEFINITION' ) | ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'GENERAL_PROPERTY' IN TYPEOF ( gpa. base_definition ) ) AND + ( gpa. base_definition.name ='surface_condition' ) ) ) =1 ) + ) =1 ); +END_ENTITY; + + +ENTITY surfaced_open_shell + SUBTYPE OF (open_shell); +WHERE + WR1 : SIZEOF(QUERY(q <* SELF\connected_face_set.cfs_faces | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_SURFACE' IN TYPEOF(q)))) = 0; +END_ENTITY; + + +ENTITY swept_area_solid + SUPERTYPE OF (ONEOF (revolved_area_solid, extruded_area_solid, surface_curve_swept_area_solid)) + SUBTYPE OF (solid_model); + swept_area : curve_bounded_surface; +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE' IN TYPEOF(swept_area.basis_surface); +END_ENTITY; + + +ENTITY swept_disk_solid + SUBTYPE OF (solid_model); + directrix : curve; + radius : positive_length_measure; + inner_radius : OPTIONAL positive_length_measure; + start_param : REAL; + end_param : REAL; +WHERE + WR1 : directrix.dim = 3; + WR2 : (NOT EXISTS(inner_radius)) OR (radius > inner_radius); +END_ENTITY; + + +ENTITY swept_face_solid + SUPERTYPE OF (ONEOF (extruded_face_solid, revolved_face_solid)) + SUBTYPE OF (solid_model); + swept_face : face_surface; +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE' IN TYPEOF(swept_face.face_geometry); +END_ENTITY; + + +ENTITY swept_surface + SUPERTYPE OF (ONEOF (surface_of_linear_extrusion, surface_of_revolution)) + SUBTYPE OF (surface); + swept_curve : curve; +END_ENTITY; + + +ENTITY symbol + SUBTYPE OF (representation_item); +END_ENTITY; + + +ENTITY symbol_colour; + colour_of_symbol : colour; +END_ENTITY; + + +ENTITY symbol_representation + SUBTYPE OF (representation); +END_ENTITY; + + +ENTITY symbol_representation_map + SUBTYPE OF (representation_map); + SELF\representation_map.mapped_representation : symbol_representation; + SELF\representation_map.mapping_origin : axis2_placement; +END_ENTITY; + + +ENTITY symbol_style + SUBTYPE OF (founded_item); + name : label; + style_of_symbol : symbol_style_select; +END_ENTITY; + + +ENTITY symbol_target + SUBTYPE OF (geometric_representation_item); + placement : axis2_placement; + x_scale : positive_ratio_measure; + y_scale : positive_ratio_measure; +END_ENTITY; + + +ENTITY symmetric_shape_aspect + SUBTYPE OF (shape_aspect); +INVERSE + basis_relationships: SET [1:?] OF shape_aspect_relationship FOR relating_shape_aspect; +WHERE + WR1 : SIZEOF (QUERY (x<*SELF\symmetric_shape_aspect.basis_relationships | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CENTRE_OF_SYMMETRY' IN TYPEOF + (x\shape_aspect_relationship.related_shape_aspect)))>=1; +END_ENTITY; + + +ENTITY symmetry_tolerance + SUBTYPE OF (geometric_tolerance_with_datum_reference); +WHERE + WR1 : SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) <= 3; +END_ENTITY; + + +ENTITY table_representation_item + SUBTYPE OF (compound_representation_item); +WHERE + WR1 : SIZEOF(QUERY(itet <* SELF\compound_representation_item.item_element | + NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ROW_REPRESENTATION_ITEM' IN TYPEOF(itet)) + )) = 0; +END_ENTITY; + + +ENTITY tactile_appearance_representation + SUBTYPE OF (representation); +WHERE + WR1 : SIZEOF ( QUERY ( i <* SELF.items | SIZEOF ( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'MEASURE_REPRESENTATION_ITEM' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'VALUE_RANGE']* TYPEOF ( i ) ) <>1 )) =0; + WR2 : SIZEOF ( QUERY ( i <* SELF.items | name ='depth' ) ) <=1; + WR3 : ( SIZEOF ( USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) ) =1 ) AND ( SIZEOF ( QUERY ( pdr + <* USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) | SIZEOF ( QUERY ( gpa <* USEDIN ( + pdr. definition , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'GENERAL_PROPERTY_ASSOCIATION.'+ + 'DERIVED_DEFINITION' ) | ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'GENERAL_PROPERTY' IN TYPEOF ( gpa. base_definition ) ) AND + ( gpa. base_definition.name ='surface_condition' ) ) ) =1 )) =1 ); +END_ENTITY; + + +ENTITY tagged_text_format + SUBTYPE OF (representation_context); +END_ENTITY; + + +ENTITY tagged_text_item + SUBTYPE OF (descriptive_representation_item); +END_ENTITY; + + +ENTITY tangent + SUBTYPE OF (derived_shape_aspect); +WHERE + WR1 : SIZEOF (SELF\derived_shape_aspect.deriving_relationships)= 1; +END_ENTITY; + + +ENTITY terminator_symbol + SUBTYPE OF (annotation_symbol_occurrence); + annotated_curve : annotation_curve_occurrence; +END_ENTITY; + + +ENTITY text_font; + id : identifier; + name : label; + description : text; +INVERSE + glyphs: SET [1:?] OF character_glyph_font_usage FOR font; +END_ENTITY; + + +ENTITY text_font_family; + id : identifier; + name : label; + description : text; +INVERSE + fonts: SET [1:?] OF text_font_in_family FOR family; +END_ENTITY; + + +ENTITY text_font_in_family; + font : text_font; + family : text_font_family; +END_ENTITY; + + +ENTITY text_literal + SUBTYPE OF (geometric_representation_item); + literal : presentable_text; + placement : axis2_placement; + alignment : text_alignment; + path : text_path; + font : font_select; +END_ENTITY; + + +ENTITY text_literal_with_associated_curves + SUBTYPE OF (text_literal); + associated_curves : SET [1:?] OF curve; +END_ENTITY; + + +ENTITY text_literal_with_blanking_box + SUBTYPE OF (text_literal); + blanking : planar_box; +END_ENTITY; + + +ENTITY text_literal_with_delineation + SUBTYPE OF (text_literal); + delineation : text_delineation; +END_ENTITY; + + +ENTITY text_literal_with_extent + SUBTYPE OF (text_literal); + extent : planar_extent; +END_ENTITY; + + +ENTITY text_string_representation + SUBTYPE OF (representation); + SELF\representation.items : SET [1:?] OF text_string_representation_item; +WHERE + WR1 : SIZEOF ( + QUERY (item <* SELF\representation.items | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_LITERAL', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_CHARACTER', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DEFINED_CHARACTER_GLYPH', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_TEXT'] * + TYPEOF (item)) = 0) + )) >= 1; + WR2 : SIZEOF ( + QUERY (a2p <* + QUERY (item <* SELF\representation.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT' IN TYPEOF (item)) | + NOT ((SIZEOF ( + QUERY (at <* + QUERY (item <* SELF\representation.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'ANNOTATION_TEXT' IN TYPEOF (item)) | + (at\mapped_item.mapping_target :=: a2p))) >= 1) OR + (SIZEOF ( + QUERY (atc <* + QUERY (item <* SELF\representation.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'ANNOTATION_TEXT_CHARACTER' IN TYPEOF (item)) | + (atc\mapped_item.mapping_target :=: a2p))) >= 1) + ))) = 0; +END_ENTITY; + + +ENTITY text_style + SUBTYPE OF (founded_item); + name : label; + character_appearance : character_style_select; +END_ENTITY; + + +ENTITY text_style_for_defined_font; + text_colour : colour; +END_ENTITY; + + +ENTITY text_style_with_box_characteristics + SUBTYPE OF (text_style); + characteristics : SET [1:4] OF box_characteristic_select; +WHERE + WR1 : SIZEOF( QUERY( c1 <* SELF.characteristics | + SIZEOF( QUERY( c2 <* SELF.characteristics - c1 | + TYPEOF (c1) = TYPEOF (c2) + )) > 0 + )) = 0; +END_ENTITY; + + +ENTITY text_style_with_mirror + SUBTYPE OF (text_style); + mirror_placement : axis2_placement; +END_ENTITY; + + +ENTITY text_style_with_spacing + SUBTYPE OF (text_style); + character_spacing : character_spacing_select; +END_ENTITY; + + +ENTITY thermal_resistance_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.THERMAL_RESISTANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY thermal_resistance_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = + dimensional_exponents ( -1.0, -1.0, -3.0, 0.0, 1.0, 0.0, 0.0 ); +END_ENTITY; + + +ENTITY thermodynamic_temperature_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.THERMODYNAMIC_TEMPERATURE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY thermodynamic_temperature_unit + SUBTYPE OF (named_unit); +WHERE + WR1 : (SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 0.0) AND (SELF\named_unit.dimensions.time_exponent = 0.0) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 1.0) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0); +END_ENTITY; + + +ENTITY thickened_face_solid + SUBTYPE OF (solid_model); + base_element : generalized_surface_select; + offset1 : length_measure; + offset2 : length_measure; +WHERE + WR1 : NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE' IN TYPEOF(base_element)) AND + (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOUNDED_SURFACE' IN TYPEOF(base_element)))); + WR2 : offset1 <> offset2; +END_ENTITY; + + +ENTITY thickness_laminate_definition + SUBTYPE OF (product_definition); +WHERE + WR1 : SIZEOF (QUERY (pdr <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRODUCT_DEFINITION_RELATIONSHIP.' + + 'RELATING_PRODUCT_DEFINITION') | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'NEXT_ASSEMBLY_USAGE_OCCURRENCE' IN + TYPEOF (pdr))) = 1; +END_ENTITY; + + +ENTITY thickness_laminate_table + SUBTYPE OF (zone_structural_makeup); +END_ENTITY; + + +ENTITY time_interval; + id : identifier; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY time_interval_assignment + ABSTRACT SUPERTYPE; + assigned_time_interval : time_interval; + role : time_interval_role; +END_ENTITY; + + +ENTITY time_interval_based_effectivity + SUBTYPE OF (effectivity); + effectivity_period : time_interval; +END_ENTITY; + + +ENTITY time_interval_relationship; + name : label; + description : OPTIONAL text; + relating_time_interval : time_interval; + related_time_interval : time_interval; +END_ENTITY; + + +ENTITY time_interval_role; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY time_interval_with_bounds + SUBTYPE OF (time_interval); + primary_bound : OPTIONAL date_time_or_event_occurrence; + secondary_bound : OPTIONAL date_time_or_event_occurrence; + duration : OPTIONAL time_measure_with_unit; +WHERE + WR1 : NOT (EXISTS(secondary_bound) AND EXISTS(duration)); + WR2 : EXISTS(primary_bound) OR EXISTS(secondary_bound); +END_ENTITY; + + +ENTITY time_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TIME_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY time_unit + SUBTYPE OF (named_unit); +WHERE + WR1 : (SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 0.0) AND (SELF\named_unit.dimensions.time_exponent = 1.0) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0); +END_ENTITY; + + +ENTITY tolerance_value; + lower_bound : measure_with_unit; + upper_bound : measure_with_unit; +DERIVE + lbvc : REAL := lower_bound\measure_with_unit.value_component; + ubvc : REAL := upper_bound\measure_with_unit.value_component; +WHERE + WR1 : ubvc > lbvc; + WR2 : upper_bound\measure_with_unit.unit_component = + lower_bound\measure_with_unit.unit_component; +END_ENTITY; + + +ENTITY tolerance_zone + SUBTYPE OF (shape_aspect); + defining_tolerance : SET [1:?] OF geometric_tolerance; + form : tolerance_zone_form; +END_ENTITY; + + +ENTITY tolerance_zone_definition + SUPERTYPE OF (ONEOF (projected_zone_definition, runout_zone_definition)); + zone : tolerance_zone; + boundaries : SET [1:?] OF shape_aspect; +END_ENTITY; + + +ENTITY tolerance_zone_form; + name : label; +END_ENTITY; + + +ENTITY topological_representation_item + SUPERTYPE OF (ONEOF (vertex, edge, face_bound, face, vertex_shell, wire_shell, connected_edge_set, connected_face_set, (loop ANDOR path))) + SUBTYPE OF (representation_item); +END_ENTITY; + + +ENTITY toroidal_surface + SUBTYPE OF (elementary_surface); + major_radius : positive_length_measure; + minor_radius : positive_length_measure; +END_ENTITY; + + +ENTITY torus + SUBTYPE OF (geometric_representation_item); + position : axis1_placement; + major_radius : positive_length_measure; + minor_radius : positive_length_measure; +WHERE + WR1 : major_radius > minor_radius; +END_ENTITY; + + +ENTITY total_runout_tolerance + SUBTYPE OF (geometric_tolerance_with_datum_reference); +WHERE + WR1 : SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) <= 2; +END_ENTITY; + + +ENTITY track_blended_solid + ABSTRACT SUPERTYPE OF (track_blended_solid_with_end_conditions) + SUBTYPE OF (edge_blended_solid); +WHERE + WR1 : check_continuous_edges(SELF\edge_blended_solid.blended_edges); +END_ENTITY; + + +ENTITY track_blended_solid_with_end_conditions + SUBTYPE OF (track_blended_solid); + end_conditions : LIST [2:2] OF blend_end_condition_select; +WHERE + WR1 : SIZEOF(TYPEOF(SELF) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_CONSTANT_RADIUS_EDGE_BLEND', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_VARIABLE_RADIUS_EDGE_BLEND', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_CHAMFERED_EDGES']) = 1; + WR2 : NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX' IN TYPEOF(end_conditions[1])) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX' IN TYPEOF(end_conditions[2]))); + WR3 : NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX' IN TYPEOF(end_conditions[1])) + AND (NOT ((end_conditions[1] + :=: SELF\edge_blended_solid.blended_edges[1].edge_start) + XOR (end_conditions[1] + :=: SELF\edge_blended_solid.blended_edges[1].edge_end)))); + WR4 : NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX' IN TYPEOF(end_conditions[2])) + AND (NOT ((end_conditions[2] + :=: SELF\edge_blended_solid.blended_edges[HIINDEX( + SELF\edge_blended_solid.blended_edges)].edge_start) + XOR (end_conditions[2] + :=: SELF\edge_blended_solid.blended_edges[HIINDEX( + SELF\edge_blended_solid.blended_edges)].edge_end)))); +END_ENTITY; + + +ENTITY transformation_with_derived_angle + SUPERTYPE OF (ONEOF (draped_defined_transformation, laid_defined_transformation)) + SUBTYPE OF (item_defined_transformation); + SELF\item_defined_transformation.transform_item_1 : angle_direction_reference_with_a2p3d_select; + SELF\item_defined_transformation.transform_item_2 : axis2_placement_3d; +DERIVE + orientation_angle : plane_angle_measure := derive_angle ( + SELF\item_defined_transformation.transform_item_1, + SELF\item_defined_transformation.transform_item_2); +WHERE + WR1 : (SELF\item_defined_transformation.transform_item_1\ + axis2_placement_3d.p[3].direction_ratios[1] = + SELF\item_defined_transformation.transform_item_2\ + axis2_placement_3d.p[3].direction_ratios[1]) + AND + (SELF\item_defined_transformation.transform_item_1\ + axis2_placement_3d.p[3].direction_ratios[2] = + SELF\item_defined_transformation.transform_item_2\ + axis2_placement_3d.p[3].direction_ratios[2]) + AND + (SELF\item_defined_transformation.transform_item_1\ + axis2_placement_3d.p[3].direction_ratios[3] = + SELF\item_defined_transformation.transform_item_2\ + axis2_placement_3d.p[3].direction_ratios[3]); +END_ENTITY; + + +ENTITY trimmed_curve + SUBTYPE OF (bounded_curve); + basis_curve : curve; + trim_1 : SET [1:2] OF trimming_select; + trim_2 : SET [1:2] OF trimming_select; + sense_agreement : BOOLEAN; + master_representation : trimming_preference; +WHERE + WR1 : (HIINDEX(trim_1) = 1) OR (TYPEOF(trim_1[1]) <> TYPEOF(trim_1[2])); + WR2 : (HIINDEX(trim_2) = 1) OR (TYPEOF(trim_2[1]) <> TYPEOF(trim_2[2])); +END_ENTITY; + + +ENTITY two_direction_repeat_factor + SUBTYPE OF (one_direction_repeat_factor); + second_repeat_factor : vector; +END_ENTITY; + + +ENTITY type_qualifier; + name : label; +END_ENTITY; + + +ENTITY unary_generic_expression + ABSTRACT SUPERTYPE + SUBTYPE OF (generic_expression); + operand : generic_expression; +END_ENTITY; + + +ENTITY unary_numeric_expression + ABSTRACT SUPERTYPE + SUBTYPE OF (numeric_expression, unary_generic_expression); + SELF\unary_generic_expression.operand : numeric_expression; +END_ENTITY; + + +ENTITY uncertainty_assigned_representation + SUBTYPE OF (representation); + uncertainty : SET [1:?] OF uncertainty_measure_with_unit; +END_ENTITY; + + +ENTITY uncertainty_measure_with_unit + SUBTYPE OF (measure_with_unit); + name : label; + description : OPTIONAL text; +WHERE + WR1 : valid_measure_value (SELF\measure_with_unit.value_component); +END_ENTITY; + + +ENTITY uncertainty_qualifier + SUPERTYPE OF (ONEOF (standard_uncertainty, qualitative_uncertainty)); + measure_name : label; + description : text; +END_ENTITY; + + +ENTITY uniform_curve + SUBTYPE OF (b_spline_curve); +END_ENTITY; + + +ENTITY uniform_resource_identifier + SUBTYPE OF (descriptive_representation_item); +END_ENTITY; + + +ENTITY uniform_surface + SUBTYPE OF (b_spline_surface); +END_ENTITY; + + +ENTITY usage_association + SUBTYPE OF (action_method_relationship); + SELF\action_method_relationship.related_method : information_usage_right; + SELF\action_method_relationship.relating_method : information_usage_right; +DERIVE + related : information_usage_right := SELF\action_method_relationship.related_method; + relating : information_usage_right := SELF\action_method_relationship.relating_method; +END_ENTITY; + + +ENTITY user_defined_curve_font + SUBTYPE OF (curve_style_font, mapped_item); +END_ENTITY; + + +ENTITY user_defined_marker + SUBTYPE OF (mapped_item, pre_defined_marker); +END_ENTITY; + + +ENTITY user_defined_terminator_symbol + SUBTYPE OF (mapped_item, pre_defined_symbol); +END_ENTITY; + + +ENTITY user_selected_elements + SUBTYPE OF (representation_item); + picked_items : SET [1:?] OF representation_item; +END_ENTITY; + + +ENTITY user_selected_shape_elements + SUBTYPE OF (user_selected_elements); +WHERE + WR1 : SIZEOF(QUERY(q <* + SELF\user_selected_elements.picked_items | NOT + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_REPRESENTATION_ITEM' + IN TYPEOF(q)))) = 0; +END_ENTITY; + + +ENTITY value_range + SUBTYPE OF (compound_representation_item); +WHERE + WR1 : ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'SET_REPRESENTATION_ITEM' IN TYPEOF ( item_element ) ) AND value_range_wr1 ( item_element ); + WR2 : value_range_wr2 ( item_element ); + WR3 : value_range_wr3 ( item_element ); +END_ENTITY; + + +ENTITY value_representation_item + SUBTYPE OF (representation_item); + value_component : measure_value; +WHERE + WR1 : SIZEOF (QUERY (rep <* using_representations (SELF) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GLOBAL_UNIT_ASSIGNED_CONTEXT' + IN TYPEOF (rep.context_of_items) + ))) = 0; +END_ENTITY; + + +ENTITY variable_semantics + ABSTRACT SUPERTYPE; +END_ENTITY; + + +ENTITY variational_representation_item + ABSTRACT SUPERTYPE OF (auxiliary_geometric_representation_item) + SUBTYPE OF (representation_item); +WHERE + WR1 : SIZEOF(QUERY(q <* using_representations(SELF) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VARIATIONAL_REPRESENTATION' + IN TYPEOF(q)))) = 0; + WR2 : SIZEOF(QUERY(q <* using_representations(SELF) | + NOT (SELF IN q.items))) = 0; +END_ENTITY; + + +ENTITY vector + SUBTYPE OF (geometric_representation_item); + orientation : direction; + magnitude : length_measure; +WHERE + WR1 : magnitude >= 0.0; +END_ENTITY; + + +ENTITY vector_style + SUBTYPE OF (curve_style, pre_defined_terminator_symbol); +END_ENTITY; + + +ENTITY velocity_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VELOCITY_UNIT' IN TYPEOF (SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY velocity_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = + dimensional_exponents ( 1.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0 ); +END_ENTITY; + + +ENTITY versioned_action_request; + id : identifier; + version : label; + purpose : text; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY vertex + SUBTYPE OF (topological_representation_item); +END_ENTITY; + + +ENTITY vertex_loop + SUBTYPE OF (loop); + loop_vertex : vertex; +END_ENTITY; + + +ENTITY vertex_point + SUBTYPE OF (vertex, geometric_representation_item); + vertex_geometry : point; +END_ENTITY; + + +ENTITY vertex_shell + SUBTYPE OF (topological_representation_item); + vertex_shell_extent : vertex_loop; +END_ENTITY; + + +ENTITY view_volume + SUBTYPE OF (founded_item); + projection_type : central_or_parallel; + projection_point : cartesian_point; + view_plane_distance : length_measure; + front_plane_distance : length_measure; + front_plane_clipping : BOOLEAN; + back_plane_distance : length_measure; + back_plane_clipping : BOOLEAN; + view_volume_sides_clipping : BOOLEAN; + view_window : planar_box; +END_ENTITY; + + +ENTITY visual_appearance_representation + SUBTYPE OF (representation); +WHERE + WR1 : ( {3<= SIZEOF ( SELF.items ) <=9} ) AND ( SIZEOF ( QUERY ( + i <* items | ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF ( i ) ) AND ( + i.name IN [ 'colour id' , 'colour name' , 'lustre' , 'pattern' , 'transparency', 'orientation'] ) ) + ) + SIZEOF ( QUERY ( i <* items | ( SIZEOF ( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'MEASURE_REPRESENTATION_ITEM' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'VALUE_RANGE']* TYPEOF ( i ) ) =1 ) + AND ( i.name IN ['refraction index' , 'opacity'] ) ) + ) + SIZEOF ( QUERY ( i <* items | ( + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'DOCUMENT_FILE' IN TYPEOF ( i ) ) + AND ( i.name IN [ 'texture map' ] ) ) ) + = SIZEOF ( SELF.items ) ); + WR2 : SIZEOF ( QUERY ( i <* SELF.items | i.name = 'colour id' )) =1; + WR3 : SIZEOF ( QUERY ( i <* SELF.items | i.name ='lustre' ) )=1; + WR4 : SIZEOF ( QUERY ( i <* SELF.items | i.name = 'colour name') ) <=1; + WR5 : SIZEOF ( QUERY ( i <* SELF.items | i.name ='pattern' ) )<=1; + WR6 : SIZEOF ( QUERY ( i <* SELF.items | i.name ='transparency') ) <=1; + WR7 : SIZEOF ( QUERY ( i <* SELF.items | i.name = 'texture map') ) <=1; + WR8 : SIZEOF ( QUERY ( i <* SELF.items | i.name ='refraction index' ) )<=1; + WR9 : SIZEOF ( QUERY ( i <* SELF.items | i.name ='opacity') ) <=1; + WR10 : SIZEOF ( QUERY ( i <* SELF.items | i.name ='orientation') ) <=1; + WR11 : ( SIZEOF ( USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) ) =1 ) AND ( SIZEOF ( QUERY ( pdr + <* USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) | SIZEOF ( QUERY ( gpa <* USEDIN ( + pdr. definition , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'GENERAL_PROPERTY_ASSOCIATION.'+ + 'DERIVED_DEFINITION' ) | ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'GENERAL_PROPERTY' IN TYPEOF ( gpa. base_definition ) ) AND + ( gpa. base_definition.name ='surface_condition' ) ) ) =1 )) =1 ); +END_ENTITY; + + +ENTITY volume_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VOLUME_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY volume_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = + dimensional_exponents ( 3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ); +END_ENTITY; + + +ENTITY week_of_year_and_day_date + SUBTYPE OF (date); + week_component : week_in_year_number; + day_component : OPTIONAL day_in_week_number; +END_ENTITY; + + +ENTITY wire_shell + SUBTYPE OF (topological_representation_item); + wire_shell_extent : SET [1:?] OF loop; +WHERE + WR1 : NOT mixed_loop_type_set(wire_shell_extent); +END_ENTITY; + + +ENTITY year_month + SUBTYPE OF (date); + month_component : month_in_year_number; +END_ENTITY; + + +ENTITY zone_structural_makeup + SUPERTYPE OF (ONEOF ((smeared_material_definition AND thickness_laminate_table), (smeared_material_definition AND percentage_laminate_table), thickness_laminate_table, percentage_laminate_table, smeared_material_definition)) + SUBTYPE OF (laminate_table); +END_ENTITY; + + +RULE alternative_solution_requires_solution_definition FOR (product_definition_formation); + LOCAL + solution_versions: SET OF product_definition_formation := []; + END_LOCAL; + solution_versions := QUERY( pdf <* product_definition_formation | + SIZEOF( QUERY( prpc <* USEDIN(pdf.of_product, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF' + '.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | + prpc.name = 'alternative solution')) = 1); +WHERE + WR1 : SIZEOF( QUERY( pdf <* solution_versions | + SIZEOF( QUERY( pd <* USEDIN(pdf, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF' + '.PRODUCT_DEFINITION.FORMATION') | + pd.frame_of_reference.name = 'alternative definition')) <> 1))= 0; +END_RULE; + +RULE application_protocol_definition_required FOR (application_context); + +WHERE + WR1 : SIZEOF( QUERY( ac <* application_context | + (SIZEOF (QUERY (apd <* USEDIN(ac,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.APPLICATION_PROTOCOL_DEFINITION.APPLICATION') | + apd.application_interpreted_model_schema_name = 'ap203_configuration_controlled_3d_design_of_mechanical_parts_and_assemblies' + )) > 0) + )) > 0; +END_RULE; + +RULE breakdown_element_requires_product_definition FOR (product_definition_formation); + +WHERE + WR1 : SIZEOF ( QUERY ( pdf <* product_definition_formation | + ( SIZEOF ( QUERY ( prpc <* USEDIN ( pdf.of_product , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS' ) | + prpc.name = 'functionality' ) ) = 1 ) AND + ( SIZEOF ( QUERY ( pd <* USEDIN ( pdf ,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION.FORMATION') | + pd.frame_of_reference.name = 'functional definition' ) ) <1 ) ) ) = 0; + WR2 : SIZEOF ( QUERY ( pdf <* product_definition_formation | + ( SIZEOF ( QUERY ( prpc <* USEDIN ( pdf.of_product , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS' ) | + prpc.name = 'conceptual design' ) ) = 1 ) AND + ( SIZEOF (QUERY ( pd <* USEDIN ( pdf , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION.FORMATION' ) | + pd.frame_of_reference.name = 'conceptual definition' ) ) <1) ) ) = 0; +END_RULE; + +RULE compatible_dimension FOR (cartesian_point, direction, representation_context, geometric_representation_context); + +WHERE + WR1 : SIZEOF(QUERY(x <* cartesian_point| SIZEOF(QUERY + (y <* geometric_representation_context | item_in_context(x,y) AND + (HIINDEX(x.coordinates) <> y.coordinate_space_dimension))) > 0 )) =0; + WR2 : SIZEOF(QUERY(x <* direction | SIZEOF( QUERY + (y <* geometric_representation_context | item_in_context(x,y) AND + (HIINDEX(x.direction_ratios) <> y.coordinate_space_dimension))) + > 0 )) = 0; +END_RULE; + +RULE component_class_for_assembly_select FOR (composite_assembly_sequence_definition, next_assembly_usage_occurrence, product_related_product_category); + LOCAL + i,j,k : INTEGER :=0; + dkuhr : LOGICAL :=TRUE; + nnauo : INTEGER :=0; + nprpc : INTEGER :=0; + rp : product; + END_LOCAL; + REPEAT i:= LOINDEX (composite_assembly_sequence_definition) TO + HIINDEX (composite_assembly_sequence_definition); + nnauo := 0; + REPEAT j:= LOINDEX (next_assembly_usage_occurrence) TO + HIINDEX (next_assembly_usage_occurrence); + IF (composite_assembly_sequence_definition[i] = + next_assembly_usage_occurrence[j].relating_product_definition) THEN + rp := next_assembly_usage_occurrence[j].related_product_definition. + formation.of_product; + nprpc := 0; + REPEAT k:= LOINDEX (product_related_product_category) TO + HIINDEX (product_related_product_category); + IF ((rp IN product_related_product_category[k].products) AND + (product_related_product_category[k].name IN ['ply', + 'ply laminate', 'filament laminate', 'processed core', + 'composite assembly'])) THEN + nprpc := nprpc + 1; + END_IF; + END_REPEAT; + IF (nprpc = 1) THEN + nnauo := nnauo + 1; + ELSE + dkuhr := FALSE; + ESCAPE; + END_IF; + END_IF; + END_REPEAT; + IF (dkuhr = FALSE) THEN + ESCAPE; + END_IF; + IF(nnauo = 0) THEN + dkuhr := FALSE; + ESCAPE; + END_IF; + END_REPEAT; +WHERE + WR1 : dkuhr; +END_RULE; + +RULE consistent_uncertainty FOR (global_uncertainty_assigned_context, qualified_representation_item, uncertainty_assigned_representation); + +WHERE + WR1 : SIZEOF ( QUERY ( guac <* global_uncertainty_assigned_context | + SIZEOF ( QUERY ( u1 <* guac.uncertainty | + SIZEOF ( QUERY ( u2 <* guac.uncertainty | u2.name = u1.name ) ) >1 ) ) >0 ) ) = 0; + WR2 : SIZEOF ( QUERY ( uar <* uncertainty_assigned_representation | + SIZEOF ( QUERY ( u1<* uar.uncertainty | + SIZEOF ( QUERY ( u2 <* uar.uncertainty | u2.name = u1.name ) ) >1 ) ) >0 ) ) = 0; + WR3 : SIZEOF ( QUERY ( qri <* qualified_representation_item | + SIZEOF ( QUERY ( u1 <* qri.qualifiers | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF' + '.UNCERTAINTY_QUALIFIER' IN TYPEOF ( u1 ) ) AND + ( SIZEOF ( QUERY ( u2 <* qri.qualifiers | + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF' + '.UNCERTAINTY_QUALIFIER' IN TYPEOF ( u2 ) ) AND + ( u2\uncertainty_qualifier.measure_name = u1\uncertainty_qualifier.measure_name ) ) + ) >1 ) ) ) >0 ) ) = 0; +END_RULE; + +RULE constraint_definition_requires_constraint_category FOR (product_definition); + LOCAL + constraint_definitions: SET OF product_definition := []; + END_LOCAL; + constraint_definitions := QUERY( pd <* product_definition | + (pd.frame_of_reference.name = 'design constraint definition')); +WHERE + WR1 : SIZEOF ( QUERY ( pd <* constraint_definitions | + ( SIZEOF ( QUERY ( prpc <* USEDIN ( pd.formation.of_product , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS' ) | + prpc. name ='requirement' ) ) =0 ) ) ) =0; +END_RULE; + +RULE design_constraint_requires_product_definition FOR (product_definition_formation); + +WHERE + WR1 : SIZEOF ( QUERY ( pdf <* product_definition_formation | ( + SIZEOF ( QUERY ( prpc <* USEDIN ( pdf.of_product , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS' ) | + prpc.name = 'requirement' ) ) >0 ) AND + ( SIZEOF ( QUERY ( pd <* USEDIN ( pdf , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION.FORMATION') | + pd.frame_of_reference.name = 'design constraint definition' ) ) <1 ) ) ) = 0; +END_RULE; + +RULE draughting_model_items_constraint FOR (draughting_model); + +WHERE + WR1 : SIZEOF(QUERY(dm <* draughting_model | + NOT(SIZEOF(QUERY(it1 <* dm\representation.items | + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_OCCURRENCE' IN TYPEOF(it1)) + AND + NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DRAUGHTING_ANNOTATION_OCCURRENCE' IN TYPEOF(it1))) + )) = 0) + )) = 0; + WR2 : SIZEOF(QUERY(dm <* draughting_model | + NOT(SIZEOF(QUERY(it1 <* dm\representation.items | + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_CALLOUT' IN TYPEOF(it1)) + AND + NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_ELEMENTS' IN TYPEOF(it1))) + )) = 0) + )) = 0; +END_RULE; + +RULE external_version_assignments_are_valid FOR (applied_external_identification_assignment); + +WHERE + WR1 : SIZEOF(QUERY(aia <* applied_external_identification_assignment | + NOT external_version_assignment_is_valid(aia)))=0; +END_RULE; + +RULE material_for_coating_layer FOR (shape_aspect); + LOCAL + coating_layers: SET OF shape_aspect := []; + END_LOCAL; + coating_layers:= QUERY( r <* shape_aspect | + (r.name = 'coating layer') ); +WHERE + WR1 : SIZEOF( QUERY( r <* coating_layers | + SIZEOF(USEDIN(r , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MATERIAL_DESIGNATION.DEFINITIONS'))<>1 + )) = 0; +END_RULE; + +RULE plib_property_reference_requires_name_scope FOR (externally_defined_general_property); + LOCAL + known_sourced_properties : SET OF externally_defined_general_property; + END_LOCAL; + known_sourced_properties := QUERY( edc <* externally_defined_general_property | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'KNOWN_SOURCE' IN TYPEOF(edc.source) ); +WHERE + WR1 : SIZEOF ( QUERY ( edgp <* known_sourced_properties | + ( SIZEOF ( QUERY ( edir <* USEDIN ( edgp, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'EXTERNALLY_DEFINED_ITEM_RELATIONSHIP.RELATING_ITEM' )| + ( edir.name = 'name scope' ) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'EXTERNALLY_DEFINED_CLASS' IN TYPEOF ( edir.related_item ) ) AND + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'KNOWN_SOURCE' IN TYPEOF ( edir.related_item.source ) ) ) ) <>1 ) ) ) = 0; +END_RULE; + +RULE plib_property_reference_requires_version FOR (externally_defined_general_property); + LOCAL + plib_properties : SET OF externally_defined_general_property := []; + END_LOCAL; + plib_properties := QUERY ( edgp <* externally_defined_general_property | + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'KNOWN_SOURCE' IN TYPEOF ( edgp.source ) ) AND + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'KNOWN_SOURCE' + '.NAME' = 'ISO 13584 library' ) ); +WHERE + WR1 : SIZEOF( QUERY( edgp <* plib_properties | + (SIZEOF( QUERY( edir <* USEDIN(edgp, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT.ITEMS') | + (edir.role.name = 'version') )) <> 1) )) = 0; +END_RULE; + +RULE ply_reference FOR (ply_laminate_sequence_definition, next_assembly_usage_occurrence, product_related_product_category); + LOCAL + i,j,k : INTEGER; + dkuhr : LOGICAL := TRUE; + nnauo : INTEGER; + nprpc : INTEGER := 0; + rp : product; + END_LOCAL; + REPEAT i:= LOINDEX (ply_laminate_sequence_definition) TO + HIINDEX (ply_laminate_sequence_definition); + nnauo := 0; + REPEAT j:= LOINDEX (next_assembly_usage_occurrence) TO + HIINDEX (next_assembly_usage_occurrence); + IF (ply_laminate_sequence_definition[i] = + next_assembly_usage_occurrence[j].relating_product_definition) THEN + rp := next_assembly_usage_occurrence[j].related_product_definition. + formation.of_product; + nprpc := 0; + REPEAT k:= LOINDEX (product_related_product_category) TO + HIINDEX (product_related_product_category); + IF ((product_related_product_category[k].name = 'ply') AND + (rp IN product_related_product_category[k].products)) THEN + nprpc := nprpc + 1; + END_IF; + END_REPEAT; + IF (nprpc = 1) THEN + nnauo := nnauo + 1; + ELSE + dkuhr := FALSE; + ESCAPE; + END_IF; + END_IF; + END_REPEAT; + IF (dkuhr = FALSE) THEN + ESCAPE; + END_IF; + IF(nnauo = 0) THEN + dkuhr := FALSE; + ESCAPE; + END_IF; + END_REPEAT; +WHERE + WR1 : dkuhr; +END_RULE; + +RULE ply_stock_material_select FOR (product_related_product_category, make_from_usage_option); + LOCAL + i,j,k,kp : INTEGER; + dkuhr : LOGICAL; + nmfuo : INTEGER; + nprpc : INTEGER := 0; + rp : product; + END_LOCAL; + + dkuhr := TRUE; + REPEAT kp:= LOINDEX (product_related_product_category) TO + HIINDEX (product_related_product_category); + + IF (product_related_product_category[kp].name = 'ply') THEN + REPEAT i:= LOINDEX (product_related_product_category[kp].products) TO + HIINDEX (product_related_product_category[kp].products); + + nmfuo := 0; + REPEAT j:= LOINDEX (make_from_usage_option) TO + HIINDEX (make_from_usage_option); + + rp := make_from_usage_option[j].related_product_definition. + formation.of_product; + + IF (product_related_product_category[kp].products[i] = rp) THEN + + REPEAT k:= LOINDEX (product_related_product_category) TO + HIINDEX (product_related_product_category); + + IF ((rp IN product_related_product_category[k].products) AND + (product_related_product_category[k].name IN + ['isotropic material', 'filament assembly', + 'discontinuous fiber assembly'])) THEN + nprpc := nprpc + 1; + END_IF; + + END_REPEAT; + + IF (nprpc = 1) THEN + nmfuo := nmfuo + 1; + ELSE + dkuhr := FALSE; + ESCAPE; + END_IF; + + END_IF; + + END_REPEAT; + + IF (dkuhr = FALSE) THEN + ESCAPE; + END_IF; + IF(nmfuo <> 1) THEN + dkuhr := FALSE; + ESCAPE; + END_IF; + + END_REPEAT; + END_IF; + + END_REPEAT; +WHERE + WR1 : dkuhr; +END_RULE; + +RULE product_concept_feature_requires_category FOR (product_concept_feature); + +WHERE + WR1 : SIZEOF ( QUERY ( pcf <* product_concept_feature | +(SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'INCLUSION_PRODUCT_CONCEPT_FEATURE', +'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONDITIONAL_CONCEPT_FEATURE'] * TYPEOF(pcf)) = 0) AND +(SIZEOF ( QUERY ( aga <* USEDIN ( pcf , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'APPLIED_GROUP_ASSIGNMENT.' + 'ITEMS' ) | +( aga.role.name = 'specification category member' ) AND +('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'PRODUCT_CONCEPT_FEATURE_CATEGORY' IN TYPEOF ( aga.assigned_group )))) <>1 ) ) ) = 0; +END_RULE; + +RULE product_definition_replacement_requires_effectivity_assignment FOR (product_definition_relationship); + +WHERE + WR1 : SIZEOF( QUERY( pdr <* product_definition_relationship | + (pdr.name = 'definition replacement') AND + (SIZEOF( USEDIN(pdr,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.APPLIED_EFFECTIVITY_ASSIGNMENT.ITEMS') ) = 0) )) + = 0; +END_RULE; + +RULE restrict_alternative_definition FOR (product_definition); + LOCAL + solution_definitions: SET OF product_definition := []; + END_LOCAL; + solution_definitions := QUERY( pd <* product_definition | + (pd.frame_of_reference.name = 'alternative definition')); +WHERE + WR1 : SIZEOF ( QUERY ( pd <* solution_definitions | + ( SIZEOF ( QUERY ( pdr <* USEDIN ( pd , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF' + '.PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION' ) | + pdr.name = 'solution alternative definition' ) ) <>1 ) ) ) = 0; + WR2 : SIZEOF ( QUERY ( pd <* solution_definitions | + NOT ( pd.name IN ['technical' , 'supplier' , 'technical supplier' , ''] ) ) ) = 0; + WR3 : SIZEOF ( QUERY ( pd <* solution_definitions | + ( pd.name IN ['supplier' , 'technical supplier'] ) AND ( + SIZEOF ( QUERY ( aoa <* USEDIN ( pd.formation , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF' + '.APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS' ) | + aoa.role.name = 'supplier' )) <>1 ) )) = 0; +END_RULE; + +RULE restrict_assembly_category FOR (product_definition); + LOCAL + assembly_definitions: SET OF product_definition := []; + END_LOCAL; + assembly_definitions := QUERY( pd <* product_definition | + SIZEOF( QUERY( pdca <* USEDIN( pd, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.DEFINITION') | + pdca.frame_of_reference.name= 'assembly definition')) > 0 ); +WHERE + WR1 : SIZEOF( QUERY( pd <* assembly_definitions | + NOT ('assembly' IN categories_of_product(pd.formation.of_product)) ))= 0; +END_RULE; + +RULE restrict_centre_of_mass_representation FOR (representation); + +WHERE + WR1 : SIZEOF ( QUERY ( r <* representation | + ( r.name ='centre of mass' ) AND + ( ( SIZEOF ( r.items ) <>1 ) OR + (SIZEOF ( QUERY ( i <* r.items | + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'POINT' IN TYPEOF ( i ) ) AND + ( i.name = 'centre point' ) )) <>1 ) ) ) ) + =0; +END_RULE; + +RULE restrict_classification_assignments FOR (applied_classification_assignment); + +WHERE + WR1 : SIZEOF(QUERY(aia <* applied_classification_assignment | + NOT class_assignment_is_valid(aia)))=0; +END_RULE; + +RULE restrict_collection_category FOR (product_definition); + LOCAL + collection_definitions: SET OF product_definition := []; + END_LOCAL; + collection_definitions := QUERY( pd <* product_definition | + SIZEOF( QUERY( pdca <* USEDIN( pd, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF' + '.PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.DEFINITION') | + pdca.frame_of_reference.name= 'collection definition')) > 0 ); +WHERE + WR1 : SIZEOF( QUERY( pd <* collection_definitions | + NOT ('collection' IN categories_of_product(pd.formation.of_product)) ))= 0; +END_RULE; + +RULE restrict_concept_feature_operator FOR (concept_feature_operator); + +WHERE + WR1 : SIZEOF ( QUERY ( cfo <* concept_feature_operator | NOT + ( cfo.name IN ['and' , 'or' , 'oneof' , 'not' , 'implication'] ) ) ) = 0; + WR2 : SIZEOF ( QUERY ( cfo <* concept_feature_operator | (cfo.name = 'implication' ) AND + ( SIZEOF ( QUERY (cfrwc <* USEDIN ( cfo , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION.' + + 'CONDITIONAL_OPERATOR' ) | + SIZEOF ( QUERY ( ccf <* USEDIN( cfrwc , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONDITIONAL_CONCEPT_FEATURE.CONDITION' ) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'INCLUSION_PRODUCT_CONCEPT_FEATURE' IN TYPEOF ( ccf )))) >0 )) >0 ))) = 0; + WR3 : SIZEOF( QUERY (cfo <* concept_feature_operator | (cfo.name = 'not') + AND (SIZEOF(QUERY(cfrwc <* USEDIN(cfo, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION.CONDITIONAL_OPERATOR') | + cfrwc.related_product_concept_feature :<>: cfrwc.relating_product_concept_feature)) >0 ))) = 0; +END_RULE; + +RULE restrict_configuration_design_for_class_breakdown_association FOR (configuration_design); + +WHERE + WR1 : SIZEOF ( QUERY ( cd <* configuration_design | + ( cd.name ='functionality' ) AND + ( NOT ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF ( cd. design ) ) OR + ( cd.design\product_definition.frame_of_reference.name<> 'functional definition' ) ) + ) ) =0; + WR2 : SIZEOF ( QUERY ( cd <* configuration_design | + ( cd.name='realization' ) AND + ( NOT ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF ( cd.design ) ) OR + ( cd.design\product_definition.frame_of_reference.name<> 'conceptual definition' ) ) + ) ) =0; + WR3 : SIZEOF ( QUERY ( cd <* configuration_design | + ( cd.name IN ['functionality' , 'realization'] ) AND + ( NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_CLASS' IN TYPEOF ( cd.configuration.item_concept ) ) ) + ) ) =0; +END_RULE; + +RULE restrict_configuration_design_for_design_constraint FOR (configuration_design); + +WHERE + WR1 : SIZEOF ( QUERY (cd <* configuration_design | + (cd.name = 'design constraint usage') AND + (NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF ( cd.design ) ) OR + (cd.design\product_definition.frame_of_reference.name <> 'design constraint definition')))) = 0; +END_RULE; + +RULE restrict_group_relationship_for_classification_hierarchy FOR (group_relationship); + +WHERE + WR1 : SIZEOF( QUERY( gr <* group_relationship | + (gr\group_relationship.name = 'class hierarchy') AND + (NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CLASS' IN TYPEOF(gr\group_relationship.related_group)) OR + NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CLASS' IN TYPEOF(gr\group_relationship.relating_group))) )) = 0; +END_RULE; + +RULE restrict_group_relationship_for_specification_category FOR (group_relationship); + +WHERE + WR1 : SIZEOF( QUERY( gr <* group_relationship | + (gr.name = 'specification category hierarchy') AND + (NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_CONCEPT_FEATURE_CATEGORY' IN TYPEOF(gr.related_group)) + OR NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_CONCEPT_FEATURE_CATEGORY' IN TYPEOF(gr.relating_group))) )) = 0; +END_RULE; + +RULE restrict_language_assignment_per_attribute FOR (attribute_language_assignment); + +WHERE + WR1 : SIZEOF ( QUERY ( ala1 <* attribute_language_assignment | + SIZEOF(QUERY( it <* ala1.items | + SIZEOF ( QUERY ( ala2 <* USEDIN ( it ,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS' ) | + ( ala1\attribute_classification_assignment.attribute_name = ala2\attribute_classification_assignment.attribute_name ) AND + ( ala1\attribute_classification_assignment.assigned_class :=: ala2\attribute_classification_assignment.assigned_class ) + )) >1 + )) >0 + )) =0; +END_RULE; + +RULE restrict_part_occurrence FOR (product_definition); + LOCAL + part_occurrences: SET OF product_definition := QUERY(pd <* product_definition | + ( pd.frame_of_reference.name = 'part occurrence' )); + END_LOCAL; +WHERE + WR1 : SIZEOF ( QUERY ( pd <* part_occurrences | + ( NOT( pd.name IN + ['single instance' , 'selected instance' ,'quantified instance' , 'specified instance' ] ) ) ) ) = 0; + WR2 : SIZEOF ( QUERY ( pd <* part_occurrences | + (SIZEOF ( QUERY ( pdr <* USEDIN ( pd , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION' ) | + pdr.name = 'definition usage' ) ) <>1 ) AND + ( SIZEOF ( QUERY ( cd <* USEDIN ( pd , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONFIGURATION_DESIGN.DESIGN' ) | + ( cd.name = 'occurrence usage definition' ) AND + ( NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'PRODUCT_IDENTIFICATION' IN TYPEOF( cd.configuration ) ) ) ) ) <>1 ) ) ) = 0; + WR3 : SIZEOF ( QUERY ( pd <* part_occurrences | + (SIZEOF ( QUERY ( cd <* USEDIN ( pd , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION' ) | + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' +'PRODUCT_DEFINITION_USAGE' IN TYPEOF ( cd ) ) ) ) = 0 )AND + ( SIZEOF ( USEDIN ( pd , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'PRODUCT_DEFINITION_OCCURRENCE_RELATIONSHIP.OCCURRENCE' ) ) = 0 ) ) ) = 0; + WR4 : SIZEOF ( QUERY ( pd <* part_occurrences | + ( pd.name = 'selected instance' ) AND + NOT valid_selected_instance_representation(pd) ))=0; + WR5 : SIZEOF ( QUERY ( pd <* part_occurrences | + ( pd.name = 'quantified instance' ) AND + ( SIZEOF ( QUERY (ppd <* USEDIN ( pd , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' +'PROPERTY_DEFINITION.DEFINITION' ) | + ( ppd.name ='occurrence quantity' ) AND + ( SIZEOF ( QUERY ( pdr <*USEDIN ( ppd , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' +'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION' ) | ( + pdr.used_representation.name = 'quantity' ) AND + (SIZEOF ( pdr.used_representation.items ) = 1 ) AND + (SIZEOF ( QUERY ( i <* pdr.used_representation.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'MEASURE_REPRESENTATION_ITEM' IN TYPEOF ( i ) ) AND + ( i.name = 'quantity measure' ) ) ) = 1)))= 1 )))= 0 )))= 0; + WR6 : SIZEOF ( QUERY ( pd <* part_occurrences | + ( pd.name = 'specified instance' ) AND + ( SIZEOF ( QUERY ( + pdor <* USEDIN ( pd , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' +'PRODUCT_DEFINITION_OCCURRENCE_RELATIONSHIP.OCCURRENCE' ) | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' +'SPECIFIED_HIGHER_USAGE_OCCURRENCE' IN TYPEOF ( pdor.occurrence_usage ) ) ) = 0 ) ) ) = 0; +END_RULE; + +RULE restrict_part_occurrence_category FOR (product_definition); + LOCAL + part_occurrences: SET OF product_definition := QUERY( pd <* product_definition |( + pd.frame_of_reference.name = 'part occurrence')); + END_LOCAL; +WHERE + WR1 : SIZEOF( QUERY( pd <* part_occurrences | + (SIZEOF( QUERY( prpc <* USEDIN(pd.formation.of_product, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | + prpc.name IN ['part','raw material','tool'] )) = 0 ) )) = 0; +END_RULE; + +RULE restrict_product_definitions_for_base_element FOR (product_definition_relationship); + +WHERE + WR1 : SIZEOF ( QUERY ( pdr <* product_definition_relationship | + ( pdr. name = 'solution alternative definition' ) AND + ( NOT( pdr. relating_product_definition.frame_of_reference.name + IN [ 'alternative definition' , 'functional definition' , 'conceptual definition' ] ) OR + ( pdr.related_product_definition.frame_of_reference.name<>'alternative definition' ) ) ) ) =0; +END_RULE; + +RULE restrict_product_definitions_for_collection FOR (product_definition_relationship); + +WHERE + WR1 : SIZEOF ( QUERY ( pdr <* product_definition_relationship | + ( pdr. name = 'collection membership' ) AND + ( ( pdr.relating_product_definition.frame_of_reference.name<>'part definition' ) OR + ( pdr.related_product_definition.frame_of_reference.name<>'part occurrence' ) OR + ( SIZEOF ( QUERY ( pdca <* USEDIN (pdr.relating_product_definition , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF' + '.PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.DEFINITION') | + ( pdca.role.name = 'part definition type' ) AND + ( pdca.frame_of_reference.name = 'collection definition' ) )) =0 ) ) ) ) =0; +END_RULE; + +RULE restrict_product_definitions_for_definition_usage FOR (product_definition_relationship); + +WHERE + WR1 : SIZEOF ( QUERY ( pdr <* product_definition_relationship | + ( pdr.name = 'definition usage' ) AND + ( ( pdr.relating_product_definition.frame_of_reference.name<> 'part definition' ) OR + ( pdr.related_product_definition.frame_of_reference.name<>'part occurrence' )))) =0; +END_RULE; + +RULE restrict_product_definitions_for_design_constraint_association FOR (product_definition_relationship); + +WHERE + WR1 : SIZEOF ( QUERY ( pdr <* product_definition_relationship | + ( pdr. name = 'design constraint association' ) AND + ( (pdr. relating_product_definition.frame_of_reference.name<>'design constraint definition' ) OR + NOT ( pdr.related_product_definition.frame_of_reference.name IN + ['alternative definition' , 'functional definition' ,'conceptual definition' ] ) ) ) ) =0; +END_RULE; + +RULE restrict_product_definitions_for_part_definition_relationship FOR (product_definition_relationship); + +WHERE + WR1 : SIZEOF ( QUERY ( pdr <* product_definition_relationship | + ( pdr.name IN [ 'geometrical relationship' , 'definition replacement' ] ) AND + ( ( pdr.relating_product_definition.frame_of_reference.name <>'part definition' ) OR + ( pdr.related_product_definition.frame_of_reference.name <>'part definition' ) ) ) ) =0; +END_RULE; + +RULE restrict_representation_for_surface_condition FOR (property_definition_representation); + +WHERE + WR1 : SIZEOF(QUERY(pdr <* property_definition_representation | + NOT surface_condition_correlation(pdr.definition, pdr.used_representation) ))=0; +END_RULE; + +RULE restrict_treatment_result FOR (representation); + LOCAL + treatment_results: SET OF representation := []; + END_LOCAL; + treatment_results:= QUERY( r <* representation | + (r.name = 'treatment result') ); +WHERE + WR1 : (SIZEOF( QUERY( r <* treatment_results | (SIZEOF(r.items) > 2) )) = 0) AND + (SIZEOF( QUERY( r <* treatment_results | + (SIZEOF( QUERY( i <* r.items | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)) )) > 0) )) = 0); + WR2 : SIZEOF( QUERY( r <* treatment_results | + (SIZEOF( QUERY( i <* r.items | i.name = 'result' )) = 0) )) = 0; + WR3 : SIZEOF( QUERY( r <* treatment_results | + (SIZEOF( QUERY( i <* r.items | i.name = 'purpose' )) > 1) )) = 0; +END_RULE; + +RULE selected_instance_usage_requires_representation FOR (assembly_component_usage); + LOCAL + selected_instance_usages: SET OF assembly_component_usage := QUERY( acr <* assembly_component_usage| + (acr.name = 'selected instance usage')); + END_LOCAL; +WHERE + WR1 : SIZEOF ( QUERY ( acr <* selected_instance_usages | + NOT valid_selected_instance_representation(acr) ))=0; +END_RULE; + +RULE solution_definition_requires_solution_category FOR (product_definition); + LOCAL + solution_definitions: SET OF product_definition := []; + END_LOCAL; + solution_definitions := QUERY( pd <* product_definition | + (pd.frame_of_reference.name = 'alternative definition')); +WHERE + WR1 : SIZEOF( QUERY( pd <* solution_definitions | + (SIZEOF( QUERY( prpc <* USEDIN(pd.formation.of_product, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF' + '.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | + prpc.name = 'alternative solution')) = 0 ) )) = 0; +END_RULE; + +RULE stock_material_reference FOR (percentage_ply_definition, make_from_usage_option, product_related_product_category); + LOCAL + i,j,k : INTEGER; + dkuhr : LOGICAL; + nmfuo : INTEGER; + nprpc : INTEGER; + rp : product; + END_LOCAL; + dkuhr := TRUE; + REPEAT i:= LOINDEX (percentage_ply_definition) TO + HIINDEX (percentage_ply_definition); + nmfuo := 0; + REPEAT j:= LOINDEX (make_from_usage_option) TO + HIINDEX (make_from_usage_option); + IF (percentage_ply_definition[i] = + make_from_usage_option[j].relating_product_definition) THEN + rp := make_from_usage_option[j].related_product_definition. + formation.of_product; + nprpc := 0; + REPEAT k:= LOINDEX (product_related_product_category) TO + HIINDEX (product_related_product_category); + IF ((rp IN product_related_product_category[k].products) AND + (product_related_product_category[k].name IN + ['anisotropic material', 'isotropic material', 'stock core', + 'filament assembly', 'discontinuous fiber assembly'])) THEN + nprpc := nprpc + 1; + END_IF; + END_REPEAT; + IF (nprpc = 1) THEN + nmfuo := nmfuo + 1; + ELSE + dkuhr := FALSE; + ESCAPE; + END_IF; + END_IF; + END_REPEAT; + IF (dkuhr = FALSE) THEN + ESCAPE; + END_IF; + IF(nmfuo = 0) THEN + dkuhr := FALSE; + ESCAPE; + END_IF; + END_REPEAT; +WHERE + WR1 : dkuhr; +END_RULE; + +RULE styled_curve FOR (styled_item); + +WHERE + WR1 : SIZEOF( QUERY( si <* styled_item | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE' IN TYPEOF (si.item)) AND (SIZEOF (QUERY (psa <* si.styles | (SIZEOF (QUERY (cs <* psa.styles | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' IN TYPEOF (cs)) )) > 0) )) <> 1) )) = 0; +END_RULE; + +RULE subtype_exclusiveness_geometric_tolerance FOR (geometric_tolerance); + +WHERE + WR1 : SIZEOF(QUERY (gt <* geometric_tolerance | NOT (type_check_function(gt, ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANGULARITY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CIRCULAR_RUNOUT_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COAXIALITY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONCENTRICITY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CYLINDRICITY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FLATNESS_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE_PROFILE_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PARALLELISM_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PERPENDICULARITY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITION_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ROUNDNESS_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRAIGHTNESS_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_PROFILE_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SYMMETRY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TOTAL_RUNOUT_TOLERANCE'] , 3)))) = 0; +END_RULE; + +RULE subtype_exclusiveness_representation_item FOR (representation_item); + +WHERE + WR1 : SIZEOF(QUERY (cri <* representation_item | + NOT (type_check_function(cri,['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VALUE_REPRESENTATION_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOUND_REPRESENTATION_ITEM'] , 3)))) = 0; +END_RULE; + +RULE subtype_mandatory_geometric_tolerance FOR (geometric_tolerance); + +WHERE + WR1 : SIZEOF(QUERY (gt <* geometric_tolerance | NOT (type_check_function(gt, ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANGULARITY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CIRCULAR_RUNOUT_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COAXIALITY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONCENTRICITY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CYLINDRICITY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FLATNESS_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE_PROFILE_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PARALLELISM_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PERPENDICULARITY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITION_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ROUNDNESS_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRAIGHTNESS_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_PROFILE_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SYMMETRY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TOTAL_RUNOUT_TOLERANCE'] , 0)))) = 0; +END_RULE; + +RULE text_font_usage FOR (externally_defined_text_font, pre_defined_text_font); + +WHERE + WR1 : SIZEOF (QUERY (pdtf <* pre_defined_text_font | SIZEOF (USEDIN (pdtf, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_LITERAL.FONT')) = 0 )) = 0; + WR2 : SIZEOF (QUERY (edtf <* externally_defined_text_font | SIZEOF (USEDIN (edtf, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_LITERAL.FONT')) = 0 )) = 0; +END_RULE; + +RULE thickness_laminate_table_component_select FOR (thickness_laminate_definition, next_assembly_usage_occurrence, product_related_product_category); + LOCAL + i,j,k : INTEGER; + dkuhr : LOGICAL; + nnauo : INTEGER; + nprpc : INTEGER; + rp : product; + END_LOCAL; + dkuhr := TRUE; + REPEAT i:= LOINDEX (thickness_laminate_definition) TO + HIINDEX (thickness_laminate_definition); + nnauo := 0; + REPEAT j:= LOINDEX (next_assembly_usage_occurrence) TO + HIINDEX (next_assembly_usage_occurrence); + IF (thickness_laminate_definition[i] = + next_assembly_usage_occurrence[j].relating_product_definition) THEN + rp := next_assembly_usage_occurrence[j].related_product_definition. + formation.of_product; + nprpc := 0; + REPEAT k:= LOINDEX (product_related_product_category) TO + HIINDEX (product_related_product_category); + IF ((rp IN product_related_product_category[k].products) AND + (product_related_product_category[k].name IN + ['ply', 'filament laminate', 'processed core'])) THEN + nprpc := nprpc + 1; + END_IF; + END_REPEAT; + IF (nprpc = 1) THEN + nnauo := nnauo + 1; + ELSE + dkuhr := FALSE; + ESCAPE; + END_IF; + END_IF; + END_REPEAT; + IF (dkuhr = FALSE) THEN + ESCAPE; + END_IF; + IF (nnauo <> 1) THEN + dkuhr := FALSE; + ESCAPE; + END_IF; + END_REPEAT; +WHERE + WR1 : dkuhr; +END_RULE; + +RULE validate_dependently_instantiable_entity_data_types FOR (action_method_role, annotation_text, attribute_value_role, auxiliary_geometric_representation_item, binary_numeric_expression, boolean_expression, bounded_curve, bounded_surface, cartesian_transformation_operator, comparison_expression, concept_feature_relationship, concept_feature_relationship_with_condition, connected_edge_set, document_usage_constraint, edge_blended_solid, effectivity_context_role, event_occurrence_role, explicit_procedural_representation_item_relationship, expression, founded_item, generic_expression, generic_variable, indirectly_selected_elements, interval_expression, literal_number, local_time, loop, modified_solid_with_placed_configuration, multiple_arity_boolean_expression, multiple_arity_generic_expression, multiple_arity_numeric_expression, numeric_expression, one_direction_repeat_factor, oriented_open_shell, oriented_path, positioned_sketch, procedural_representation, procedural_representation_sequence, product_definition_context_role, product_definition_effectivity, runout_zone_orientation, simple_boolean_expression, simple_generic_expression, simple_numeric_expression, solid_with_depression, solid_with_hole, solid_with_pocket, solid_with_protrusion, solid_with_shape_element_pattern, solid_with_slot, swept_area_solid, symbol_target, tolerance_zone_form, two_direction_repeat_factor, unary_generic_expression, unary_numeric_expression, user_selected_elements, variational_representation_item, view_volume); +LOCAL + number_of_input_instances : INTEGER; + previous_in_chain : LIST OF GENERIC := []; + set_of_input_types : SET OF STRING := []; + all_instances : SET OF GENERIC := []; +END_LOCAL; + + all_instances := all_instances + action_method_role + annotation_text + attribute_value_role + auxiliary_geometric_representation_item + binary_numeric_expression + boolean_expression + bounded_curve + bounded_surface + cartesian_transformation_operator + comparison_expression + concept_feature_relationship + concept_feature_relationship_with_condition + connected_edge_set + document_usage_constraint + edge_blended_solid + effectivity_context_role + event_occurrence_role + explicit_procedural_representation_item_relationship + expression + founded_item + generic_expression + generic_variable + indirectly_selected_elements + interval_expression + literal_number + local_time + loop + modified_solid_with_placed_configuration + multiple_arity_boolean_expression + multiple_arity_generic_expression + multiple_arity_numeric_expression + numeric_expression + one_direction_repeat_factor + oriented_open_shell + oriented_path + positioned_sketch + procedural_representation + procedural_representation_sequence + product_definition_context_role + product_definition_effectivity + runout_zone_orientation + simple_boolean_expression + simple_generic_expression + simple_numeric_expression + solid_with_depression + solid_with_hole + solid_with_pocket + solid_with_protrusion + solid_with_shape_element_pattern + solid_with_slot + swept_area_solid + symbol_target + tolerance_zone_form + two_direction_repeat_factor + unary_generic_expression + unary_numeric_expression + user_selected_elements + variational_representation_item + view_volume;-- +number_of_input_instances := SIZEOF(all_instances); +(* Collect all type strings of all FOR instances into one set. *) +REPEAT i:=1 TO number_of_input_instances; + set_of_input_types := set_of_input_types + TYPEOF(all_instances[i]); +END_REPEAT; +WHERE + WR1 : dependently_instantiated(all_instances, set_of_input_types, + previous_in_chain); +END_RULE; + +FUNCTION acyclic + (arg1: generic_expression; arg2: SET [0:?] OF generic_expression) : BOOLEAN; +LOCAL + result: BOOLEAN := TRUE; +END_LOCAL; + +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SIMPLE_GENERIC_EXPRESSION' + IN TYPEOF (arg1)) +THEN + RETURN (TRUE); +END_IF; + +IF arg1 IN arg2 +THEN + RETURN (FALSE); +END_IF; + +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.UNARY_GENERIC_EXPRESSION' + IN TYPEOF (arg1) +THEN + RETURN + (acyclic(arg1\unary_generic_expression.operand,arg2+[arg1])); +END_IF; + +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BINARY_GENERIC_EXPRESSION' + IN TYPEOF (arg1) +THEN + RETURN + (acyclic(arg1\binary_generic_expression.operands[1],arg2+[arg1]) + AND + acyclic(arg1\binary_generic_expression.operands[2],arg2+[arg1])); +END_IF; + +IF +'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MULTIPLE_ARITY_GENERIC_EXPRESSION' + IN TYPEOF (arg1) +THEN + result := TRUE; + REPEAT i := 1 TO + SIZEOF (arg1\multiple_arity_generic_expression.operands); + result := result AND + acyclic(arg1\multiple_arity_generic_expression.operands[i], arg2+[arg1]); + END_REPEAT; + + RETURN (result); +END_IF; + RETURN (result); +END_FUNCTION; + +FUNCTION acyclic_composite_text + (start_composite: composite_text; child_text: SET [1:?] OF text_or_character) : LOGICAL; + LOCAL + i : INTEGER; + local_composite_text : SET [0:?] OF composite_text; + local_annotation_text : SET [0:?] OF annotation_text; + local_children : SET [0:?] OF text_or_character; + END_LOCAL; + + local_composite_text := QUERY (child <* child_text | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_TEXT' + IN TYPEOF (child))); + + IF (SIZEOF (local_composite_text) > 0) + THEN + REPEAT i := 1 TO HIINDEX (local_composite_text); + IF (start_composite :=: local_composite_text[i]) + THEN + RETURN (FALSE); + END_IF; + END_REPEAT; + END_IF; + + local_children := child_text; + + IF (SIZEOF (local_composite_text)) > 0 THEN + REPEAT i := 1 TO HIINDEX (local_composite_text); + local_children := local_children + + local_composite_text[i].collected_text; + END_REPEAT; + END_IF; + + local_annotation_text := QUERY (child <* child_text | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT' + IN TYPEOF (child))); + + IF (SIZEOF (local_annotation_text) > 0) THEN + REPEAT i := 1 TO HIINDEX (local_annotation_text); + local_children := local_children + + QUERY (item <* local_annotation_text[i]\mapped_item. + mapping_source.mapped_representation.items | + SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_TEXT'] * + TYPEOF(item)) > 0); + END_REPEAT; + END_IF; + + IF (local_children :<>: child_text) THEN + RETURN (acyclic_composite_text (start_composite, local_children)); + ELSE + RETURN (TRUE); + END_IF; +END_FUNCTION; + +FUNCTION acyclic_curve_replica + (rep: curve_replica; parent: curve) : BOOLEAN; +IF NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA') IN TYPEOF(parent)) THEN + RETURN (TRUE); + END_IF; + (* Return TRUE if the parent is not of type curve_replica *) + IF (parent :=: rep) THEN + RETURN (FALSE); + (* Return FALSE if the parent is the same curve_replica, otherwise, + call function again with the parents own parent_curve. *) + ELSE + RETURN(acyclic_curve_replica(rep, + parent\curve_replica.parent_curve)); + END_IF; +END_FUNCTION; + +FUNCTION acyclic_mapped_item_usage + (rep: representation) : BOOLEAN; + LOCAL + items : SET OF representation_item; + END_LOCAL; + + items := QUERY (item <* rep.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF (item)); + IF SIZEOF (items) = 0 + THEN + RETURN (FALSE); + ELSE + REPEAT i := 1 TO HIINDEX (items); + IF items[i]\mapped_item.mapping_source.mapped_representation :=: rep + THEN + RETURN (TRUE); + ELSE + RETURN (acyclic_mapped_item_usage(items[i]\ + mapped_item.mapping_source.mapped_representation)); + END_IF; + END_REPEAT; + RETURN (FALSE); + END_IF; +END_FUNCTION; + +FUNCTION acyclic_mapped_representation + (mi: mapped_item) : BOOLEAN; + LOCAL + rms : SET OF representation_map; + mis : SET OF mapped_item; + rs1, rs2 : SET OF representation; + END_LOCAL; + + rs1 := using_representations(mi); + rs2 := []; + -- loop as long as there are elements in rs1 + REPEAT WHILE SIZEOF(rs1) > 0; + REPEAT i := 1 TO HIINDEX(rs1); + -- Determine the set of representation_map that reference the parent_set + rms := bag_to_set(USEDIN(rs1[i], 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION_MAP.MAPPED_REPRESENTATION')); + IF SIZEOF(rms) > 0 THEN + REPEAT j := 1 TO HIINDEX(rms); + mis := bag_to_set(USEDIN(rms[i], 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM.MAPPING_SOURCE')); + IF SIZEOF(mis) > 0 THEN + REPEAT j := 1 TO HIINDEX(mis); + -- check mis members for instance equal with mi. If so then there is a cycle + IF mis[i] :=: mi THEN + RETURN (FALSE); + END_IF; + rs2 := rs2 + using_representations(mis[i]); + END_REPEAT; + END_IF; + END_REPEAT; + END_IF; + END_REPEAT; + rs1 := rs2; + rs2 := []; + END_REPEAT; + RETURN (TRUE); +END_FUNCTION; + +FUNCTION acyclic_point_replica + (rep: point_replica; parent: point) : BOOLEAN; +IF NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_REPLICA') IN TYPEOF(parent)) THEN + RETURN (TRUE); + END_IF; + (* Return TRUE if the parent is not of type point_replica *) + IF (parent :=: rep) THEN + RETURN (FALSE); + (* Return FALSE if the parent is the same point_replica, otherwise, + call function again with the parents own parent_pt. *) + ELSE RETURN(acyclic_point_replica(rep, parent\point_replica.parent_pt)); + END_IF; +END_FUNCTION; + +FUNCTION acyclic_product_definition_relationship + (relation: product_definition_relationship; relatives: SET [1:?] OF product_definition; specific_relation: STRING) : BOOLEAN; + LOCAL + x : SET OF product_definition_relationship; + END_LOCAL; + + IF relation.relating_product_definition IN relatives THEN + RETURN (FALSE); + END_IF; + x := QUERY(pd <* bag_to_set(USEDIN(relation.relating_product_definition, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'PRODUCT_DEFINITION_RELATIONSHIP.' + 'RELATED_PRODUCT_DEFINITION')) | specific_relation IN TYPEOF(pd)); + REPEAT i := 1 TO HIINDEX(x); + IF NOT acyclic_product_definition_relationship(x[i], relatives + relation.relating_product_definition, specific_relation) THEN + RETURN (FALSE); + END_IF; + END_REPEAT; + RETURN (TRUE); +END_FUNCTION; + +FUNCTION acyclic_representation_relationship + (relation: representation_relationship; relatives: SET [1:?] OF representation; specific_relation: STRING) : BOOLEAN; + LOCAL + x : SET OF representation_relationship; + END_LOCAL; + + IF relation.rep_1 IN relatives THEN + RETURN (FALSE); + END_IF; + x := QUERY(r <* bag_to_set(USEDIN(relation.rep_1, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'REPRESENTATION_RELATIONSHIP.' + 'REP_2')) | specific_relation IN TYPEOF(r)); + REPEAT i := 1 TO HIINDEX(x); + IF NOT acyclic_representation_relationship(x[i], relatives + relation.rep_1, specific_relation) THEN + RETURN (FALSE); + END_IF; + END_REPEAT; + RETURN (TRUE); +END_FUNCTION; + +FUNCTION acyclic_solid_replica + (rep: solid_replica; parent: solid_model) : BOOLEAN; +IF NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_REPLICA') IN TYPEOF(parent)) THEN + RETURN (TRUE); + END_IF; + (* Return TRUE if the parent is not of type solid_replica. *) + IF (parent :=: rep) THEN + RETURN (FALSE); + (* Return FALSE if the parent is the same solid_replica, otherwise, + call function again with the parents own parent_solid. *) + ELSE RETURN(acyclic_solid_replica(rep, + parent\solid_replica.parent_solid)); + END_IF; +END_FUNCTION; + +FUNCTION acyclic_surface_replica + (rep: surface_replica; parent: surface) : BOOLEAN; +IF NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_REPLICA') IN TYPEOF(parent)) THEN + RETURN (TRUE); + END_IF; + (* Return TRUE if the parent is not of type surface_replica *) + IF (parent :=: rep) THEN + RETURN (FALSE); + (* Return FALSE if the parent is the same surface_replica, otherwise, + call function again with the parents own parent_surface. *) + ELSE RETURN(acyclic_surface_replica(rep, + parent\surface_replica.parent_surface)); + END_IF; +END_FUNCTION; + +FUNCTION advanced_face_properties + (testface: face) : BOOLEAN; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF(testface) THEN + RETURN (TRUE); +END_IF; +(* if testface is a subface recursively test the parent_face, +return FALSE for all other types of face *) +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SUBFACE' IN TYPEOF(testface)) THEN + RETURN(advanced_face_properties(testface\subface.parent_face)); + ELSE RETURN (FALSE); +END_IF; +END_FUNCTION; + +FUNCTION aspect_ratio + (p: planar_box) : positive_ratio_measure; +IF (p.size_in_x > 0.) AND (p.size_in_y > 0.) THEN + RETURN (p.size_in_x / p.size_in_y); + ELSE + RETURN (?); + END_IF; +END_FUNCTION; + +FUNCTION associated_surface + (arg: pcurve_or_surface) : surface; + LOCAL + surf : surface; + END_LOCAL; + + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF(arg) THEN + surf := arg\pcurve.basis_surface; + ELSE + surf := arg; + END_IF; + RETURN(surf); +END_FUNCTION; + +FUNCTION bag_to_set + (the_bag: BAG [0:?] OF GENERIC: intype) : SET [0:?] OF GENERIC: intype; + LOCAL + the_set : SET OF GENERIC:intype := []; + END_LOCAL; + + IF SIZEOF(the_bag) > 0 THEN + REPEAT i := 1 TO HIINDEX(the_bag); + the_set := the_set + the_bag[i]; + END_REPEAT; + END_IF; + RETURN (the_set); +END_FUNCTION; + +FUNCTION base_axis + (dim: INTEGER; axis1: direction; axis2: direction; axis3: direction) : LIST [2:3] OF direction; + LOCAL + u : LIST [2:3] OF direction; + factor : REAL; + d1, d2 : direction; + END_LOCAL; + + IF (dim = 3) THEN + d1 := NVL(normalise(axis3), dummy_gri || direction([0.0,0.0,1.0])); + d2 := first_proj_axis(d1,axis1); + u := [d2, second_proj_axis(d1,d2,axis2), d1]; + ELSE + IF EXISTS(axis1) THEN + d1 := normalise(axis1); + u := [d1, orthogonal_complement(d1)]; + IF EXISTS(axis2) THEN + factor := dot_product(axis2,u[2]); + IF (factor < 0.0) THEN + u[2].direction_ratios[1] := -u[2].direction_ratios[1]; + u[2].direction_ratios[2] := -u[2].direction_ratios[2]; + END_IF; + END_IF; + ELSE + IF EXISTS(axis2) THEN + d1 := normalise(axis2); + u := [orthogonal_complement(d1), d1]; + u[1].direction_ratios[1] := -u[1].direction_ratios[1]; + u[1].direction_ratios[2] := -u[1].direction_ratios[2]; + ELSE + u := [dummy_gri || direction([1.0, 0.0]), dummy_gri || + direction([0.0, 1.0])]; + END_IF; + END_IF; + END_IF; + RETURN(u); +END_FUNCTION; + +FUNCTION boolean_choose + (b: BOOLEAN; choice1: GENERIC: item; choice2: GENERIC: item) : GENERIC: item; +IF b THEN + RETURN (choice1); + ELSE + RETURN (choice2); + END_IF; +END_FUNCTION; + +FUNCTION build_2axes + (ref_direction: direction) : LIST [2:2] OF direction; + LOCAL + d : direction := NVL(normalise(ref_direction), + dummy_gri || direction([1.0,0.0])); + END_LOCAL; + + RETURN([d, orthogonal_complement(d)]); +END_FUNCTION; + +FUNCTION build_axes + (axis: direction; ref_direction: direction) : LIST [3:3] OF direction; + LOCAL + d1, d2 : direction; + END_LOCAL; + d1 := NVL(normalise(axis), dummy_gri || direction([0.0,0.0,1.0])); + d2 := first_proj_axis(d1, ref_direction); + RETURN([d2, normalise(cross_product(d1,d2))\vector.orientation, d1]); +END_FUNCTION; + +FUNCTION categories_of_product + (obj: product) : SET [0:?] OF STRING; +LOCAL + category_assignments: BAG OF product_category; + categories: SET OF STRING:=[]; +END_LOCAL; +category_assignments := USEDIN(obj, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS'); +REPEAT i := LOINDEX(category_assignments) TO HIINDEX(category_assignments) BY 1; + categories := categories + category_assignments[i].name; +END_REPEAT; +RETURN(categories); +END_FUNCTION; + +FUNCTION cc_design_person_and_organization_correlation + (e: cc_design_person_and_organization_assignment) : BOOLEAN; + LOCAL + po_role : STRING; + END_LOCAL; + po_role := e\person_and_organization_assignment.role.name; + CASE po_role OF + 'request_recipient' : IF SIZEOF (e.items) <> + SIZEOF (QUERY (x <* e.items | + SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'CHANGE_REQUEST', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'START_REQUEST'] * + TYPEOF (x)) = 1)) + THEN RETURN(FALSE); + END_IF; + 'initiator' : IF SIZEOF (e.items) <> + SIZEOF (QUERY (x <* e.items | + SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'CHANGE_REQUEST', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'START_REQUEST', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'START_WORK', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'CHANGE'] * + TYPEOF (x)) = 1)) + THEN RETURN(FALSE); + END_IF; + 'creator' : IF SIZEOF (e.items) <> + SIZEOF (QUERY (x <* e.items | + SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRODUCT_DEFINITION_FORMATION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRODUCT_DEFINITION'] * + TYPEOF (x)) = 1)) + THEN RETURN (FALSE); + END_IF; + 'part_supplier' : IF SIZEOF (e.items) <> + SIZEOF (QUERY (x <* e.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRODUCT_DEFINITION_FORMATION' + IN TYPEOF (x))) + THEN RETURN(FALSE); + END_IF; + 'design_supplier' : IF SIZEOF (e.items) <> + SIZEOF (QUERY (x <* e.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRODUCT_DEFINITION_FORMATION' + IN TYPEOF (x))) + THEN RETURN(FALSE); + END_IF; + 'design_owner' : IF SIZEOF (e.items) <> + SIZEOF (QUERY (x <* e.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT' + IN TYPEOF (x))) + THEN RETURN(FALSE); + END_IF; + 'configuration_manager' : IF SIZEOF (e.items) <> + SIZEOF (QUERY (x <* e.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'CONFIGURATION_ITEM' + IN TYPEOF (x))) + THEN RETURN(FALSE); + END_IF; + 'contractor' : IF SIZEOF (e.items) <> + SIZEOF (QUERY (x <* e.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONTRACT' + IN TYPEOF (x))) + THEN RETURN(FALSE); + END_IF; + 'classification_officer' : IF SIZEOF (e.items) <> + SIZEOF (QUERY (x <* e.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SECURITY_CLASSIFICATION' + IN TYPEOF (x))) THEN + RETURN(FALSE); + END_IF; + OTHERWISE : RETURN(TRUE); + END_CASE; + RETURN (TRUE); +END_FUNCTION; + +FUNCTION check_continuous_edges + (edges: LIST [0:?] OF UNIQUE edge_curve) : BOOLEAN; + LOCAL + i : INTEGER; + next_vertex : vertex; + END_LOCAL; + + -- first check whether there is only one edge in the list: in this + -- case there is no connectivity to be checked. + + IF (SIZEOF(edges) = 1) + THEN RETURN(TRUE); + END_IF; + + -- otherwise, establish the matching vertices of edges 1 and 2 in + -- the list, and determine the vertex of edge 2 to which edge 3, + -- must be connected, if there are more than two edges in the list. + + IF ((edges[2].edge_start :=: edges[1].edge_end) + XOR (edges[2].edge_start :=: edges[1].edge_start)) + THEN next_vertex := edges[2].edge_end; + ELSE + IF ((edges[2].edge_end :=: edges[1].edge_end) + XOR (edges[2].edge_end :=: edges[1].edge_start)) + THEN next_vertex := edges[2].edge_start; + ELSE RETURN(FALSE); -- no match between any vertices of edges 1 and 2 + END_IF; + END_IF; + + -- exit if there are only two edges and they are connected + + IF (SIZEOF(edges) = 2) + THEN RETURN(TRUE); + END_IF; + + -- otherwise, check that any remaining edges are connected in list order. + + REPEAT i := 3 TO HIINDEX(edges); + IF (edges[i].edge_start :=: next_vertex) + THEN next_vertex := edges[i].edge_end; + ELSE + IF (edges[i].edge_end :=: next_vertex) + THEN next_vertex := edges[i].edge_start; + ELSE RETURN(FALSE); -- no match is found. + END_IF; + END_IF; + END_REPEAT; + RETURN(TRUE); +END_FUNCTION; + +FUNCTION check_text_alignment + (ct: composite_text) : BOOLEAN; + LOCAL + a : SET OF text_alignment := []; + END_LOCAL; + + -- create a set of all the alignments + REPEAT i := 1 TO HIINDEX (ct.collected_text); + a := a + [ct.collected_text[i]\text_literal.alignment]; + END_REPEAT; + + -- if there is more than one element in the set + -- then not all alignments were the same + RETURN (SIZEOF(a) = 1); +END_FUNCTION; + +FUNCTION check_text_font + (ct: composite_text) : BOOLEAN; + LOCAL + f : SET OF font_select := []; + END_LOCAL; + + -- build a set of all the fonts + REPEAT i := 1 TO HIINDEX (ct.collected_text); + f := f + [ct.collected_text[i]\text_literal.font]; + END_REPEAT; + + -- if there is more than one element in the set + -- then not all fonts were the same + RETURN (SIZEOF(f) <= 1); +END_FUNCTION; + +FUNCTION class_assignment_is_valid + (aia: applied_classification_assignment) : BOOLEAN; +LOCAL + item: classification_item; + role: classification_role; +END_LOCAL; + +role:= aia\classification_assignment.role; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' +'CLASS_SYSTEM' IN TYPEOF(aia\classification_assignment.assigned_class)) THEN + IF(role\classification_role.name <> 'class system membership') THEN + RETURN(FALSE); + END_IF; + REPEAT i:=LOINDEX(aia\applied_classification_assignment.items) TO HIINDEX(aia\applied_classification_assignment.items); + item:= aia\applied_classification_assignment.items[i]; + + IF (SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CLASS_SYSTEM_ITEM'] * TYPEOF(item))=0) THEN +-- item invalid if item does not belong to the types that may have a class_system + RETURN(FALSE); + END_IF; + END_REPEAT; +END_IF; + +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' +'CHARACTERIZED_CLASS' IN TYPEOF(aia\classification_assignment.assigned_class)) THEN + IF NOT(role\classification_role.name IN ['definitional','non-definitional','']) THEN + RETURN(FALSE); + END_IF; + + + REPEAT i:=LOINDEX(aia\applied_classification_assignment.items) TO HIINDEX(aia\applied_classification_assignment.items); + item:= aia\applied_classification_assignment.items[i]; + + IF (SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CLASSIFIED_ITEM'] * TYPEOF(item))=0) THEN +-- item invalid if item does not belong to the types that may have a characterized_class + RETURN(FALSE); + END_IF; + END_REPEAT; +END_IF; + + IF + (role\classification_role.name = 'definitional') + THEN + IF NOT + (SIZEOF(QUERY(it <* aia\applied_classification_assignment.items | NOT + (SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION_FORMATION', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION'] * TYPEOF(it)) = 1) + )) = 0 ) + THEN + RETURN(FALSE); + END_IF; + END_IF; + +RETURN(TRUE); +END_FUNCTION; + +FUNCTION closed_shell_reversed + (a_shell: closed_shell) : oriented_closed_shell; + LOCAL + the_reverse : oriented_closed_shell; + END_LOCAL; + IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_CLOSED_SHELL' IN TYPEOF (a_shell) ) THEN + the_reverse := dummy_tri || + connected_face_set ( + a_shell\connected_face_set.cfs_faces) || + closed_shell () || oriented_closed_shell( + a_shell\oriented_closed_shell.closed_shell_element, + NOT(a_shell\oriented_closed_shell.orientation)); + ELSE + the_reverse := dummy_tri || + connected_face_set ( + a_shell\connected_face_set.cfs_faces) || + closed_shell () || oriented_closed_shell (a_shell, FALSE); + END_IF; + RETURN (the_reverse); +END_FUNCTION; + +FUNCTION compute_total_depth + (swsrh: solid_with_stepped_round_hole) : positive_length_measure; +LOCAL +i : positive_integer; +n : positive_integer := swsrh.segments; +td : positive_length_measure := swsrh.segment_depths[1]; +END_LOCAL; + +IF n = 1 +THEN RETURN(td); +ELSE + REPEAT i := 2 TO n; + td := td + swsrh.segment_depths[i]; + END_REPEAT; +END_IF; +RETURN(td); +END_FUNCTION; + +FUNCTION conditional_reverse + (p: BOOLEAN; an_item: reversible_topology) : reversible_topology; +IF p THEN + RETURN (an_item); + ELSE + RETURN (topology_reversed (an_item)); + END_IF; +END_FUNCTION; + +FUNCTION constraints_composite_curve_on_surface + (c: composite_curve_on_surface) : BOOLEAN; + LOCAL + n_segments : INTEGER := SIZEOF(c.segments); + END_LOCAL; + + REPEAT k := 1 TO n_segments; + IF (NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN + TYPEOF(c\composite_curve.segments[k].parent_curve))) AND + (NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE' IN + TYPEOF(c\composite_curve.segments[k].parent_curve))) AND + (NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_CURVE_ON_SURFACE' IN + TYPEOF(c\composite_curve.segments[k].parent_curve))) THEN + RETURN (FALSE); + END_IF; + END_REPEAT; + RETURN(TRUE); +END_FUNCTION; + +FUNCTION constraints_geometry_shell_based_surface_model + (m: shell_based_surface_model) : BOOLEAN; + LOCAL + result : BOOLEAN := TRUE; + END_LOCAL; + + REPEAT j := 1 TO SIZEOF(m.sbsm_boundary); + IF (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OPEN_SHELL' IN + TYPEOF(m.sbsm_boundary[j])) AND + (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CLOSED_SHELL' IN + TYPEOF(m.sbsm_boundary[j])))) + THEN + result := FALSE; + RETURN(result); + (* A surface model is composed of OPEN_ and CLOSED_SHELLs. *) + END_IF; + END_REPEAT; + RETURN(result); +END_FUNCTION; + +FUNCTION constraints_geometry_shell_based_wireframe_model + (m: shell_based_wireframe_model) : BOOLEAN; + LOCAL + result : BOOLEAN := TRUE; + END_LOCAL; + + REPEAT j := 1 TO SIZEOF(m.sbwm_boundary); + IF (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.WIRE_SHELL' IN + TYPEOF(m.sbwm_boundary[j])) AND + (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_SHELL' IN + TYPEOF(m.sbwm_boundary[j])))) + THEN + result := FALSE; + RETURN(result); + (* A wireframe model is composed of WIRE_ and VERTEX_SHELLs *) + END_IF; + END_REPEAT; + RETURN(result); +END_FUNCTION; + +FUNCTION constraints_param_b_spline + (degree: INTEGER; up_knots: INTEGER; up_cp: INTEGER; knot_mult: LIST [0:?] OF INTEGER; knots: LIST [0:?] OF parameter_value) : BOOLEAN; + LOCAL + result : BOOLEAN := TRUE; + k, sum : INTEGER; + END_LOCAL; + + (* Find sum of knot multiplicities. *) + sum := knot_mult[1]; + + REPEAT i := 2 TO up_knots; + sum := sum + knot_mult[i]; + END_REPEAT; + + (* Check limits holding for all B-spline parametrisations *) + IF (degree < 1) OR (up_knots < 2) OR (up_cp < degree) OR + (sum <> (degree + up_cp + 2)) THEN + result := FALSE; + RETURN(result); + END_IF; + + k := knot_mult[1]; + + IF (k < 1) OR (k > degree + 1) THEN + result := FALSE; + RETURN(result); + END_IF; + + REPEAT i := 2 TO up_knots; + IF (knot_mult[i] < 1) OR (knots[i] <= knots[i-1]) THEN + result := FALSE; + RETURN(result); + END_IF; + + k := knot_mult[i]; + + IF (i < up_knots) AND (k > degree) THEN + result := FALSE; + RETURN(result); + END_IF; + + IF (i = up_knots) AND (k > degree + 1) THEN + result := FALSE; + RETURN(result); + END_IF; + END_REPEAT; + RETURN(result); +END_FUNCTION; + +FUNCTION constraints_rectangular_composite_surface + (s: rectangular_composite_surface) : BOOLEAN; +REPEAT i := 1 TO s.n_u; + REPEAT j := 1 TO s.n_v; + IF NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_SURFACE' IN TYPEOF + (s.segments[i][j].parent_surface)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RECTANGULAR_TRIMMED_SURFACE' IN TYPEOF + (s.segments[i][j].parent_surface))) THEN + RETURN(FALSE); + END_IF; + END_REPEAT; + END_REPEAT; + + (* Check the transition codes, omitting the last row or column *) + REPEAT i := 1 TO s.n_u-1; + REPEAT j := 1 TO s.n_v; + IF s.segments[i][j].u_transition = discontinuous THEN + RETURN(FALSE); + END_IF; + END_REPEAT; + END_REPEAT; + + REPEAT i := 1 TO s.n_u; + REPEAT j := 1 TO s.n_v-1; + IF s.segments[i][j].v_transition = discontinuous THEN + RETURN(FALSE); + END_IF; + END_REPEAT; + END_REPEAT; + RETURN(TRUE); +END_FUNCTION; + +FUNCTION control_characters_free + (s: STRING) : BOOLEAN; + LOCAL + ch : STRING; + END_LOCAL; + + REPEAT i:=1 TO LENGTH(s); + ch := s[i]; + IF (ch = '\x9') OR (ch = '\xA') OR (ch = '\xD') THEN + RETURN(FALSE); + END_IF; + END_REPEAT; + RETURN (TRUE); +END_FUNCTION; + +FUNCTION cross_product + (arg1: direction; arg2: direction) : vector; + LOCAL + mag : REAL; + res : direction; + v1,v2 : LIST[3:3] OF REAL; + result : vector; + END_LOCAL; + + IF ( NOT EXISTS (arg1) OR (arg1.dim = 2)) OR + ( NOT EXISTS (arg2) OR (arg2.dim = 2)) THEN + RETURN(?); + ELSE + BEGIN + v1 := normalise(arg1).direction_ratios; + v2 := normalise(arg2).direction_ratios; + res := dummy_gri || direction([(v1[2]*v2[3] - v1[3]*v2[2]), + (v1[3]*v2[1] - v1[1]*v2[3]), (v1[1]*v2[2] - v1[2]*v2[1])]); + mag := 0.0; + REPEAT i := 1 TO 3; + mag := mag + res.direction_ratios[i]*res.direction_ratios[i]; + END_REPEAT; + IF (mag > 0.0) THEN + result := dummy_gri || vector(res, SQRT(mag)); + ELSE + result := dummy_gri || vector(arg1, 0.0); + END_IF; + RETURN(result); + END; + END_IF; +END_FUNCTION; + +FUNCTION curve_weights_positive + (b: rational_b_spline_curve) : BOOLEAN; + LOCAL + result : BOOLEAN := TRUE; + END_LOCAL; + + REPEAT i := 0 TO b.upper_index_on_control_points; + IF b.weights[i] <= 0.0 THEN + result := FALSE; + RETURN(result); + END_IF; + END_REPEAT; + RETURN(result); +END_FUNCTION; + +FUNCTION default_tolerance_table_cell_wr2 + (agg: compound_item_definition) : BOOLEAN; +BEGIN +IF SIZEOF(agg) <= 5 THEN + RETURN(TRUE); +ELSE + RETURN(FALSE); +END_IF; +END; +END_FUNCTION; + +FUNCTION default_tolerance_table_cell_wr3 + (agg: compound_item_definition) : BOOLEAN; +BEGIN +IF (SIZEOF(QUERY ( i <* agg | (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) + AND (i\representation_item.name = 'significant number of digits')) )) = 1) OR +((SIZEOF(QUERY ( i <* agg | (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND + (i\representation_item.name = 'lower limit')) )) = 1) AND +(SIZEOF( QUERY ( i <* agg | (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND + (i\representation_item.name = 'upper limit')) )) = 1)) THEN + RETURN(TRUE); +ELSE + RETURN(FALSE); +END_IF; +END; +END_FUNCTION; + +FUNCTION default_tolerance_table_cell_wr4 + (agg: compound_item_definition) : BOOLEAN; +BEGIN +IF (SIZEOF(QUERY ( i <* agg | (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND + (i\representation_item.name = 'plus minus tolerance value')) )) = 1) OR +((SIZEOF(QUERY ( i <* agg | (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND ( + i\representation_item.name = 'lower tolerance value')) )) = 1) AND +(SIZEOF( QUERY ( i <* agg | (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND ( + i\representation_item.name = 'upper tolerance value')) )) = 1)) THEN + RETURN(TRUE); +ELSE + RETURN(FALSE); +END_IF; +END; +END_FUNCTION; + +FUNCTION default_tolerance_table_cell_wr5 + (agg: compound_item_definition) : BOOLEAN; +BEGIN +IF (SIZEOF(QUERY ( i <* agg | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)) )) <= 1) AND +(SIZEOF(QUERY ( i <* agg | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)) )) = + SIZEOF(QUERY ( i <* agg | (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND + (i\representation_item.name = 'cell description'))) )) +THEN + RETURN(TRUE); +ELSE + RETURN(FALSE); +END_IF; +END; +END_FUNCTION; + +FUNCTION dependently_instantiated + (set_of_input_instances: SET [0:?] OF GENERIC: igen; set_of_input_types: SET [0:?] OF STRING; previous_in_chain: LIST [0:?] OF GENERIC: cgen) : BOOLEAN; +LOCAL + number_of_input_instances : INTEGER; + number_of_referring_instances : INTEGER; + bag_of_referring_instances : BAG OF GENERIC:igen := []; + dependently_instantiated_flag : BOOLEAN; + previous_in_chain_plus : LIST OF GENERIC:cgen := []; + result : BOOLEAN := true; + set_of_types : SET OF STRING := []; +END_LOCAL; + +IF EXISTS(set_of_input_instances) THEN + number_of_input_instances := SIZEOF(set_of_input_instances); + (* Add the declared type of bag_of_referring_instances to the set of + types of the REFERENCEd instances for the subset comparison later. + *) + set_of_input_types := set_of_input_types + 'GENERIC'; + REPEAT i:=1 TO number_of_input_instances; + (* Determine all references to the current input instance. *) + bag_of_referring_instances := USEDIN (set_of_input_instances[i] , ''); + IF EXISTS(bag_of_referring_instances) THEN + number_of_referring_instances := SIZEOF(bag_of_referring_instances); + dependently_instantiated_flag := false; + REPEAT j:=1 TO number_of_referring_instances; + (* Determine the type strings of the current referencing instance. + *) + set_of_types := TYPEOF(bag_of_referring_instances[j]); + (* If the referencing instance is of one of the types of the + only dependently instantiable select items, the current input + instance may still be invalidly instantiated. + Otherwise it is OK, and the next input instance is tested. + *) + IF set_of_types <= set_of_input_types THEN -- subset operator + (* The referring instance is of one of the restricted types. + However, it may itself be referred to by a valid instance; + then also the current instance would be valid. + Thus, call this function recursively with the referring + instance as input. + To avoid an infinite loop in case a set of instances + reference each other in a closed loop, test first whether + the current referencing instance is in the list of + previously processed chain members. + *) + IF NOT (bag_of_referring_instances[j] IN previous_in_chain) THEN + previous_in_chain_plus := previous_in_chain + + set_of_input_instances[i]; + IF dependently_instantiated([bag_of_referring_instances[j]], + set_of_input_types, + previous_in_chain_plus) THEN + dependently_instantiated_flag := true; + ESCAPE; -- dependently instantiated; next input instance + ELSE + (* Not dependently instantiated: go to next referring + instance. *) + SKIP; + END_IF; + END_IF; + ELSE + dependently_instantiated_flag := true; + ESCAPE; -- dependently instantiated; take next input instance + END_IF; + END_REPEAT; + IF NOT dependently_instantiated_flag THEN + RETURN(false); + END_IF; + ELSE + RETURN(false); -- not referenced at all => invalidly instantiated + END_IF; + END_REPEAT; +ELSE + RETURN(false); -- no input +END_IF; + +RETURN(true); +END_FUNCTION; + +FUNCTION derive_angle + (placement_1: axis2_placement_3d; placement_2: axis2_placement_3d) : plane_angle_measure; + LOCAL + v1 : direction; + v2 : direction; + mag_v1 : REAL; + mag_v2 : REAL; + theta : plane_angle_measure; + END_LOCAL; + v1 := placement_1.p[1]; + v2 := placement_2.p[1]; + mag_v1 := SQRT (v1.direction_ratios[1]*v1.direction_ratios[1] + + v1.direction_ratios[2]*v1.direction_ratios[2]); + mag_v2 := SQRT (v2.direction_ratios[1]*v2.direction_ratios[1] + + v2.direction_ratios[2]*v2.direction_ratios[2]); + IF ((mag_v1 = 0.0) OR (mag_v2 = 0.0)) THEN + theta := 0.0; + RETURN (theta); + END_IF; + theta := ACOS ((v1.direction_ratios[1]*v2.direction_ratios[1] + + v1.direction_ratios[2]*v2.direction_ratios[2]) / + (mag_v1*mag_v2)); + RETURN (theta); +END_FUNCTION; + +FUNCTION derive_dimensional_exponents + (x: unit) : dimensional_exponents; + LOCAL + result : dimensional_exponents := dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); + END_LOCAL; + + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DERIVED_UNIT' IN TYPEOF(x) THEN + REPEAT i := LOINDEX(x\derived_unit.elements) TO HIINDEX(x\derived_unit.elements); + result.length_exponent := result.length_exponent + + (x\derived_unit.elements[i]\derived_unit_element.exponent * + x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.length_exponent); + result.mass_exponent := result.mass_exponent + + (x\derived_unit.elements[i]\derived_unit_element.exponent * + x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.mass_exponent); + result.time_exponent := result.time_exponent + + (x\derived_unit.elements[i]\derived_unit_element.exponent * + x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.time_exponent); + result.electric_current_exponent := result.electric_current_exponent + + (x\derived_unit.elements[i]\derived_unit_element.exponent * + x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.electric_current_exponent); + result.thermodynamic_temperature_exponent := result.thermodynamic_temperature_exponent + + (x\derived_unit.elements[i]\derived_unit_element.exponent * + x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.thermodynamic_temperature_exponent); + result.amount_of_substance_exponent := result.amount_of_substance_exponent + + (x\derived_unit.elements[i]\derived_unit_element.exponent * + x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.amount_of_substance_exponent); + result.luminous_intensity_exponent := result.luminous_intensity_exponent + + (x\derived_unit.elements[i]\derived_unit_element.exponent * + x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.luminous_intensity_exponent); + END_REPEAT; + ELSE + result := x\named_unit.dimensions; + END_IF; + RETURN (result); +END_FUNCTION; + +FUNCTION dimension_of + (item: geometric_representation_item) : dimension_count; + LOCAL + x : SET OF representation; + y : representation_context; + dim : dimension_count; + END_LOCAL; + -- For cartesian_point, direction, or vector dimension is determined by + -- counting components. + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT' IN TYPEOF(item) THEN + dim := SIZEOF(item\cartesian_point.coordinates); + RETURN(dim); + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIRECTION' IN TYPEOF(item) THEN + dim := SIZEOF(item\direction.direction_ratios); + RETURN(dim); + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VECTOR' IN TYPEOF(item) THEN + dim := SIZEOF(item\vector.orientation\direction.direction_ratios); + RETURN(dim); + END_IF; + -- For all other types of geometric_representation_item dim is obtained + -- via context. + -- Find the set of representation in which the item is used. + + x := using_representations(item); + + -- Determines the dimension_count of the + -- geometric_representation_context. Note that the + -- RULE compatible_dimension ensures that the context_of_items + -- is of type geometric_representation_context and has + -- the same dimension_count for all values of x. + -- The SET x is non-empty since this is required by WR1 of + -- representation_item. + y := x[1].context_of_items; + dim := y\geometric_representation_context.coordinate_space_dimension; + RETURN (dim); +END_FUNCTION; + +FUNCTION dimensions_for_si_unit + (n: si_unit_name) : dimensional_exponents; +CASE n OF + metre: + RETURN (dimensional_exponents(1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)); + gram: + RETURN (dimensional_exponents(0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0)); + second: + RETURN (dimensional_exponents(0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0)); + ampere: + RETURN (dimensional_exponents(0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0)); + kelvin: + RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0)); + mole: + RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0)); + candela: + RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0)); + radian: + RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)); + steradian: + RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)); + hertz: + RETURN (dimensional_exponents(0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0)); + newton: + RETURN (dimensional_exponents(1.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0)); + pascal: + RETURN (dimensional_exponents(-1.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0)); + joule: + RETURN (dimensional_exponents(2.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0)); + watt: + RETURN (dimensional_exponents(2.0, 1.0, -3.0, 0.0, 0.0, 0.0, 0.0)); + coulomb: + RETURN (dimensional_exponents(0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0)); + volt: + RETURN (dimensional_exponents(2.0, 1.0, -3.0, -1.0, 0.0, 0.0, 0.0)); + farad: + RETURN (dimensional_exponents(-2.0, -1.0, 4.0, 1.0, 0.0, 0.0, 0.0)); + ohm: + RETURN (dimensional_exponents(2.0, 1.0, -3.0, -2.0, 0.0, 0.0, 0.0)); + siemens: + RETURN (dimensional_exponents(-2.0, -1.0, 3.0, 2.0, 0.0, 0.0, 0.0)); + weber: + RETURN (dimensional_exponents(2.0, 1.0, -2.0, -1.0, 0.0, 0.0, 0.0)); + tesla: + RETURN (dimensional_exponents(0.0, 1.0, -2.0, -1.0, 0.0, 0.0, 0.0)); + henry: + RETURN (dimensional_exponents(2.0, 1.0, -2.0, -2.0, 0.0, 0.0, 0.0)); + degree_Celsius: + RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0)); + lumen: + RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0)); + lux: + RETURN (dimensional_exponents(-2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0)); + becquerel: + RETURN (dimensional_exponents(0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0)); + gray: + RETURN (dimensional_exponents(2.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0)); + sievert: + RETURN (dimensional_exponents(2.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0)); + OTHERWISE: + RETURN (?); + END_CASE; +END_FUNCTION; + +FUNCTION dot_product + (arg1: direction; arg2: direction) : REAL; + LOCAL + scalar : REAL; + vec1, vec2: direction; + ndim : INTEGER; + END_LOCAL; + + IF NOT EXISTS (arg1) OR NOT EXISTS (arg2) THEN + scalar := ?; + (* When function is called with invalid data an indeterminate result + is returned *) + ELSE + IF (arg1.dim <> arg2.dim) THEN + scalar := ?; + (* When function is called with invalid data an indeterminate result + is returned *) + ELSE + BEGIN + vec1 := normalise(arg1); + vec2 := normalise(arg2); + ndim := arg1.dim; + scalar := 0.0; + REPEAT i := 1 TO ndim; + scalar := scalar + + vec1.direction_ratios[i]*vec2.direction_ratios[i]; + END_REPEAT; + END; + END_IF; + END_IF; + RETURN (scalar); +END_FUNCTION; + +FUNCTION edge_reversed + (an_edge: edge) : oriented_edge; + LOCAL + the_reverse : oriented_edge; + END_LOCAL; + + IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_EDGE' IN TYPEOF (an_edge) ) THEN + the_reverse := dummy_tri || + edge(an_edge.edge_end, an_edge.edge_start) || + oriented_edge(an_edge\oriented_edge.edge_element, + NOT (an_edge\oriented_edge.orientation)) ; + ELSE + the_reverse := dummy_tri || + edge(an_edge.edge_end, an_edge.edge_start) || + oriented_edge(an_edge, FALSE); + END_IF; + RETURN (the_reverse); +END_FUNCTION; + +FUNCTION external_version_assignment_is_valid + (aia: applied_external_identification_assignment) : BOOLEAN; + LOCAL + item: identification_item; + role: identification_role; + END_LOCAL; + role:= aia.role; + IF role.name='version' THEN + REPEAT i:=LOINDEX(aia.items) TO HIINDEX(aia.items); + item:= aia.items[i]; + IF (SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'EXTERNALLY_VERSIONED_ITEM']*TYPEOF(item))=0) THEN + -- item invalid if item does not belong to versionable types + RETURN(FALSE); + END_IF; + END_REPEAT; + RETURN(TRUE); + ELSE -- case where aia does not convey a version id + RETURN(TRUE); + END_IF; +END_FUNCTION; + +FUNCTION face_bound_reversed + (a_face_bound: face_bound) : face_bound; + LOCAL + the_reverse : face_bound ; + END_LOCAL; + IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_OUTER_BOUND' IN TYPEOF (a_face_bound) ) THEN + the_reverse := dummy_tri || + face_bound(a_face_bound\face_bound.bound, + NOT (a_face_bound\face_bound.orientation)) + || face_outer_bound() ; + ELSE + the_reverse := dummy_tri || + face_bound(a_face_bound.bound, NOT(a_face_bound.orientation)); + END_IF; + RETURN (the_reverse); +END_FUNCTION; + +FUNCTION face_reversed + (a_face: face) : oriented_face; + LOCAL + the_reverse : oriented_face ; + END_LOCAL; + IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_FACE' IN TYPEOF (a_face) ) THEN + the_reverse := dummy_tri || + face(set_of_topology_reversed(a_face.bounds)) || + oriented_face(a_face\oriented_face.face_element, + NOT (a_face\oriented_face.orientation)) ; + ELSE + the_reverse := dummy_tri || + face(set_of_topology_reversed(a_face.bounds)) || + oriented_face(a_face, FALSE) ; + END_IF; + RETURN (the_reverse); +END_FUNCTION; + +FUNCTION first_proj_axis + (z_axis: direction; arg: direction) : direction; + LOCAL + x_axis : direction; + v : direction; + z : direction; + x_vec : vector; + END_LOCAL; + + IF (NOT EXISTS(z_axis)) THEN + RETURN (?) ; + ELSE + z := normalise(z_axis); + IF NOT EXISTS(arg) THEN + IF ((z.direction_ratios <> [1.0,0.0,0.0]) AND + (z.direction_ratios <> [-1.0,0.0,0.0])) THEN + v := dummy_gri || direction([1.0,0.0,0.0]); + ELSE + v := dummy_gri || direction([0.0,1.0,0.0]); + END_IF; + ELSE + IF (arg.dim <> 3) THEN + RETURN (?) ; + END_IF; + IF ((cross_product(arg,z).magnitude) = 0.0) THEN + RETURN (?); + ELSE + v := normalise(arg); + END_IF; + END_IF; + x_vec := scalar_times_vector(dot_product(v, z), z); + x_axis := vector_difference(v, x_vec).orientation; + x_axis := normalise(x_axis); + END_IF; + RETURN(x_axis); +END_FUNCTION; + +FUNCTION gbsf_check_curve + (cv: representation_item) : BOOLEAN; +IF SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOUNDED_CURVE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_3D'] * TYPEOF(cv)) > 1 THEN + RETURN (FALSE); + END_IF; + IF SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CIRCLE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELLIPSE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TRIMMED_CURVE'] * TYPEOF(cv)) = 1 THEN + RETURN (TRUE); + ELSE + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE' IN TYPEOF(cv)) AND (cv\b_spline_curve.self_intersect = FALSE) OR (cv\b_spline_curve.self_intersect = UNKNOWN)) THEN + RETURN (TRUE); + ELSE + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_CURVE' IN TYPEOF(cv)) AND (cv\composite_curve.self_intersect = FALSE) OR (cv\composite_curve.self_intersect = UNKNOWN)) THEN + RETURN (SIZEOF(QUERY(seg <* cv\composite_curve.segments | NOT (gbsf_check_curve(seg.parent_curve)))) = 0); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA' IN TYPEOF(cv) THEN + RETURN (gbsf_check_curve(cv\curve_replica.parent_curve)); + ELSE + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_3D' IN TYPEOF(cv)) AND ((cv\offset_curve_3d.self_intersect = FALSE) OR (cv\offset_curve_3d.self_intersect = UNKNOWN)) AND (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF(cv\offset_curve_3d.basis_curve)))) THEN + RETURN (gbsf_check_curve(cv\offset_curve_3d.basis_curve)); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF(cv) THEN + RETURN ((gbsf_check_curve(cv\pcurve.reference_to_curve\representation.items[1])) AND (gbsf_check_surface(cv\pcurve.basis_surface))); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF(cv) THEN + IF (SIZEOF(cv\polyline.points) >= 3) THEN + RETURN (TRUE); + END_IF; + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE' IN TYPEOF(cv) THEN + IF gbsf_check_curve(cv\surface_curve.curve_3d) THEN + REPEAT i := 1 TO SIZEOF(cv\surface_curve.associated_geometry); + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE' IN TYPEOF(cv\surface_curve.associated_geometry[i]) THEN + IF NOT gbsf_check_surface(cv\surface_curve.associated_geometry[i]) THEN + RETURN (FALSE); + END_IF; + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF(cv\surface_curve.associated_geometry[i]) THEN + IF NOT gbsf_check_curve(cv\surface_curve.associated_geometry[i]) THEN + RETURN (FALSE); + END_IF; + END_IF; + END_IF; + END_REPEAT; + RETURN (TRUE); + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + RETURN (FALSE); +END_FUNCTION; + +FUNCTION gbsf_check_point + (pnt: point) : BOOLEAN; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT' IN TYPEOF(pnt) THEN + RETURN (TRUE); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_CURVE' IN TYPEOF(pnt) THEN + RETURN (gbsf_check_curve(pnt\point_on_curve.basis_curve)); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_SURFACE' IN TYPEOF(pnt) THEN + RETURN (gbsf_check_surface(pnt\point_on_surface.basis_surface)); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DEGENERATE_PCURVE' IN TYPEOF(pnt) THEN + RETURN ((gbsf_check_curve(pnt\degenerate_pcurve.reference_to_curve\representation.items[1])) AND (gbsf_check_surface(pnt\degenerate_pcurve.basis_surface))); + END_IF; + END_IF; + END_IF; + END_IF; + RETURN (FALSE); +END_FUNCTION; + +FUNCTION gbsf_check_surface + (sf: surface) : BOOLEAN; +IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_SURFACE' IN TYPEOF(sf)) AND (sf\b_spline_surface.self_intersect = FALSE) OR (sf\b_spline_surface.self_intersect = UNKNOWN)) THEN + RETURN (TRUE); + ELSE + IF SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SPHERICAL_SURFACE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TOROIDAL_SURFACE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_BOUNDED_SURFACE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RECTANGULAR_TRIMMED_SURFACE'] * TYPEOF(sf)) = 1 THEN + RETURN (TRUE); + ELSE + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_SURFACE' IN TYPEOF(sf)) AND (sf\offset_surface.self_intersect = FALSE) OR (sf\offset_surface.self_intersect = UNKNOWN)) THEN + RETURN (gbsf_check_surface(sf\offset_surface.basis_surface)); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RECTANGULAR_COMPOSITE_SURFACE' IN TYPEOF(sf) THEN + REPEAT i := 1 TO SIZEOF(sf\rectangular_composite_surface.segments); + REPEAT j := 1 TO SIZEOF(sf\rectangular_composite_surface.segments[i]); + IF NOT (gbsf_check_surface(sf\rectangular_composite_surface.segments[i][j].parent_surface)) THEN + RETURN (FALSE); + END_IF; + END_REPEAT; + END_REPEAT; + RETURN (TRUE); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_REPLICA' IN TYPEOF(sf) THEN + RETURN (gbsf_check_surface(sf\surface_replica.parent_surface)); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_OF_REVOLUTION' IN TYPEOF(sf) THEN + RETURN (gbsf_check_curve(sf\swept_surface.swept_curve)); + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + RETURN (FALSE); +END_FUNCTION; + +FUNCTION get_basis_surface + (c: curve_on_surface) : SET [0:2] OF surface; + LOCAL + surfs : SET[0:2] OF surface; + n : INTEGER; + END_LOCAL; + surfs := []; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF (c) THEN + surfs := [c\pcurve.basis_surface]; + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE' IN TYPEOF (c) THEN + n := SIZEOF(c\surface_curve.associated_geometry); + REPEAT i := 1 TO n; + surfs := surfs + + associated_surface(c\surface_curve.associated_geometry[i]); + END_REPEAT; + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_CURVE_ON_SURFACE' IN TYPEOF (c) THEN + (* For a composite_curve_on_surface the basis_surface is the intersection + of the basis_surfaces of all the segments. *) + n := SIZEOF(c\composite_curve.segments); + surfs := get_basis_surface( + c\composite_curve.segments[1].parent_curve); + IF n > 1 THEN + REPEAT i := 2 TO n; + surfs := surfs * get_basis_surface( + c\composite_curve.segments[i].parent_curve); + END_REPEAT; + END_IF; + + END_IF; + RETURN(surfs); +END_FUNCTION; + +FUNCTION get_description_value + (obj: description_attribute_select) : text; + LOCAL + description_bag : BAG OF description_attribute := (USEDIN(obj, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.' + 'DESCRIBED_ITEM')); + END_LOCAL; + + IF SIZEOF(description_bag) = 1 THEN + RETURN (description_bag[1].attribute_value); + ELSE + RETURN (?); + END_IF; +END_FUNCTION; + +FUNCTION get_id_value + (obj: id_attribute_select) : identifier; + LOCAL + id_bag : BAG OF id_attribute := (USEDIN(obj, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ID_ATTRIBUTE.' + 'IDENTIFIED_ITEM')); + END_LOCAL; + + IF SIZEOF(id_bag) = 1 THEN + RETURN (id_bag[1].attribute_value); + ELSE + RETURN (?); + END_IF; +END_FUNCTION; + +FUNCTION get_name_value + (obj: name_attribute_select) : label; + LOCAL + name_bag : BAG OF name_attribute := (USEDIN(obj, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'NAME_ATTRIBUTE.' + 'NAMED_ITEM')); + END_LOCAL; + + IF SIZEOF(name_bag) = 1 THEN + RETURN (name_bag[1].attribute_value); + ELSE + RETURN (?); + END_IF; +END_FUNCTION; + +FUNCTION get_role + (obj: role_select) : object_role; + LOCAL + role_bag : BAG OF role_association := (USEDIN(obj, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.' + 'ITEM_WITH_ROLE')); + END_LOCAL; + + IF SIZEOF(role_bag) = 1 THEN + RETURN (role_bag[1].role); + ELSE + RETURN (?); + END_IF; +END_FUNCTION; + +FUNCTION get_shape_aspect_property_definition_representations + (s_a_instance: shape_aspect) : SET [0:?] OF property_definition_representation; +LOCAL +pd_set : SET OF property_definition := []; +pdr_set : SET OF property_definition_representation := [] ; +END_LOCAL; +pd_set := bag_to_set(USEDIN(s_a_instance, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROPERTY_DEFINITION.DEFINITION')); +IF (SIZEOF(pd_set) < 1) THEN +RETURN (pdr_set); +END_IF; +REPEAT i := 1 TO HIINDEX(pd_set); +pdr_set := pdr_set + (QUERY(pdr <* USEDIN(pd_set[i], 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'PROPERTY_DEFINITION_REPRESENTATION.' + 'DEFINITION') | +'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_DEFINITION_REPRESENTATION' IN TYPEOF(pdr))); +END_REPEAT; +RETURN (pdr_set); +END_FUNCTION; + +FUNCTION is_acyclic + (arg: generic_expression) : BOOLEAN; +RETURN (acyclic (arg, [])); +END_FUNCTION; + +FUNCTION is_int_expr + (arg: numeric_expression) : LOGICAL; +LOCAL + i: INTEGER := 0; +END_LOCAL; + +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.INT_LITERAL' IN TYPEOF(arg) +THEN + RETURN (TRUE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REAL_LITERAL' IN TYPEOF(arg) +THEN + RETURN (FALSE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.INT_NUMERIC_VARIABLE' IN TYPEOF(arg) +THEN + RETURN (TRUE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REAL_NUMERIC_VARIABLE' IN TYPEOF(arg) +THEN + RETURN (FALSE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ABS_FUNCTION' IN TYPEOF(arg) +THEN + RETURN (is_int_expr(arg\unary_numeric_expression.operand)); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MINUS_FUNCTION' IN TYPEOF(arg) +THEN + RETURN (is_int_expr(arg\unary_numeric_expression.operand)); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SIN_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COS_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TAN_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ASIN_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ACOS_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ATAN_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EXP_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LOG_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LOG2_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LOG10_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SQUARE_ROOT_FUNCTION' + IN TYPEOF(arg)) +THEN + RETURN (FALSE); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLUS_EXPRESSION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MULT_EXPRESSION' + IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAXIMUM_FUNCTION' + IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MINIMUM_FUNCTION' + IN TYPEOF(arg)) +THEN + REPEAT i :=1 TO SIZEOF ( + arg\multiple_arity_numeric_expression.operands); + IF NOT + is_int_expr(arg\multiple_arity_numeric_expression.operands[i]) + THEN + RETURN (FALSE); + END_IF; + END_REPEAT; + RETURN (TRUE); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MINUS_EXPRESSION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POWER_EXPRESSION' + IN TYPEOF(arg)) +THEN + RETURN (is_int_expr(arg\binary_numeric_expression.operands[1]) + AND is_int_expr(arg\binary_numeric_expression.operands[2])); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIV_EXPRESSION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MOD_EXPRESSION' IN TYPEOF(arg)) +THEN + RETURN(TRUE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SLASH_EXPRESSION' IN TYPEOF(arg) +THEN + RETURN (FALSE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_FUNCTION' IN TYPEOF(arg) +THEN + RETURN (TRUE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VALUE_FUNCTION' IN TYPEOF(arg) +THEN + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.INT_VALUE_FUNCTION' + IN TYPEOF(arg) + THEN + RETURN (TRUE); + ELSE + RETURN (FALSE); + END_IF; +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.INTEGER_DEFINED_FUNCTION' + IN TYPEOF(arg) +THEN + RETURN(TRUE) ; +END_IF; +IF'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REAL_DEFINED_FUNCTION' IN TYPEOF(arg) +THEN + RETURN(FALSE) ; +END_IF ; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOOLEAN_DEFINED_FUNCTION' + IN TYPEOF(arg) +THEN + RETURN(FALSE) ; +END_IF ; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRING_DEFINED_FUNCTION' + IN TYPEOF(arg) +THEN + RETURN (FALSE) ; +END_IF ; + +RETURN (FALSE); +END_FUNCTION; + +FUNCTION is_SQL_mappable + (arg: expression) : LOGICAL; +LOCAL + i: INTEGER; +END_LOCAL; + +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SIMPLE_NUMERIC_EXPRESSION' + IN TYPEOF (arg) +THEN + RETURN (TRUE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SQL_MAPPABLE_DEFINED_FUNCTION' + IN TYPEOF (arg) +THEN + RETURN (TRUE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MINUS_FUNCTION' IN TYPEOF(arg) +THEN + RETURN (is_SQL_mappable(arg\unary_numeric_expression.operand)); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ABS_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SIN_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COS_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TAN_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ASIN_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ACOS_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ATAN_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EXP_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LOG_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LOG2_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LOG10_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SQUARE_ROOT_FUNCTION' + IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VALUE_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_FUNCTION' + IN TYPEOF(arg)) +THEN + RETURN (FALSE); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLUS_EXPRESSION' IN TYPEOF(arg)) + OR('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MULT_EXPRESSION' IN TYPEOF(arg)) + OR('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAXIMUM_FUNCTION' + IN TYPEOF(arg)) + OR('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MINIMUM_FUNCTION' + IN TYPEOF(arg)) +THEN + REPEAT i :=1 TO SIZEOF ( + arg\multiple_arity_numeric_expression.operands); + IF NOT is_SQL_mappable( + arg\multiple_arity_numeric_expression.operands[i]) + THEN + RETURN (FALSE); + END_IF; + END_REPEAT; +RETURN (TRUE); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MINUS_EXPRESSION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SLASH_EXPRESSION' IN + TYPEOF(arg)) +THEN + RETURN (is_SQL_mappable( + arg\binary_numeric_expression.operands[1]) + AND is_SQL_mappable(arg\binary_numeric_expression.operands[2])); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIV_EXPRESSION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MOD_EXPRESSION' IN TYPEOF(arg)) + OR('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POWER_EXPRESSION' + IN TYPEOF(arg)) +THEN + RETURN (FALSE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SIMPLE_BOOLEAN_EXPRESSION' + IN TYPEOF (arg) +THEN + RETURN (TRUE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.NOT_EXPRESSION' IN TYPEOF (arg) +THEN + RETURN (is_SQL_mappable (arg\UNARY_GENERIC_EXPRESSION.OPERAND)); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ODD_FUNCTION'IN TYPEOF (arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.XOR_EXPRESSION' + IN TYPEOF (arg)) +THEN + RETURN (FALSE); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AND_EXPRESSION' IN TYPEOF (arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OR_EXPRESSION' IN TYPEOF (arg)) +THEN + REPEAT i:=1 TO SIZEOF ( + arg\MULTIPLE_ARITY_BOOLEAN_EXPRESSION.OPERANDS); + IF NOT is_SQL_mappable ( + arg\MULTIPLE_ARITY_BOOLEAN_EXPRESSION.OPERANDS[i]) + THEN + RETURN (FALSE); + END_IF; + END_REPEAT; + RETURN (TRUE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EQUALS_EXPRESSION' IN TYPEOF (arg) +THEN + RETURN(is_SQL_mappable ( + arg\BINARY_GENERIC_EXPRESSION.OPERANDS [1]) + AND is_SQL_mappable( + arg\BINARY_GENERIC_EXPRESSION.OPERANDS [2])); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPARISON_EQUAL' IN TYPEOF (arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPARISON_GREATER' + IN TYPEOF (arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPARISON_GREATER_EQUAL' + IN TYPEOF (arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPARISON_LESS' + IN TYPEOF (arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPARISON_LESS_EQUAL' + IN TYPEOF (arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPARISON_NOT_EQUAL' + IN TYPEOF (arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LIKE_EXPRESSION' + IN TYPEOF (arg)) +THEN + RETURN (is_SQL_mappable (arg\COMPARISON_EXPRESSION.OPERANDS[1]) + AND is_SQL_mappable (arg\COMPARISON_EXPRESSION.OPERANDS[2])); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.INTERVAL_EXPRESSION' IN TYPEOF(arg) +THEN + RETURN (is_SQL_mappable(arg\interval_expression.interval_low) + AND is_SQL_mappable(arg\interval_expression.interval_high) + AND is_SQL_mappable(arg\interval_expression.interval_item)); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.NUMERIC_DEFINED_FUNCTION' + IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOOLEAN_DEFINED_FUNCTION' + IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRING_DEFINED_FUNCTION' + IN TYPEOF(arg)) +THEN + RETURN (FALSE) ; +END_IF; + +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SIMPLE_STRING_EXPRESSION' + IN TYPEOF(ARG) +THEN + RETURN (TRUE); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.INDEX_EXPRESSION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SUBSTRING_EXPRESSION' + IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONCAT_EXPRESSION' + IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FORMAT_FUNCTION' + IN TYPEOF(arg)) +THEN + RETURN (FALSE); +END_IF; + + RETURN (FALSE); +END_FUNCTION; + +FUNCTION item_in_context + (item: representation_item; cntxt: representation_context) : BOOLEAN; + LOCAL + y : BAG OF representation_item; + END_LOCAL; + -- If there is one or more representation using both the item + -- and cntxt return true. + IF SIZEOF(USEDIN(item,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION.ITEMS') + * cntxt.representations_in_context) > 0 THEN + RETURN (TRUE); + -- Determine the bag of representation_items that reference + -- item + ELSE y := QUERY(z <* USEDIN (item , '') | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION_ITEM' IN TYPEOF(z)); + -- Ensure that the bag is not empty + IF SIZEOF(y) > 0 THEN + -- For each element in the bag + REPEAT i := 1 TO HIINDEX(y); + -- Check to see it is an item in the input cntxt. + IF item_in_context(y[i], cntxt) THEN + RETURN (TRUE); + END_IF; + END_REPEAT; + END_IF; + END_IF; + -- Return false when all possible branches have been checked + -- with no success. + RETURN (FALSE); +END_FUNCTION; + +FUNCTION leap_year + (year: year_number) : BOOLEAN; +IF ((((year MOD 4) = 0) AND ((year MOD 100) <> 0)) OR ((year MOD 400) = 0)) THEN + RETURN (TRUE); + ELSE + RETURN (FALSE); + END_IF; +END_FUNCTION; + +FUNCTION list_face_loops + (f: face) : LIST [0:?] OF loop; + LOCAL + loops : LIST[0:?] OF loop := []; + END_LOCAL; + + REPEAT i := 1 TO SIZEOF(f.bounds); + loops := loops +(f.bounds[i].bound); + END_REPEAT; + + RETURN(loops); +END_FUNCTION; + +FUNCTION list_of_topology_reversed + (a_list: list_of_reversible_topology_item) : list_of_reversible_topology_item; + LOCAL + the_reverse : list_of_reversible_topology_item; + END_LOCAL; + + the_reverse := []; + REPEAT i := 1 TO SIZEOF (a_list); + the_reverse := topology_reversed (a_list [i]) + the_reverse; + END_REPEAT; + + RETURN (the_reverse); +END_FUNCTION; + +FUNCTION list_to_array + (lis: LIST [0:?] OF GENERIC: T; low: INTEGER; u: INTEGER) : ARRAY [low:u] OF GENERIC: T; + LOCAL + n : INTEGER; + res : ARRAY [low:u] OF GENERIC : T; + END_LOCAL; + + n := SIZEOF(lis); + IF (n <> (u-low +1)) THEN + RETURN(?); + ELSE + res := [lis[1] : n]; + REPEAT i := 2 TO n; + res[low+i-1] := lis[i]; + END_REPEAT; + RETURN(res); + END_IF; +END_FUNCTION; + +FUNCTION list_to_set + (l: LIST [0:?] OF GENERIC: T) : SET [0:?] OF GENERIC: T; + LOCAL + s : SET OF GENERIC:T := []; + END_LOCAL; + + REPEAT i := 1 TO SIZEOF(l); + s := s + l[i]; + END_REPEAT; + + RETURN(s); +END_FUNCTION; + +FUNCTION make_array_of_array + (lis: LIST [1:?] OF LIST [1:?] OF GENERIC: T; low1: INTEGER; u1: INTEGER; low2: INTEGER; u2: INTEGER) : ARRAY [low1:u1] OF ARRAY [low2:u2] OF GENERIC: T; + LOCAL + res : ARRAY[low1:u1] OF ARRAY [low2:u2] OF GENERIC : T; + END_LOCAL; + +(* Check input dimensions for consistency *) + IF (u1-low1+1) <> SIZEOF(lis) THEN + RETURN (?); + END_IF; + IF (u2 - low2 + 1 ) <> SIZEOF(lis[1]) THEN + RETURN (?) ; + END_IF; +(* Initialise res with values from lis[1] *) + res := [list_to_array(lis[1], low2, u2) : (u1-low1 + 1)]; + REPEAT i := 2 TO HIINDEX(lis); + IF (u2-low2+1) <> SIZEOF(lis[i]) THEN + RETURN (?); + END_IF; + res[low1+i-1] := list_to_array(lis[i], low2, u2); + END_REPEAT; + + RETURN (res); +END_FUNCTION; + +FUNCTION mixed_loop_type_set + (l: SET [0:?] OF loop) : LOGICAL; + LOCAL + poly_loop_type: LOGICAL; + END_LOCAL; + IF(SIZEOF(l) <= 1) THEN + RETURN(FALSE); + END_IF; + poly_loop_type := ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLY_LOOP' IN TYPEOF(l[1])); + REPEAT i := 2 TO SIZEOF(l); + IF(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLY_LOOP' IN TYPEOF(l[i])) <> poly_loop_type) + THEN + RETURN(TRUE); + END_IF; + END_REPEAT; + RETURN(FALSE); +END_FUNCTION; + +FUNCTION msb_shells + (brep: manifold_solid_brep) : SET [1:?] OF closed_shell; + LOCAL + return_set: SET[1:?] OF closed_shell := [brep.outer]; + END_LOCAL; + + IF SIZEOF(QUERY(msbtype <* TYPEOF(brep) | + msbtype LIKE '*BREP_WITH_VOIDS')) >= 1 + THEN + return_set := return_set + brep\brep_with_voids.voids; + END_IF; + RETURN(return_set); +END_FUNCTION; + +FUNCTION msf_curve_check + (cv: representation_item) : BOOLEAN; +IF SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOUNDED_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_3D'] * TYPEOF(cv)) > 1 THEN + RETURN(FALSE); +END_IF; + +(* b_spline_curves shall not self-intersect + *) +IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE' IN TYPEOF (cv)) AND + (cv\b_spline_curve.self_intersect = FALSE)OR + (cv\b_spline_curve.self_intersect = UNKNOWN)) THEN + RETURN(TRUE); +ELSE + + (* conics and lines are valid curve types + *) + IF SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE'] + * TYPEOF (cv)) = 1 THEN + RETURN(TRUE); + ELSE + + (* a curve_replica shall reference a valid curve + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA' IN TYPEOF(cv) THEN + RETURN (msf_curve_check(cv\curve_replica.parent_curve)); + ELSE + + (* an offset_curve_3d shall not self-intersect and + shall reference a valid curve; a polyline is not a + valid basis_curve + *) + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_3D' IN TYPEOF (cv)) + AND + ((cv\offset_curve_3d.self_intersect = FALSE) OR + (cv\offset_curve_3d.self_intersect = UNKNOWN)) + AND + (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF + (cv\offset_curve_3d.basis_curve)))) THEN + RETURN (msf_curve_check(cv\offset_curve_3d.basis_curve)); + ELSE + + (* a pcurve shall reference a valid curve and a valid + basis_surface + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF(cv) THEN + RETURN ((msf_curve_check + (cv\pcurve.reference_to_curve\representation.items[1])) AND + (msf_surface_check(cv\pcurve.basis_surface))); + ELSE + + (* a surface_curve references a curve_3d and one or + two pcurves or one or two surfaces or one of + each; all of these references shall be valid + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE' IN TYPEOF(cv) THEN + + (* if the curve reference is correct, check also the rest + *) + IF msf_curve_check(cv\surface_curve.curve_3d) THEN + REPEAT i := 1 TO SIZEOF + (cv\surface_curve.associated_geometry); + + (* do for one or two associated_geometrys: + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE' IN + TYPEOF (cv\surface_curve.associated_geometry[i]) THEN + IF NOT msf_surface_check + (cv\surface_curve.associated_geometry[i]) THEN + RETURN(FALSE); + END_IF; + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF + (cv\surface_curve.associated_geometry[i]) THEN + IF NOT msf_curve_check + (cv\surface_curve.associated_geometry[i]) THEN + RETURN(FALSE); + END_IF; + END_IF; + END_IF; + END_REPEAT; + RETURN(TRUE); + END_IF; + ELSE + + (* a polyline shall have at least 3 points + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF(cv) THEN + IF (SIZEOF (cv\polyline.points) >= 3) THEN RETURN (TRUE); + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; +END_IF; +(* FALSE is returned if the input parameter cv is not a valid curve. + *) +RETURN (FALSE); +END_FUNCTION; + +FUNCTION msf_surface_check + (surf: surface) : BOOLEAN; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELEMENTARY_SURFACE' IN TYPEOF(surf) THEN + RETURN(TRUE); + ELSE + + (* a swept_surface shall have a valid sweeping curve + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SWEPT_SURFACE' IN TYPEOF (surf) THEN + RETURN (msf_curve_check(surf\swept_surface.swept_curve)); + ELSE + + (* an offset_surface shall not self-intersect and shall + reference a valid surface + *) + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_SURFACE' IN TYPEOF (surf)) AND + (surf\offset_surface.self_intersect = FALSE) OR + (surf\offset_surface.self_intersect = UNKNOWN)) THEN + RETURN (msf_surface_check(surf\offset_surface.basis_surface)); + ELSE + + (* a surface_replica shall have a valid parent surface + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_REPLICA' IN TYPEOF(surf) THEN + RETURN(msf_surface_check(surf\surface_replica.parent_surface)); + ELSE + + (* a b_spline_surface shall not self-intersect + *) + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_SURFACE' IN TYPEOF(surf)) AND + (surf\b_spline_surface.self_intersect = FALSE) OR + (surf\b_spline_surface.self_intersect = UNKNOWN)) THEN + RETURN(TRUE); + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + RETURN(FALSE); +END_FUNCTION; + +FUNCTION nmsf_curve_check + (cv: representation_item) : BOOLEAN; +IF SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOUNDED_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_3D'] * TYPEOF(cv)) > 1 + THEN RETURN(FALSE); + ELSE + + (* b_spline_curves shall not self-intersect + *) + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE' IN TYPEOF (cv)) AND + (cv\b_spline_curve.self_intersect = FALSE) OR + (cv\b_spline_curve.self_intersect = UNKNOWN)) + THEN RETURN(TRUE); + ELSE + + (* conics and lines are valid curve types + *) + IF SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE'] * TYPEOF (cv)) = 1 THEN + RETURN(TRUE); + ELSE + + (* a curve_replica shall reference a valid curve + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA' IN TYPEOF(cv) THEN + RETURN (nmsf_curve_check(cv\curve_replica.parent_curve)); + ELSE + + (* an offset_curve_3d shall not self-intersect and + shall reference a valid curve; a polyline is not a + valid basis_curve + *) + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_3D' IN TYPEOF (cv)) + AND + ((cv\offset_curve_3d.self_intersect = FALSE) OR + (cv\offset_curve_3d.self_intersect = UNKNOWN)) + AND + (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF + (cv\offset_curve_3d.basis_curve)))) THEN + RETURN (nmsf_curve_check(cv\offset_curve_3d.basis_curve)); + ELSE + + (* a pcurve shall reference a valid curve and a valid + basis_surface + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF(cv) THEN + RETURN ((nmsf_curve_check + (cv\pcurve.reference_to_curve\representation.items[1])) + AND + (nmsf_surface_check(cv\pcurve.basis_surface))); + ELSE + + (* a surface_curve references a curve_3d and one or + two pcurves or one or two surfaces or one of + each; all of these references shall be valid + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE' IN TYPEOF(cv) THEN + + (* if the curve reference is correct, check also the rest + *) + IF nmsf_curve_check(cv\surface_curve.curve_3d) THEN + REPEAT i := 1 TO SIZEOF + (cv\surface_curve.associated_geometry); + + (* do for one or two associated_geometrys: + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE' IN + TYPEOF (cv\surface_curve.associated_geometry[i]) THEN + IF NOT nmsf_surface_check + (cv\surface_curve.associated_geometry[i]) THEN + RETURN(FALSE); + END_IF; + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF + (cv\surface_curve.associated_geometry[i]) THEN + IF NOT nmsf_curve_check + (cv\surface_curve.associated_geometry[i]) THEN + RETURN(FALSE); + END_IF; + END_IF; + END_IF; + END_REPEAT; + RETURN(TRUE); + END_IF; + ELSE + + (* a polyline shall have at least 3 points + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF(cv) THEN + IF (SIZEOF (cv\polyline.points) >= 3) THEN RETURN (TRUE); + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + (* FALSE is returned if the input parameter cv is not a valid curve. + *) + RETURN (FALSE); +END_FUNCTION; + +FUNCTION nmsf_surface_check + (surf: surface) : BOOLEAN; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELEMENTARY_SURFACE' IN TYPEOF(surf) THEN + RETURN(TRUE); + ELSE + + (* a swept_surface shall have a valid sweeping curve + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SWEPT_SURFACE' IN TYPEOF (surf) THEN + RETURN (nmsf_curve_check(surf\swept_surface.swept_curve)); + ELSE + + (* an offset_surface shall not self-intersect and shall + reference a valid surface + *) + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_SURFACE' IN TYPEOF (surf)) AND + (surf\offset_surface.self_intersect = FALSE) OR + (surf\offset_surface.self_intersect = UNKNOWN)) THEN + RETURN (nmsf_surface_check(surf\offset_surface.basis_surface)); + ELSE + + (* a surface_replica shall have a valid parent surface + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_REPLICA' IN TYPEOF(surf) THEN + RETURN(nmsf_surface_check(surf\surface_replica.parent_surface)); + ELSE + + (* a b_spline_surface shall not self-intersect + *) + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_SURFACE' IN TYPEOF(surf)) + AND + (surf\b_spline_surface.self_intersect = FALSE) OR + (surf\b_spline_surface.self_intersect = UNKNOWN)) THEN + RETURN(TRUE); + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + RETURN(FALSE); +END_FUNCTION; + +FUNCTION normalise + (arg: vector_or_direction) : vector_or_direction; + LOCAL + ndim : INTEGER; + v : direction; + result : vector_or_direction; + vec : vector; + mag : REAL; + END_LOCAL; + + IF NOT EXISTS (arg) THEN + result := ?; + (* When function is called with invalid data a NULL result is returned *) + ELSE + ndim := arg.dim; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VECTOR' IN TYPEOF(arg) THEN + BEGIN + v := dummy_gri || direction(arg\vector.orientation.direction_ratios); + IF arg.magnitude = 0.0 THEN + RETURN(?); + ELSE + vec := dummy_gri || vector (v, 1.0); + END_IF; + END; + ELSE + v := dummy_gri || direction (arg.direction_ratios); + END_IF; + mag := 0.0; + REPEAT i := 1 TO ndim; + mag := mag + v.direction_ratios[i]*v.direction_ratios[i]; + END_REPEAT; + IF mag > 0.0 THEN + mag := SQRT(mag); + REPEAT i := 1 TO ndim; + v.direction_ratios[i] := v.direction_ratios[i]/mag; + END_REPEAT; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VECTOR' IN TYPEOF(arg) THEN + vec.orientation := v; + result := vec; + ELSE + result := v; + END_IF; + ELSE + RETURN(?); + END_IF; + END_IF; + RETURN (result); +END_FUNCTION; + +FUNCTION open_shell_reversed + (a_shell: open_shell) : oriented_open_shell; + LOCAL + the_reverse : oriented_open_shell; + END_LOCAL; + IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_OPEN_SHELL' IN TYPEOF (a_shell) ) THEN + the_reverse := dummy_tri || + connected_face_set ( + a_shell\connected_face_set.cfs_faces) || + open_shell () || oriented_open_shell( + a_shell\oriented_open_shell.open_shell_element, + (NOT (a_shell\oriented_open_shell.orientation))); + ELSE + the_reverse := dummy_tri || + connected_face_set ( + a_shell\connected_face_set.cfs_faces) || + open_shell () || oriented_open_shell (a_shell, FALSE); + END_IF; + RETURN (the_reverse); +END_FUNCTION; + +FUNCTION orthogonal_complement + (vec: direction) : direction; + LOCAL + result : direction ; + END_LOCAL; + + IF (vec.dim <> 2) OR NOT EXISTS (vec) THEN + RETURN(?); + ELSE + result := dummy_gri || direction([-vec.direction_ratios[2], + vec.direction_ratios[1]]); + RETURN(result); + END_IF; +END_FUNCTION; + +FUNCTION path_head_to_tail + (a_path: path) : LOGICAL; + LOCAL + n : INTEGER; + p : LOGICAL := TRUE; + END_LOCAL; + + n := SIZEOF (a_path.edge_list); + REPEAT i := 2 TO n; + p := p AND (a_path.edge_list[i-1].edge_end :=: + a_path.edge_list[i].edge_start); + END_REPEAT; + + RETURN (p); +END_FUNCTION; + +FUNCTION path_reversed + (a_path: path) : oriented_path; + LOCAL + the_reverse : oriented_path ; + END_LOCAL; + IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_PATH' IN TYPEOF (a_path) ) THEN + the_reverse := dummy_tri || + path(list_of_topology_reversed (a_path.edge_list)) || + oriented_path(a_path\oriented_path.path_element, + NOT(a_path\oriented_path.orientation)) ; + ELSE + the_reverse := dummy_tri || + path(list_of_topology_reversed (a_path.edge_list)) || + oriented_path(a_path, FALSE); + END_IF; + + RETURN (the_reverse); +END_FUNCTION; + +FUNCTION scalar_times_vector + (scalar: REAL; vec: vector_or_direction) : vector; + LOCAL + v : direction; + mag : REAL; + result : vector; + END_LOCAL; + + IF NOT EXISTS (scalar) OR NOT EXISTS (vec) THEN + RETURN (?) ; + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VECTOR' IN TYPEOF (vec) THEN + v := dummy_gri || direction(vec\vector.orientation.direction_ratios); + mag := scalar * vec.magnitude; + ELSE + v := dummy_gri || direction(vec.direction_ratios); + mag := scalar; + END_IF; + IF (mag < 0.0 ) THEN + REPEAT i := 1 TO SIZEOF(v.direction_ratios); + v.direction_ratios[i] := -v.direction_ratios[i]; + END_REPEAT; + mag := -mag; + END_IF; + result := dummy_gri || vector(normalise(v), mag); + END_IF; + RETURN (result); +END_FUNCTION; + +FUNCTION second_proj_axis + (z_axis: direction; x_axis: direction; arg: direction) : direction; + LOCAL + y_axis : vector; + v : direction; + temp : vector; + END_LOCAL; + + IF NOT EXISTS(arg) THEN + v := dummy_gri || direction([0.0,1.0,0.0]); + ELSE + v := arg; + END_IF; + + temp := scalar_times_vector(dot_product(v, z_axis), z_axis); + y_axis := vector_difference(v, temp); + temp := scalar_times_vector(dot_product(v, x_axis), x_axis); + y_axis := vector_difference(y_axis, temp); + y_axis := normalise(y_axis); + RETURN(y_axis.orientation); +END_FUNCTION; + +FUNCTION set_of_topology_reversed + (a_set: set_of_reversible_topology_item) : set_of_reversible_topology_item; + LOCAL + the_reverse : set_of_reversible_topology_item; + END_LOCAL; + + the_reverse := []; + REPEAT i := 1 TO SIZEOF (a_set); + the_reverse := the_reverse + topology_reversed (a_set [i]); + END_REPEAT; + + RETURN (the_reverse); +END_FUNCTION; + +FUNCTION shell_reversed + (a_shell: shell) : shell; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OPEN_SHELL' IN TYPEOF (a_shell) ) THEN + RETURN (open_shell_reversed (a_shell)); + ELSE + IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CLOSED_SHELL' IN TYPEOF (a_shell) ) THEN + RETURN (closed_shell_reversed (a_shell)); + ELSE + RETURN (?); + END_IF; + END_IF; +END_FUNCTION; + +FUNCTION surface_condition_correlation + (pd: property_definition; rep: representation) : LOGICAL; +CASE pd.name OF + 'visual appearance', 'tactile appearance', 'contact ratio', 'hardness', 'treatment result', 'surface texture' : + RETURN(pd.name = rep.name); + OTHERWISE : RETURN(UNKNOWN); + END_CASE; +END_FUNCTION; + +FUNCTION surface_weights_positive + (b: rational_b_spline_surface) : BOOLEAN; + LOCAL + result : BOOLEAN := TRUE; + END_LOCAL; + + REPEAT i := 0 TO b.u_upper; + REPEAT j := 0 TO b.v_upper; + IF (b.weights[i][j] <= 0.0) THEN + result := FALSE; + RETURN(result); + END_IF; + END_REPEAT; + END_REPEAT; + RETURN(result); +END_FUNCTION; + +FUNCTION topology_reversed + (an_item: reversible_topology) : reversible_topology; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE' IN TYPEOF (an_item)) THEN + RETURN (edge_reversed (an_item)); + END_IF; + + IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PATH' IN TYPEOF (an_item)) THEN + RETURN (path_reversed (an_item)); + END_IF; + + IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BOUND' IN TYPEOF (an_item)) THEN + RETURN (face_bound_reversed (an_item)); + END_IF; + + IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE' IN TYPEOF (an_item)) THEN + RETURN (face_reversed (an_item)); + END_IF; + + IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL' IN TYPEOF (an_item)) THEN + RETURN (shell_reversed (an_item)); + END_IF; + + IF ('SET' IN TYPEOF (an_item)) THEN + RETURN (set_of_topology_reversed (an_item)); + END_IF; + + IF ('LIST' IN TYPEOF (an_item)) THEN + RETURN (list_of_topology_reversed (an_item)); + END_IF; + + RETURN (?); +END_FUNCTION; + +FUNCTION type_check_function + (the_type: GENERIC; sub_names: SET [0:?] OF STRING; criterion: INTEGER) : LOGICAL; +IF ((NOT EXISTS(the_type)) OR (NOT ({0 <= criterion <= 3})) OR (SIZEOF(sub_names) = 0)) THEN + RETURN (UNKNOWN); + ELSE + CASE criterion OF + 0: + RETURN (SIZEOF(sub_names * TYPEOF(the_type)) > 0); + 1: + RETURN (SIZEOF(sub_names * TYPEOF(the_type)) = 0); + 2: + RETURN (SIZEOF(sub_names * TYPEOF(the_type)) = 1); + 3: + RETURN (SIZEOF(sub_names * TYPEOF(the_type)) <= 1); + END_CASE; + END_IF; +END_FUNCTION; + +FUNCTION using_items + (item: founded_item_select; checked_items: SET [0:?] OF founded_item_select) : SET [0:?] OF founded_item_select; + LOCAL + new_check_items : SET OF founded_item_select; + result_items : SET OF founded_item_select; + next_items : SET OF founded_item_select; + END_LOCAL; + result_items := []; + new_check_items := checked_items + item; + -- Find the set of representation_items or founded_items + -- in which item is used directly. + next_items := QUERY(z <* bag_to_set( USEDIN(item , '')) | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION_ITEM' IN TYPEOF(z)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FOUNDED_ITEM' IN TYPEOF(z))); + -- If the set of next_items is not empty; + IF SIZEOF(next_items) > 0 THEN + -- For each element in the set, find the using_items recursively + REPEAT i := 1 TO HIINDEX(next_items); + -- Check for loop in data model, i.e. one of the next_items + -- occurred earlier in the set of check_items; + IF NOT(next_items[i] IN new_check_items) THEN + result_items := result_items + next_items[i] + + using_items(next_items[i],new_check_items); + END_IF; + END_REPEAT; + END_IF; + -- return the set of representation_items or founded_items + -- in which the input item is used directly and indirectly. + RETURN (result_items); +END_FUNCTION; + +FUNCTION using_representations + (item: founded_item_select) : SET [0:?] OF representation; + LOCAL + results : SET OF representation; + result_bag : BAG OF representation; + intermediate_items : SET OF founded_item_select; + END_LOCAL; + -- Find the representations in which the item is used and add to the + -- results set. + results := []; + result_bag := USEDIN(item,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION.ITEMS'); + IF SIZEOF(result_bag) > 0 THEN + REPEAT i := 1 TO HIINDEX(result_bag); + results := results + result_bag[i]; + END_REPEAT; + END_IF; + -- Find all representation_items or founded_items + -- by which item is referenced directly or indirectly. + intermediate_items := using_items(item,[]); + -- If the set of intermediate items is not empty; + IF SIZEOF(intermediate_items) > 0 THEN + -- For each element in the set, add the + -- representations of that element. + REPEAT i := 1 TO HIINDEX(intermediate_items); + result_bag := USEDIN(intermediate_items[i], + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION.ITEMS'); + IF SIZEOF(result_bag) > 0 THEN + REPEAT j := 1 TO HIINDEX(result_bag); + results := results + result_bag[j]; + END_REPEAT; + END_IF; + END_REPEAT; + END_IF; + -- Return the set of representation in which the input item is + -- used directly and indirectly (through intervening + -- representation_items or founded items). + RETURN (results); +END_FUNCTION; + +FUNCTION valid_basis_curve_in_2d_wireframe + (crv: curve) : BOOLEAN; +IF SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELLIPSE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CIRCLE'] * + TYPEOF (crv)) = 1 + THEN RETURN (TRUE); + ELSE + -- if the curve is a trimmed_curve + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TRIMMED_CURVE') + IN TYPEOF (crv)) THEN + -- if a line, parabola, or hyperbola is being trimmed, then valid + IF SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PARABOLA', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.HYPERBOLA'] * + TYPEOF(crv\trimmed_curve.basis_curve)) = 1 + THEN RETURN (TRUE); + -- otherwise, recursively check basis_curve + ELSE RETURN (valid_basis_curve_in_2d_wireframe + (crv\trimmed_curve.basis_curve)); + END_IF; + ELSE + -- recursively check the offset_curve basis curve + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_2D') + IN TYPEOF (crv)) + THEN RETURN (valid_basis_curve_in_2d_wireframe + (crv\offset_curve_2d.basis_curve)); + ELSE + -- recursively check the curve_replica parent curve + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA') + IN TYPEOF (crv)) + THEN RETURN (valid_basis_curve_in_2d_wireframe + (crv\curve_replica.parent_curve)); + ELSE + -- recursively check the composite_curve segments + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_CURVE') + IN TYPEOF (crv)) THEN + RETURN (SIZEOF (QUERY (ccs <* crv\composite_curve.segments | + NOT (valid_basis_curve_in_2d_wireframe + (ccs.parent_curve)))) = 0); + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + RETURN (FALSE); +END_FUNCTION; + +FUNCTION valid_calendar_date + (date: calendar_date) : LOGICAL; +CASE date.month_component OF + 1 : RETURN({ 1 <= date.day_component <= 31 }); + 2 : BEGIN + IF (leap_year(date.year_component)) THEN + RETURN({ 1 <= date.day_component <= 29 }); + ELSE + RETURN({ 1 <= date.day_component <= 28 }); + END_IF; + END; + 3 : RETURN({ 1 <= date.day_component <= 31 }); + 4 : RETURN({ 1 <= date.day_component <= 30 }); + 5 : RETURN({ 1 <= date.day_component <= 31 }); + 6 : RETURN({ 1 <= date.day_component <= 30 }); + 7 : RETURN({ 1 <= date.day_component <= 31 }); + 8 : RETURN({ 1 <= date.day_component <= 31 }); + 9 : RETURN({ 1 <= date.day_component <= 30 }); + 10 : RETURN({ 1 <= date.day_component <= 31 }); + 11 : RETURN({ 1 <= date.day_component <= 30 }); + 12 : RETURN({ 1 <= date.day_component <= 31 }); + END_CASE; + RETURN (FALSE); +END_FUNCTION; + +FUNCTION valid_datum_target_parameters + (pdf: placed_datum_target_feature) : BOOLEAN; +LOCAL + +rep_set : SET OF representation := [] ; + +parameter_representations: SET OF representation; +END_LOCAL; + + +REPEAT i := 1 TO HIINDEX(pdf.representation_associations); +rep_set := rep_set + pdf.representation_associations[i].used_representation; +END_REPEAT; + +parameter_representations := QUERY(rep <* rep_set | +('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN +TYPEOF(rep))); + + +IF (SIZEOF( QUERY( srwp <* parameter_representations | + (SIZEOF( QUERY( i <* srwp.items | + (i.name='orientation') AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLACEMENT' IN TYPEOF(i)))) = 1))) <> 1) THEN + RETURN(FALSE); +END_IF; + +CASE pdf\shape_aspect.description OF +'point': RETURN(SIZEOF(QUERY( srwp <* parameter_representations | + (SIZEOF(srwp.items) = 1))) = 1); + +'circle': RETURN((SIZEOF( QUERY( srwp <* parameter_representations | + (SIZEOF(srwp.items) = 2))) = 1) AND + (SIZEOF( QUERY( srwp <* parameter_representations | + (SIZEOF( QUERY( i <* srwp.items | + (i.name='target diameter') AND + (SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i) + ) = 2) )) = 1))) = 1)); + +'line': RETURN(SIZEOF( QUERY( srwp <* parameter_representations | + (SIZEOF( QUERY( i <* srwp.items | + (i.name='target length') AND + (SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i) + ) = 2) )) = 1))) = 1); + +'rectangle': RETURN((SIZEOF( QUERY( srwp <* parameter_representations | + (SIZEOF(srwp.items)= 3))) = 1) AND + (SIZEOF( QUERY( srwp <* parameter_representations | + (SIZEOF( QUERY( i <* srwp.items | + (i.name='target length') AND + (SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i) + ) = 2))) = 1))) = 1) AND + (SIZEOF( QUERY( srwp <* parameter_representations | + (SIZEOF( QUERY( i <* srwp.items | + (i.name='target width') AND + (SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i) + ) = 2))) = 1) )) = 1)); +OTHERWISE : RETURN(FALSE); +END_CASE; +END_FUNCTION; + +FUNCTION valid_geometrically_bounded_wf_curve + (crv: curve) : BOOLEAN; +IF SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELLIPSE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CIRCLE' ] * TYPEOF (crv)) = 1 THEN + RETURN (TRUE); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TRIMMED_CURVE' IN TYPEOF (crv) THEN + IF SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PARABOLA', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.HYPERBOLA' ] * TYPEOF (crv\trimmed_curve.basis_curve)) = 1 THEN + RETURN (TRUE); + ELSE + RETURN (valid_geometrically_bounded_wf_curve(crv\trimmed_curve.basis_curve)); + END_IF ; + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_3D' IN TYPEOF (crv) THEN + RETURN (valid_geometrically_bounded_wf_curve(crv\offset_curve_3d.basis_curve)); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA' IN TYPEOF (crv) THEN + RETURN (valid_geometrically_bounded_wf_curve(crv\curve_replica.parent_curve)); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_CURVE' IN TYPEOF (crv) THEN + RETURN ( SIZEOF ( +QUERY ( ccs <* crv\composite_curve.segments| NOT valid_geometrically_bounded_wf_curve(ccs.parent_curve) )) = 0); + END_IF ; + END_IF ; + END_IF ; + END_IF ; + END_IF ; + RETURN (FALSE); +END_FUNCTION; + +FUNCTION valid_geometrically_bounded_wf_point + (pnt: point) : BOOLEAN; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT' IN TYPEOF (pnt) THEN + RETURN (TRUE); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_CURVE' IN TYPEOF (pnt) THEN + RETURN (valid_geometrically_bounded_wf_curve(pnt\point_on_curve.basis_curve)); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_REPLICA' IN TYPEOF (pnt) THEN + RETURN (valid_geometrically_bounded_wf_point(pnt\point_replica.parent_pt)); + END_IF ; + END_IF ; + END_IF ; + RETURN (FALSE); +END_FUNCTION; + +FUNCTION valid_measure_value + (m: measure_value) : BOOLEAN; +IF ('REAL' IN TYPEOF (m)) THEN + RETURN (m > 0.0); + ELSE + IF ('INTEGER' IN TYPEOF (m)) THEN + RETURN (m > 0); + ELSE + RETURN (TRUE); + END_IF; + END_IF; +END_FUNCTION; + +FUNCTION valid_selected_instance_representation + (pd: product_definition_or_assembly_relationship) : LOGICAL; + LOCAL + properties: SET OF property_definition := bag_to_set(QUERY( prd<* USEDIN ( pd ,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROPERTY_DEFINITION.DEFINITION' ) | + (prd.name = 'occurrence selection' ))); + property_definition_representations: SET OF property_definition_representation := bag_to_set(QUERY ( pdr <* USEDIN ( properties[1] , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | + ( pdr.used_representation.name = 'selection criteria' ))); + selected_representation: representation; + END_LOCAL; + IF (SIZEOF( properties)<>1) THEN + RETURN(FALSE); + END_IF; + IF (SIZEOF(property_definition_representations)<>1) THEN + RETURN(FALSE); + END_IF; + selected_representation := property_definition_representations[1]\property_definition_representation.used_representation; + IF (SIZEOF(selected_representation\representation.items) <1) OR (SIZEOF(selected_representation\representation.items) >2) THEN + RETURN(FALSE); + END_IF; + IF (SIZEOF ( QUERY ( i <* selected_representation\representation.items | + ( SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VALUE_RANGE']* TYPEOF ( i ) ) = 1) AND + ( i.name = 'selection quantity' ))) <> 1 ) THEN + RETURN(FALSE); + END_IF; + IF (SIZEOF ( QUERY ( i <* selected_representation\representation.items | + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF ( i ) ) AND + ( i.name = 'selection control' )))> 1) THEN + RETURN(FALSE); + END_IF; --the selection control is not specified then the quantity shall be a qualified_representation_item or a value_range + IF (SIZEOF ( QUERY ( i <* selected_representation\representation.items | + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF( i ) ) AND + ( i.name = 'selection control' ) ))= 0) AND + (SIZEOF ( QUERY ( i <* selected_representation\representation.items | + ( i.name = 'selection quantity' ) AND + ( SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.QUALIFIED_REPRESENTATION_ITEM' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VALUE_RANGE']* TYPEOF ( i ) ) =0 ))) > 0 ) THEN + RETURN(FALSE); + END_IF; + RETURN(TRUE); +END_FUNCTION; + +FUNCTION valid_time + (time: local_time) : BOOLEAN; +IF EXISTS(time.second_component) THEN + RETURN (EXISTS(time.minute_component)); + ELSE + RETURN (TRUE); + END_IF; +END_FUNCTION; + +FUNCTION valid_units + (m: measure_with_unit) : BOOLEAN; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MASS_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TIME_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELECTRIC_CURRENT_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.THERMODYNAMIC_TEMPERATURE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CELSIUS_TEMPERATURE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AMOUNT_OF_SUBSTANCE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LUMINOUS_INTENSITY_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE_ANGLE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_ANGLE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AREA_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VOLUME_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RATIO_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITIVE_PLANE_ANGLE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ACCELERATION_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 1.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CAPACITANCE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( -2.0, -1.0, 4.0, 1.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELECTRIC_CHARGE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONDUCTANCE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( -2.0, -1.0, 3.0, 2.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELECTRIC_POTENTIAL_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 2.0, 1.0, -3.0, -1.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ENERGY_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 2.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FORCE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 1.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FREQUENCY_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ILLUMINANCE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( -2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.INDUCTANCE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 2.0, 1.0, -2.0, -2.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LUMINOUS_FLUX_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAGNETIC_FLUX_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 2.0, 1.0, -2.0, -1.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAGNETIC_FLUX_DENSITY_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 0.0, 1.0, -2.0, -1.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POWER_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 2.0, 1.0, -3.0, 0.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESSURE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( -1.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RESISTANCE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 2.0, 1.0, -3.0, -2.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VELOCITY_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 1.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RADIOACTIVITY_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ABSORBED_DOSE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(2.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DOSE_EQUIVALENT_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(2.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + RETURN (TRUE); +END_FUNCTION; + +FUNCTION valid_wireframe_edge_curve + (crv: curve) : BOOLEAN; +IF SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' ] * TYPEOF (crv)) = 1 THEN + RETURN (TRUE); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA' IN TYPEOF (crv) THEN + RETURN (valid_wireframe_edge_curve(crv\curve_replica.parent_curve)); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_3D' IN TYPEOF (crv) THEN + RETURN (valid_wireframe_edge_curve(crv\offset_curve_3d.basis_curve)); + END_IF ; + END_IF ; + END_IF ; + RETURN (FALSE); +END_FUNCTION; + +FUNCTION valid_wireframe_vertex_point + (pnt: point) : BOOLEAN; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT' IN TYPEOF (pnt) THEN + RETURN (TRUE); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_REPLICA' IN TYPEOF (pnt) THEN + RETURN (valid_wireframe_vertex_point(pnt\point_replica.parent_pt)); + END_IF ; + END_IF ; + RETURN (FALSE); +END_FUNCTION; + +FUNCTION validate_countersink_radii + (cskhole: solid_with_stepped_round_hole_and_conical_transitions) : BOOLEAN; + LOCAL + i,j : INTEGER; + n : INTEGER := 1 + + cskhole\solid_with_stepped_round_hole.segments; + smaller, larger : positive_length_measure; + END_LOCAL; + + REPEAT i := 1 TO SIZEOF(cskhole.conical_transitions); + + -- First check whether transition i applies to the entry of the hole or + -- the exit of a through hole - those cases only need to be checked for + -- the sign of the cone apex angle. + + IF (((cskhole.conical_transitions[i].transition_number = 1) + AND (cskhole.conical_transitions[i].cone_apex_angle < 0)) + XOR ((cskhole.conical_transitions[i].transition_number = n) + AND (cskhole.conical_transitions[i].cone_apex_angle > 0))) + THEN RETURN(FALSE); + ELSE + IF ((cskhole.conical_transitions[i].transition_number <> 1) + AND (cskhole.conical_transitions[i].transition_number <> n)) + THEN + + -- For all remaining transitions, check that the cone base radius + -- lies in the range of validity. + + + BEGIN + j := cskhole.conical_transitions[i].transition_number; + IF cskhole\solid_with_stepped_round_hole.segment_radii[j] + > cskhole\solid_with_stepped_round_hole.segment_radii[j-1] + THEN + BEGIN + IF (cskhole.conical_transitions[i].cone_apex_angle > 0) + THEN RETURN(FALSE); + END_IF; + larger + := cskhole\solid_with_stepped_round_hole.segment_radii[j]; + smaller + := cskhole\solid_with_stepped_round_hole.segment_radii[j-1]; + END; + ELSE + BEGIN + IF (cskhole.conical_transitions[i].cone_apex_angle < 0) + THEN RETURN(FALSE); + END_IF; + larger + := cskhole\solid_with_stepped_round_hole.segment_radii[j-1]; + smaller + := cskhole\solid_with_stepped_round_hole.segment_radii[j]; + END; + END_IF; + IF ((cskhole.conical_transitions[i].cone_base_radius > larger) + OR (cskhole.conical_transitions[i].cone_base_radius < smaller)) + THEN RETURN(FALSE); + END_IF; + END; + END_IF; + END_IF; + END_REPEAT; + RETURN(TRUE); +END_FUNCTION; + +FUNCTION value_range_aggregate_rep_item + (agg: AGGREGATE OF representation_item) : BOOLEAN; +BEGIN + IF (SIZEOF(QUERY(i1 <* agg | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i1)) )) = 6) THEN + RETURN (TRUE); + ELSE + RETURN (FALSE); + END_IF; + END; +END_FUNCTION; + +FUNCTION value_range_wr1 + (agg: compound_item_definition) : BOOLEAN; +BEGIN + IF (SIZEOF(agg) = 2) AND ((SIZEOF(QUERY (i1 <* agg | ( + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF + (i1)))) = 2) OR + (SIZEOF(QUERY (i2 <* agg | ( + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VALUE_REPRESENTATION_ITEM' IN TYPEOF + (i2)))) = 2)) + THEN + RETURN(TRUE); + ELSE + RETURN(FALSE); + END_IF; + END; +END_FUNCTION; + +FUNCTION value_range_wr2 + (agg: compound_item_definition) : BOOLEAN; +BEGIN + IF ((SIZEOF(QUERY (i <* agg | (i\representation_item.name = 'upper limit'))) = 1) + AND (SIZEOF(QUERY (i <* agg | (i\representation_item.name = 'lower limit'))) = 1)) + THEN + RETURN(TRUE); + ELSE + RETURN(FALSE); + END_IF; + END; +END_FUNCTION; + +FUNCTION value_range_wr3 + (agg: compound_item_definition) : BOOLEAN; +BEGIN + IF (SIZEOF(QUERY(i1 <* agg | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF (i1)) AND + (SIZEOF (QUERY (i2 <* agg | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF (i2)) AND + (i1 :<>: i2) AND (i1\measure_with_unit.unit_component :=: i2\measure_with_unit.unit_component))) = 1))) = 2) + THEN + RETURN (TRUE); + ELSE + RETURN (FALSE); + END_IF; + END; +END_FUNCTION; + +FUNCTION vector_difference + (arg1: vector_or_direction; arg2: vector_or_direction) : vector; + LOCAL + result : vector; + res, vec1, vec2 : direction; + mag, mag1, mag2 : REAL; + ndim : INTEGER; + END_LOCAL; + + IF ((NOT EXISTS (arg1)) OR (NOT EXISTS (arg2))) OR (arg1.dim <> arg2.dim) + THEN + RETURN (?) ; + ELSE + BEGIN + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VECTOR' IN TYPEOF(arg1) THEN + mag1 := arg1.magnitude; + vec1 := arg1\vector.orientation; + ELSE + mag1 := 1.0; + vec1 := arg1; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VECTOR' IN TYPEOF(arg2) THEN + mag2 := arg2.magnitude; + vec2 := arg2\vector.orientation; + ELSE + mag2 := 1.0; + vec2 := arg2; + END_IF; + vec1 := normalise (vec1); + vec2 := normalise (vec2); + ndim := SIZEOF(vec1.direction_ratios); + mag := 0.0; + res := dummy_gri || direction(vec1.direction_ratios); + REPEAT i := 1 TO ndim; + res.direction_ratios[i] := mag1*vec1.direction_ratios[i] - + mag2*vec2.direction_ratios[i]; + mag := mag + (res.direction_ratios[i]*res.direction_ratios[i]); + END_REPEAT; + IF (mag > 0.0 ) THEN + result := dummy_gri || vector( res, SQRT(mag)); + ELSE + result := dummy_gri || vector( vec1, 0.0); + END_IF; + END; + END_IF; + RETURN (result); +END_FUNCTION; + +END_SCHEMA; + diff --git a/scripts/StepImporter/schema_ap203e2_mim_lf.exp b/scripts/StepImporter/schema_ap203e2_mim_lf.exp new file mode 100644 index 000000000..79353049a --- /dev/null +++ b/scripts/StepImporter/schema_ap203e2_mim_lf.exp @@ -0,0 +1,16378 @@ +(* + $Id: mim_lf.exp,v 1.43 2009/09/10 20:08:09 darla Exp $ + ISO TC184/SC4/WG3 N2635 - ISO/TS 10303-403 AP203 configuration controlled 3d design of mechanical parts and assemblies - EXPRESS MIM Long form + Supersedes ISO TC184/SC4/WG3 N2464 +*) + +SCHEMA Ap203_configuration_controlled_3d_design_of_mechanical_parts_and_assemblies_mim_lf; + + +CONSTANT + deprecated_constructed_data_types : SET [0:?] OF STRING := ['approved_item', + 'certified_item', + 'change_request_item', + 'contracted_item', + 'cc_classified_item', + 'date_time_item', + 'cc_person_organization_item', + 'cc_specified_item', + 'start_request_item', + 'work_item']; + + + deprecated_entity_data_types : SET [0:?] OF STRING := ['cc_design_approval', + 'cc_design_certification', + 'cc_design_contract', + 'cc_design_date_and_time_assignment', + 'cc_design_person_and_organization_assignment', + 'cc_design_security_classification', + 'cc_design_specification_reference', + 'change', + 'change_request', + 'design_context', + 'design_make_from_relationship', + 'mechanical_context', + 'start_request', + 'start_work', + 'supplied_part_relationship']; + + + deprecated_interfaced_data_types : SET [0:?] OF STRING := ['document_with_class', + 'ordinal_date', + 'product_definition_formation_with_specified_source', + 'week_of_year_and_day_date']; + + + dummy_gri : geometric_representation_item := representation_item('')|| + geometric_representation_item(); + + + dummy_tri : topological_representation_item := representation_item('')|| + topological_representation_item(); + + + pre_defined_picture_representation_types : SET [0:?] OF STRING := [ 'JPEG', 'PNG', 'TIFF', 'BMP', 'GIF']; + + + +END_CONSTANT; + +TYPE absorbed_dose_measure = REAL; +END_TYPE; + +TYPE acceleration_measure = REAL; +END_TYPE; + +TYPE action_items = SELECT ( + action_directive, + certification_item, + characterized_object, + classification_item, + configuration_effectivity, + document_reference_item, + identification_item, + organization, + person_and_organization, + product_definition, + product_definition_formation, + product_definition_formation_relationship, + product_definition_relationship, + requirement_assigned_item); +END_TYPE; + +TYPE action_method_items = SELECT ( + product, + product_definition_formation); +END_TYPE; + +TYPE action_request_item = SELECT ( + product_definition, + product_definition_formation, + product_definition_formation_relationship, + product_definition_relationship, + property_definition, + versioned_action_request); +END_TYPE; + +TYPE ahead_or_behind = ENUMERATION OF ( + ahead, + exact, + behind ); +END_TYPE; + +TYPE amount_of_substance_measure = REAL; +END_TYPE; + +TYPE angle_direction_reference_select = SELECT ( + direction, + curve, + point_path); +END_TYPE; + +TYPE angle_direction_reference_with_a2p3d_select = SELECT ( + angle_direction_reference_select, + axis2_placement_3d); +END_TYPE; + +TYPE angle_relator = ENUMERATION OF ( + equal, + large, + small ); +END_TYPE; + +TYPE annotation_plane_element = SELECT ( + draughting_callout, + styled_item); +END_TYPE; + +TYPE annotation_representation_select = SELECT ( + presentation_area, + presentation_view, + symbol_representation); +END_TYPE; + +TYPE annotation_symbol_occurrence_item = SELECT ( + annotation_symbol, + defined_symbol); +END_TYPE; + +TYPE annotation_text_occurrence_item = SELECT ( + text_literal, + annotation_text, + annotation_text_character, + composite_text); +END_TYPE; + +TYPE approval_item = SELECT ( + action, + action_directive, + alternate_product_relationship, + applied_action_assignment, + applied_usage_right, + assembly_component_usage_substitute, + certification, + configuration_effectivity, + configuration_item, + contract, + date, + directed_action, + document, + document_file, + effectivity, + executed_action, + general_property_relationship, + group, + group_relationship, + information_usage_right, + product, + product_definition, + product_definition_formation, + product_definition_formation_relationship, + product_definition_relationship, + representation, + requirement_assignment, + security_classification, + shape_aspect_relationship, + versioned_action_request); +END_TYPE; + +TYPE approved_item = SELECT ( + certification, + change, + change_request, + configuration_effectivity, + configuration_item, + contract, + product, + security_classification, + start_request, + start_work); +END_TYPE; + +TYPE area_measure = REAL; +END_TYPE; + +TYPE area_or_view = SELECT ( + presentation_area, + presentation_view); +END_TYPE; + +TYPE attribute_classification_item = SELECT ( + action_directive, + action_method, + action_property, + action_property_representation, + action_relationship, + action_request_solution, + action_request_status, + alternate_product_relationship, + applied_action_assignment, + applied_action_request_assignment, + applied_approval_assignment, + applied_certification_assignment, + applied_document_reference, + applied_document_usage_constraint_assignment, + applied_effectivity_assignment, + applied_event_occurrence_assignment, + applied_external_identification_assignment, + applied_identification_assignment, + applied_organization_assignment, + applied_organizational_project_assignment, + applied_person_and_organization_assignment, + approval, + approval_person_organization, + approval_relationship, + approval_status, + certification, + context_dependent_unit, + contract, + date_and_time_assignment, + date_assignment, + derived_unit, + descriptive_representation_item, + document_file, + document_relationship, + effectivity, + event_occurrence_relationship, + executed_action, + general_property, + general_property_relationship, + group, + group_relationship, + information_right, + information_usage_right, + language, + measure_representation_item, + measure_with_unit, + named_unit, + organization_relationship, + organizational_address, + organizational_project_relationship, + person_and_organization, + person_and_organization_address, + product, + product_category, + product_concept, + product_concept_context, + product_definition, + product_definition_context, + product_definition_formation, + product_definition_formation_relationship, + product_definition_relationship, + property_definition, + property_definition_relationship, + property_definition_representation, + representation, + representation_context, + representation_item, + security_classification, + time_interval_relationship, + uncertainty_measure_with_unit, + usage_association, + versioned_action_request); +END_TYPE; + +TYPE attribute_language_item = SELECT ( + alternate_product_relationship, + application_context, + applied_certification_assignment, + applied_document_reference, + applied_document_usage_constraint_assignment, + applied_external_identification_assignment, + applied_identification_assignment, + applied_organizational_project_assignment, + applied_security_classification_assignment, + approval, + approval_relationship, + approval_status, + assembly_component_usage_substitute, + attribute_value_assignment, + certification, + certification_type, + configuration_design, + configuration_item, + contract, + date_role, + date_time_role, + descriptive_representation_item, + document_relationship, + document_usage_role, + effectivity, + effectivity_relationship, + event_occurrence, + external_source, + general_property, + general_property_relationship, + geometric_representation_item, + geometric_tolerance, + identification_role, + information_right, + information_usage_right, + make_from_usage_option, + mapped_item, + multi_language_attribute_assignment, + object_role, + organization_relationship, + organization_role, + organizational_project, + organizational_project_relationship, + organizational_project_role, + person_and_organization, + person_and_organization_role, + product, + product_concept, + product_concept_relationship, + product_definition, + product_definition_context, + product_definition_formation, + product_definition_formation_relationship, + product_definition_relationship, + product_definition_shape, + product_related_product_category, + property_definition, + representation, + security_classification, + security_classification_assignment, + shape_aspect, + shape_aspect_relationship, + shape_representation, + time_interval_role, + topological_representation_item, + uncertainty_measure_with_unit, + uncertainty_qualifier, + usage_association); +END_TYPE; + +TYPE attribute_type = SELECT ( + label, + text); +END_TYPE; + +TYPE axis2_placement = SELECT ( + axis2_placement_2d, + axis2_placement_3d); +END_TYPE; + +TYPE b_spline_curve_form = ENUMERATION OF ( + polyline_form, + circular_arc, + elliptic_arc, + parabolic_arc, + hyperbolic_arc, + unspecified ); +END_TYPE; + +TYPE b_spline_surface_form = ENUMERATION OF ( + plane_surf, + cylindrical_surf, + conical_surf, + spherical_surf, + toroidal_surf, + surf_of_revolution, + ruled_surf, + generalised_cone, + quadric_surf, + surf_of_linear_extrusion, + unspecified ); +END_TYPE; + +TYPE base_solid_select = SELECT ( + solid_model, + csg_primitive, + boolean_result); +WHERE + WR1 : NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRIMITIVE_2D' IN TYPEOF(SELF)); +END_TYPE; + +TYPE blend_end_condition_select = SELECT ( + point_on_curve, + edge_curve, + vertex); +END_TYPE; + +TYPE blend_radius_variation_type = ENUMERATION OF ( + linear_blend, + cubic_blend, + unspecified_blend ); +END_TYPE; + +TYPE boolean_operand = SELECT ( + solid_model, + half_space_solid, + csg_primitive, + boolean_result); +END_TYPE; + +TYPE boolean_operator = ENUMERATION OF ( + union, + intersection, + difference ); +END_TYPE; + +TYPE box_characteristic_select = SELECT ( + box_height, + box_width, + box_slant_angle, + box_rotate_angle); +END_TYPE; + +TYPE box_height = positive_ratio_measure; +END_TYPE; + +TYPE box_rotate_angle = plane_angle_measure; +END_TYPE; + +TYPE box_slant_angle = plane_angle_measure; +END_TYPE; + +TYPE box_width = positive_ratio_measure; +END_TYPE; + +TYPE camera_model_d3_multi_clipping_interection_select = SELECT ( + camera_model_d3_multi_clipping_union, + plane); +END_TYPE; + +TYPE camera_model_d3_multi_clipping_union_select = SELECT ( + camera_model_d3_multi_clipping_intersection, + plane); +END_TYPE; + +TYPE capacitance_measure = REAL; +END_TYPE; + +TYPE category_usage_item = SELECT ( + product_class); +END_TYPE; + +TYPE cc_classified_item = SELECT ( + assembly_component_usage, + product_definition_formation); +END_TYPE; + +TYPE cc_person_organization_item = SELECT ( + change, + change_request, + configuration_item, + contract, + product, + product_definition, + product_definition_formation, + security_classification, + start_request, + start_work); +END_TYPE; + +TYPE cc_specified_item = SELECT ( + product_definition, + shape_aspect); +END_TYPE; + +TYPE celsius_temperature_measure = REAL; +END_TYPE; + +TYPE central_or_parallel = ENUMERATION OF ( + central, + parallel ); +END_TYPE; + +TYPE certification_item = SELECT ( + alternate_product_relationship, + make_from_usage_option, + product_definition_formation, + product_definition_formation_relationship); +END_TYPE; + +TYPE certified_item = SELECT ( + supplied_part_relationship); +END_TYPE; + +TYPE change_request_item = SELECT ( + product_definition_formation); +END_TYPE; + +TYPE character_spacing_select = SELECT ( + length_measure, + ratio_measure, + measure_with_unit, + descriptive_measure); +END_TYPE; + +TYPE character_style_select = SELECT ( + character_glyph_style_stroke, + character_glyph_style_outline, + text_style_for_defined_font); +END_TYPE; + +TYPE characterized_action_definition = SELECT ( + action, + action_method, + action_method_relationship, + action_relationship); +END_TYPE; + +TYPE characterized_definition = SELECT ( + characterized_object, + characterized_product_definition, + shape_definition); +END_TYPE; + +TYPE characterized_material_property = SELECT ( + material_property_representation, + product_material_composition_relationship); +END_TYPE; + +TYPE characterized_product_composition_value = SELECT ( + measure_with_unit); +END_TYPE; + +TYPE characterized_product_definition = SELECT ( + product_definition, + product_definition_relationship); +END_TYPE; + +TYPE class_usage_effectivity_context_item = SELECT ( + product_definition); +END_TYPE; + +TYPE classification_item = SELECT ( + action, + action_directive, + action_method, + action_property, + action_relationship, + action_request_solution, + action_request_status, + address, + alternate_product_relationship, + applied_action_assignment, + applied_action_request_assignment, + applied_approval_assignment, + applied_certification_assignment, + applied_contract_assignment, + applied_date_and_time_assignment, + applied_date_assignment, + applied_document_reference, + applied_document_usage_constraint_assignment, + applied_effectivity_assignment, + applied_event_occurrence_assignment, + applied_external_identification_assignment, + applied_identification_assignment, + applied_organization_assignment, + applied_organizational_project_assignment, + applied_person_and_organization_assignment, + applied_security_classification_assignment, + approval, + approval_person_organization, + approval_relationship, + approval_status, + assembly_component_usage_substitute, + calendar_date, + certification, + characterized_class, + characterized_object, + class, + classified_item, + configuration_item, + context_dependent_unit, + contract, + conversion_based_unit, + date_and_time, + date_and_time_assignment, + date_assignment, + derived_unit, + descriptive_representation_item, + directed_action, + document_file, + document_relationship, + effectivity, + event_occurrence, + executed_action, + general_property, + general_property_relationship, + group, + identification_assignment, + information_right, + information_usage_right, + language, + measure_representation_item, + measure_with_unit, + multi_language_attribute_assignment, + named_unit, + organization, + organization_relationship, + organizational_address, + organizational_project, + organizational_project_relationship, + person, + person_and_organization_address, + product, + product_concept, + product_definition, + product_definition_context, + product_definition_formation, + product_definition_formation_relationship, + product_definition_relationship, + property_definition, + property_definition_representation, + representation, + representation_context, + representation_item, + security_classification, + uncertainty_measure_with_unit, + usage_association, + versioned_action_request); +END_TYPE; + +TYPE classified_item = SELECT ( + product, + product_definition, + product_definition_formation); +END_TYPE; + +TYPE compound_item_definition = SELECT ( + list_representation_item, + set_representation_item); +END_TYPE; + +TYPE conductance_measure = REAL; +END_TYPE; + +TYPE configuration_design_item = SELECT ( + product_definition, + product_definition_formation); +END_TYPE; + +TYPE configured_effectivity_context_item = SELECT ( + product_concept_feature_association); +END_TYPE; + +TYPE configured_effectivity_item = SELECT ( + product_definition); +END_TYPE; + +TYPE constructive_geometry_representation_or_shape_represenation = SELECT ( + constructive_geometry_representation, + shape_representation); +END_TYPE; + +TYPE context_dependent_measure = REAL; +END_TYPE; + +TYPE contract_item = SELECT ( + action_directive, + alternate_product_relationship, + directed_action, + executed_action, + information_usage_right, + organization, + person_and_organization, + product, + product_definition_formation); +END_TYPE; + +TYPE contracted_item = SELECT ( + product_definition_formation); +END_TYPE; + +TYPE count_measure = NUMBER; +END_TYPE; + +TYPE csg_primitive = SELECT ( + sphere, + block, + right_angular_wedge, + torus, + right_circular_cone, + right_circular_cylinder); +END_TYPE; + +TYPE csg_select = SELECT ( + boolean_result, + csg_primitive); +END_TYPE; + +TYPE curve_font_or_scaled_curve_font_select = SELECT ( + curve_style_font_select, + curve_style_font_and_scaling); +END_TYPE; + +TYPE curve_on_surface = SELECT ( + pcurve, + surface_curve, + composite_curve_on_surface); +END_TYPE; + +TYPE curve_or_annotation_curve_occurrence = SELECT ( + curve, + annotation_curve_occurrence); +END_TYPE; + +TYPE curve_or_render = SELECT ( + curve_style, + curve_style_rendering); +END_TYPE; + +TYPE curve_style_font_select = SELECT ( + curve_style_font, + pre_defined_curve_font, + externally_defined_curve_font); +END_TYPE; + +TYPE date_and_time_item = SELECT ( + action, + action_directive, + applied_action_assignment, + applied_organization_assignment, + applied_person_and_organization_assignment, + applied_security_classification_assignment, + approval_person_organization, + certification, + contract, + directed_action, + document, + document_file, + event_occurrence, + executed_action, + information_usage_right, + organizational_project, + product_definition, + product_definition_formation, + product_definition_relationship, + rule_action, + security_classification, + versioned_action_request); +END_TYPE; + +TYPE date_item = SELECT ( + action, + action_directive, + applied_action_assignment, + applied_organization_assignment, + applied_person_and_organization_assignment, + applied_security_classification_assignment, + approval_person_organization, + certification, + contract, + directed_action, + document, + document_file, + event_occurrence, + executed_action, + information_usage_right, + organizational_project, + product_definition, + product_definition_formation, + product_definition_relationship, + security_classification, + versioned_action_request); +END_TYPE; + +TYPE date_time_item = SELECT ( + approval_person_organization, + certification, + change, + change_request, + contract, + product_definition, + security_classification, + start_request, + start_work); +END_TYPE; + +TYPE date_time_or_event_occurrence = SELECT ( + date_time_select, + event_occurrence); +END_TYPE; + +TYPE date_time_select = SELECT ( + date, + date_and_time, + local_time); +END_TYPE; + +TYPE day_in_month_number = INTEGER; +WHERE + WR1 : {1 <= SELF <= 31}; +END_TYPE; + +TYPE day_in_week_number = INTEGER; +WHERE + WR1 : { 1 <= SELF <= 7 }; +END_TYPE; + +TYPE day_in_year_number = INTEGER; +WHERE + WR1 : {1 <= SELF <= 366}; +END_TYPE; + +TYPE defined_symbol_select = SELECT ( + pre_defined_symbol, + externally_defined_symbol); +END_TYPE; + +TYPE derived_property_select = SELECT ( + property_definition, + action_property); +END_TYPE; + +TYPE description_attribute_select = SELECT ( + action_request_solution, + application_context, + approval_role, + configuration_design, + date_role, + date_time_role, + context_dependent_shape_representation, + effectivity, + external_source, + organization_role, + person_and_organization_role, + person_and_organization, + property_definition_representation, + representation); +END_TYPE; + +TYPE descriptive_measure = STRING; +END_TYPE; + +TYPE dimension_count = INTEGER; +WHERE + WR1 : SELF > 0; +END_TYPE; + +TYPE dimension_extent_usage = ENUMERATION OF ( + origin, + target ); +END_TYPE; + +TYPE dimensional_characteristic = SELECT ( + dimensional_location, + dimensional_size); +END_TYPE; + +TYPE direction_count_select = SELECT ( + u_direction_count, + v_direction_count); +END_TYPE; + +TYPE document_identifier_assigned_item = SELECT ( + document); +END_TYPE; + +TYPE document_reference_item = SELECT ( + action_method, + applied_external_identification_assignment, + assembly_component_usage, + characterized_class, + characterized_object, + configuration_item, + descriptive_representation_item, + dimensional_size, + executed_action, + externally_defined_dimension_definition, + externally_defined_item, + group, + group_relationship, + information_right, + information_usage_right, + material_designation, + measure_representation_item, + product, + product_category, + product_definition, + product_definition_formation, + product_definition_formation_relationship, + product_definition_relationship, + property_definition, + representation, + representation_item, + rule_set, + shape_aspect, + shape_aspect_relationship, + usage_association, + versioned_action_request); +END_TYPE; + +TYPE dose_equivalent_measure = REAL; +END_TYPE; + +TYPE draughting_callout_element = SELECT ( + annotation_text_occurrence, + annotation_symbol_occurrence, + annotation_curve_occurrence); +END_TYPE; + +TYPE draughting_model_item_association_select = SELECT ( + annotation_occurrence, + draughting_callout); +END_TYPE; + +TYPE draughting_model_item_select = SELECT ( + mapped_item, + styled_item, + axis2_placement, + camera_model, + draughting_callout); +END_TYPE; + +TYPE draughting_titled_item = SELECT ( + drawing_revision, + drawing_sheet_revision); +END_TYPE; + +TYPE effectivity_item = SELECT ( + assembly_component_usage_substitute, + product, + product_definition, + product_definition_formation, + product_definition_relationship, + product_definition_substitute); +END_TYPE; + +TYPE electric_charge_measure = REAL; +END_TYPE; + +TYPE electric_current_measure = REAL; +END_TYPE; + +TYPE electric_potential_measure = REAL; +END_TYPE; + +TYPE energy_measure = REAL; +END_TYPE; + +TYPE event_occurrence_item = SELECT ( + organizational_project); +END_TYPE; + +TYPE external_identification_item = SELECT ( + action_relationship, + action_request_status, + applied_organization_assignment, + applied_person_and_organization_assignment, + approval, + approval_status, + date_and_time_assignment, + date_assignment, + document_file, + external_source, + externally_defined_class, + externally_defined_context_dependent_unit, + externally_defined_conversion_based_unit, + externally_defined_general_property, + externally_defined_picture_representation_item, + externally_defined_representation_item, + organizational_address, + product_definition, + security_classification, + trimmed_curve, + versioned_action_request); +END_TYPE; + +TYPE fill_area_style_tile_shape_select = SELECT ( + fill_area_style_tile_curve_with_style, + fill_area_style_tile_coloured_region, + fill_area_style_tile_symbol_with_style, + pre_defined_tile, + externally_defined_tile); +END_TYPE; + +TYPE fill_style_select = SELECT ( + fill_area_style_colour, + externally_defined_tile_style, + fill_area_style_tiles, + externally_defined_hatch_style, + fill_area_style_hatching); +END_TYPE; + +TYPE font_select = SELECT ( + pre_defined_text_font, + externally_defined_text_font, + text_font); +END_TYPE; + +TYPE force_measure = REAL; +END_TYPE; + +TYPE founded_item_select = SELECT ( + founded_item, + representation_item); +END_TYPE; + +TYPE frequency_measure = REAL; +END_TYPE; + +TYPE generalized_surface_select = SELECT ( + surface, + face_surface, + surfaced_open_shell); +END_TYPE; + +TYPE geometric_item_specific_usage_select = SELECT ( + shape_aspect, + shape_aspect_relationship); +END_TYPE; + +TYPE geometric_set_select = SELECT ( + point, + curve, + surface); +END_TYPE; + +TYPE groupable_item = SELECT ( + geometric_representation_item, + group_relationship, + mapped_item, + package_product_concept_feature, + product_concept_feature, + product_definition, + product_definition_formation, + property_definition_representation, + representation, + representation_item, + representation_relationship_with_transformation, + shape_aspect, + shape_aspect_relationship, + shape_representation_relationship, + styled_item, + topological_representation_item); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GROUP' IN TYPEOF(SELF)); +END_TYPE; + +TYPE hour_in_day = INTEGER; +WHERE + WR1 : { 0 <= SELF < 24 }; +END_TYPE; + +TYPE id_attribute_select = SELECT ( + action, + address, + product_category, + property_definition, + shape_aspect, + shape_aspect_relationship, + application_context, + group, + organizational_project, + representation); +END_TYPE; + +TYPE identification_item = SELECT ( + approval_status, + characterized_class, + class, + configuration_item, + contract, + dimensional_size, + document_file, + general_property, + group, + group_relationship, + information_right, + information_usage_right, + material_designation, + organization, + person_and_organization, + product, + product_category, + product_class, + product_concept, + product_concept_feature, + product_definition, + product_definition_formation, + product_identification, + representation, + rule_set, + security_classification, + security_classification_level, + shape_aspect_relationship, + shape_representation, + usage_association); +END_TYPE; + +TYPE identifier = STRING; +END_TYPE; + +TYPE illuminance_measure = REAL; +END_TYPE; + +TYPE inductance_measure = REAL; +END_TYPE; + +TYPE instance_usage_context_select = SELECT ( + product_definition_relationship, + product_definition_usage); +END_TYPE; + +TYPE invisibility_context = SELECT ( + draughting_model, + presentation_representation, + presentation_set); +END_TYPE; + +TYPE invisible_item = SELECT ( + draughting_callout, + presentation_layer_assignment, + representation, + styled_item); +END_TYPE; + +TYPE ir_usage_item = action_items; +WHERE + wr1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONFIGURATION_EFFECTIVITY' IN TYPEOF(SELF)); +END_TYPE; + +TYPE knot_type = ENUMERATION OF ( + uniform_knots, + quasi_uniform_knots, + piecewise_bezier_knots, + unspecified ); +END_TYPE; + +TYPE label = STRING; +END_TYPE; + +TYPE layered_item = SELECT ( + presentation_representation, + representation_item); +END_TYPE; + +TYPE length_measure = REAL; +END_TYPE; + +TYPE limit_condition = ENUMERATION OF ( + maximum_material_condition, + least_material_condition, + regardless_of_feature_size ); +END_TYPE; + +TYPE list_of_reversible_topology_item = LIST [0:?] OF reversible_topology_item; +END_TYPE; + +TYPE list_representation_item = LIST [1:?] OF representation_item; +END_TYPE; + +TYPE luminous_flux_measure = REAL; +END_TYPE; + +TYPE luminous_intensity_measure = REAL; +END_TYPE; + +TYPE magnetic_flux_density_measure = REAL; +END_TYPE; + +TYPE magnetic_flux_measure = REAL; +END_TYPE; + +TYPE marker_select = SELECT ( + marker_type, + pre_defined_marker); +END_TYPE; + +TYPE marker_type = ENUMERATION OF ( + dot, + x, + plus, + asterisk, + ring, + square, + triangle ); +END_TYPE; + +TYPE mass_measure = REAL; +END_TYPE; + +TYPE measure_value = SELECT ( + absorbed_dose_measure, + dose_equivalent_measure, + radioactivity_measure, + acceleration_measure, + amount_of_substance_measure, + area_measure, + celsius_temperature_measure, + context_dependent_measure, + count_measure, + descriptive_measure, + capacitance_measure, + electric_charge_measure, + conductance_measure, + electric_current_measure, + electric_potential_measure, + energy_measure, + magnetic_flux_density_measure, + force_measure, + frequency_measure, + illuminance_measure, + inductance_measure, + length_measure, + luminous_flux_measure, + luminous_intensity_measure, + magnetic_flux_measure, + mass_measure, + numeric_measure, + non_negative_length_measure, + parameter_value, + plane_angle_measure, + positive_length_measure, + positive_plane_angle_measure, + positive_ratio_measure, + power_measure, + pressure_measure, + ratio_measure, + resistance_measure, + solid_angle_measure, + thermodynamic_temperature_measure, + time_measure, + velocity_measure, + volume_measure); +END_TYPE; + +TYPE mechanical_design_and_draughting_relationship_select = SELECT ( + draughting_model, + mechanical_design_geometric_presentation_representation, + mechanical_design_presentation_representation_with_draughting, + mechanical_design_shaded_presentation_representation, + shape_representation); +END_TYPE; + +TYPE mechanical_design_geometric_presentation_area_items = SELECT ( + axis2_placement, + mapped_item); +END_TYPE; + +TYPE mechanical_design_geometric_presentation_representation_items = SELECT ( + axis2_placement, + camera_model_d3, + mapped_item, + styled_item); +END_TYPE; + +TYPE message = STRING; +END_TYPE; + +TYPE minute_in_hour = INTEGER; +WHERE + WR1 : { 0 <= SELF <= 59 }; +END_TYPE; + +TYPE month_in_year_number = INTEGER; +WHERE + WR1 : { 1 <= SELF <= 12 }; +END_TYPE; + +TYPE multi_language_attribute_item = SELECT ( + alternate_product_relationship, + application_context, + applied_certification_assignment, + applied_document_reference, + applied_document_usage_constraint_assignment, + applied_external_identification_assignment, + applied_identification_assignment, + applied_organizational_project_assignment, + approval, + approval_relationship, + approval_status, + assembly_component_usage_substitute, + attribute_value_assignment, + certification, + certification_type, + colour, + configuration_design, + configuration_item, + contract, + date_role, + date_time_role, + descriptive_representation_item, + document_relationship, + document_usage_role, + effectivity, + effectivity_relationship, + event_occurrence, + external_source, + general_property, + general_property_relationship, + geometric_representation_item, + geometric_tolerance, + identification_role, + information_right, + information_usage_right, + make_from_usage_option, + mapped_item, + object_role, + organization_relationship, + organization_role, + organizational_project, + organizational_project_relationship, + organizational_project_role, + person_and_organization, + person_and_organization_role, + product, + product_concept, + product_concept_relationship, + product_definition, + product_definition_context, + product_definition_formation, + product_definition_formation_relationship, + product_definition_relationship, + product_definition_shape, + product_related_product_category, + property_definition, + representation, + representation_relationship, + security_classification, + security_classification_assignment, + shape_aspect, + shape_aspect_relationship, + shape_representation, + time_interval_role, + topological_representation_item, + uncertainty_measure_with_unit, + usage_association); +END_TYPE; + +TYPE name_attribute_select = SELECT ( + action_request_solution, + address, + configuration_design, + context_dependent_shape_representation, + derived_unit, + effectivity, + person_and_organization, + product_definition, + product_definition_substitute, + property_definition_representation); +END_TYPE; + +TYPE name_item = SELECT ( + assembly_component_usage, + external_class_library, + group, + group_relationship, + product, + product_definition); +END_TYPE; + +TYPE non_negative_length_measure = length_measure; +WHERE + WR1 : SELF >= 0.0; +END_TYPE; + +TYPE nonnegative_integer = INTEGER; +WHERE + nonnegativity : SELF >= 0; +END_TYPE; + +TYPE null_style = ENUMERATION OF ( + null ); +END_TYPE; + +TYPE numeric_measure = NUMBER; +END_TYPE; + +TYPE organization_item = SELECT ( + action, + action_directive, + alternate_product_relationship, + applied_action_assignment, + applied_classification_assignment, + applied_identification_assignment, + applied_security_classification_assignment, + approval, + assembly_component_usage_substitute, + certification, + class, + configuration_item, + contract, + document_file, + executed_action, + general_property, + information_usage_right, + organizational_project, + product, + product_definition, + product_definition_formation, + product_definition_formation_relationship, + property_definition, + rule_action, + security_classification, + shape_representation, + versioned_action_request); +END_TYPE; + +TYPE orientation_basis_select = SELECT ( + axis2_placement_3d, + min_and_major_ply_orientation_basis); +END_TYPE; + +TYPE parameter_value = REAL; +END_TYPE; + +TYPE pcurve_or_surface = SELECT ( + pcurve, + surface); +END_TYPE; + +TYPE person_and_organization_item = SELECT ( + action, + action_directive, + alternate_product_relationship, + applied_action_assignment, + applied_classification_assignment, + applied_identification_assignment, + applied_security_classification_assignment, + approval, + assembly_component_usage_substitute, + certification, + configuration_item, + contract, + document_file, + executed_action, + general_property, + information_usage_right, + organizational_project, + person_and_organization, + product, + product_definition, + product_definition_formation, + product_definition_formation_relationship, + property_definition, + rule_action, + security_classification, + shape_representation, + versioned_action_request); +END_TYPE; + +TYPE person_organization_select = SELECT ( + person, + organization, + person_and_organization); +END_TYPE; + +TYPE picture_representation_item_select = SELECT ( + styled_item, + planar_box, + axis2_placement_2d); +END_TYPE; + +TYPE plane_angle_measure = REAL; +END_TYPE; + +TYPE plane_or_planar_box = SELECT ( + plane, + planar_box); +END_TYPE; + +TYPE point_and_vector_member = SELECT ( + point, + direction); +END_TYPE; + +TYPE point_and_vector_members = LIST [2:3] OF point_and_vector_member; +END_TYPE; + +TYPE point_path_members = LIST [1:?] OF point_and_vector; +END_TYPE; + +TYPE positive_integer = nonnegative_integer; +WHERE + positivity : SELF > 0; +END_TYPE; + +TYPE positive_length_measure = non_negative_length_measure; +WHERE + WR1 : SELF > 0.0; +END_TYPE; + +TYPE positive_plane_angle_measure = plane_angle_measure; +WHERE + WR1 : SELF > 0.0; +END_TYPE; + +TYPE positive_ratio_measure = ratio_measure; +WHERE + WR1 : SELF > 0.0; +END_TYPE; + +TYPE power_measure = REAL; +END_TYPE; + +TYPE preferred_surface_curve_representation = ENUMERATION OF ( + curve_3d, + pcurve_s1, + pcurve_s2 ); +END_TYPE; + +TYPE presentable_text = STRING; +WHERE + WR1 : control_characters_free(SELF); +END_TYPE; + +TYPE presentation_representation_select = SELECT ( + presentation_representation, + presentation_set); +END_TYPE; + +TYPE presentation_size_assignment_select = SELECT ( + presentation_view, + presentation_area, + area_in_set); +END_TYPE; + +TYPE presentation_style_select = SELECT ( + point_style, + curve_style, + surface_style_usage, + symbol_style, + fill_area_style, + text_style, + null_style); +END_TYPE; + +TYPE presented_item_select = SELECT ( + action, + action_method, + action_relationship, + product_concept, + product_concept_feature, + product_concept_feature_category, + product_definition, + product_definition_formation, + product_definition_relationship); +END_TYPE; + +TYPE pressure_measure = REAL; +END_TYPE; + +TYPE product_definition_or_assembly_relationship = SELECT ( + assembly_component_usage, + product_definition); +END_TYPE; + +TYPE product_definition_or_breakdown_element_usage = SELECT ( + product_definition, + product_definition_usage); +END_TYPE; + +TYPE product_definition_or_product_definition_relationship = SELECT ( + product_definition, + product_definition_usage); +END_TYPE; + +TYPE product_or_formation_or_definition = SELECT ( + product, + product_definition_formation, + product_definition); +END_TYPE; + +TYPE project_item = SELECT ( + executed_action, + product_concept); +END_TYPE; + +TYPE radioactivity_measure = REAL; +END_TYPE; + +TYPE ratio_measure = REAL; +END_TYPE; + +TYPE rendering_properties_select = SELECT ( + surface_style_reflectance_ambient, + surface_style_transparent); +END_TYPE; + +TYPE represented_definition = SELECT ( + general_property, + property_definition, + property_definition_relationship, + shape_aspect, + shape_aspect_relationship); +END_TYPE; + +TYPE requirement_assigned_item = SELECT ( + configuration_item, + descriptive_representation_item, + product, + product_class, + product_definition, + product_definition_formation, + product_definition_relationship, + representation, + shape_aspect); +END_TYPE; + +TYPE requirement_satisfaction_item = SELECT ( + requirement_assigned_item); +END_TYPE; + +TYPE requirement_source_item = SELECT ( + characterized_object, + group, + group_relationship, + product, + product_definition, + product_definition_formation, + product_definition_relationship, + shape_aspect); +END_TYPE; + +TYPE resistance_measure = REAL; +END_TYPE; + +TYPE reversible_topology = SELECT ( + reversible_topology_item, + list_of_reversible_topology_item, + set_of_reversible_topology_item); +END_TYPE; + +TYPE reversible_topology_item = SELECT ( + edge, + path, + face, + face_bound, + closed_shell, + open_shell); +END_TYPE; + +TYPE role_select = SELECT ( + action_assignment, + action_request_assignment, + approval_assignment, + approval_date_time, + certification_assignment, + contract_assignment, + document_reference, + effectivity_assignment, + group_assignment, + name_assignment, + security_classification_assignment); +END_TYPE; + +TYPE rule_superseded_item = SELECT ( + product_definition_formation); +END_TYPE; + +TYPE second_in_minute = REAL; +WHERE + WR1 : { 0 <= SELF <= 60.0 }; +END_TYPE; + +TYPE security_classification_item = SELECT ( + assembly_component_usage, + document, + document_file, + make_from_usage_option, + product, + product_definition, + product_definition_formation, + product_definition_usage); +END_TYPE; + +TYPE set_of_reversible_topology_item = SET [0:?] OF reversible_topology_item; +END_TYPE; + +TYPE set_representation_item = SET [1:?] OF representation_item; +END_TYPE; + +TYPE shading_curve_method = ENUMERATION OF ( + constant_colour, + linear_colour ); +END_TYPE; + +TYPE shading_surface_method = ENUMERATION OF ( + constant_shading, + colour_shading, + dot_shading, + normal_shading ); +END_TYPE; + +TYPE shape_definition = SELECT ( + product_definition_shape, + shape_aspect, + shape_aspect_relationship); +END_TYPE; + +TYPE shell = SELECT ( + vertex_shell, + wire_shell, + open_shell, + closed_shell); +END_TYPE; + +TYPE si_prefix = ENUMERATION OF ( + exa, + peta, + tera, + giga, + mega, + kilo, + hecto, + deca, + deci, + centi, + milli, + micro, + nano, + pico, + femto, + atto ); +END_TYPE; + +TYPE si_unit_name = ENUMERATION OF ( + metre, + gram, + second, + ampere, + kelvin, + mole, + candela, + radian, + steradian, + hertz, + newton, + pascal, + joule, + watt, + coulomb, + volt, + farad, + ohm, + siemens, + weber, + tesla, + henry, + degree_Celsius, + lumen, + lux, + becquerel, + gray, + sievert ); +END_TYPE; + +TYPE size_select = SELECT ( + positive_length_measure, + measure_with_unit, + descriptive_measure); +END_TYPE; + +TYPE sketch_basis_select = SELECT ( + curve_bounded_surface, + face_surface); +END_TYPE; + +TYPE solid_angle_measure = REAL; +END_TYPE; + +TYPE source = ENUMERATION OF ( + made, + bought, + not_known ); +END_TYPE; + +TYPE source_item = SELECT ( + identifier, + message); +END_TYPE; + +TYPE start_request_item = SELECT ( + product_definition_formation); +END_TYPE; + +TYPE string_representation_item_select = SELECT ( + descriptive_representation_item, + included_text_block, + structured_text_composition); +END_TYPE; + +TYPE style_context_select = SELECT ( + group, + presentation_layer_assignment, + presentation_set, + representation, + representation_item, + representation_relationship); +END_TYPE; + +TYPE surface_side = ENUMERATION OF ( + positive, + negative, + both ); +END_TYPE; + +TYPE surface_side_style_select = SELECT ( + surface_side_style, + pre_defined_surface_side_style); +END_TYPE; + +TYPE surface_style_element_select = SELECT ( + surface_style_fill_area, + surface_style_boundary, + surface_style_silhouette, + surface_style_segmentation_curve, + surface_style_control_grid, + surface_style_parameter_line, + surface_style_rendering); +END_TYPE; + +TYPE symbol_style_select = SELECT ( + symbol_colour); +END_TYPE; + +TYPE text = STRING; +END_TYPE; + +TYPE text_alignment = label; +END_TYPE; + +TYPE text_delineation = label; +END_TYPE; + +TYPE text_or_character = SELECT ( + annotation_text, + annotation_text_character, + composite_text, + text_literal); +END_TYPE; + +TYPE text_path = ENUMERATION OF ( + left, + right, + up, + down ); +END_TYPE; + +TYPE text_string_representation_item = SELECT ( + text_literal, + annotation_text, + annotation_text_character, + composite_text, + axis2_placement); +END_TYPE; + +TYPE thermodynamic_temperature_measure = REAL; +END_TYPE; + +TYPE time_interval_item = SELECT ( + action, + time_interval_based_effectivity); +END_TYPE; + +TYPE time_measure = REAL; +END_TYPE; + +TYPE tolerance_method_definition = SELECT ( + tolerance_value, + limits_and_fits); +END_TYPE; + +TYPE transformation = SELECT ( + item_defined_transformation, + functionally_defined_transformation); +END_TYPE; + +TYPE transition_code = ENUMERATION OF ( + discontinuous, + continuous, + cont_same_gradient, + cont_same_gradient_same_curvature ); +END_TYPE; + +TYPE trim_condition_select = SELECT ( + length_measure, + plane_angle_measure, + generalized_surface_select, + solid_model); +END_TYPE; + +TYPE trim_intent = ENUMERATION OF ( + blind, + offset, + through_all, + unspecified, + up_to_next ); +END_TYPE; + +TYPE trimming_preference = ENUMERATION OF ( + cartesian, + parameter, + unspecified ); +END_TYPE; + +TYPE trimming_select = SELECT ( + cartesian_point, + parameter_value); +END_TYPE; + +TYPE u_direction_count = INTEGER; +WHERE + WR1 : SELF > 1; +END_TYPE; + +TYPE unit = SELECT ( + derived_unit, + named_unit); +END_TYPE; + +TYPE v_direction_count = INTEGER; +WHERE + WR1 : SELF > 1; +END_TYPE; + +TYPE value_qualifier = SELECT ( + precision_qualifier, + type_qualifier, + uncertainty_qualifier); +END_TYPE; + +TYPE vector_or_direction = SELECT ( + vector, + direction); +END_TYPE; + +TYPE velocity_measure = REAL; +END_TYPE; + +TYPE volume_measure = REAL; +END_TYPE; + +TYPE week_in_year_number = INTEGER; +WHERE + WR1 : { 1 <= SELF <= 53 }; +END_TYPE; + +TYPE work_item = SELECT ( + product_definition_formation); +END_TYPE; + +TYPE year_number = INTEGER; +END_TYPE; + +ENTITY absorbed_dose_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ABSORBED_DOSE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY absorbed_dose_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.gray); +END_ENTITY; + + +ENTITY abstract_variable + SUBTYPE OF (property_definition, property_definition_representation, representation, representation_item); +END_ENTITY; + + +ENTITY acceleration_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ACCELERATION_UNIT' IN TYPEOF (SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY acceleration_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = + dimensional_exponents ( 1.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0 ); +END_ENTITY; + + +ENTITY action; + name : label; + description : OPTIONAL text; + chosen_method : action_method; +DERIVE + id : identifier := get_id_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY action_assignment + ABSTRACT SUPERTYPE; + assigned_action : action; +DERIVE + role : object_role := get_role(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; +END_ENTITY; + + +ENTITY action_directive; + name : label; + description : OPTIONAL text; + analysis : text; + comment : text; + requests : SET [1:?] OF versioned_action_request; +END_ENTITY; + + +ENTITY action_method; + name : label; + description : OPTIONAL text; + consequence : text; + purpose : text; +END_ENTITY; + + +ENTITY action_method_assignment + ABSTRACT SUPERTYPE; + assigned_action_method : action_method; + role : action_method_role; +END_ENTITY; + + +ENTITY action_method_relationship; + name : label; + description : OPTIONAL text; + relating_method : action_method; + related_method : action_method; +END_ENTITY; + + +ENTITY action_method_role; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY action_property; + name : label; + description : text; + definition : characterized_action_definition; +END_ENTITY; + + +ENTITY action_property_representation; + name : label; + description : text; + property : action_property; + representation : representation; +END_ENTITY; + + +ENTITY action_relationship; + name : label; + description : OPTIONAL text; + relating_action : action; + related_action : action; +END_ENTITY; + + +ENTITY action_request_assignment + ABSTRACT SUPERTYPE; + assigned_action_request : versioned_action_request; +DERIVE + role : object_role := get_role(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; +END_ENTITY; + + +ENTITY action_request_solution; + method : action_method; + request : versioned_action_request; +DERIVE + description : text := get_description_value(SELF); + name : label := get_name_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; + WR2 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY action_request_status; + status : label; + assigned_request : versioned_action_request; +END_ENTITY; + + +ENTITY action_status; + status : label; + assigned_action : executed_action; +END_ENTITY; + + +ENTITY address; + internal_location : OPTIONAL label; + street_number : OPTIONAL label; + street : OPTIONAL label; + postal_box : OPTIONAL label; + town : OPTIONAL label; + region : OPTIONAL label; + postal_code : OPTIONAL label; + country : OPTIONAL label; + facsimile_number : OPTIONAL label; + telephone_number : OPTIONAL label; + electronic_mail_address : OPTIONAL label; + telex_number : OPTIONAL label; +DERIVE + name : label := get_name_value(SELF); + url : identifier := get_id_value(SELF); +WHERE + WR1 : EXISTS(internal_location) OR EXISTS(street_number) OR EXISTS(street) OR EXISTS(postal_box) OR EXISTS(town) OR EXISTS(region) OR EXISTS(postal_code) OR EXISTS(country) OR EXISTS(facsimile_number) OR EXISTS(telephone_number) OR EXISTS(electronic_mail_address) OR EXISTS(telex_number); +END_ENTITY; + + +ENTITY advanced_brep_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF ( +QUERY ( it <* SELF.items| NOT ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACETED_BREP', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D' ] * TYPEOF (it)) = 1) )) = 0; + WR2 : SIZEOF ( +QUERY ( it <* SELF.items| ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' ] * TYPEOF (it)) = 1) )) > 0; + WR3 : SIZEOF ( +QUERY ( msb <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( csh <* msb_shells(msb)| NOT ( SIZEOF ( +QUERY ( fcs <* csh\connected_face_set.cfs_faces| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fcs)) )) = 0) )) = 0) )) = 0; + WR4 : SIZEOF ( +QUERY ( msb <* +QUERY ( it <* items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF (it)) )| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_CLOSED_SHELL' IN TYPEOF (msb\manifold_solid_brep.outer)) )) = 0; + WR5 : SIZEOF ( +QUERY ( brv <* +QUERY ( it <* items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BREP_WITH_VOIDS' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( csh <* brv\brep_with_voids.voids| csh\oriented_closed_shell.orientation )) = 0) )) = 0; + WR6 : SIZEOF ( +QUERY ( mi <* +QUERY ( it <* items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) )| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_BREP_SHAPE_REPRESENTATION' IN TYPEOF (mi\mapped_item.mapping_source.mapped_representation)) )) = 0; +END_ENTITY; + + +ENTITY advanced_face + SUBTYPE OF (face_surface); +WHERE + WR1 : SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELEMENTARY_SURFACE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_SURFACE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SWEPT_SURFACE' ] * TYPEOF (face_geometry)) = 1; + WR2 : SIZEOF ( +QUERY ( elp_fbnds <* +QUERY ( bnds <* bounds| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) )| NOT ( SIZEOF ( +QUERY ( oe <* elp_fbnds.bound\path.edge_list| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_CURVE' IN TYPEOF (oe\oriented_edge.edge_element)) )) = 0) )) = 0; + WR3 : SIZEOF ( +QUERY ( elp_fbnds <* +QUERY ( bnds <* bounds| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) )| NOT ( SIZEOF ( +QUERY ( oe <* elp_fbnds.bound\path.edge_list| NOT ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE' ] * TYPEOF (oe.edge_element\edge_curve.edge_geometry)) = 1) )) = 0) )) = 0; + WR4 : SIZEOF ( +QUERY ( elp_fbnds <* +QUERY ( bnds <* bounds| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) )| NOT ( SIZEOF ( +QUERY ( oe <* elp_fbnds.bound\path.edge_list| NOT ((('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF (oe\edge.edge_start)) AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT' IN TYPEOF (oe\edge.edge_start\vertex_point.vertex_geometry))) AND (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF (oe\edge.edge_end)) AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT' IN TYPEOF (oe\edge.edge_end\vertex_point.vertex_geometry)))) )) = 0) )) = 0; + WR5 : SIZEOF ( +QUERY ( elp_fbnds <* +QUERY ( bnds <* bounds| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) )| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_PATH' IN TYPEOF (elp_fbnds.bound)) )) = 0; + WR6 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SWEPT_SURFACE' IN TYPEOF (face_geometry)) OR ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE' ] * TYPEOF (face_geometry\swept_surface.swept_curve)) = 1); + WR7 : SIZEOF ( +QUERY ( vlp_fbnds <* +QUERY ( bnds <* bounds| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP' IN TYPEOF (bnds.bound)) )| NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF (vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex)) AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT' IN TYPEOF (vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex\vertex_point.vertex_geometry))) )) = 0; + WR8 : SIZEOF ( +QUERY ( bnd <* bounds| NOT ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP' ] * TYPEOF (bnd.bound)) = 1) )) = 0; + WR9 : SIZEOF ( +QUERY ( elp_fbnds <* +QUERY ( bnds <* bounds| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) )| NOT ( SIZEOF ( +QUERY ( oe <* elp_fbnds.bound\path.edge_list| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE' IN TYPEOF (oe\oriented_edge.edge_element\edge_curve.edge_geometry)) AND NOT ( SIZEOF ( +QUERY ( sc_ag <* oe.edge_element\edge_curve.edge_geometry\surface_curve.associated_geometry| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF (sc_ag)) )) = 0) )) = 0) )) = 0; + WR10 : (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SWEPT_SURFACE' IN TYPEOF (face_geometry)) OR (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF (face_geometry\swept_surface.swept_curve)) OR ( SIZEOF (face_geometry\swept_surface.swept_curve\polyline.points) >= 3))) AND ( SIZEOF ( +QUERY ( elp_fbnds <* +QUERY ( bnds <* bounds| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) )| NOT ( SIZEOF ( +QUERY ( oe <* elp_fbnds.bound\path.edge_list| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF (oe\oriented_edge.edge_element\edge_curve.edge_geometry)) AND NOT ( SIZEOF (oe\oriented_edge.edge_element\edge_curve.edge_geometry\polyline.points) >= 3) )) = 0) )) = 0); +END_ENTITY; + + +ENTITY alternate_product_relationship; + name : label; + definition : OPTIONAL text; + alternate : product; + base : product; + basis : text; +UNIQUE + UR1 : alternate, base; +WHERE + WR1 : alternate :<>: base; +END_ENTITY; + + +ENTITY amount_of_substance_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AMOUNT_OF_SUBSTANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY amount_of_substance_unit + SUBTYPE OF (named_unit); +WHERE + WR1 : (SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 0.0) AND (SELF\named_unit.dimensions.time_exponent = 0.0) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 1.0) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0); +END_ENTITY; + + +ENTITY angle_direction_reference + SUBTYPE OF (representation_item_relationship, geometric_representation_item); + SELF\representation_item_relationship.related_representation_item : angle_direction_reference_select; + SELF\representation_item_relationship.relating_representation_item : orientation_basis_select; +WHERE + WR1 : ((('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_PATH' IN TYPEOF(related_representation_item)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MIN_AND_MAJOR_PLY_ORIENTATION_BASIS' IN TYPEOF(relating_representation_item))) + OR + (NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_PATH' IN TYPEOF(related_representation_item)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D' IN TYPEOF(relating_representation_item)))); +END_ENTITY; + + +ENTITY angular_dimension + SUBTYPE OF (dimension_curve_directed_callout); +END_ENTITY; + + +ENTITY angular_location + SUBTYPE OF (dimensional_location); + angle_selection : angle_relator; +END_ENTITY; + + +ENTITY angular_size + SUBTYPE OF (dimensional_size); + angle_selection : angle_relator; +END_ENTITY; + + +ENTITY angularity_tolerance + SUBTYPE OF (geometric_tolerance_with_datum_reference); +WHERE + WR1 : SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) < 3; +END_ENTITY; + + +ENTITY annotation_curve_occurrence + SUBTYPE OF (annotation_occurrence); + SELF\styled_item.item : curve; +END_ENTITY; + + +ENTITY annotation_fill_area + SUBTYPE OF (geometric_representation_item); + boundaries : SET [1:?] OF curve; +WHERE + WR1 : (SELF\geometric_representation_item.dim = 3) OR (SIZEOF (QUERY (curve <* SELF.boundaries | + NOT ( + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CIRCLE' IN TYPEOF (curve)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELLIPSE' IN TYPEOF (curve)) OR + ( ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE' IN TYPEOF (curve)) + AND (curve\b_spline_curve.closed_curve = TRUE) ) OR + ( ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_CURVE' IN TYPEOF (curve)) + AND (curve\composite_curve.closed_curve = TRUE) ) OR + ( ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF (curve)) + AND (curve\polyline.points[LOINDEX(curve\polyline.points)] = + curve\polyline.points[HIINDEX(curve\polyline.points)]) ) + ) )) = 0); +END_ENTITY; + + +ENTITY annotation_fill_area_occurrence + SUBTYPE OF (annotation_occurrence); + fill_style_target : point; + SELF\styled_item.item : annotation_fill_area; +END_ENTITY; + + +ENTITY annotation_occurrence + SUPERTYPE OF (ONEOF (annotation_curve_occurrence, annotation_fill_area_occurrence, annotation_text_occurrence, annotation_symbol_occurrence)) + SUBTYPE OF (styled_item); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN + TYPEOF (SELF); + WR2 : SIZEOF (QUERY (reps <* using_representations(SELF) | + NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_REPRESENTATION_SELECT' IN TYPEOF(reps)))) = 0; +END_ENTITY; + + +ENTITY annotation_occurrence_associativity + SUBTYPE OF (annotation_occurrence_relationship); +WHERE + WR1 : SIZEOF (TYPEOF (SELF.related_annotation_occurrence) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_FILL_AREA_OCCURRENCE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROJECTION_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_CURVE']) = 1; +END_ENTITY; + + +ENTITY annotation_occurrence_relationship; + name : label; + description : text; + relating_annotation_occurrence : annotation_occurrence; + related_annotation_occurrence : annotation_occurrence; +END_ENTITY; + + +ENTITY annotation_plane + SUBTYPE OF (annotation_occurrence, geometric_representation_item); + elements : OPTIONAL SET [1:?] OF annotation_plane_element; + SELF\styled_item.item : plane_or_planar_box; +WHERE + WR1 : SELF\geometric_representation_item.dim = 3; + WR2 : NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PLANAR_BOX' IN TYPEOF(SELF\styled_item.item)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'AXIS2_PLACEMENT_3D' IN TYPEOF(SELF\styled_item.item\planar_box.placement)); + WR3 : (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PLANAR_BOX' IN TYPEOF(SELF\styled_item.item)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'CURVE_STYLE' IN TYPEOF(SELF\styled_item.styles[1]\presentation_style_assignment.styles[1]))) OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PLANE' IN TYPEOF(SELF\styled_item.item)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'FILL_AREA_STYLE' IN TYPEOF(SELF\styled_item.styles[1]\presentation_style_assignment.styles[1]))); + WR4 : (SIZEOF(SELF\styled_item.styles) = 1) AND + (SIZEOF(SELF\styled_item.styles[1]\presentation_style_assignment.styles) = 1); +END_ENTITY; + + +ENTITY annotation_subfigure_occurrence + SUBTYPE OF (annotation_symbol_occurrence); +WHERE + WR1 : SIZEOF (QUERY (sty <* SELF.styles | + NOT (SIZEOF (sty.styles) = 1) + )) = 0; + WR2 : SIZEOF (QUERY (sty <* SELF.styles | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.NULL_STYLE' + IN TYPEOF (sty.styles[1])) ))=0; + WR3 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_SYMBOL' + IN TYPEOF (SELF.item)); + WR4 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_SUBFIGURE_REPRESENTATION' + IN TYPEOF + (SELF.item\mapped_item.mapping_source.mapped_representation)); +END_ENTITY; + + +ENTITY annotation_symbol + SUBTYPE OF (mapped_item); + SELF\mapped_item.mapping_source : symbol_representation_map; + SELF\mapped_item.mapping_target : symbol_target; +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN + TYPEOF (SELF); +END_ENTITY; + + +ENTITY annotation_symbol_occurrence + SUBTYPE OF (annotation_occurrence); + SELF\styled_item.item : annotation_symbol_occurrence_item; +END_ENTITY; + + +ENTITY annotation_text + SUBTYPE OF (mapped_item); + SELF\mapped_item.mapping_target : axis2_placement; +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_STRING_REPRESENTATION' IN + TYPEOF( SELF\mapped_item.mapping_source.mapped_representation); + WR2 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN + TYPEOF( SELF); +END_ENTITY; + + +ENTITY annotation_text_character + SUBTYPE OF (mapped_item); + alignment : text_alignment; + SELF\mapped_item.mapping_target : axis2_placement; +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CHARACTER_GLYPH_SYMBOL' IN + TYPEOF (SELF\mapped_item.mapping_source.mapped_representation); + WR2 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN + TYPEOF (SELF); +END_ENTITY; + + +ENTITY annotation_text_occurrence + SUBTYPE OF (annotation_occurrence); + SELF\styled_item.item : annotation_text_occurrence_item; +END_ENTITY; + + +ENTITY apex + SUBTYPE OF (derived_shape_aspect); +END_ENTITY; + + +ENTITY application_context; + application : label; +DERIVE + description : text := get_description_value(SELF); + id : identifier := get_id_value(SELF); +INVERSE + context_elements: SET [1:?] OF application_context_element FOR frame_of_reference; +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; + WR2 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY application_context_element + SUPERTYPE OF (ONEOF (product_concept_context, product_context, product_definition_context)); + name : label; + frame_of_reference : application_context; +END_ENTITY; + + +ENTITY application_protocol_definition; + status : label; + application_interpreted_model_schema_name : label; + application_protocol_year : year_number; + application : application_context; +END_ENTITY; + + +ENTITY applied_action_assignment + SUBTYPE OF (action_assignment); + items : SET [1:?] OF action_items; +END_ENTITY; + + +ENTITY applied_action_method_assignment + SUBTYPE OF (action_method_assignment); + items : SET [1:?] OF action_method_items; +END_ENTITY; + + +ENTITY applied_action_request_assignment + SUBTYPE OF (action_request_assignment); + items : SET [1:?] OF action_request_item; +END_ENTITY; + + +ENTITY applied_approval_assignment + SUBTYPE OF (approval_assignment); + items : SET [1:?] OF approval_item; +END_ENTITY; + + +ENTITY applied_attribute_classification_assignment + SUBTYPE OF (attribute_classification_assignment); + items : SET [1:?] OF attribute_classification_item; + SELF\attribute_classification_assignment.assigned_class : class; +END_ENTITY; + + +ENTITY applied_certification_assignment + SUBTYPE OF (certification_assignment); + items : SET [1:?] OF certification_item; +END_ENTITY; + + +ENTITY applied_classification_assignment + SUBTYPE OF (classification_assignment); + items : SET [1:?] OF classification_item; +END_ENTITY; + + +ENTITY applied_contract_assignment + SUBTYPE OF (contract_assignment); + items : SET [1:?] OF contract_item; +END_ENTITY; + + +ENTITY applied_date_and_time_assignment + SUBTYPE OF (date_and_time_assignment); + items : SET [1:?] OF date_and_time_item; +END_ENTITY; + + +ENTITY applied_date_assignment + SUBTYPE OF (date_assignment); + items : SET [1:?] OF date_item; +END_ENTITY; + + +ENTITY applied_document_reference + SUBTYPE OF (document_reference); + items : SET [1:?] OF document_reference_item; +END_ENTITY; + + +ENTITY applied_document_usage_constraint_assignment + SUBTYPE OF (document_usage_constraint_assignment); + items : SET [1:?] OF document_reference_item; +END_ENTITY; + + +ENTITY applied_effectivity_assignment + SUBTYPE OF (effectivity_assignment); + items : SET [1:?] OF effectivity_item; +END_ENTITY; + + +ENTITY applied_event_occurrence_assignment + SUBTYPE OF (event_occurrence_assignment); + items : SET [1:?] OF event_occurrence_item; +END_ENTITY; + + +ENTITY applied_external_identification_assignment + SUBTYPE OF (external_identification_assignment); + items : SET [1:?] OF external_identification_item; +END_ENTITY; + + +ENTITY applied_group_assignment + SUBTYPE OF (group_assignment); + items : SET [1:?] OF groupable_item; +END_ENTITY; + + +ENTITY applied_identification_assignment + SUBTYPE OF (identification_assignment); + items : SET [1:?] OF identification_item; +END_ENTITY; + + +ENTITY applied_name_assignment + SUBTYPE OF (name_assignment); + item : name_item; +END_ENTITY; + + +ENTITY applied_organization_assignment + SUBTYPE OF (organization_assignment); + items : SET [1:?] OF organization_item; +END_ENTITY; + + +ENTITY applied_organizational_project_assignment + SUBTYPE OF (organizational_project_assignment); + items : SET [1:?] OF project_item; +END_ENTITY; + + +ENTITY applied_person_and_organization_assignment + SUBTYPE OF (person_and_organization_assignment); + items : SET [1:?] OF person_and_organization_item; +END_ENTITY; + + +ENTITY applied_presented_item + SUBTYPE OF (presented_item); + items : SET [1:?] OF presented_item_select; +END_ENTITY; + + +ENTITY applied_security_classification_assignment + SUBTYPE OF (security_classification_assignment); + items : SET [1:?] OF security_classification_item; +END_ENTITY; + + +ENTITY applied_time_interval_assignment + SUBTYPE OF (time_interval_assignment); + items : SET [0:?] OF time_interval_item; +END_ENTITY; + + +ENTITY applied_usage_right + SUBTYPE OF (applied_action_assignment); + SELF\applied_action_assignment.items : SET [1:?] OF ir_usage_item; +END_ENTITY; + + +ENTITY approval; + status : approval_status; + level : label; +END_ENTITY; + + +ENTITY approval_assignment + ABSTRACT SUPERTYPE; + assigned_approval : approval; +DERIVE + role : object_role := get_role(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; +END_ENTITY; + + +ENTITY approval_date_time; + date_time : date_time_select; + dated_approval : approval; +DERIVE + role : object_role := get_role(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; +END_ENTITY; + + +ENTITY approval_person_organization; + person_organization : person_organization_select; + authorized_approval : approval; + role : approval_role; +END_ENTITY; + + +ENTITY approval_relationship; + name : label; + description : OPTIONAL text; + relating_approval : approval; + related_approval : approval; +END_ENTITY; + + +ENTITY approval_role; + role : label; +DERIVE + description : text := get_description_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY approval_status; + name : label; +END_ENTITY; + + +ENTITY area_in_set; + area : presentation_area; + in_set : presentation_set; +END_ENTITY; + + +ENTITY area_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AREA_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY area_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = + dimensional_exponents ( 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ); +END_ENTITY; + + +ENTITY assembly_component_usage + SUPERTYPE OF (ONEOF (next_assembly_usage_occurrence, specified_higher_usage_occurrence, promissory_usage_occurrence)) + SUBTYPE OF (product_definition_usage); + reference_designator : OPTIONAL identifier; +END_ENTITY; + + +ENTITY assembly_component_usage_substitute; + name : label; + definition : OPTIONAL text; + base : assembly_component_usage; + substitute : assembly_component_usage; +UNIQUE + UR1 : base, substitute; +WHERE + WR1 : base.relating_product_definition :=: + substitute.relating_product_definition; + WR2 : base :<>: substitute; +END_ENTITY; + + +ENTITY assigned_requirement + SUBTYPE OF (group_assignment); + items : SET [1:1] OF product_definition; + SELF\group_assignment.assigned_group : requirement_assignment; +END_ENTITY; + + +ENTITY atomic_formula + SUBTYPE OF (compound_representation_item); +END_ENTITY; + + +ENTITY attribute_assertion + SUBTYPE OF (fact_type, property_definition_representation, representation); +END_ENTITY; + + +ENTITY attribute_classification_assignment + ABSTRACT SUPERTYPE; + assigned_class : group; + attribute_name : label; + role : classification_role; +END_ENTITY; + + +ENTITY attribute_language_assignment + SUBTYPE OF (attribute_classification_assignment); + items : SET [1:?] OF attribute_language_item; + SELF\attribute_classification_assignment.assigned_class : language; +WHERE + WR1 : SELF\attribute_classification_assignment.role.name IN ['primary', 'translated']; + WR2 : SELF\attribute_classification_assignment.attribute_name<> ''; +END_ENTITY; + + +ENTITY attribute_value_assignment + ABSTRACT SUPERTYPE; + attribute_name : label; + attribute_value : attribute_type; + role : attribute_value_role; +END_ENTITY; + + +ENTITY attribute_value_role; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY auxiliary_geometric_representation_item + SUBTYPE OF (geometric_representation_item, variational_representation_item); +END_ENTITY; + + +ENTITY axis1_placement + SUBTYPE OF (placement); + axis : OPTIONAL direction; +DERIVE + z : direction := NVL(normalise(axis), dummy_gri || + direction([0.0,0.0,1.0])); +WHERE + WR1 : SELF\geometric_representation_item.dim = 3; +END_ENTITY; + + +ENTITY axis2_placement_2d + SUBTYPE OF (placement); + ref_direction : OPTIONAL direction; +DERIVE + p : LIST [2:2] OF direction := build_2axes(ref_direction); +WHERE + WR1 : SELF\geometric_representation_item.dim = 2; +END_ENTITY; + + +ENTITY axis2_placement_3d + SUBTYPE OF (placement); + axis : OPTIONAL direction; + ref_direction : OPTIONAL direction; +DERIVE + p : LIST [3:3] OF direction := build_axes(axis,ref_direction); +WHERE + WR1 : SELF\placement.location.dim = 3; + WR2 : (NOT (EXISTS (axis))) OR (axis.dim = 3); + WR3 : (NOT (EXISTS (ref_direction))) OR (ref_direction.dim = 3); + WR4 : (NOT (EXISTS (axis))) OR (NOT (EXISTS (ref_direction))) OR + (cross_product(axis,ref_direction).magnitude > 0.0); +END_ENTITY; + + +ENTITY b_spline_curve + SUPERTYPE OF ((ONEOF (uniform_curve, b_spline_curve_with_knots, quasi_uniform_curve, bezier_curve) ANDOR rational_b_spline_curve)) + SUBTYPE OF (bounded_curve); + degree : INTEGER; + control_points_list : LIST [2:?] OF cartesian_point; + curve_form : b_spline_curve_form; + closed_curve : LOGICAL; + self_intersect : LOGICAL; +DERIVE + control_points : ARRAY [0:upper_index_on_control_points] OF cartesian_point := list_to_array(control_points_list,0, + upper_index_on_control_points); + upper_index_on_control_points : INTEGER := (SIZEOF(control_points_list) - 1); +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.UNIFORM_CURVE' IN TYPEOF(self)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.QUASI_UNIFORM_CURVE' IN TYPEOF(self)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BEZIER_CURVE' IN TYPEOF(self)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE_WITH_KNOTS' IN TYPEOF(self)); +END_ENTITY; + + +ENTITY b_spline_curve_with_knots + SUBTYPE OF (b_spline_curve); + knot_multiplicities : LIST [2:?] OF INTEGER; + knots : LIST [2:?] OF parameter_value; + knot_spec : knot_type; +DERIVE + upper_index_on_knots : INTEGER := SIZEOF(knots); +WHERE + WR1 : constraints_param_b_spline(degree, upper_index_on_knots, + upper_index_on_control_points, + knot_multiplicities, knots); + WR2 : SIZEOF(knot_multiplicities) = upper_index_on_knots; +END_ENTITY; + + +ENTITY b_spline_surface + SUPERTYPE OF ((ONEOF (b_spline_surface_with_knots, uniform_surface, quasi_uniform_surface, bezier_surface) ANDOR rational_b_spline_surface)) + SUBTYPE OF (bounded_surface); + u_degree : INTEGER; + v_degree : INTEGER; + control_points_list : LIST [2:?] OF LIST [2:?] OF cartesian_point; + surface_form : b_spline_surface_form; + u_closed : LOGICAL; + v_closed : LOGICAL; + self_intersect : LOGICAL; +DERIVE + control_points : ARRAY [0:u_upper] OF ARRAY [0:v_upper] OF cartesian_point := make_array_of_array(control_points_list, + 0,u_upper,0,v_upper); + u_upper : INTEGER := SIZEOF(control_points_list) - 1; + v_upper : INTEGER := SIZEOF(control_points_list[1]) - 1; +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.UNIFORM_SURFACE' IN TYPEOF(SELF)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.QUASI_UNIFORM_SURFACE' IN TYPEOF(SELF)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BEZIER_SURFACE' IN TYPEOF(SELF)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_SURFACE_WITH_KNOTS' IN TYPEOF(SELF)); +END_ENTITY; + + +ENTITY b_spline_surface_with_knots + SUBTYPE OF (b_spline_surface); + u_multiplicities : LIST [2:?] OF INTEGER; + v_multiplicities : LIST [2:?] OF INTEGER; + u_knots : LIST [2:?] OF parameter_value; + v_knots : LIST [2:?] OF parameter_value; + knot_spec : knot_type; +DERIVE + knot_u_upper : INTEGER := SIZEOF(u_knots); + knot_v_upper : INTEGER := SIZEOF(v_knots); +WHERE + WR1 : constraints_param_b_spline(SELF\b_spline_surface.u_degree, + knot_u_upper, SELF\b_spline_surface.u_upper, + u_multiplicities, u_knots); + WR2 : constraints_param_b_spline(SELF\b_spline_surface.v_degree, + knot_v_upper, SELF\b_spline_surface.v_upper, + v_multiplicities, v_knots); + WR3 : SIZEOF(u_multiplicities) = knot_u_upper; + WR4 : SIZEOF(v_multiplicities) = knot_v_upper; +END_ENTITY; + + +ENTITY back_chaining_rule + SUBTYPE OF (rule_definition); +END_ENTITY; + + +ENTITY back_chaining_rule_body + SUBTYPE OF (property_definition, property_definition_representation, representation); +END_ENTITY; + + +ENTITY background_colour + SUBTYPE OF (colour); + presentation : area_or_view; +UNIQUE + UR1 : presentation; +END_ENTITY; + + +ENTITY beveled_sheet_representation + SUBTYPE OF (shape_representation); +END_ENTITY; + + +ENTITY bezier_curve + SUBTYPE OF (b_spline_curve); +END_ENTITY; + + +ENTITY bezier_surface + SUBTYPE OF (b_spline_surface); +END_ENTITY; + + +ENTITY binary_generic_expression + ABSTRACT SUPERTYPE + SUBTYPE OF (generic_expression); + operands : LIST [2:2] OF generic_expression; +END_ENTITY; + + +ENTITY binary_numeric_expression + ABSTRACT SUPERTYPE + SUBTYPE OF (numeric_expression, binary_generic_expression); + SELF\binary_generic_expression.operands : LIST [2:2] OF numeric_expression; +END_ENTITY; + + +ENTITY binary_representation_item + SUBTYPE OF (representation_item); + binary_value : BINARY; +END_ENTITY; + + +ENTITY block + SUBTYPE OF (geometric_representation_item); + position : axis2_placement_3d; + x : positive_length_measure; + y : positive_length_measure; + z : positive_length_measure; +END_ENTITY; + + +ENTITY boolean_expression + ABSTRACT SUPERTYPE OF (ONEOF (simple_boolean_expression, multiple_arity_boolean_expression, comparison_expression, interval_expression)) + SUBTYPE OF (expression); +END_ENTITY; + + +ENTITY boolean_literal + SUBTYPE OF (simple_boolean_expression, generic_literal); + the_value : BOOLEAN; +END_ENTITY; + + +ENTITY boolean_representation_item + SUBTYPE OF (representation_item, boolean_literal); +END_ENTITY; + + +ENTITY boolean_result + SUBTYPE OF (geometric_representation_item); + operator : boolean_operator; + first_operand : boolean_operand; + second_operand : boolean_operand; +END_ENTITY; + + +ENTITY boundary_curve + SUBTYPE OF (composite_curve_on_surface); +WHERE + WR1 : SELF\composite_curve.closed_curve; +END_ENTITY; + + +ENTITY bounded_curve + SUPERTYPE OF (ONEOF (polyline, b_spline_curve, trimmed_curve, bounded_pcurve, bounded_surface_curve, composite_curve)) + SUBTYPE OF (curve); +END_ENTITY; + + +ENTITY bounded_pcurve + SUBTYPE OF (pcurve, bounded_curve); +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOUNDED_CURVE' IN + TYPEOF(SELF\pcurve.reference_to_curve.items[1])); +END_ENTITY; + + +ENTITY bounded_surface + SUPERTYPE OF (ONEOF (b_spline_surface, rectangular_trimmed_surface, curve_bounded_surface, rectangular_composite_surface)) + SUBTYPE OF (surface); +END_ENTITY; + + +ENTITY bounded_surface_curve + SUBTYPE OF (surface_curve, bounded_curve); +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOUNDED_CURVE' IN + TYPEOF(SELF\surface_curve.curve_3d)); +END_ENTITY; + + +ENTITY box_domain + SUBTYPE OF (founded_item); + corner : cartesian_point; + xlength : positive_length_measure; + ylength : positive_length_measure; + zlength : positive_length_measure; +WHERE + WR1 : SIZEOF(QUERY(item <* USEDIN(SELF,'')| + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOXED_HALF_SPACE' + IN TYPEOF(item)))) = 0; +END_ENTITY; + + +ENTITY boxed_half_space + SUBTYPE OF (half_space_solid); + enclosure : box_domain; +END_ENTITY; + + +ENTITY breakdown_context + SUBTYPE OF (product_definition_relationship); +END_ENTITY; + + +ENTITY breakdown_element_group_assignment + SUBTYPE OF (group_assignment); + items : SET [1:1] OF product_definition_or_breakdown_element_usage; + SELF\group_assignment.assigned_group : product_definition_element_relationship; +END_ENTITY; + + +ENTITY breakdown_element_realization + SUBTYPE OF (characterized_object, product_definition_element_relationship); +END_ENTITY; + + +ENTITY breakdown_element_usage + SUBTYPE OF (product_definition_relationship); +END_ENTITY; + + +ENTITY breakdown_of + SUBTYPE OF (product_definition_relationship); +END_ENTITY; + + +ENTITY brep_with_voids + SUBTYPE OF (manifold_solid_brep); + voids : SET [1:?] OF oriented_closed_shell; +END_ENTITY; + + +ENTITY bytes_representation_item + SUBTYPE OF (binary_representation_item); +DERIVE + no_of_bytes : INTEGER := BLENGTH(SELF\binary_representation_item.binary_value) DIV 8; +WHERE + WR1 : BLENGTH(SELF\binary_representation_item.binary_value) MOD 8 = 0; +END_ENTITY; + + +ENTITY calendar_date + SUBTYPE OF (date); + day_component : day_in_month_number; + month_component : month_in_year_number; +WHERE + WR1 : valid_calendar_date (SELF); +END_ENTITY; + + +ENTITY camera_image + SUBTYPE OF (mapped_item); + SELF\mapped_item.mapping_source : camera_usage; + SELF\mapped_item.mapping_target : planar_box; +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' + IN TYPEOF (SELF); +END_ENTITY; + + +ENTITY camera_image_3d_with_scale + SUBTYPE OF (camera_image); +DERIVE + scale : positive_ratio_measure := ((SELF\mapped_item.mapping_target\ + planar_extent.size_in_x) / (SELF\mapped_item.mapping_source. + mapping_origin\camera_model_d3.perspective_of_volume.view_window. + size_in_x)); +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CAMERA_MODEL_D3' + IN TYPEOF (SELF\mapped_item.mapping_source.mapping_origin)); + WR2 : aspect_ratio(SELF\mapped_item.mapping_target) = + aspect_ratio(SELF\mapped_item.mapping_source.mapping_origin\ + camera_model_d3.perspective_of_volume.view_window); + WR3 : SELF\mapped_item.mapping_source.mapping_origin\camera_model_d3. + perspective_of_volume.front_plane_clipping + AND + SELF\mapped_item.mapping_source.mapping_origin\camera_model_d3. + perspective_of_volume.view_volume_sides_clipping; + WR4 : (SELF\mapped_item.mapping_target\planar_extent.size_in_x > 0) + AND + (SELF\mapped_item.mapping_target\planar_extent.size_in_y > 0); + WR5 : (SELF\mapped_item.mapping_source.mapping_origin\camera_model_d3. + perspective_of_volume.view_window.size_in_x > 0) + AND + (SELF\mapped_item.mapping_source.mapping_origin\camera_model_d3. + perspective_of_volume.view_window.size_in_y > 0); + WR6 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AXIS2_PLACEMENT_2D' IN TYPEOF (SELF\mapped_item. + mapping_target\planar_box.placement)) + AND NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AXIS2_PLACEMENT_3D' IN TYPEOF (SELF\mapped_item. + mapping_target\planar_box.placement)); +END_ENTITY; + + +ENTITY camera_model + ABSTRACT SUPERTYPE + SUBTYPE OF (geometric_representation_item); +WHERE + WR1 : (SIZEOF (USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'ITEM_DEFINED_TRANSFORMATION.' + + 'TRANSFORM_ITEM_1')) + + SIZEOF (USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'REPRESENTATION_MAP.MAPPING_ORIGIN')) + ) > 0; + WR2 : SIZEOF(USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'STYLED_ITEM.ITEM')) = 0; +END_ENTITY; + + +ENTITY camera_model_d3 + SUBTYPE OF (camera_model); + view_reference_system : axis2_placement_3d; + perspective_of_volume : view_volume; +WHERE + WR1 : (dot_product (SELF.view_reference_system.p[3], + SELF.perspective_of_volume.view_window.placement.p[3]) = 1.0) + AND + (SELF.view_reference_system.location.coordinates[3] = + SELF.perspective_of_volume.view_window. + placement.location.coordinates[3]); + WR2 : SELF\geometric_representation_item.dim = 3; +END_ENTITY; + + +ENTITY camera_model_d3_multi_clipping + SUBTYPE OF (camera_model_d3); + shape_clipping : SET [1:?] OF camera_model_d3_multi_clipping_interection_select; +END_ENTITY; + + +ENTITY camera_model_d3_multi_clipping_intersection + SUBTYPE OF (geometric_representation_item); + shape_clipping : SET [2:?] OF camera_model_d3_multi_clipping_interection_select; +END_ENTITY; + + +ENTITY camera_model_d3_multi_clipping_union + SUBTYPE OF (geometric_representation_item); + shape_clipping : SET [2:?] OF camera_model_d3_multi_clipping_union_select; +END_ENTITY; + + +ENTITY camera_model_d3_with_hlhsr + SUBTYPE OF (camera_model_d3); + hidden_line_surface_removal : BOOLEAN; +END_ENTITY; + + +ENTITY camera_model_with_light_sources + SUBTYPE OF (camera_model_d3); + sources : SET [1:?] OF light_source; +END_ENTITY; + + +ENTITY camera_usage + SUBTYPE OF (representation_map); + SELF\representation_map.mapping_origin : camera_model; +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESENTATION_REPRESENTATION' + IN TYPEOF(SELF\representation_map.mapped_representation)); +END_ENTITY; + + +ENTITY capacitance_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CAPACITANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY capacitance_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.farad); +END_ENTITY; + + +ENTITY cartesian_point + SUBTYPE OF (point); + coordinates : LIST [1:3] OF length_measure; +END_ENTITY; + + +ENTITY cartesian_transformation_operator + SUPERTYPE OF (ONEOF (cartesian_transformation_operator_2d, cartesian_transformation_operator_3d)) + SUBTYPE OF (geometric_representation_item, functionally_defined_transformation); + axis1 : OPTIONAL direction; + axis2 : OPTIONAL direction; + local_origin : cartesian_point; + scale : OPTIONAL REAL; +DERIVE + scl : REAL := NVL(scale, 1.0); +WHERE + WR1 : scl > 0.0; +END_ENTITY; + + +ENTITY cartesian_transformation_operator_2d + SUBTYPE OF (cartesian_transformation_operator); +DERIVE + u : LIST [2:2] OF direction := base_axis(2,SELF\cartesian_transformation_operator.axis1, + SELF\cartesian_transformation_operator.axis2,?); +WHERE + WR1 : SELF\geometric_representation_item.dim = 2; +END_ENTITY; + + +ENTITY cartesian_transformation_operator_3d + SUBTYPE OF (cartesian_transformation_operator); + axis3 : OPTIONAL direction; +DERIVE + u : LIST [3:3] OF direction := base_axis(3,SELF\cartesian_transformation_operator.axis1, + SELF\cartesian_transformation_operator.axis2,axis3); +WHERE + WR1 : SELF\geometric_representation_item.dim = 3; +END_ENTITY; + + +ENTITY cc_design_approval + SUBTYPE OF (approval_assignment); + items : SET [1:?] OF approved_item; +END_ENTITY; + + +ENTITY cc_design_certification + SUBTYPE OF (certification_assignment); + items : SET [1:?] OF certified_item; +END_ENTITY; + + +ENTITY cc_design_contract + SUBTYPE OF (contract_assignment); + items : SET [1:?] OF contracted_item; +END_ENTITY; + + +ENTITY cc_design_date_and_time_assignment + SUBTYPE OF (date_and_time_assignment); + items : SET [1:?] OF date_time_item; +END_ENTITY; + + +ENTITY cc_design_person_and_organization_assignment + SUBTYPE OF (person_and_organization_assignment); + items : SET [1:?] OF cc_person_organization_item; +WHERE + WR1 : cc_design_person_and_organization_correlation(SELF); +END_ENTITY; + + +ENTITY cc_design_security_classification + SUBTYPE OF (security_classification_assignment); + items : SET [1:?] OF cc_classified_item; +END_ENTITY; + + +ENTITY cc_design_specification_reference + SUBTYPE OF (document_reference); + items : SET [1:?] OF cc_specified_item; +END_ENTITY; + + +ENTITY celsius_temperature_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.THERMODYNAMIC_TEMPERATURE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY centre_of_symmetry + SUBTYPE OF (derived_shape_aspect); +WHERE + WR1 : SIZEOF + (QUERY(sadr<*SELF\derived_shape_aspect.deriving_relationships| + NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SYMMETRIC_SHAPE_ASPECT' + IN TYPEOF + (sadr\shape_aspect_relationship.related_shape_aspect))))=0; +END_ENTITY; + + +ENTITY certification; + name : label; + purpose : text; + kind : certification_type; +END_ENTITY; + + +ENTITY certification_assignment + ABSTRACT SUPERTYPE; + assigned_certification : certification; +DERIVE + role : object_role := get_role(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; +END_ENTITY; + + +ENTITY certification_type; + description : label; +END_ENTITY; + + +ENTITY change + SUBTYPE OF (action_assignment); + items : SET [1:?] OF work_item; +END_ENTITY; + + +ENTITY change_request + SUBTYPE OF (action_request_assignment); + items : SET [1:?] OF change_request_item; +END_ENTITY; + + +ENTITY character_glyph_font_usage; + character : generic_character_glyph_symbol; + font : text_font; +END_ENTITY; + + +ENTITY character_glyph_style_outline + SUBTYPE OF (founded_item); + outline_style : curve_style; +END_ENTITY; + + +ENTITY character_glyph_style_stroke + SUBTYPE OF (founded_item); + stroke_style : curve_style; +END_ENTITY; + + +ENTITY character_glyph_symbol + SUBTYPE OF (generic_character_glyph_symbol); + character_box : planar_extent; + baseline_ratio : ratio_measure; +DERIVE + box_height : length_measure := character_box.size_in_y; +WHERE + WR1 : {0.0 <= baseline_ratio <= 1.0}; + WR2 : item_in_context(SELF.character_box, + SELF\representation.context_of_items); + WR3 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITIVE_LENGTH_MEASURE' + IN TYPEOF (SELF.box_height); +END_ENTITY; + + +ENTITY character_glyph_symbol_outline + SUBTYPE OF (character_glyph_symbol); + outlines : SET [1:?] OF annotation_fill_area; +WHERE + WR1 : SELF.outlines <= SELF\representation.items; +END_ENTITY; + + +ENTITY character_glyph_symbol_stroke + SUBTYPE OF (character_glyph_symbol); + strokes : SET [1:?] OF curve; +WHERE + WR1 : SELF.strokes <= SELF\representation.items; +END_ENTITY; + + +ENTITY characteristic_data_column_header + SUBTYPE OF (general_property); +END_ENTITY; + + +ENTITY characteristic_data_column_header_link + SUBTYPE OF (general_property_relationship); +END_ENTITY; + + +ENTITY characteristic_data_table_header + SUBTYPE OF (general_property); +END_ENTITY; + + +ENTITY characteristic_data_table_header_decomposition + SUBTYPE OF (general_property_relationship); +END_ENTITY; + + +ENTITY characteristic_type + SUBTYPE OF (group); +END_ENTITY; + + +ENTITY characterized_class + SUBTYPE OF (characterized_object, class); +END_ENTITY; + + +ENTITY characterized_object; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY circle + SUBTYPE OF (conic); + radius : positive_length_measure; +END_ENTITY; + + +ENTITY circular_runout_tolerance + SUBTYPE OF (geometric_tolerance_with_datum_reference); +WHERE + WR1 : SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) <= 2; +END_ENTITY; + + +ENTITY class + SUBTYPE OF (group); +END_ENTITY; + + +ENTITY class_by_extension + SUBTYPE OF (class); +END_ENTITY; + + +ENTITY class_by_intension + SUBTYPE OF (class); +END_ENTITY; + + +ENTITY class_system + SUBTYPE OF (group); +END_ENTITY; + + +ENTITY class_usage_effectivity_context_assignment + SUBTYPE OF (effectivity_context_assignment); + items : SET [1:?] OF class_usage_effectivity_context_item; +WHERE + WR1 : SELF.role.name = 'class usage influence'; + WR2 : SIZEOF( QUERY( i <* SELF.items | NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF(i)) )) = 0; + WR3 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.APPLIED_EFFECTIVITY_ASSIGNMENT' IN TYPEOF(SELF.assigned_effectivity_assignment)) AND + (SIZEOF(TYPEOF(SELF.assigned_effectivity_assignment.assigned_effectivity) ) = 1) AND + (SELF.assigned_effectivity_assignment.assigned_effectivity.id = 'class usage') AND + (SIZEOF( QUERY( i <* SELF.assigned_effectivity_assignment\applied_effectivity_assignment.items | + NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_CONCEPT_FEATURE_CATEGORY_USAGE' IN TYPEOF(i)) )) = 0); +END_ENTITY; + + +ENTITY classification_assignment + ABSTRACT SUPERTYPE; + assigned_class : group; + role : classification_role; +END_ENTITY; + + +ENTITY classification_role; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY closed_shell + SUBTYPE OF (connected_face_set); +END_ENTITY; + + +ENTITY coaxiality_tolerance + SUBTYPE OF (geometric_tolerance_with_datum_reference); +WHERE + WR1 : SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) <= 2; +END_ENTITY; + + +ENTITY colour; +END_ENTITY; + + +ENTITY colour_rgb + SUBTYPE OF (colour_specification); + red : REAL; + green : REAL; + blue : REAL; +WHERE + WR1 : {0.0 <= red <= 1.0}; + WR2 : {0.0 <= green <= 1.0}; + WR3 : {0.0 <= blue <= 1.0}; +END_ENTITY; + + +ENTITY colour_specification + SUBTYPE OF (colour); + name : label; +END_ENTITY; + + +ENTITY common_datum + SUBTYPE OF (composite_shape_aspect, datum); +WHERE + WR1 : SIZEOF (SELF\composite_shape_aspect.component_relationships) = 2; + WR2 : SIZEOF (QUERY ( sar <* SELF\composite_shape_aspect.component_relationships| + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DATUM' IN TYPEOF (sar.related_shape_aspect)) AND + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMMON_DATUM' IN TYPEOF (sar.related_shape_aspect))) )) = 0; +END_ENTITY; + + +ENTITY comparison_expression + ABSTRACT SUPERTYPE + SUBTYPE OF (boolean_expression, binary_generic_expression); + SELF\binary_generic_expression.operands : LIST [2:2] OF expression; +WHERE + WR1 : (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.NUMERIC_EXPRESSION' +IN TYPEOF(SELF\binary_generic_expression.operands[1])) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.NUMERIC_EXPRESSION' +IN TYPEOF(SELF\binary_generic_expression.operands[2]))) +OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOOLEAN_EXPRESSION' +IN TYPEOF(SELF\binary_generic_expression.operands[1])) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOOLEAN_EXPRESSION' + IN TYPEOF(SELF\binary_generic_expression.operands[2]))) +OR +(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRING_EXPRESSION' +IN TYPEOF(SELF\binary_generic_expression.operands[1])) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRING_EXPRESSION' +IN TYPEOF(SELF\binary_generic_expression.operands[2]))); +END_ENTITY; + + +ENTITY complex_clause + SUBTYPE OF (compound_representation_item); +END_ENTITY; + + +ENTITY complex_conjunctive_clause + SUBTYPE OF (complex_clause); +END_ENTITY; + + +ENTITY complex_disjunctive_clause + SUBTYPE OF (complex_clause); +END_ENTITY; + + +ENTITY complex_shelled_solid + SUBTYPE OF (shelled_solid); + thickened_face_list : LIST [1:?] OF SET [1:?] OF face_surface; + thickness_list : LIST [1:?] OF length_measure; +WHERE + WR1 : SIZEOF(thickened_face_list) = SIZEOF(thickness_list); + WR2 : SIZEOF(QUERY(q <* thickness_list | (q = 0))) = 0; +END_ENTITY; + + +ENTITY composite_assembly_definition + SUBTYPE OF (product_definition); +WHERE + WR1 : SIZEOF (QUERY (pdr <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRODUCT_DEFINITION_RELATIONSHIP.' + + 'RELATING_PRODUCT_DEFINITION') | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'NEXT_ASSEMBLY_USAGE_OCCURRENCE' IN + TYPEOF (pdr))) = 1; +END_ENTITY; + + +ENTITY composite_assembly_sequence_definition + SUBTYPE OF (product_definition); +WHERE + WR1 : SIZEOF (QUERY (pdr <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRODUCT_DEFINITION_RELATIONSHIP.' + + 'RELATING_PRODUCT_DEFINITION') | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'NEXT_ASSEMBLY_USAGE_OCCURRENCE' IN + TYPEOF (pdr))) > 0; +END_ENTITY; + + +ENTITY composite_assembly_table + SUBTYPE OF (part_laminate_table); +END_ENTITY; + + +ENTITY composite_curve + SUBTYPE OF (bounded_curve); + segments : LIST [1:?] OF composite_curve_segment; + self_intersect : LOGICAL; +DERIVE + closed_curve : LOGICAL := segments[n_segments].transition <> discontinuous; + n_segments : INTEGER := SIZEOF(segments); +WHERE + WR1 : ((NOT closed_curve) AND (SIZEOF(QUERY(temp <* segments | + temp.transition = discontinuous)) = 1)) OR + ((closed_curve) AND (SIZEOF(QUERY(temp <* segments | + temp.transition = discontinuous)) = 0)); +END_ENTITY; + + +ENTITY composite_curve_on_surface + SUPERTYPE OF (boundary_curve) + SUBTYPE OF (composite_curve); +DERIVE + basis_surface : SET [0:2] OF surface := get_basis_surface(SELF); +WHERE + WR1 : SIZEOF(basis_surface) > 0; + WR2 : constraints_composite_curve_on_surface(SELF); +END_ENTITY; + + +ENTITY composite_curve_segment + SUBTYPE OF (founded_item); + transition : transition_code; + same_sense : BOOLEAN; + parent_curve : curve; +INVERSE + using_curves: BAG [1:?] OF composite_curve FOR segments; +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOUNDED_CURVE' IN TYPEOF(parent_curve)); +END_ENTITY; + + +ENTITY composite_material_designation + SUBTYPE OF (material_designation); +END_ENTITY; + + +ENTITY composite_shape_aspect + SUBTYPE OF (shape_aspect); +INVERSE + component_relationships: SET [2:?] OF shape_aspect_relationship FOR relating_shape_aspect; +END_ENTITY; + + +ENTITY composite_sheet_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'MANIFOLD_SURFACE_SHAPE_REPRESENTATION'] * TYPEOF (SELF)) = 1; +END_ENTITY; + + +ENTITY composite_text + SUBTYPE OF (geometric_representation_item); + collected_text : SET [2:?] OF text_or_character; +WHERE + WR1 : acyclic_composite_text( SELF, SELF.collected_text); +END_ENTITY; + + +ENTITY composite_text_with_associated_curves + SUBTYPE OF (composite_text); + associated_curves : SET [1:?] OF curve; +END_ENTITY; + + +ENTITY composite_text_with_blanking_box + SUBTYPE OF (composite_text); + blanking : planar_box; +END_ENTITY; + + +ENTITY composite_text_with_delineation + SUBTYPE OF (composite_text); + delineation : text_delineation; +END_ENTITY; + + +ENTITY composite_text_with_extent + SUBTYPE OF (composite_text); + extent : planar_extent; +END_ENTITY; + + +ENTITY compound_representation_item + SUPERTYPE OF (ONEOF (point_and_vector, point_path, row_representation_item, table_representation_item)) + SUBTYPE OF (representation_item); + item_element : compound_item_definition; +END_ENTITY; + + +ENTITY compound_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'GEOMETRIC_REPRESENTATION_CONTEXT' + IN TYPEOF ( SELF.context_of_items ) ) AND ( + SELF.context_of_items\ + geometric_representation_context.coordinate_space_dimension =3 ); + WR2 : SIZEOF ( QUERY ( cbsr_i <* SELF.items | SIZEOF ( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'EDGE_BASED_WIREFRAME_MODEL' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'FACE_BASED_SURFACE_MODEL' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'MAPPED_ITEM' , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'AXIS2_PLACEMENT_3D']* TYPEOF ( cbsr_i ) ) <>1 ) ) =0; + WR3 : SIZEOF ( QUERY ( cbsr_i <* SELF.items | SIZEOF ( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'EDGE_BASED_WIREFRAME_MODEL' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'FACE_BASED_SURFACE_MODEL' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'MAPPED_ITEM']* TYPEOF ( cbsr_i ) ) =1 ) ) >0; + WR4 : SIZEOF ( QUERY ( cbsr_i <* SELF.items | ( + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'MAPPED_ITEM' IN TYPEOF ( cbsr_i ) ) + AND ( SIZEOF ( ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'COMPOUND_SHAPE_REPRESENTATION' , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'EDGE_BASED_WIREFRAME_SHAPE_REPRESENTATION' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'NON_MANIFOLD_SURFACE_SHAPE_REPRESENTATION']* TYPEOF ( + cbsr_i\ mapped_item.mapping_source ) ) <>1 ) ) ) =0; +END_ENTITY; + + +ENTITY concentricity_tolerance + SUBTYPE OF (geometric_tolerance_with_datum_reference); +WHERE + WR1 : SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) = 1; +END_ENTITY; + + +ENTITY concept_feature_operator; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY concept_feature_relationship; + name : label; + description : OPTIONAL text; + relating_product_concept_feature : product_concept_feature; + related_product_concept_feature : product_concept_feature; +END_ENTITY; + + +ENTITY concept_feature_relationship_with_condition + SUBTYPE OF (concept_feature_relationship); + conditional_operator : concept_feature_operator; +END_ENTITY; + + +ENTITY conditional_concept_feature + SUBTYPE OF (product_concept_feature); + condition : concept_feature_relationship_with_condition; +END_ENTITY; + + +ENTITY conductance_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONDUCTANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY conductance_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.siemens); +END_ENTITY; + + +ENTITY configurable_item + SUBTYPE OF (configuration_item); + item_concept_feature : SET [1:?] OF product_concept_feature_association; +END_ENTITY; + + +ENTITY configuration_design; + configuration : configuration_item; + design : configuration_design_item; +DERIVE + description : text := get_description_value (SELF); + name : label := get_name_value (SELF); +UNIQUE + UR1 : configuration, design; +WHERE + WR1 : SIZEOF (USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1; + WR2 : SIZEOF (USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY configuration_effectivity + SUBTYPE OF (product_definition_effectivity); + configuration : configuration_design; +UNIQUE + UR1: configuration, SELF\product_definition_effectivity.usage, SELF\effectivity.id; +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION_USAGE' IN + TYPEOF (SELF\product_definition_effectivity.usage); +END_ENTITY; + + +ENTITY configuration_item; + id : identifier; + name : label; + description : OPTIONAL text; + item_concept : product_concept; + purpose : OPTIONAL label; +END_ENTITY; + + +ENTITY configuration_item_hierarchical_relationship + SUBTYPE OF (configuration_item_relationship); +END_ENTITY; + + +ENTITY configuration_item_relationship; + name : label; + description : OPTIONAL text; + relating_configuration_item : configuration_item; + related_configuration_item : configuration_item; +END_ENTITY; + + +ENTITY configuration_item_revision_sequence + SUBTYPE OF (configuration_item_relationship); +END_ENTITY; + + +ENTITY configured_effectivity_assignment + SUBTYPE OF (effectivity_assignment); + items : SET [1:?] OF configured_effectivity_item; +WHERE + WR1 : (SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EFFECTIVITY'] * TYPEOF(SELF.assigned_effectivity) ) = 1) + AND (SELF.assigned_effectivity.id = 'configuration validity'); + WR2 : SIZEOF(SELF.items) = 1; + WR3 : SIZEOF( QUERY( i <* SELF.items | NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF(i)) + OR NOT (i\product_definition.frame_of_reference.name IN ['conceptual definition','part occurrence', 'functional definition','alternative definition']) )) = 0; + WR4 : SELF.role.name IN ['design', 'usage']; + WR5 : (SELF.role.name <> 'design') + OR (SIZEOF( QUERY( i <* SELF.items | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF(i)) AND (i\product_definition.frame_of_reference.name = 'part occurrence') )) = 0); + WR6 : (SELF.role.name <> 'usage') OR (SIZEOF( QUERY( i <* SELF.items | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF(i)) AND (i\product_definition.frame_of_reference.name = 'conceptual definition') )) = 0); + WR7 : SELF.role.description IN ['exception', 'inherited', 'local']; + WR8 : SIZEOF( QUERY( x <* USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'EFFECTIVITY_CONTEXT_ASSIGNMENT.ASSIGNED_EFFECTIVITY_ASSIGNMENT') | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONFIGURED_EFFECTIVITY_CONTEXT_ASSIGNMENT' IN TYPEOF(x) )) = 1; +END_ENTITY; + + +ENTITY configured_effectivity_context_assignment + SUBTYPE OF (effectivity_context_assignment); + items : SET [1:?] OF configured_effectivity_context_item; + SELF\effectivity_context_assignment.assigned_effectivity_assignment : configured_effectivity_assignment; +WHERE + WR1 : SIZEOF(SELF.items) = 1; +END_ENTITY; + + +ENTITY conic + SUPERTYPE OF (ONEOF (circle, ellipse, hyperbola, parabola)) + SUBTYPE OF (curve); + position : axis2_placement; +END_ENTITY; + + +ENTITY conical_stepped_hole_transition + SUBTYPE OF (geometric_representation_item); + transition_number : positive_integer; + cone_apex_angle : plane_angle_measure; + cone_base_radius : positive_length_measure; +END_ENTITY; + + +ENTITY conical_surface + SUBTYPE OF (elementary_surface); + radius : length_measure; + semi_angle : plane_angle_measure; +WHERE + WR1 : radius >= 0.0; +END_ENTITY; + + +ENTITY connected_edge_set + SUBTYPE OF (topological_representation_item); + ces_edges : SET [1:?] OF edge; +END_ENTITY; + + +ENTITY connected_face_set + SUPERTYPE OF (ONEOF (closed_shell, open_shell)) + SUBTYPE OF (topological_representation_item); + cfs_faces : SET [1:?] OF face; +END_ENTITY; + + +ENTITY connected_face_sub_set + SUBTYPE OF (connected_face_set); + parent_face_set : connected_face_set; +END_ENTITY; + + +ENTITY constructive_geometry_representation + SUBTYPE OF (representation); +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_REPRESENTATION_CONTEXT' IN TYPEOF(SELF.context_of_items)) AND ({2 <= SELF.context_of_items\geometric_representation_context. coordinate_space_dimension <= 3}); + WR2 : SIZEOF( QUERY( cgr_i <* SELF.items | SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLACEMENT', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_SURFACE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT'] * TYPEOF(cgr_i)) <> 1 )) = 0; + WR3 : SIZEOF( USEDIN( SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'REPRESENTATION_RELATIONSHIP.REP_2') ) > 0; + WR4 : SIZEOF( USEDIN( SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'REPRESENTATION_MAP.MAPPED_REPRESENTATION') ) = 0; +END_ENTITY; + + +ENTITY constructive_geometry_representation_relationship + SUBTYPE OF (representation_relationship); + SELF\representation_relationship.rep_1 : constructive_geometry_representation_or_shape_represenation; + SELF\representation_relationship.rep_2 : constructive_geometry_representation; +WHERE + WR1 : (SELF.rep_1.context_of_items :=: SELF.rep_2.context_of_items) AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_REPRESENTATION_CONTEXT' IN TYPEOF(SELF.rep_1.context_of_items)); + WR2 : NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION' IN TYPEOF(SELF)); +END_ENTITY; + + +ENTITY contact_ratio_representation + SUBTYPE OF (representation); +WHERE + WR1 : ( SIZEOF ( SELF.items ) =1 ) AND ( SIZEOF ( QUERY ( i <* + SELF.items | ( SIZEOF ( ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'MEASURE_REPRESENTATION_ITEM' , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'VALUE_RANGE']* TYPEOF ( i ) ) =1 ) AND ( i.name = + 'ratio value' ) ) ) =1 ); + WR2 : ( SIZEOF ( QUERY ( pdr <* USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) | pdr. name = + 'contact ratio reference' ) ) =1 ) AND ( SIZEOF ( QUERY ( + pdr <* USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) | ( pdr. name = + 'contact ratio reference' ) AND ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'PRODUCT_DEFINITION' IN TYPEOF ( pdr. + definition.definition ) ) ) ) =1 ); + WR3 : ( SIZEOF ( USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) ) =1 ) AND ( SIZEOF ( QUERY ( pdr + <* USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) | SIZEOF ( QUERY ( gpa <* USEDIN ( + pdr. definition , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'GENERAL_PROPERTY_ASSOCIATION.'+ + 'DERIVED_DEFINITION' ) | ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'GENERAL_PROPERTY' IN TYPEOF ( gpa. base_definition ) ) AND + ( gpa. base_definition.name ='surface_condition' ) ) ) =1 ) + ) =1 ); +END_ENTITY; + + +ENTITY context_dependent_invisibility + SUBTYPE OF (invisibility); + presentation_context : invisibility_context; +END_ENTITY; + + +ENTITY context_dependent_over_riding_styled_item + SUBTYPE OF (over_riding_styled_item); + style_context : LIST [1:?] OF style_context_select; +WHERE + WR1 : (SIZEOF(QUERY(sc <* SELF.style_context | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION_ITEM' IN TYPEOF(sc)))= 1) OR +(SIZEOF(QUERY(sc <* SELF.style_context | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF(sc)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION_RELATIONSHIP' IN TYPEOF(sc)) )) + = SIZEOF(style_context)); +END_ENTITY; + + +ENTITY context_dependent_shape_representation; + representation_relation : shape_representation_relationship; + represented_product_relation : product_definition_shape; +DERIVE + description : text := get_description_value(SELF); + name : label := get_name_value(SELF); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION_RELATIONSHIP' IN TYPEOF(SELF.represented_product_relation.definition); + WR2 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; + WR3 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY context_dependent_unit + SUBTYPE OF (named_unit); + name : label; +END_ENTITY; + + +ENTITY contract; + name : label; + purpose : text; + kind : contract_type; +END_ENTITY; + + +ENTITY contract_assignment + ABSTRACT SUPERTYPE; + assigned_contract : contract; +DERIVE + role : object_role := get_role(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; +END_ENTITY; + + +ENTITY contract_relationship; + id : identifier; + name : label; + description : OPTIONAL text; + relating_contract : contract; + related_contract : contract; +END_ENTITY; + + +ENTITY contract_type; + description : label; +END_ENTITY; + + +ENTITY conversion_based_unit + SUBTYPE OF (named_unit); + name : label; + conversion_factor : measure_with_unit; +WHERE + WR1 : SELF\named_unit.dimensions = derive_dimensional_exponents(conversion_factor\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY coordinated_universal_time_offset; + hour_offset : INTEGER; + minute_offset : OPTIONAL INTEGER; + sense : ahead_or_behind; +DERIVE + actual_minute_offset : INTEGER := NVL(minute_offset,0); +WHERE + WR1 : { 0 <= hour_offset < 24 }; + WR2 : { 0 <= actual_minute_offset <= 59 }; + WR3 : NOT (((hour_offset <> 0) OR (actual_minute_offset <>0)) AND (sense = exact)); +END_ENTITY; + + +ENTITY csg_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SELF.context_of_items\geometric_representation_context.coordinate_space_dimension = 3; + WR2 : SIZEOF ( +QUERY ( it <* SELF.items| ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CSG_SOLID', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_REPLICA', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REVOLVED_FACE_SOLID', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EXTRUDED_FACE_SOLID' ] * TYPEOF (it)) <> 1) )) = 0; + WR3 : SIZEOF ( +QUERY ( mi <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) )| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CSG_SHAPE_REPRESENTATION' IN TYPEOF (mi\mapped_item.mapping_source.mapped_representation)) )) = 0; + WR4 : SIZEOF ( +QUERY ( sr <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_REPLICA' IN TYPEOF (it)) )| ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CSG_SOLID', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REVOLVED_FACE_SOLID', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EXTRUDED_FACE_SOLID' ] * TYPEOF (sr\solid_replica.parent_solid)) = 0) )) = 0; + WR5 : SIZEOF ( +QUERY ( it <* SELF.items| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D' IN TYPEOF (it)) )) > 0; +END_ENTITY; + + +ENTITY csg_solid + SUBTYPE OF (solid_model); + tree_root_expression : csg_select; +END_ENTITY; + + +ENTITY currency + ABSTRACT SUPERTYPE OF (ONEOF (externally_defined_currency, iso4217_currency)) + SUBTYPE OF (context_dependent_unit); +WHERE + WR1 : ((SELF\named_unit.dimensions.length_exponent = 0.0) AND + (SELF\named_unit.dimensions.mass_exponent = 0.0) AND + (SELF\named_unit.dimensions.time_exponent = 0.0) AND + (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND + (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND + (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND + (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0)); +END_ENTITY; + + +ENTITY currency_measure_with_unit + SUBTYPE OF (measure_with_unit); + SELF\measure_with_unit.unit_component : currency; +END_ENTITY; + + +ENTITY curve + SUPERTYPE OF (ONEOF (line, conic, pcurve, surface_curve, offset_curve_2d, offset_curve_3d, curve_replica)) + SUBTYPE OF (geometric_representation_item); +END_ENTITY; + + +ENTITY curve_bounded_surface + SUBTYPE OF (bounded_surface); + basis_surface : surface; + boundaries : SET [1:?] OF boundary_curve; + implicit_outer : BOOLEAN; +WHERE + WR1 : (NOT implicit_outer) OR + (SIZEOF (QUERY (temp <* boundaries | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OUTER_BOUNDARY_CURVE' IN TYPEOF(temp))) = 0); + WR2 : (NOT(implicit_outer)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOUNDED_SURFACE' IN TYPEOF(basis_surface)); + WR3 : SIZEOF(QUERY(temp <* boundaries | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OUTER_BOUNDARY_CURVE' IN + TYPEOF(temp))) <= 1; + WR4 : SIZEOF(QUERY(temp <* boundaries | + (temp\composite_curve_on_surface.basis_surface [1] <> + SELF.basis_surface))) = 0; +END_ENTITY; + + +ENTITY curve_dimension + SUBTYPE OF (dimension_curve_directed_callout); +END_ENTITY; + + +ENTITY curve_replica + SUBTYPE OF (curve); + parent_curve : curve; + transformation : cartesian_transformation_operator; +WHERE + WR1 : transformation.dim = parent_curve.dim; + WR2 : acyclic_curve_replica (SELF, parent_curve); +END_ENTITY; + + +ENTITY curve_style + SUBTYPE OF (founded_item); + name : label; + curve_font : curve_font_or_scaled_curve_font_select; + curve_width : size_select; + curve_colour : colour; +END_ENTITY; + + +ENTITY curve_style_font + SUBTYPE OF (founded_item); + name : label; + pattern_list : LIST [1:?] OF curve_style_font_pattern; +END_ENTITY; + + +ENTITY curve_style_font_and_scaling + SUBTYPE OF (founded_item); + name : label; + curve_font : curve_style_font_select; + curve_font_scaling : REAL; +END_ENTITY; + + +ENTITY curve_style_font_pattern + SUBTYPE OF (founded_item); + visible_segment_length : positive_length_measure; + invisible_segment_length : positive_length_measure; +END_ENTITY; + + +ENTITY curve_style_rendering; + rendering_method : shading_curve_method; + rendering_properties : surface_rendering_properties; +END_ENTITY; + + +ENTITY curve_swept_solid_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF (QUERY (it <* SELF.items | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SWEPT_AREA_SOLID', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SWEPT_DISK_SOLID', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D'] * + TYPEOF(it)) = 1))) = 0; + WR2 : SIZEOF (QUERY (it <* SELF.items | + SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SWEPT_AREA_SOLID', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SWEPT_DISK_SOLID', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM'] * TYPEOF(it)) =1 )) > 0; + WR3 : SIZEOF (QUERY (mi <* QUERY (it <* items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_SWEPT_SOLID_SHAPE_REPRESENTATION' IN + TYPEOF(mi\mapped_item.mapping_source. + mapped_representation)))) = 0; + WR4 : SIZEOF (QUERY (scsas <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE_SWEPT_AREA_SOLID' IN + TYPEOF(it)) | + NOT(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE' IN + TYPEOF(scsas\surface_curve_swept_area_solid.directrix)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN + TYPEOF(scsas\surface_curve_swept_area_solid.directrix))))) = 0; +END_ENTITY; + + +ENTITY cylindrical_surface + SUBTYPE OF (elementary_surface); + radius : positive_length_measure; +END_ENTITY; + + +ENTITY cylindricity_tolerance + SUBTYPE OF (geometric_tolerance); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF (SELF)); +END_ENTITY; + + +ENTITY data_environment; + name : label; + description : text; + elements : SET [1:?] OF property_definition_representation; +END_ENTITY; + + +ENTITY date + SUPERTYPE OF (ONEOF (calendar_date, ordinal_date, week_of_year_and_day_date, year_month)); + year_component : year_number; +END_ENTITY; + + +ENTITY date_and_time; + date_component : date; + time_component : local_time; +END_ENTITY; + + +ENTITY date_and_time_assignment + ABSTRACT SUPERTYPE; + assigned_date_and_time : date_and_time; + role : date_time_role; +END_ENTITY; + + +ENTITY date_assignment + ABSTRACT SUPERTYPE; + assigned_date : date; + role : date_role; +END_ENTITY; + + +ENTITY date_representation_item + SUBTYPE OF (representation_item, date); +END_ENTITY; + + +ENTITY date_role; + name : label; +DERIVE + description : text := get_description_value (SELF); +WHERE + WR1 : SIZEOF (USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY date_time_representation_item + SUBTYPE OF (representation_item, date_and_time); +END_ENTITY; + + +ENTITY date_time_role; + name : label; +DERIVE + description : text := get_description_value (SELF); +WHERE + WR1 : SIZEOF (USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY dated_effectivity + SUBTYPE OF (effectivity); + effectivity_end_date : OPTIONAL date_time_or_event_occurrence; + effectivity_start_date : date_time_or_event_occurrence; +END_ENTITY; + + +ENTITY datum + SUBTYPE OF (shape_aspect); + identification : identifier; +INVERSE + established_by_relationships: SET [1:?] OF shape_aspect_relationship FOR related_shape_aspect; +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMMON_DATUM' IN TYPEOF(SELF)) XOR + ((SIZEOF(QUERY(x <* SELF\datum.established_by_relationships | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DATUM_FEATURE' IN TYPEOF(x\shape_aspect_relationship.relating_shape_aspect)))) = 1) XOR + (SIZEOF(QUERY(x <* SELF\datum.established_by_relationships | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DATUM_TARGET' IN TYPEOF(x\shape_aspect_relationship.relating_shape_aspect)))) >= 1)); +END_ENTITY; + + +ENTITY datum_feature + SUBTYPE OF (shape_aspect); +INVERSE + feature_basis_relationship: SET [1:?] OF shape_aspect_relationship FOR relating_shape_aspect; +WHERE + WR1 : SIZEOF(QUERY(sar <* SELF\datum_feature.feature_basis_relationship + | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DATUM' IN TYPEOF + (sar\shape_aspect_relationship.related_shape_aspect)))) = 1; + WR2 : SELF\shape_aspect.product_definitional = TRUE; +END_ENTITY; + + +ENTITY datum_feature_callout + SUBTYPE OF (draughting_callout); +END_ENTITY; + + +ENTITY datum_reference; + precedence : INTEGER; + referenced_datum : datum; +WHERE + WR1 : precedence > 0; +END_ENTITY; + + +ENTITY datum_target + SUBTYPE OF (shape_aspect); + target_id : identifier; +INVERSE + target_basis_relationship: SET [1:?] OF shape_aspect_relationship FOR relating_shape_aspect; +WHERE + WR1 : SIZEOF(QUERY(sar <* SELF\datum_target.target_basis_relationship + | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DATUM' IN TYPEOF + (sar\shape_aspect_relationship.related_shape_aspect)))) = 1; + WR2 : SELF\shape_aspect.product_definitional = TRUE; +END_ENTITY; + + +ENTITY datum_target_callout + SUBTYPE OF (draughting_callout); +END_ENTITY; + + +ENTITY default_tolerance_table + SUBTYPE OF (representation); +WHERE + WR1 : SIZEOF( QUERY( i <* SELF.items | NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DEFAULT_TOLERANCE_TABLE_CELL' IN TYPEOF(i)) )) = 0; + WR2 : (SIZEOF( QUERY( rr <* USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'REPRESENTATION_RELATIONSHIP.REP_1') | rr.name < 'general tolerance definition' )) = 0) AND (SIZEOF( QUERY( rr <* USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'REPRESENTATION_RELATIONSHIP.REP_1') | (rr.name = 'general tolerance definition') AND (rr.rep_2.name < 'default tolerance') )) = 0) AND (SIZEOF( USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'REPRESENTATION_RELATIONSHIP.REP_2') ) = 0); +END_ENTITY; + + +ENTITY default_tolerance_table_cell + SUBTYPE OF (compound_representation_item); +WHERE + WR1 : SIZEOF(QUERY( x <* USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'REPRESENTATION.ITEMS') | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DEFAULT_TOLERANCE_TABLE' IN TYPEOF(x)))=1; + WR2 : default_tolerance_table_cell_wr2(SELF\compound_representation_item.item_element); + WR3 : default_tolerance_table_cell_wr3(SELF\compound_representation_item.item_element); + WR4 : default_tolerance_table_cell_wr4(SELF\compound_representation_item.item_element); + WR5 : default_tolerance_table_cell_wr5(SELF\compound_representation_item.item_element); +END_ENTITY; + + +ENTITY defined_symbol + SUBTYPE OF (geometric_representation_item); + definition : defined_symbol_select; + target : symbol_target; +END_ENTITY; + + +ENTITY definitional_representation + SUBTYPE OF (representation); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PARAMETRIC_REPRESENTATION_CONTEXT' IN + TYPEOF (SELF\representation.context_of_items ); +END_ENTITY; + + +ENTITY definitional_representation_relationship + SUBTYPE OF (representation_relationship); +WHERE + WR1 : acyclic_representation_relationship(SELF, + [SELF\representation_relationship.rep_2], + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'REPRESENTATION'); +END_ENTITY; + + +ENTITY definitional_representation_relationship_with_same_context + SUBTYPE OF (definitional_representation_relationship); +WHERE + WR1 : SELF\representation_relationship.rep_1.context_of_items :=: + SELF\representation_relationship.rep_2.context_of_items; +END_ENTITY; + + +ENTITY degenerate_pcurve + SUBTYPE OF (point); + basis_surface : surface; + reference_to_curve : definitional_representation; +WHERE + WR1 : SIZEOF(reference_to_curve\representation.items) = 1; + WR2 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE' IN TYPEOF + (reference_to_curve\representation.items[1]); + WR3 : reference_to_curve\representation. + items[1]\geometric_representation_item.dim =2; +END_ENTITY; + + +ENTITY degenerate_toroidal_surface + SUBTYPE OF (toroidal_surface); + select_outer : BOOLEAN; +WHERE + WR1 : major_radius < minor_radius; +END_ENTITY; + + +ENTITY derived_shape_aspect + SUPERTYPE OF (ONEOF (apex, centre_of_symmetry, geometric_alignment, geometric_intersection, parallel_offset, perpendicular_to, extension, tangent)) + SUBTYPE OF (shape_aspect); +INVERSE + deriving_relationships: SET [1:?] OF shape_aspect_relationship FOR relating_shape_aspect; +WHERE + WR1 : SIZEOF (QUERY (dr <* + SELF\derived_shape_aspect.deriving_relationships | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SHAPE_ASPECT_DERIVING_RELATIONSHIP' + IN TYPEOF (dr)))) = 0; +END_ENTITY; + + +ENTITY derived_unit + SUPERTYPE OF (ONEOF (absorbed_dose_unit, acceleration_unit, radioactivity_unit, area_unit, capacitance_unit, dose_equivalent_unit, electric_charge_unit, conductance_unit, electric_potential_unit, energy_unit, magnetic_flux_density_unit, force_unit, frequency_unit, illuminance_unit, inductance_unit, magnetic_flux_unit, power_unit, pressure_unit, resistance_unit, velocity_unit, volume_unit)); + elements : SET [1:?] OF derived_unit_element; +DERIVE + name : label := get_name_value(SELF); +WHERE + WR1 : (SIZEOF(elements) > 1) OR ((SIZEOF(elements) = 1) AND (elements[1].exponent <> 1.0)); + WR2 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY derived_unit_element; + unit : named_unit; + exponent : REAL; +END_ENTITY; + + +ENTITY description_attribute; + attribute_value : text; + described_item : description_attribute_select; +END_ENTITY; + + +ENTITY descriptive_representation_item + SUPERTYPE OF (ONEOF (tagged_text_item, uniform_resource_identifier)) + SUBTYPE OF (representation_item); + description : text; +END_ENTITY; + + +ENTITY design_context + SUBTYPE OF (product_definition_context); +WHERE + WR1 : SELF.life_cycle_stage = 'design'; +END_ENTITY; + + +ENTITY design_make_from_relationship + SUBTYPE OF (product_definition_relationship); +END_ENTITY; + + +ENTITY diameter_dimension + SUBTYPE OF (dimension_curve_directed_callout); +END_ENTITY; + + +ENTITY dielectric_constant_measure_with_unit + SUBTYPE OF (ratio_measure_with_unit); +END_ENTITY; + + +ENTITY dimension_callout + SUBTYPE OF (draughting_callout); +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_DIRECTED_CALLOUT' + IN (TYPEOF (SELF))) XOR + (SIZEOF (QUERY(dce_1 <* SELF\draughting_callout.contents | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_CURVE' + IN (TYPEOF(dce_1))))) = 0); + WR2 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROJECTION_DIRECTED_CALLOUT' + IN (TYPEOF (SELF))) XOR + (SIZEOF (QUERY(dce_1 <* SELF\draughting_callout.contents | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROJECTION_CURVE' + IN (TYPEOF(dce_1))))) = 0); + WR3 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT' + IN (TYPEOF (SELF))) XOR + (SIZEOF (QUERY(dce_1 <* SELF\draughting_callout.contents | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIMENSION_CURVE' + IN (TYPEOF(dce_1))))) = 0); +END_ENTITY; + + +ENTITY dimension_callout_component_relationship + SUBTYPE OF (draughting_callout_relationship); +WHERE + WR1 : SELF.name IN ['prefix', 'suffix']; + WR2 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRUCTURED_DIMENSION_CALLOUT' + IN TYPEOF (SELF.relating_draughting_callout); + WR3 : SIZEOF (TYPEOF (SELF.related_draughting_callout) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_DIRECTED_CALLOUT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROJECTION_DIRECTED_CALLOUT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRUCTURED_DIMENSION_CALLOUT']) = 0; + WR4 : SELF.related_draughting_callout.contents * + SELF.relating_draughting_callout.contents = + SELF.related_draughting_callout.contents; + WR5 : ((SELF.name = 'prefix') AND + (SIZEOF (QUERY (ato <* QUERY (con <* + SELF.related_draughting_callout.contents | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF(con))) | + NOT (ato.name = 'prefix text') + )) = 0)); + WR6 : ((SELF.name = 'suffix') AND + (SIZEOF (QUERY (ato <* QUERY (con <* + SELF.related_draughting_callout.contents | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF(con))) | + NOT (ato.name = 'suffix text') + )) = 0)); +END_ENTITY; + + +ENTITY dimension_callout_relationship + SUBTYPE OF (draughting_callout_relationship); +WHERE + WR1 : SELF.name IN ['primary', 'secondary']; + WR2 : SIZEOF (TYPEOF (SELF.relating_draughting_callout) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANGULAR_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIAMETER_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_DIRECTED_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINEAR_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORDINATE_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RADIUS_DIMENSION'])>=1; + WR3 : SIZEOF (TYPEOF (SELF.related_draughting_callout) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROJECTION_DIRECTED_CALLOUT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_DIRECTED_CALLOUT']) = 0; + WR4 : SELF.related_draughting_callout.contents * + SELF.relating_draughting_callout.contents = + SELF.related_draughting_callout.contents; +END_ENTITY; + + +ENTITY dimension_curve + SUBTYPE OF (annotation_curve_occurrence); +WHERE + WR1 : (SIZEOF( + QUERY(dct <* USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'TERMINATOR_SYMBOL.ANNOTATED_CURVE') + | (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DIMENSION_CURVE_TERMINATOR' IN TYPEOF(dct)) + )) + ) <= 2); + WR2 : SIZEOF( + QUERY( dcdc <* USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_CALLOUT.CONTENTS') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DIMENSION_CURVE_DIRECTED_CALLOUT' IN TYPEOF(dcdc))) + )>= 1; + WR3 : (SIZEOF( + QUERY(dct1 <* USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'TERMINATOR_SYMBOL.ANNOTATED_CURVE') + | (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DIMENSION_CURVE_TERMINATOR' IN TYPEOF(dct1)) + AND (dct1\dimension_curve_terminator.role = dimension_extent_usage.origin))) + ) <= 1) + AND + (SIZEOF( + QUERY (dct2 <* USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'TERMINATOR_SYMBOL.ANNOTATED_CURVE') + | (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DIMENSION_CURVE_TERMINATOR' IN TYPEOF(dct2)) + AND (dct2\dimension_curve_terminator.role = dimension_extent_usage.target))) + ) <= 1); +END_ENTITY; + + +ENTITY dimension_curve_directed_callout + SUBTYPE OF (draughting_callout); +WHERE + WR1 : SIZEOF(QUERY(d_c<*SELF\draughting_callout.contents | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIMENSION_CURVE' IN (TYPEOF(d_c))))=1; + WR2 : SIZEOF(SELF\draughting_callout.contents) >= 2; +END_ENTITY; + + +ENTITY dimension_curve_terminator + SUBTYPE OF (terminator_symbol); + role : dimension_extent_usage; +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIMENSION_CURVE' IN TYPEOF + (SELF\terminator_symbol.annotated_curve); +END_ENTITY; + + +ENTITY dimension_curve_terminator_to_projection_curve_associativity + SUBTYPE OF (annotation_occurrence_associativity); + SELF\annotation_occurrence_relationship.related_annotation_occurrence : projection_curve; + SELF\annotation_occurrence_relationship.relating_annotation_occurrence : dimension_curve_terminator; +END_ENTITY; + + +ENTITY dimension_pair + SUBTYPE OF (draughting_callout_relationship); +WHERE + WR1 : SELF.name IN ['chained', 'parallel']; + WR2 : SIZEOF (TYPEOF (SELF.relating_draughting_callout) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANGULAR_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIAMETER_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINEAR_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORDINATE_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RADIUS_DIMENSION'])=1; + WR3 : SIZEOF (TYPEOF (SELF.related_draughting_callout) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANGULAR_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIAMETER_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINEAR_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORDINATE_DIMENSION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RADIUS_DIMENSION'])=1; +END_ENTITY; + + +ENTITY dimension_related_tolerance_zone_element; + related_dimension : dimensional_location; + related_element : tolerance_zone_definition; +END_ENTITY; + + +ENTITY dimension_text_associativity + SUBTYPE OF (text_literal, mapped_item); +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_DIMENSION_REPRESENTATION' + IN TYPEOF (SELF\mapped_item. + mapping_source.mapped_representation)); + WR2 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_CALLOUT' + IN TYPEOF (SELF\mapped_item.mapping_target)); + WR3 : SIZEOF (QUERY (ato <* QUERY (si <* + USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM.ITEM') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF(si))) | + NOT (SIZEOF( QUERY (dc <* + USEDIN (ato, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_CALLOUT.CONTENTS') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_CALLOUT' + IN TYPEOF (dc))) + * [SELF\mapped_item.mapping_target]) = 1) + )) = 0; +END_ENTITY; + + +ENTITY dimensional_characteristic_representation; + dimension : dimensional_characteristic; + representation : shape_dimension_representation; +END_ENTITY; + + +ENTITY dimensional_exponents; + length_exponent : REAL; + mass_exponent : REAL; + time_exponent : REAL; + electric_current_exponent : REAL; + thermodynamic_temperature_exponent : REAL; + amount_of_substance_exponent : REAL; + luminous_intensity_exponent : REAL; +END_ENTITY; + + +ENTITY dimensional_location + SUPERTYPE OF (ONEOF (angular_location, dimensional_location_with_path)) + SUBTYPE OF (shape_aspect_relationship); +END_ENTITY; + + +ENTITY dimensional_location_with_path + SUBTYPE OF (dimensional_location); + path : shape_aspect; +END_ENTITY; + + +ENTITY dimensional_size + SUPERTYPE OF (ONEOF (angular_size, dimensional_size_with_path)); + applies_to : shape_aspect; + name : label; +WHERE + WR1 : applies_to.product_definitional = TRUE; +END_ENTITY; + + +ENTITY dimensional_size_with_path + SUBTYPE OF (dimensional_size); + path : shape_aspect; +END_ENTITY; + + +ENTITY directed_action + SUBTYPE OF (executed_action); + directive : action_directive; +END_ENTITY; + + +ENTITY directed_dimensional_location + SUBTYPE OF (dimensional_location); +END_ENTITY; + + +ENTITY direction + SUBTYPE OF (geometric_representation_item); + direction_ratios : LIST [2:3] OF REAL; +WHERE + WR1 : SIZEOF(QUERY(tmp <* direction_ratios | tmp <> 0.0)) > 0; +END_ENTITY; + + +ENTITY document; + id : identifier; + name : label; + description : OPTIONAL text; + kind : document_type; +INVERSE + representation_types: SET [0:?] OF document_representation_type FOR represented_document; +END_ENTITY; + + +ENTITY document_file + SUBTYPE OF (document, characterized_object); +WHERE + WR1 : SELF\characterized_object.name = ''; + WR2 : NOT EXISTS(SELF\characterized_object.description); + WR3 : SIZEOF( QUERY( drt <* SELF\document.representation_types | + drt.name IN ['digital','physical'])) = 1; +END_ENTITY; + + +ENTITY document_identifier + SUBTYPE OF (group); +UNIQUE + UR1: SELF\group.name, SELF\group.description; +END_ENTITY; + + +ENTITY document_identifier_assignment + SUBTYPE OF (group_assignment); + items : SET [1:?] OF document_identifier_assigned_item; + SELF\group_assignment.assigned_group : document_identifier; +END_ENTITY; + + +ENTITY document_product_association; + name : label; + description : OPTIONAL text; + relating_document : document; + related_product : product_or_formation_or_definition; +END_ENTITY; + + +ENTITY document_product_equivalence + SUBTYPE OF (document_product_association); +WHERE + WR1 : SELF\document_product_association.name = 'equivalence'; + WR2 : NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT' IN TYPEOF(SELF\document_product_association.related_product)) OR ((SELF\document_product_association.relating_document.kind. product_data_type = 'configuration controlled document') AND (SIZEOF( QUERY( prpc <* USEDIN(SELF\document_product_association.related_product,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.name = 'document' )) = 1)); + WR3 : NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION_FORMATION' IN TYPEOF(SELF.related_product)) OR ((SELF\document_product_association.relating_document.kind.product_data_type = 'configuration controlled document version') AND (SIZEOF( QUERY( prpc <* USEDIN(SELF.related_product\product_definition_formation.of_product, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.name = 'document')) = 1)); + WR4 : NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF(SELF.related_product)) OR ((SELF\document_product_association.relating_document.kind.product_data_type = 'configuration controlled document definition') AND (SIZEOF( QUERY( prpc <* USEDIN(SELF\document_product_association.related_product\product_definition.formation.of_product, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | prpc.name = 'document' )) = 1)); +END_ENTITY; + + +ENTITY document_reference + ABSTRACT SUPERTYPE; + assigned_document : document; + source : label; +DERIVE + role : object_role := get_role(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; +END_ENTITY; + + +ENTITY document_relationship; + name : label; + description : OPTIONAL text; + relating_document : document; + related_document : document; +END_ENTITY; + + +ENTITY document_representation_type; + name : label; + represented_document : document; +END_ENTITY; + + +ENTITY document_type; + product_data_type : label; +END_ENTITY; + + +ENTITY document_usage_constraint; + source : document; + subject_element : label; + subject_element_value : text; +END_ENTITY; + + +ENTITY document_usage_constraint_assignment + ABSTRACT SUPERTYPE; + assigned_document_usage : document_usage_constraint; + role : document_usage_role; +END_ENTITY; + + +ENTITY document_usage_role; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY dose_equivalent_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DOSE_EQUIVALENT_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY dose_equivalent_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.sievert); +END_ENTITY; + + +ENTITY double_offset_shelled_solid + SUBTYPE OF (shelled_solid); + thickness2 : length_measure; +WHERE + WR1 : thickness2 <> 0; + WR2 : SELF\shelled_solid.thickness <> thickness2; +END_ENTITY; + + +ENTITY draped_defined_transformation + SUBTYPE OF (transformation_with_derived_angle); +END_ENTITY; + + +ENTITY draughting_annotation_occurrence + SUBTYPE OF (annotation_occurrence); +WHERE + WR1 : (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_CURVE_OCCURRENCE' + IN TYPEOF (SELF))) OR + (SIZEOF (QUERY (sty <* SELF.styles | + NOT ((SIZEOF (sty.styles) = 1) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF (sty.styles[1]))) )) = 0); + WR2 : (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_FILL_AREA_OCCURRENCE' + IN TYPEOF (SELF))) OR (SIZEOF (QUERY (sty <* SELF.styles | + NOT ((SIZEOF (sty.styles) = 1) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FILL_AREA_STYLE' + IN TYPEOF (sty.styles[1]))) )) = 0); + WR3 : (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_FILL_AREA_OCCURRENCE' + IN TYPEOF (SELF))) OR (SIZEOF (QUERY (bound <* + SELF.item\annotation_fill_area.boundaries | + NOT (SIZEOF (QUERY (si <* + USEDIN (bound, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'STYLED_ITEM.ITEM') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'ANNOTATION_CURVE_OCCURRENCE' IN TYPEOF (si)))) > 0))) = 0); + WR4 : (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_SYMBOL_OCCURRENCE' + IN TYPEOF (SELF))) OR (SIZEOF (QUERY (sty <* SELF.styles | + NOT ((SIZEOF (sty.styles) = 1) AND + (SIZEOF (TYPEOF (sty.styles[1]) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SYMBOL_STYLE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.NULL_STYLE']) = 1)) )) = 0); + WR5 : (NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_SYMBOL_OCCURRENCE' + IN TYPEOF (SELF)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_SYMBOL' + IN TYPEOF(SELF.item)))) OR + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_SYMBOL_REPRESENTATION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_SUBFIGURE_REPRESENTATION'] * + TYPEOF (SELF.item\mapped_item.mapping_source. + mapped_representation)) = 1); + WR6 : (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF (SELF))) OR + (SIZEOF (QUERY (sty <* SELF.styles | + NOT ((SIZEOF (sty.styles) = 1) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_STYLE' + IN TYPEOF (sty.styles[1]))) )) = 0); + WR7 : (NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF (SELF))) OR + (SIZEOF (TYPEOF(SELF.item) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_TEXT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_LITERAL']) = 1); + WR8 : (NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF (SELF)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_TEXT' + IN TYPEOF (SELF.item)))) OR (SIZEOF (QUERY (tl <* + SELF.item\composite_text.collected_text | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_LITERAL' + IN TYPEOF (tl)) )) = 0); + WR9 : (NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF (SELF)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_LITERAL' + IN TYPEOF (SELF.item)))) OR (SELF.item\text_literal.alignment + IN ['baseline left', 'baseline centre', 'baseline right']); + WR10 : (NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF (SELF)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_TEXT' + IN TYPEOF (SELF.item)))) OR + (SIZEOF (QUERY (tl <* QUERY (text <* SELF. + item\composite_text.collected_text + |('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_LITERAL' IN TYPEOF(text))) | + NOT (tl\text_literal.alignment IN + ['baseline left', 'baseline centre', 'baseline right']) )) = 0); + WR11 : NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF(SELF)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_TEXT' + IN TYPEOF (SELF.item))) OR check_text_alignment(SELF.item); + WR12 : NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF(SELF)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_TEXT' + IN TYPEOF (SELF.item))) OR check_text_font(SELF.item); + WR13 : (NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF(SELF)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_TEXT' + IN TYPEOF (SELF.item)))) OR + (SIZEOF (QUERY (tl <* QUERY (text <* + SELF.item\composite_text.collected_text | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_LITERAL' IN TYPEOF (text))) | + NOT (SIZEOF (TYPEOF(tl) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'TEXT_LITERAL_WITH_BLANKING_BOX', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'TEXT_LITERAL_WITH_ASSOCIATED_CURVES']) = 0) )) = 0); + WR14 : (NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF (SELF)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_LITERAL_WITH_ASSOCIATED_CURVES' + IN TYPEOF (SELF.item)))) OR + (SIZEOF (QUERY (crv <* + SELF.item\text_literal_with_associated_curves. + associated_curves | + NOT (SIZEOF (QUERY (si <* USEDIN (crv, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM.ITEM') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_CURVE_OCCURRENCE' + IN TYPEOF (si)) )) > 0) )) = 0); + WR15 : (NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF (SELF)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_TEXT_WITH_ASSOCIATED_CURVES' + IN TYPEOF (SELF.item)))) OR + (SIZEOF (QUERY (crv <* + SELF.item\composite_text_with_associated_curves. + associated_curves | + NOT (SIZEOF (QUERY (si <* USEDIN (crv, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM.ITEM') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_CURVE_OCCURRENCE' + IN TYPEOF (si)) )) > 0) )) = 0); + WR16 : SIZEOF (QUERY (cs <* QUERY (sty <* SELF.styles | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' IN TYPEOF (sty.styles[1]))) + | NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE_WITH_UNIT' + IN TYPEOF (cs.styles[1]\curve_style.curve_width)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITIVE_LENGTH_MEASURE' + IN TYPEOF (cs.styles[1]\curve_style. + curve_width\measure_with_unit.value_component))))) = 0; + WR17 : SIZEOF (QUERY (fas <* QUERY (sty <* SELF.styles | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FILL_AREA_STYLE' + IN TYPEOF (sty.styles[1]))) | + NOT ((SIZEOF (QUERY (fs <* fas.styles[1]\fill_area_style.fill_styles + | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FILL_AREA_STYLE_TILES' + IN TYPEOF (fs)))) <= 1) + AND (SIZEOF (QUERY (fst <* QUERY (fs <* + fas.styles[1]\fill_area_style.fill_styles | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FILL_AREA_STYLE_TILES' + IN TYPEOF (fs))) | + NOT (SIZEOF (fst\fill_area_style_tiles.tiles) = 1) + )) = 0)) + )) = 0; + WR18 : SIZEOF (QUERY (fas <* QUERY (sty <* SELF.styles | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FILL_AREA_STYLE' + IN TYPEOF (sty.styles[1]))) | + NOT (SIZEOF (QUERY (fsh <* QUERY (fs <* + fas.styles[1]\fill_area_style.fill_styles | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FILL_AREA_STYLE_HATCHING' + IN TYPEOF (fs))) | + NOT (fsh\fill_area_style_hatching.point_of_reference_hatch_line :=: + fsh\fill_area_style_hatching.pattern_start) )) = 0) )) = 0; + WR19 : SIZEOF (QUERY (ts <* QUERY (sty <* SELF.styles | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_STYLE' + IN TYPEOF(sty.styles[1]))) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'TEXT_STYLE_WITH_BOX_CHARACTERISTICS' + IN TYPEOF (ts.styles[1])))) = 0; + WR20 : SIZEOF (QUERY (ts <* QUERY (sty <* SELF.styles | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_STYLE_WITH_BOX_CHARACTERISTICS' + IN TYPEOF (sty.styles[1]))) | + NOT (SIZEOF (ts.styles[1]\text_style_with_box_characteristics. + characteristics) = 4) )) = 0; +END_ENTITY; + + +ENTITY draughting_callout + SUPERTYPE OF ((ONEOF (datum_feature_callout, datum_target_callout, dimension_curve_directed_callout, draughting_elements, geometrical_tolerance_callout, leader_directed_callout, projection_directed_callout, structured_dimension_callout) ANDOR surface_condition_callout)) + SUBTYPE OF (geometric_representation_item); + contents : SET [1:?] OF draughting_callout_element; +WHERE + WR1 : (SIZEOF (QUERY (l_1 <* SELF\draughting_callout.contents | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_CURVE' IN (TYPEOF(l_1)))) = 0) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_DIRECTED_CALLOUT' IN (TYPEOF(SELF))) AND + (SIZEOF (QUERY (l_1 <* SELF\draughting_callout.contents | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROJECTION_CURVE' IN (TYPEOF(l_1)))) = 0) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROJECTION_DIRECTED_CALLOUT' IN (TYPEOF(SELF))) AND + (SIZEOF (QUERY (l_1 <* SELF\draughting_callout.contents | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIMENSION_CURVE' IN (TYPEOF(l_1)))) = 0) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT' IN (TYPEOF(SELF))); +END_ENTITY; + + +ENTITY draughting_callout_relationship; + name : label; + description : text; + relating_draughting_callout : draughting_callout; + related_draughting_callout : draughting_callout; +END_ENTITY; + + +ENTITY draughting_elements + SUBTYPE OF (draughting_callout); +WHERE + WR1 : SIZEOF (QUERY (l_c <* QUERY (con <* SELF.contents | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_CURVE' IN TYPEOF(con))) | + NOT (SIZEOF (QUERY (ldc <* USEDIN (l_c, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DRAUGHTING_CALLOUT.CONTENTS') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_DIRECTED_CALLOUT' + IN TYPEOF (ldc)))) <= 1)))=0; + WR2 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT' + IN TYPEOF(SELF)) OR + (SIZEOF (QUERY (con <* SELF.contents | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROJECTION_CURVE' IN + TYPEOF (con)))) <= 2); + WR3 : SIZEOF (QUERY (rc <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_CALLOUT_' + + 'RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DIMENSION_CALLOUT_RELATIONSHIP' IN TYPEOF (rc)) AND + (rc.name = 'primary') )) <= 1; + WR4 : SIZEOF (QUERY (rc <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_CALLOUT_' + + 'RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DIMENSION_CALLOUT_RELATIONSHIP' IN TYPEOF (rc)) AND + (rc.name = 'secondary') )) <= 1; + WR5 : SIZEOF (QUERY (sec <* QUERY (rc <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_CALLOUT_' + + 'RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DIMENSION_CALLOUT_RELATIONSHIP' IN TYPEOF (rc)) AND + (rc.name = 'secondary') ) | + NOT (SIZEOF (QUERY (prim <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_CALLOUT_' + + 'RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DIMENSION_CALLOUT_RELATIONSHIP' IN TYPEOF (prim)) AND + (prim.name = 'primary') )) = 1))) = 0; +END_ENTITY; + + +ENTITY draughting_model + SUBTYPE OF (representation); + SELF\representation.items : SET [1:?] OF draughting_model_item_select; +UNIQUE + UR1: SELF\representation.name; +WHERE + WR1 : SIZEOF (QUERY (mi <* QUERY (it <* SELF.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF(it))) | + NOT ( + SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_REPRESENTATION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_MODEL'] * + TYPEOF (mi\mapped_item.mapping_source. + mapped_representation)) = 1 + ))) = 0; + WR2 : SIZEOF (QUERY (smi <* QUERY (si <* QUERY (it <* SELF.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' IN TYPEOF(it))) | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN + TYPEOF(si\styled_item.item))) | + (NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_REPRESENTATION' IN + TYPEOF(smi\styled_item.item\mapped_item. + mapping_source.mapped_representation)) + AND + (SIZEOF (QUERY (sty <* smi\styled_item.styles | + (NOT (SIZEOF (QUERY (psa <* sty.styles | + (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' IN TYPEOF(psa))))) = 1 + )))) = 1))) + )) = 0; +END_ENTITY; + + +ENTITY draughting_model_item_association + SUBTYPE OF (item_identified_representation_usage); + SELF\item_identified_representation_usage.definition : shape_definition; + SELF\item_identified_representation_usage.identified_item : draughting_model_item_association_select; + SELF\item_identified_representation_usage.used_representation : draughting_model; +END_ENTITY; + + +ENTITY draughting_pre_defined_colour + SUBTYPE OF (pre_defined_colour); +WHERE + WR1 : SELF.name IN + ['red', + 'green', + 'blue', + 'yellow', + 'magenta', + 'cyan', + 'black', + 'white']; +END_ENTITY; + + +ENTITY draughting_pre_defined_curve_font + SUBTYPE OF (pre_defined_curve_font); +WHERE + WR1 : SELF.name IN + ['continuous', + 'chain', + 'chain double dash', + 'dashed', + 'dotted']; +END_ENTITY; + + +ENTITY draughting_pre_defined_text_font + SUBTYPE OF (pre_defined_text_font); +WHERE + WR1 : SELF.name[1:8] = 'ISO 3098'; +END_ENTITY; + + +ENTITY draughting_subfigure_representation + SUBTYPE OF (symbol_representation); +WHERE + WR1 : SIZEOF (QUERY (item <* SELF\representation.items | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_OCCURRENCE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_CALLOUT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT'] + * TYPEOF (item)) = 1))) = 0; + WR2 : SIZEOF (QUERY (item <* SELF\representation.items | + SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_OCCURRENCE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_CALLOUT'] * + TYPEOF (item)) = 1)) >= 1; + WR3 : SIZEOF (QUERY (srm <* QUERY (rm <* + USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'REPRESENTATION_MAP.MAPPED_REPRESENTATION') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SYMBOL_REPRESENTATION_MAP' + IN TYPEOF(rm))) | + NOT (SIZEOF (QUERY (a_s <* QUERY (mi <* srm.map_usage | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_SYMBOL' IN TYPEOF(mi))) + | NOT (SIZEOF (QUERY (aso <* + USEDIN (a_s, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'STYLED_ITEM.ITEM') | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_SUBFIGURE_OCCURRENCE' + IN TYPEOF(aso)))) = 0))) = 0))) > 0; + WR4 : NOT (acyclic_mapped_item_usage (SELF)); + WR5 : SIZEOF (SELF.context_of_items.representations_in_context) = 1; +END_ENTITY; + + +ENTITY draughting_symbol_representation + SUBTYPE OF (symbol_representation); +UNIQUE + UR1: SELF\representation.name; +WHERE + WR1 : SIZEOF (QUERY (item <* SELF\representation.items | + NOT (SIZEOF (TYPEOF (item) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_CURVE_OCCURRENCE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_SYMBOL_OCCURRENCE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_FILL_AREA_OCCURRENCE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT']) = 1) + )) = 0; + WR2 : SIZEOF (QUERY (item <* SELF\representation.items | + (SIZEOF (TYPEOF (item) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_CURVE_OCCURRENCE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_SYMBOL_OCCURRENCE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_FILL_AREA_OCCURRENCE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE']) = 1) + )) >= 1; + WR3 : SIZEOF (QUERY (item <* SELF\representation.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_SUBFIGURE_OCCURRENCE' + IN TYPEOF (item))) = 0; + WR4 : SIZEOF (QUERY (srm <* QUERY (rm <* + USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'REPRESENTATION_MAP.MAPPED_REPRESENTATION') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SYMBOL_REPRESENTATION_MAP' + IN TYPEOF(rm))) | + (SIZEOF (QUERY (a_s <* QUERY (mi <* srm.map_usage | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_SYMBOL' IN TYPEOF(mi))) | + NOT (SIZEOF (QUERY(aso <* + USEDIN(a_s, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'STYLED_ITEM.ITEM') | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_SYMBOL_OCCURRENCE' + IN TYPEOF(aso)) + )) = 0) )) = 0) )) > 0; + WR5 : NOT (acyclic_mapped_item_usage (SELF)); + WR6 : SIZEOF (SELF.context_of_items.representations_in_context) = 1; +END_ENTITY; + + +ENTITY draughting_text_literal_with_delineation + SUBTYPE OF (text_literal_with_delineation); +WHERE + WR1 : SELF.delineation IN ['underline', 'overline']; +END_ENTITY; + + +ENTITY draughting_title; + items : SET [1:?] OF draughting_titled_item; + language : label; + contents : text; +END_ENTITY; + + +ENTITY drawing_definition; + drawing_number : identifier; + drawing_type : OPTIONAL label; +END_ENTITY; + + +ENTITY drawing_revision + SUBTYPE OF (presentation_set); + revision_identifier : identifier; + drawing_identifier : drawing_definition; + intended_scale : OPTIONAL text; +UNIQUE + UR1 : revision_identifier, drawing_identifier; +END_ENTITY; + + +ENTITY drawing_revision_sequence; + predecessor : drawing_revision; + successor : drawing_revision; +WHERE + WR1 : predecessor :<>: successor; +END_ENTITY; + + +ENTITY drawing_sheet_revision + SUBTYPE OF (presentation_area); + revision_identifier : identifier; +WHERE + WR1 : SIZEOF( QUERY(item <* SELF\representation.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN (TYPEOF(item))) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAWING_SHEET_REVISION' IN + (TYPEOF(item\mapped_item.mapping_source.mapped_representation)))))=0; +END_ENTITY; + + +ENTITY drawing_sheet_revision_sequence + SUBTYPE OF (representation_relationship); +WHERE + WR1 : SELF\representation_relationship.rep_1 :<>: + SELF\representation_relationship.rep_2; + WR2 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAWING_SHEET_REVISION' + IN TYPEOF (SELF\representation_relationship.rep_1); + WR3 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAWING_SHEET_REVISION' + IN TYPEOF (SELF\representation_relationship.rep_2); +END_ENTITY; + + +ENTITY drawing_sheet_revision_usage + SUBTYPE OF (area_in_set); + sheet_number : identifier; +UNIQUE + UR1: sheet_number, SELF\area_in_set.in_set; +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAWING_SHEET_REVISION' IN + TYPEOF(SELF\area_in_set.area)) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAWING_REVISION' + IN TYPEOF (SELF\area_in_set.in_set)); +END_ENTITY; + + +ENTITY edge + SUPERTYPE OF (ONEOF (edge_curve, oriented_edge, subedge)) + SUBTYPE OF (topological_representation_item); + edge_start : vertex; + edge_end : vertex; +END_ENTITY; + + +ENTITY edge_based_wireframe_model + SUBTYPE OF (geometric_representation_item); + ebwm_boundary : SET [1:?] OF connected_edge_set; +END_ENTITY; + + +ENTITY edge_based_wireframe_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF ( +QUERY ( it <* SELF.items| NOT ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_BASED_WIREFRAME_MODEL', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D' ] * TYPEOF (it)) = 1) )) = 0; + WR2 : SIZEOF ( +QUERY ( it <* SELF.items| ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_BASED_WIREFRAME_MODEL', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' ] * TYPEOF (it)) = 1) )) >= 1; + WR3 : SIZEOF ( +QUERY ( ebwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( eb <* ebwm\edge_based_wireframe_model.ebwm_boundary| NOT ( SIZEOF ( +QUERY ( edges <* eb.ces_edges| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_CURVE' IN TYPEOF (edges)) )) = 0) )) = 0) )) = 0; + WR4 : SIZEOF ( +QUERY ( ebwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( eb <* ebwm\edge_based_wireframe_model.ebwm_boundary| NOT ( SIZEOF ( +QUERY ( pline_edges <* +QUERY ( edges <* eb.ces_edges| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF (edges\edge_curve.edge_geometry)) )| NOT ( SIZEOF (pline_edges\edge_curve.edge_geometry\polyline.points) > 2) )) = 0) )) = 0) )) = 0; + WR5 : SIZEOF ( +QUERY ( ebwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( eb <* ebwm\edge_based_wireframe_model.ebwm_boundary| NOT ( SIZEOF ( +QUERY ( edges <* eb.ces_edges| NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF (edges.edge_start)) AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF (edges.edge_end))) )) = 0) )) = 0) )) = 0; + WR6 : SIZEOF ( +QUERY ( ebwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( eb <* ebwm\edge_based_wireframe_model.ebwm_boundary| NOT ( SIZEOF ( +QUERY ( edges <* eb.ces_edges| NOT valid_wireframe_edge_curve(edges\edge_curve.edge_geometry) )) = 0) )) = 0) )) = 0; + WR7 : SIZEOF ( +QUERY ( ebwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( eb <* ebwm\edge_based_wireframe_model.ebwm_boundary| NOT ( SIZEOF ( +QUERY ( edges <* eb.ces_edges| NOT (valid_wireframe_vertex_point(edges.edge_start\vertex_point.vertex_geometry) AND valid_wireframe_vertex_point(edges.edge_end\vertex_point.vertex_geometry)) )) = 0) )) = 0) )) = 0; + WR8 : SIZEOF ( +QUERY ( mi <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) )| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'EDGE_BASED_WIREFRAME_SHAPE_REPRESENTATION' IN TYPEOF (mi\mapped_item.mapping_source.mapped_representation)) )) = 0; + WR9 : SELF.context_of_items\geometric_representation_context.coordinate_space_dimension = 3; +END_ENTITY; + + +ENTITY edge_blended_solid + ABSTRACT SUPERTYPE OF ((track_blended_solid ANDOR ONEOF (solid_with_constant_radius_edge_blend, solid_with_variable_radius_edge_blend, solid_with_chamfered_edges))) + SUBTYPE OF (modified_solid); + blended_edges : LIST [1:?] OF UNIQUE edge_curve; +END_ENTITY; + + +ENTITY edge_curve + SUBTYPE OF (edge, geometric_representation_item); + edge_geometry : curve; + same_sense : BOOLEAN; +END_ENTITY; + + +ENTITY edge_loop + SUBTYPE OF (loop, path); +DERIVE + ne : INTEGER := SIZEOF(SELF\path.edge_list); +WHERE + WR1 : (SELF\path.edge_list[1].edge_start) :=: + (SELF\path.edge_list[ne].edge_end); +END_ENTITY; + + +ENTITY effectivity + SUPERTYPE OF (ONEOF (serial_numbered_effectivity, dated_effectivity, lot_effectivity, time_interval_based_effectivity)); + id : identifier; +DERIVE + description : text := get_description_value(SELF); + name : label := get_name_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1; + WR2 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY effectivity_assignment + ABSTRACT SUPERTYPE; + assigned_effectivity : effectivity; +DERIVE + role : object_role := get_role(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; +END_ENTITY; + + +ENTITY effectivity_context_assignment + ABSTRACT SUPERTYPE; + assigned_effectivity_assignment : effectivity_assignment; + role : effectivity_context_role; +END_ENTITY; + + +ENTITY effectivity_context_role; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY effectivity_relationship; + name : label; + description : OPTIONAL text; + related_effectivity : effectivity; + relating_effectivity : effectivity; +END_ENTITY; + + +ENTITY electric_charge_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELECTRIC_CHARGE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY electric_charge_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.coulomb); +END_ENTITY; + + +ENTITY electric_current_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELECTRIC_CURRENT_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY electric_current_unit + SUBTYPE OF (named_unit); +WHERE + WR1 : (SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 0.0) AND (SELF\named_unit.dimensions.time_exponent = 0.0) AND (SELF\named_unit.dimensions.electric_current_exponent = 1.0) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0); +END_ENTITY; + + +ENTITY electric_potential_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELECTRIC_POTENTIAL_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY electric_potential_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.volt); +END_ENTITY; + + +ENTITY elementary_brep_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF (QUERY (it <* SELF.items | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACETED_BREP', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D'] * + TYPEOF(it)) = 1))) = 0; + WR2 : SIZEOF (QUERY (it <* SELF.items | + SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM'] * TYPEOF(it)) =1 )) > 0; + WR3 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY (csh <* msb_shells(msb) | + NOT (SIZEOF (QUERY(fcs <* csh.cfs_faces | + NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_SURFACE' IN TYPEOF(fcs)))) = 0 + ))) = 0 + ))) = 0; + WR4 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY (csh <* msb_shells(msb) | + NOT (SIZEOF (QUERY(fcs <* csh\connected_face_set.cfs_faces | + NOT(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELEMENTARY_SURFACE' IN + TYPEOF(fcs\face_surface.face_geometry)) + ))) = 0 + ))) = 0 + ))) = 0; + WR5 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY (csh <* msb_shells(msb) | + NOT (SIZEOF (QUERY(fcs <* csh\connected_face_set.cfs_faces | + NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list | + NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_CURVE' IN + TYPEOF(oe.edge_element)))) = 0 + ))) = 0 + ))) = 0 + ))) = 0 + ))) = 0; + WR6 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY (csh <* msb_shells(msb) | + NOT (SIZEOF (QUERY(fcs <* csh\connected_face_set.cfs_faces | + NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE'] * + TYPEOF(oe.edge_element\edge_curve.edge_geometry)) = 1 ) + )) = 0 + ))) = 0 + ))) = 0 + ))) = 0 + ))) = 0; + WR7 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY (csh <* msb_shells(msb) | + NOT (SIZEOF (QUERY(fcs <* csh\connected_face_set.cfs_faces | + NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list | + NOT(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF(oe.edge_start)) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN + TYPEOF(oe.edge_end)) + ))) = 0 + ))) = 0 + ))) = 0 + ))) = 0 + ))) = 0; + WR8 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY (csh <* msb_shells(msb) | + NOT (SIZEOF (QUERY(fcs <* csh\connected_face_set.cfs_faces | + NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN + TYPEOF(oe.edge_element\edge_curve.edge_geometry)) AND + (NOT (SIZEOF (oe\oriented_edge.edge_element\ + edge_curve.edge_geometry\polyline.points) >= 3)) + )) = 0 + ))) = 0 + ))) = 0 + ))) = 0 + ))) = 0; + WR9 : SIZEOF (QUERY (msb <* QUERY (it <* items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_CLOSED_SHELL' IN TYPEOF + (msb\manifold_solid_brep.outer))) + = 0; + WR10 : SIZEOF (QUERY (brv <* QUERY (it <* items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BREP_WITH_VOIDS' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY (csh <* brv\brep_with_voids.voids | + csh\oriented_closed_shell.orientation)) = 0))) = 0; + WR11 : SIZEOF (QUERY (mi <* QUERY (it <* items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELEMENTARY_BREP_SHAPE_REPRESENTATION' IN + TYPEOF(mi\mapped_item.mapping_source. + mapped_representation)))) = 0; + WR12 : SIZEOF (QUERY (msb <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY (csh <* msb_shells(msb) | + NOT (SIZEOF (QUERY(fcs <* csh\connected_face_set.cfs_faces | + NOT (SIZEOF(QUERY (vlp_fbnds <* QUERY (bnds <* fcs.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP' IN TYPEOF(bnds.bound)) | + NOT(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN + TYPEOF(vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT' IN + TYPEOF(vlp_fbnds\face_bound.bound\vertex_loop. + loop_vertex\vertex_point.vertex_geometry)) + ))) = 0))) = 0))) = 0))) =0; +END_ENTITY; + + +ENTITY elementary_surface + SUPERTYPE OF (ONEOF (plane, cylindrical_surface, conical_surface, spherical_surface, toroidal_surface)) + SUBTYPE OF (surface); + position : axis2_placement_3d; +END_ENTITY; + + +ENTITY ellipse + SUBTYPE OF (conic); + semi_axis_1 : positive_length_measure; + semi_axis_2 : positive_length_measure; +END_ENTITY; + + +ENTITY energy_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ENERGY_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY energy_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.joule); +END_ENTITY; + + +ENTITY entity_assertion + SUBTYPE OF (fact_type); +END_ENTITY; + + +ENTITY enum_reference_prefix + SUBTYPE OF (descriptive_representation_item); +END_ENTITY; + + +ENTITY environment; + syntactic_representation : generic_variable; + semantics : variable_semantics; +END_ENTITY; + + +ENTITY evaluated_characteristic + SUBTYPE OF (representation, representation_relationship); +UNIQUE + UR1: SELF\representation_relationship.rep_1, SELF\representation_relationship.rep_2; +WHERE + WR1 : SELF\representation_relationship.rep_1 <> + SELF\representation_relationship.rep_2; +END_ENTITY; + + +ENTITY evaluated_degenerate_pcurve + SUBTYPE OF (degenerate_pcurve); + equivalent_point : cartesian_point; +END_ENTITY; + + +ENTITY evaluation_product_definition + SUBTYPE OF (product_definition); +END_ENTITY; + + +ENTITY event_occurrence; + id : identifier; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY event_occurrence_assignment + ABSTRACT SUPERTYPE; + assigned_event_occurrence : event_occurrence; + role : event_occurrence_role; +END_ENTITY; + + +ENTITY event_occurrence_relationship; + name : label; + description : OPTIONAL text; + relating_event : event_occurrence; + related_event : event_occurrence; +END_ENTITY; + + +ENTITY event_occurrence_role; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY exclusive_product_concept_feature_category + SUBTYPE OF (product_concept_feature_category); +END_ENTITY; + + +ENTITY executed_action + SUBTYPE OF (action); +END_ENTITY; + + +ENTITY expanded_uncertainty + SUBTYPE OF (standard_uncertainty); + coverage_factor : REAL; +END_ENTITY; + + +ENTITY explicit_procedural_geometric_representation_item_relationship + SUBTYPE OF (explicit_procedural_representation_item_relationship); + SELF\representation_item_relationship.related_representation_item : geometric_representation_item; + SELF\representation_item_relationship.relating_representation_item : procedural_shape_representation_sequence; +WHERE + WR1 : NOT ( + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROCEDURAL_SHAPE_REPRESENTATION_SEQUENCE' + IN TYPEOF( + SELF\representation_item_relationship.related_representation_item)); +END_ENTITY; + + +ENTITY explicit_procedural_representation_item_relationship + SUBTYPE OF (representation_item_relationship); + SELF\representation_item_relationship.relating_representation_item : procedural_representation_sequence; +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROCEDURAL_REPRESENTATION_SEQUENCE' + IN TYPEOF( + SELF\representation_item_relationship.related_representation_item)); + WR2 : SIZEOF(QUERY(q <* using_representations( + SELF\representation_item_relationship.related_representation_item) | + item_in_context( + SELF\representation_item_relationship.relating_representation_item, + q.context_of_items))) > 0; +END_ENTITY; + + +ENTITY explicit_procedural_representation_relationship + SUBTYPE OF (representation_relationship); + SELF\representation_relationship.rep_1 : procedural_representation; +WHERE + WR1 : (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROCEDURAL_REPRESENTATION' + IN TYPEOF(SELF\representation_relationship.rep_2))) AND + (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VARIATIONAL_REPRESENTATION' + IN TYPEOF(SELF\representation_relationship.rep_2))); + WR2 : SELF\representation_relationship.rep_1.context_of_items :=: + SELF\representation_relationship.rep_2.context_of_items; +END_ENTITY; + + +ENTITY explicit_procedural_shape_representation_relationship + SUBTYPE OF (explicit_procedural_representation_relationship); + SELF\representation_relationship.rep_1 : procedural_shape_representation; + SELF\representation_relationship.rep_2 : shape_representation; +END_ENTITY; + + +ENTITY expression + ABSTRACT SUPERTYPE OF (ONEOF (numeric_expression, boolean_expression)) + SUBTYPE OF (generic_expression); +END_ENTITY; + + +ENTITY expression_conversion_based_unit + SUBTYPE OF (context_dependent_unit, variable_semantics); +INVERSE + associated_variable_environment: environment FOR semantics; +END_ENTITY; + + +ENTITY extension + SUBTYPE OF (derived_shape_aspect); +WHERE + WR1 : SIZEOF (SELF\derived_shape_aspect.deriving_relationships)= 1; +END_ENTITY; + + +ENTITY extent + SUBTYPE OF (characterized_object); +END_ENTITY; + + +ENTITY external_class_library + SUBTYPE OF (external_source); +END_ENTITY; + + +ENTITY external_identification_assignment + ABSTRACT SUPERTYPE + SUBTYPE OF (identification_assignment); + source : external_source; +END_ENTITY; + + +ENTITY external_source; + source_id : source_item; +DERIVE + description : text := get_description_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY external_source_relationship; + name : label; + description : OPTIONAL text; + relating_source : external_source; + related_source : external_source; +END_ENTITY; + + +ENTITY externally_defined_class + SUBTYPE OF (class, externally_defined_item); +END_ENTITY; + + +ENTITY externally_defined_colour + SUBTYPE OF (colour_specification, externally_defined_item); +END_ENTITY; + + +ENTITY externally_defined_context_dependent_unit + SUBTYPE OF (context_dependent_unit, externally_defined_item); +END_ENTITY; + + +ENTITY externally_defined_conversion_based_unit + SUBTYPE OF (conversion_based_unit, externally_defined_item); +END_ENTITY; + + +ENTITY externally_defined_currency + SUBTYPE OF (currency, externally_defined_context_dependent_unit); +END_ENTITY; + + +ENTITY externally_defined_curve_font + SUBTYPE OF (externally_defined_item); +END_ENTITY; + + +ENTITY externally_defined_dimension_definition + SUBTYPE OF (dimensional_size, externally_defined_item); +WHERE + WR1 : (SELF\externally_defined_item.item_id = 'external size dimension') AND (SELF\externally_defined_item.source.source_id = 'external size dimension specification'); + WR2 : 1 >= SIZEOF(QUERY ( adr <* USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.APPLIED_DOCUMENT_REFERENCE.ITEMS')| (adr.assigned_document.description = 'external size dimension specification') )); +END_ENTITY; + + +ENTITY externally_defined_general_property + SUBTYPE OF (general_property, externally_defined_item); +END_ENTITY; + + +ENTITY externally_defined_hatch_style + SUBTYPE OF (externally_defined_item, geometric_representation_item); +END_ENTITY; + + +ENTITY externally_defined_item; + item_id : source_item; + source : external_source; +END_ENTITY; + + +ENTITY externally_defined_item_relationship; + name : label; + description : OPTIONAL text; + relating_item : externally_defined_item; + related_item : externally_defined_item; +END_ENTITY; + + +ENTITY externally_defined_marker + SUBTYPE OF (externally_defined_symbol, pre_defined_marker); +END_ENTITY; + + +ENTITY externally_defined_picture_representation_item + SUBTYPE OF (picture_representation_item); +INVERSE + source: applied_external_identification_assignment FOR items; +WHERE + WR1 : NOT (SELF\representation_item.name IN pre_defined_picture_representation_types); +END_ENTITY; + + +ENTITY externally_defined_representation_item + SUBTYPE OF (representation_item, externally_defined_item); +END_ENTITY; + + +ENTITY externally_defined_string + SUBTYPE OF (externally_defined_representation_item); +END_ENTITY; + + +ENTITY externally_defined_symbol + SUBTYPE OF (externally_defined_item); +END_ENTITY; + + +ENTITY externally_defined_terminator_symbol + SUBTYPE OF (externally_defined_symbol); +END_ENTITY; + + +ENTITY externally_defined_text_font + SUBTYPE OF (externally_defined_item); +END_ENTITY; + + +ENTITY externally_defined_tile + SUBTYPE OF (externally_defined_item); +END_ENTITY; + + +ENTITY externally_defined_tile_style + SUBTYPE OF (externally_defined_item, geometric_representation_item); +END_ENTITY; + + +ENTITY extruded_area_solid + SUBTYPE OF (swept_area_solid); + extruded_direction : direction; + depth : positive_length_measure; +WHERE + WR1 : dot_product( + (SELF\swept_area_solid.swept_area.basis_surface\ + elementary_surface.position.p[3]), extruded_direction) <> 0.0; +END_ENTITY; + + +ENTITY extruded_face_solid + SUBTYPE OF (swept_face_solid); + extruded_direction : direction; + depth : positive_length_measure; +WHERE + WR1 : dot_product( + (SELF\swept_face_solid.swept_face.face_geometry\ + elementary_surface.position.p[3]), extruded_direction) <> 0.0; +END_ENTITY; + + +ENTITY extruded_face_solid_with_draft_angle + SUBTYPE OF (extruded_face_solid_with_trim_conditions); + draft_angle : plane_angle_measure; +WHERE + WR1 : draft_angle <> 0; +END_ENTITY; + + +ENTITY extruded_face_solid_with_multiple_draft_angles + SUBTYPE OF (extruded_face_solid_with_trim_conditions); + drafted_edges : LIST [2:?] OF SET [1:?] OF edge_curve; + draft_angles : LIST [2:?] OF plane_angle_measure; +WHERE + WR1 : SIZEOF(drafted_edges) = SIZEOF(draft_angles); + WR2 : SIZEOF(QUERY(q <* draft_angles | q = 0)) = 0; + WR3 : SIZEOF(QUERY(q <* drafted_edges | (SIZEOF(QUERY(r <* q | NOT + (SELF\swept_face_solid.swept_face IN + using_items(r,[])))) > 0))) = 0; +END_ENTITY; + + +ENTITY extruded_face_solid_with_trim_conditions + SUPERTYPE OF (ONEOF (extruded_face_solid_with_draft_angle, extruded_face_solid_with_multiple_draft_angles)) + SUBTYPE OF (extruded_face_solid); + first_trim_condition : trim_condition_select; + second_trim_condition : trim_condition_select; + first_trim_intent : trim_intent; + second_trim_intent : trim_intent; + first_offset : non_negative_length_measure; + second_offset : non_negative_length_measure; +WHERE + WR1 : NOT(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE_ANGLE_MEASURE' + IN TYPEOF(first_trim_condition)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE_ANGLE_MEASURE' + IN TYPEOF(second_trim_condition))); + WR2 : NOT ((('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE' + IN TYPEOF(first_trim_condition)) AND + ((first_trim_intent = trim_intent.offset) + OR (first_trim_intent = trim_intent.up_to_next))) OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE' + IN TYPEOF(second_trim_condition)) AND + ((second_trim_intent = trim_intent.offset) + OR (second_trim_intent = trim_intent.up_to_next)))); + WR3 : NOT (((NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE' + IN TYPEOF(first_trim_condition))) AND + ((first_trim_intent = trim_intent.blind) + OR (first_trim_intent = trim_intent.through_all))) OR + ((NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE' + IN TYPEOF(second_trim_condition))) AND + ((second_trim_intent = trim_intent.blind) + OR (second_trim_intent = trim_intent.through_all)))); + WR4 : (((first_trim_intent = trim_intent.offset) + AND (first_offset > 0)) XOR + ((first_trim_intent <> trim_intent.offset) + AND (first_offset = 0))) AND + (((second_trim_intent = trim_intent.offset) + AND (second_offset > 0)) XOR + ((second_trim_intent <> trim_intent.offset) + AND (second_offset = 0))); + WR5 : NOT((('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE' + IN TYPEOF(first_trim_condition)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE' + IN TYPEOF(second_trim_condition))) AND + (first_trim_condition = second_trim_condition)); +END_ENTITY; + + +ENTITY face + SUPERTYPE OF (ONEOF (face_surface, subface, oriented_face)) + SUBTYPE OF (topological_representation_item); + bounds : SET [1:?] OF face_bound; +WHERE + WR1 : NOT (mixed_loop_type_set(list_to_set(list_face_loops(SELF)))); + WR2 : SIZEOF(QUERY(temp <* bounds | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_OUTER_BOUND' IN + TYPEOF(temp))) <= 1; +END_ENTITY; + + +ENTITY face_based_surface_model + SUBTYPE OF (geometric_representation_item); + fbsm_faces : SET [1:?] OF connected_face_set; +END_ENTITY; + + +ENTITY face_bound + SUBTYPE OF (topological_representation_item); + bound : loop; + orientation : BOOLEAN; +END_ENTITY; + + +ENTITY face_outer_bound + SUBTYPE OF (face_bound); +END_ENTITY; + + +ENTITY face_surface + SUBTYPE OF (face, geometric_representation_item); + face_geometry : surface; + same_sense : BOOLEAN; +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_SURFACE' IN TYPEOF(face_geometry)); +END_ENTITY; + + +ENTITY faceted_brep + SUBTYPE OF (manifold_solid_brep); +END_ENTITY; + + +ENTITY faceted_brep_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF ( +QUERY ( it <* items| NOT ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACETED_BREP', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D' ] * TYPEOF (it)) = 1) )) = 0; + WR2 : SIZEOF ( +QUERY ( it <* items| ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACETED_BREP', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' ] * TYPEOF (it)) = 1) )) > 0; + WR3 : SIZEOF ( +QUERY ( fbrep <* +QUERY ( it <* items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACETED_BREP' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( csh <* msb_shells(fbrep)| NOT ( SIZEOF ( +QUERY ( fcs <* csh\connected_face_set.cfs_faces| NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_SURFACE' IN TYPEOF (fcs)) AND (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE' IN TYPEOF (fcs\face_surface.face_geometry)) AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT' IN TYPEOF (fcs\face_surface.face_geometry\elementary_surface.position.location)))) )) = 0) )) = 0) )) = 0; + WR4 : SIZEOF ( +QUERY ( fbrep <* +QUERY ( it <* items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACETED_BREP' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( csh <* msb_shells(fbrep)| NOT ( SIZEOF ( +QUERY ( fcs <* csh\connected_face_set.cfs_faces| NOT ( SIZEOF ( +QUERY ( bnds <* fcs.bounds| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_OUTER_BOUND' IN TYPEOF (bnds)) )) = 1) )) = 0) )) = 0) )) = 0; + WR5 : SIZEOF ( +QUERY ( msb <* +QUERY ( it <* items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SOLID_BREP' IN TYPEOF (it)) )| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_CLOSED_SHELL' IN TYPEOF (msb\manifold_solid_brep.outer)) )) = 0; + WR6 : SIZEOF ( +QUERY ( brv <* +QUERY ( it <* items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BREP_WITH_VOIDS' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( csh <* brv\brep_with_voids.voids| csh\oriented_closed_shell.orientation )) = 0) )) = 0; + WR7 : SIZEOF ( +QUERY ( mi <* +QUERY ( it <* items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) )| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACETED_BREP_SHAPE_REPRESENTATION' IN TYPEOF (mi\mapped_item.mapping_source.mapped_representation)) )) = 0; +END_ENTITY; + + +ENTITY fact_type + SUBTYPE OF (property_definition); +END_ENTITY; + + +ENTITY fill_area_style + SUBTYPE OF (founded_item); + name : label; + fill_styles : SET [1:?] OF fill_style_select; +WHERE + WR1 : SIZEOF(QUERY(fill_style <* SELF.fill_styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'FILL_AREA_STYLE_COLOUR' IN + TYPEOF(fill_style) + )) <= 1; +END_ENTITY; + + +ENTITY fill_area_style_colour; + name : label; + fill_colour : colour; +END_ENTITY; + + +ENTITY fill_area_style_hatching + SUBTYPE OF (geometric_representation_item); + hatch_line_appearance : curve_style; + start_of_next_hatch_line : one_direction_repeat_factor; + point_of_reference_hatch_line : cartesian_point; + pattern_start : cartesian_point; + hatch_line_angle : plane_angle_measure; +END_ENTITY; + + +ENTITY fill_area_style_tile_coloured_region + SUBTYPE OF (geometric_representation_item); + closed_curve : curve_or_annotation_curve_occurrence; + region_colour : colour; +WHERE + WR1 : (NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE' IN TYPEOF (closed_curve))) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CIRCLE' IN TYPEOF (closed_curve)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELLIPSE' IN TYPEOF (closed_curve)) OR + ( ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE' IN TYPEOF (closed_curve)) + AND (closed_curve\b_spline_curve.closed_curve = TRUE) ) OR + ( ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_CURVE' IN TYPEOF (closed_curve)) + AND (closed_curve\composite_curve.closed_curve = TRUE) ) OR + ( ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF (closed_curve)) + AND (closed_curve\polyline.points[LOINDEX(closed_curve\polyline.points)] = + closed_curve\polyline.points[HIINDEX(closed_curve\polyline.points)]) ); +END_ENTITY; + + +ENTITY fill_area_style_tile_curve_with_style + SUBTYPE OF (geometric_representation_item); + styled_curve : annotation_curve_occurrence; +END_ENTITY; + + +ENTITY fill_area_style_tile_symbol_with_style + SUBTYPE OF (geometric_representation_item); + symbol : annotation_symbol_occurrence; +END_ENTITY; + + +ENTITY fill_area_style_tiles + SUBTYPE OF (geometric_representation_item); + tiling_pattern : two_direction_repeat_factor; + tiles : SET [1:?] OF fill_area_style_tile_shape_select; + tiling_scale : positive_ratio_measure; +END_ENTITY; + + +ENTITY flat_pattern_ply_representation_relationship + SUBTYPE OF (shape_representation_relationship); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_REPRESENTATION' IN + (TYPEOF (SELF\representation_relationship.rep_1) * + TYPEOF (SELF\representation_relationship.rep_2)); + WR2 : SELF\representation_relationship.rep_1. + context_of_items\geometric_representation_context. + coordinate_space_dimension = 3; +END_ENTITY; + + +ENTITY flatness_tolerance + SUBTYPE OF (geometric_tolerance); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF (SELF)); +END_ENTITY; + + +ENTITY force_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FORCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY force_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.newton); +END_ENTITY; + + +ENTITY forward_chaining_rule + SUBTYPE OF (rule_definition); +END_ENTITY; + + +ENTITY forward_chaining_rule_premise + SUBTYPE OF (property_definition, property_definition_representation, representation); +END_ENTITY; + + +ENTITY founded_item + SUPERTYPE OF (ONEOF (character_glyph_style_outline, character_glyph_style_stroke, curve_style, curve_style_font, curve_style_font_and_scaling, curve_style_font_pattern, fill_area_style, point_style, presentation_style_assignment, surface_side_style, surface_style_boundary, surface_style_control_grid, surface_style_fill_area, surface_style_parameter_line, surface_style_segmentation_curve, surface_style_silhouette, surface_style_usage, symbol_style, text_style)); +DERIVE + users : SET [0:?] OF founded_item_select := using_items(SELF,[]); +WHERE + WR1 : SIZEOF(users) > 0; + WR2 : NOT(SELF IN users); +END_ENTITY; + + +ENTITY frequency_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FREQUENCY_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY frequency_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.hertz); +END_ENTITY; + + +ENTITY func + SUBTYPE OF (compound_representation_item); +END_ENTITY; + + +ENTITY functional_breakdown_context + SUBTYPE OF (breakdown_context); +END_ENTITY; + + +ENTITY functional_element_usage + SUBTYPE OF (breakdown_element_usage); +END_ENTITY; + + +ENTITY functionally_defined_transformation; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY general_material_property + SUBTYPE OF (general_property); +WHERE + WR1 : SIZEOF( QUERY( gpa <* USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GENERAL_PROPERTY_ASSOCIATION.BASE_DEFINITION') | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MATERIAL_PROPERTY' IN TYPEOF(gpa.derived_definition)) )) = 0; +END_ENTITY; + + +ENTITY general_property; + id : identifier; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY general_property_association; + name : label; + description : OPTIONAL text; + base_definition : general_property; + derived_definition : derived_property_select; +WHERE + WR1 : SIZEOF(USEDIN(derived_definition, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GENERAL_PROPERTY_ASSOCIATION.' + 'DERIVED_DEFINITION')) = 1; + WR2 : derived_definition.name = base_definition.name; +END_ENTITY; + + +ENTITY general_property_relationship; + name : label; + description : OPTIONAL text; + relating_property : general_property; + related_property : general_property; +END_ENTITY; + + +ENTITY generic_character_glyph_symbol + ABSTRACT SUPERTYPE + SUBTYPE OF (symbol_representation); +END_ENTITY; + + +ENTITY generic_expression + ABSTRACT SUPERTYPE OF (ONEOF (simple_generic_expression, unary_generic_expression, binary_generic_expression, multiple_arity_generic_expression)); +WHERE + WR1 : is_acyclic(SELF); +END_ENTITY; + + +ENTITY generic_literal + ABSTRACT SUPERTYPE + SUBTYPE OF (simple_generic_expression); +END_ENTITY; + + +ENTITY generic_variable + ABSTRACT SUPERTYPE + SUBTYPE OF (simple_generic_expression); +INVERSE + interpretation: environment FOR syntactic_representation; +END_ENTITY; + + +ENTITY geometric_alignment + SUBTYPE OF (derived_shape_aspect); +WHERE + WR1 : SIZEOF (SELF\derived_shape_aspect.deriving_relationships)> 1; +END_ENTITY; + + +ENTITY geometric_curve_set + SUBTYPE OF (geometric_set); +WHERE + WR1 : SIZEOF(QUERY(temp <* SELF\geometric_set.elements | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE' IN TYPEOF(temp))) = 0; +END_ENTITY; + + +ENTITY geometric_intersection + SUBTYPE OF (derived_shape_aspect); +WHERE + WR1 : SIZEOF (SELF\derived_shape_aspect.deriving_relationships)> 1; +END_ENTITY; + + +ENTITY geometric_item_specific_usage + SUBTYPE OF (item_identified_representation_usage); + SELF\item_identified_representation_usage.definition : geometric_item_specific_usage_select; + SELF\item_identified_representation_usage.identified_item : geometric_representation_item; + SELF\item_identified_representation_usage.used_representation : shape_representation; +END_ENTITY; + + +ENTITY geometric_model_element_relationship + SUBTYPE OF (geometric_representation_item, representation_item_relationship); + SELF\representation_item_relationship.related_representation_item : geometric_representation_item; + SELF\representation_item_relationship.relating_representation_item : geometric_representation_item; +UNIQUE + UR1 : relating_representation_item, related_representation_item; +WHERE + WR1 : SELF\representation_item_relationship.relating_representation_item :<>: + SELF\representation_item_relationship.related_representation_item; +END_ENTITY; + + +ENTITY geometric_representation_context + SUBTYPE OF (representation_context); + coordinate_space_dimension : dimension_count; +END_ENTITY; + + +ENTITY geometric_representation_item + SUPERTYPE OF (ONEOF (point, direction, vector, placement, cartesian_transformation_operator, curve, surface, edge_curve, face_surface, poly_loop, vertex_point, solid_model, boolean_result, sphere, right_circular_cone, right_circular_cylinder, torus, block, right_angular_wedge, half_space_solid, shell_based_surface_model, face_based_surface_model, shell_based_wireframe_model, edge_based_wireframe_model, geometric_set, camera_model, camera_model_d3_multi_clipping_intersection, camera_model_d3_multi_clipping_union, light_source)) + SUBTYPE OF (representation_item); +DERIVE + dim : dimension_count := dimension_of(SELF); +WHERE + WR1 : SIZEOF (QUERY (using_rep <* using_representations (SELF) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_REPRESENTATION_CONTEXT' IN + TYPEOF (using_rep.context_of_items)))) = 0; +END_ENTITY; + + +ENTITY geometric_set + SUBTYPE OF (geometric_representation_item); + elements : SET [1:?] OF geometric_set_select; +END_ENTITY; + + +ENTITY geometric_tolerance; + name : label; + description : text; + magnitude : measure_with_unit; + toleranced_shape_aspect : shape_aspect; +WHERE + WR1 : ('NUMBER' IN TYPEOF + (magnitude\measure_with_unit.value_component)) AND + (magnitude\measure_with_unit.value_component >= 0.0); +END_ENTITY; + + +ENTITY geometric_tolerance_relationship; + name : label; + description : text; + relating_geometric_tolerance : geometric_tolerance; + related_geometric_tolerance : geometric_tolerance; +END_ENTITY; + + +ENTITY geometric_tolerance_with_datum_reference + SUBTYPE OF (geometric_tolerance); + datum_system : SET [1:?] OF datum_reference; +END_ENTITY; + + +ENTITY geometric_tolerance_with_defined_unit + SUBTYPE OF (geometric_tolerance); + unit_size : measure_with_unit; +WHERE + WR1 : ('NUMBER' IN TYPEOF + (unit_size\measure_with_unit.value_component)) AND + (unit_size\measure_with_unit.value_component > 0.0); +END_ENTITY; + + +ENTITY geometrical_tolerance_callout + SUBTYPE OF (draughting_callout); +END_ENTITY; + + +ENTITY geometrically_bounded_2d_wireframe_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SELF.context_of_items\geometric_representation_context. + coordinate_space_dimension = 2; + WR2 : SIZEOF (QUERY (item <* SELF.items | + NOT (SIZEOF (TYPEOF (item) * +['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_CURVE_SET', +'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_2D', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM']) = 1) + )) = 0; + WR3 : SIZEOF (QUERY (item <* SELF.items | + SIZEOF (TYPEOF (item) * +['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_CURVE_SET', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM']) = 1 + )) >= 1; + WR4 : SIZEOF (QUERY (mi <* QUERY (item <* SELF.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF (item))) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'GEOMETRICALLY_BOUNDED_2D_WIREFRAME_REPRESENTATION' + IN TYPEOF + (mi\mapped_item.mapping_source.mapped_representation)) + )) = 0; + WR5 : SIZEOF (QUERY (gcs <* QUERY (item <* SELF.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_CURVE_SET' + IN TYPEOF (item))) | + NOT (SIZEOF (QUERY (elem <* gcs\geometric_set.elements | + NOT (SIZEOF (TYPEOF (elem) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CIRCLE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELLIPSE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_2D', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TRIMMED_CURVE']) = + 1) + )) = 0) + )) = 0; + WR6 : SIZEOF (QUERY (gcs <* QUERY (item <* SELF.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_CURVE_SET' + IN TYPEOF (item))) | + NOT (SIZEOF (QUERY (crv <* + QUERY (elem <* gcs\geometric_set.elements | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE' + IN TYPEOF (elem))) | + NOT (valid_basis_curve_in_2d_wireframe + (crv)) + )) = 0) + )) = 0; + WR7 : SIZEOF (QUERY (gcs <* QUERY (item <* SELF.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_CURVE_SET' + IN TYPEOF (item))) | + NOT (SIZEOF (QUERY (pnt <* + QUERY (elem <* gcs\geometric_set.elements | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT' + IN TYPEOF(elem))) | + NOT (SIZEOF (TYPEOF (pnt) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_CURVE']) + = 1) + )) = 0) + )) = 0; +END_ENTITY; + + +ENTITY geometrically_bounded_surface_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF(QUERY(it <* SELF.items | NOT (SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_SET', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D'] * TYPEOF(it)) = 1))) = 0; + WR2 : SIZEOF(QUERY(it <* SELF.items | SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_SET', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM'] * TYPEOF(it)) = 1)) > 0; + WR3 : SIZEOF(QUERY(mi <* QUERY(it <* SELF.items | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)) | NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION' IN TYPEOF(mi\mapped_item.mapping_source.mapped_representation)) AND (SIZEOF(QUERY(mr_it <* mi\mapped_item.mapping_source.mapped_representation.items | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_SET' IN TYPEOF(mr_it)))) > 0)))) = 0; + WR4 : SIZEOF(QUERY(gs <* QUERY(it <* SELF.items | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_SET' IN TYPEOF(it)) | NOT (SIZEOF(QUERY(pnt <* QUERY(gsel <* gs\geometric_set.elements | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT' IN TYPEOF(gsel)) | NOT (gbsf_check_point(pnt)))) = 0))) = 0; + WR5 : SIZEOF(QUERY(gs <* QUERY(it <* SELF.items | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_SET' IN TYPEOF(it)) | NOT (SIZEOF(QUERY(cv <* QUERY(gsel <* gs\geometric_set.elements | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE' IN TYPEOF(gsel)) | NOT (gbsf_check_curve(cv)))) = 0))) = 0; + WR6 : SIZEOF(QUERY(gs <* QUERY(it <* SELF.items | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_SET' IN TYPEOF(it)) | NOT (SIZEOF(QUERY(sf <* QUERY(gsel <* gs\geometric_set.elements | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE' IN TYPEOF(gsel)) | NOT (gbsf_check_surface(sf)))) = 0))) = 0; + WR7 : SIZEOF(QUERY(gs <* QUERY(it <* SELF.items | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_SET' IN TYPEOF(it)) | SIZEOF(QUERY(gsel <* gs\geometric_set.elements | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE' IN TYPEOF(gsel))) > 0)) > 0; +END_ENTITY; + + +ENTITY geometrically_bounded_wireframe_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF ( +QUERY ( it <* SELF.items| NOT ( SIZEOF ( TYPEOF (it) * [ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_CURVE_SET', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' ]) = 1) )) = 0; + WR2 : SIZEOF ( +QUERY ( it <* SELF.items| ( SIZEOF ( TYPEOF (it) * [ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_CURVE_SET', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' ]) = 1) )) >= 1; + WR3 : SIZEOF ( +QUERY ( gcs <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_CURVE_SET' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( crv <* +QUERY ( elem <* gcs\geometric_set.elements| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE' IN TYPEOF (elem)) )| NOT valid_geometrically_bounded_wf_curve(crv) )) = 0) )) = 0; + WR4 : SIZEOF ( +QUERY ( gcs <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_CURVE_SET' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( pnts <* +QUERY ( elem <* gcs\geometric_set.elements| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT' IN TYPEOF (elem)) )| NOT valid_geometrically_bounded_wf_point(pnts) )) = 0) )) = 0; + WR5 : SIZEOF ( +QUERY ( gcs <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_CURVE_SET' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( cnc <* +QUERY ( elem <* gcs\geometric_set.elements| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC' IN TYPEOF (elem)) )| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D' IN TYPEOF (cnc\conic.position)) )) = 0) )) = 0; + WR6 : SIZEOF ( +QUERY ( gcs <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRIC_CURVE_SET' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( pline <* +QUERY ( elem <* gcs\geometric_set.elements| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF (elem)) )| NOT ( SIZEOF (pline\polyline.points) > 2) )) = 0) )) = 0; + WR7 : SIZEOF ( +QUERY ( mi <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) )| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION' IN TYPEOF (mi\mapped_item.mapping_source.mapped_representation)) )) = 0; +END_ENTITY; + + +ENTITY global_assignment + SUBTYPE OF (representation_item_relationship); +END_ENTITY; + + +ENTITY global_uncertainty_assigned_context + SUBTYPE OF (representation_context); + uncertainty : SET [1:?] OF uncertainty_measure_with_unit; +END_ENTITY; + + +ENTITY global_unit_assigned_context + SUBTYPE OF (representation_context); + units : SET [1:?] OF unit; +END_ENTITY; + + +ENTITY ground_fact + SUBTYPE OF (atomic_formula); +END_ENTITY; + + +ENTITY group; + name : label; + description : OPTIONAL text; +DERIVE + id : identifier := get_id_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY group_assignment + ABSTRACT SUPERTYPE; + assigned_group : group; +DERIVE + role : object_role := get_role(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; +END_ENTITY; + + +ENTITY group_relationship; + name : label; + description : OPTIONAL text; + relating_group : group; + related_group : group; +END_ENTITY; + + +ENTITY half_space_solid + SUBTYPE OF (geometric_representation_item); + base_surface : surface; + agreement_flag : BOOLEAN; +END_ENTITY; + + +ENTITY hardness_representation + SUBTYPE OF (representation); +WHERE + WR1 : ( {2<= SIZEOF ( SELF.items ) <=4} ) AND ( SIZEOF ( QUERY ( + i <* items | ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF ( i ) ) AND ( + i.name IN [ 'measuring method' , 'measuring position' ] ) ) + ) + SIZEOF ( QUERY ( i <* items | ( SIZEOF ( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'MEASURE_REPRESENTATION_ITEM' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'VALUE_RANGE']* TYPEOF ( i ) ) =1 ) + AND ( i.name IN ['depth' , 'hardness'] ) ) ) = SIZEOF ( + SELF.items ) ); + WR2 : SIZEOF ( QUERY ( i <* SELF.items | i.name = + 'measuring method' ) ) =1; + WR3 : SIZEOF ( QUERY ( i <* SELF.items | i.name ='hardness' ) ) + =1; + WR4 : SIZEOF ( QUERY ( i <* SELF.items | i.name = + 'measuring position' ) ) <=1; + WR5 : SIZEOF ( QUERY ( i <* SELF.items | i.name ='depth' ) ) + <=1; + WR6 : ( SIZEOF ( USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) ) =1 ) AND ( SIZEOF ( QUERY ( pdr + <* USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) | SIZEOF ( QUERY ( gpa <* USEDIN ( + pdr. definition , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'GENERAL_PROPERTY_ASSOCIATION.'+ + 'DERIVED_DEFINITION' ) | ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'GENERAL_PROPERTY' IN TYPEOF ( gpa. base_definition ) ) AND + ( gpa. base_definition.name ='surface_condition' ) ) ) =1 ) + ) =1 ); +END_ENTITY; + + +ENTITY hidden_element_over_riding_styled_item + SUBTYPE OF (context_dependent_over_riding_styled_item); + SELF\styled_item.item : camera_image; + SELF\context_dependent_over_riding_styled_item.style_context : LIST [1:1] OF presentation_view; +INVERSE + container: SET [1:?] OF presentation_view FOR items; +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CAMERA_MODEL_D3_WITH_HLHSR' IN TYPEOF + (SELF.item\mapped_item.mapping_source.mapping_origin); +END_ENTITY; + + +ENTITY hyperbola + SUBTYPE OF (conic); + semi_axis : positive_length_measure; + semi_imag_axis : positive_length_measure; +END_ENTITY; + + +ENTITY id_attribute; + attribute_value : identifier; + identified_item : id_attribute_select; +END_ENTITY; + + +ENTITY identification_assignment + ABSTRACT SUPERTYPE; + assigned_id : identifier; + role : identification_role; +END_ENTITY; + + +ENTITY identification_role; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY illuminance_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ILLUMINANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY illuminance_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.lux); +END_ENTITY; + + +ENTITY included_text_block + SUBTYPE OF (mapped_item); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRUCTURED_TEXT_REPRESENTATION' IN TYPEOF(SELF\mapped_item.mapping_source.mapped_representation); +END_ENTITY; + + +ENTITY inclusion_product_concept_feature + SUBTYPE OF (conditional_concept_feature); +WHERE + WR1 : NOT ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'PACKAGE_PRODUCT_CONCEPT_FEATURE' IN TYPEOF ( SELF ) ); + WR2 : SIZEOF (QUERY + ( cfr <* USEDIN + ( SELF ,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONCEPT_FEATURE_RELATIONSHIP.RELATING_PRODUCT_CONCEPT_FEATURE' ) + | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION' IN TYPEOF( cfr ) + ) + ) + + SIZEOF(QUERY + ( cfr <* USEDIN + (SELF , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONCEPT_FEATURE_RELATIONSHIP.RELATED_PRODUCT_CONCEPT_FEATURE' ) + | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION' IN TYPEOF(cfr) + ) + )= 0; + WR3 : SELF.condition.conditional_operator.name = 'implication'; +END_ENTITY; + + +ENTITY indirectly_selected_elements + SUBTYPE OF (user_selected_elements); + indirectly_picked_items : SET [1:?] OF representation_item; +END_ENTITY; + + +ENTITY indirectly_selected_shape_elements + SUBTYPE OF (indirectly_selected_elements, user_selected_shape_elements); +WHERE + WR1 : SIZEOF(QUERY(q <* + SELF\indirectly_selected_elements.indirectly_picked_items + | NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_REPRESENTATION_ITEM' + IN TYPEOF(q)))) = 0; +END_ENTITY; + + +ENTITY inductance_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.INDUCTANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY inductance_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.henry); +END_ENTITY; + + +ENTITY information_right + SUBTYPE OF (action_method); +END_ENTITY; + + +ENTITY information_usage_right + SUBTYPE OF (action_method); +END_ENTITY; + + +ENTITY instance_usage_context_assignment + SUBTYPE OF (product_definition_context); + items : SET [1:?] OF instance_usage_context_select; +END_ENTITY; + + +ENTITY instanced_feature + SUBTYPE OF (shape_aspect, shape_feature_definition); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION' IN + TYPEOF(SELF\shape_aspect.of_shape.definition); + WR2 : SELF\shape_aspect.product_definitional; +END_ENTITY; + + +ENTITY int_literal + SUBTYPE OF (literal_number); + SELF\literal_number.the_value : INTEGER; +END_ENTITY; + + +ENTITY integer_representation_item + SUBTYPE OF (representation_item, int_literal); +END_ENTITY; + + +ENTITY intersection_curve + SUBTYPE OF (surface_curve); +WHERE + WR1 : SIZEOF(SELF\surface_curve.associated_geometry) = 2; + WR2 : associated_surface(SELF\surface_curve.associated_geometry[1]) <> + associated_surface(SELF\surface_curve.associated_geometry[2]); +END_ENTITY; + + +ENTITY interval_expression + SUBTYPE OF (boolean_expression, multiple_arity_generic_expression); +DERIVE + interval_high : generic_expression := SELF\multiple_arity_generic_expression.operands[3]; + interval_item : generic_expression := SELF\multiple_arity_generic_expression.operands[2]; + interval_low : generic_expression := SELF\multiple_arity_generic_expression.operands[1]; +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EXPRESSION' + IN TYPEOF(interval_low)) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EXPRESSION' + IN TYPEOF(interval_item) ) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EXPRESSION' + IN TYPEOF(interval_high)); + WR2 : (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRING_EXPRESSION' + IN TYPEOF (SELF.interval_low)) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRING_EXPRESSION' + IN TYPEOF (SELF.interval_high)) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRING_EXPRESSION' + IN TYPEOF (SELF.interval_item))) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRING_EXPRESSION' + IN TYPEOF(SELF.interval_low)) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.NUMERIC_EXPRESSION' + IN TYPEOF(SELF.interval_item)) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.NUMERIC_EXPRESSION' + IN TYPEOF(SELF.interval_high))); +END_ENTITY; + + +ENTITY invisibility; + invisible_items : SET [1:?] OF invisible_item; +END_ENTITY; + + +ENTITY iso4217_currency + SUBTYPE OF (currency); +END_ENTITY; + + +ENTITY item_defined_transformation; + name : label; + description : OPTIONAL text; + transform_item_1 : representation_item; + transform_item_2 : representation_item; +END_ENTITY; + + +ENTITY item_identified_representation_usage; + name : label; + description : OPTIONAL text; + definition : represented_definition; + used_representation : representation; + identified_item : representation_item; +WHERE + WR1 : SELF.used_representation IN using_representations(SELF.identified_item); +END_ENTITY; + + +ENTITY known_source + SUBTYPE OF (external_source, pre_defined_item); +END_ENTITY; + + +ENTITY laid_defined_transformation + SUBTYPE OF (transformation_with_derived_angle); +END_ENTITY; + + +ENTITY laminate_table + SUPERTYPE OF (ONEOF (part_laminate_table, zone_structural_makeup)) + SUBTYPE OF (product_definition); +END_ENTITY; + + +ENTITY language + SUBTYPE OF (group); +WHERE + WR1 : SELF\group.name <> ''; +END_ENTITY; + + +ENTITY leader_curve + SUBTYPE OF (annotation_curve_occurrence); +WHERE + WR1 : SIZEOF( + QUERY(ldc <* USEDIN( SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_CALLOUT.CONTENTS') + | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'LEADER_DIRECTED_CALLOUT' IN TYPEOF(ldc))) >= 1; +END_ENTITY; + + +ENTITY leader_directed_callout + SUBTYPE OF (draughting_callout); +WHERE + WR1 : SIZEOF (QUERY (l_1 <* SELF\draughting_callout.contents | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_CURVE' IN (TYPEOF(l_1)))) >= 1; + WR2 : SIZEOF(SELF\draughting_callout.contents) >=2; +END_ENTITY; + + +ENTITY leader_directed_dimension + SUBTYPE OF (leader_directed_callout); +WHERE + WR1 : SIZEOF (QUERY (con <* SELF.contents | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_CURVE' IN TYPEOF (con)))=1; +END_ENTITY; + + +ENTITY leader_terminator + SUBTYPE OF (terminator_symbol); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_CURVE' IN TYPEOF + (SELF\terminator_symbol.annotated_curve); +END_ENTITY; + + +ENTITY length_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY length_unit + SUBTYPE OF (named_unit); +WHERE + WR1 : (SELF\named_unit.dimensions.length_exponent = 1.0) AND + (SELF\named_unit.dimensions.mass_exponent = 0.0) AND + (SELF\named_unit.dimensions.time_exponent = 0.0) AND + (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND + (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND + (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND + (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0); +END_ENTITY; + + +ENTITY light_source + SUPERTYPE OF (ONEOF (light_source_ambient, light_source_directional, light_source_positional, light_source_spot)) + SUBTYPE OF (geometric_representation_item); + light_colour : colour; +WHERE + WR1 : SIZEOF(USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'STYLED_ITEM.ITEM')) = 0; +END_ENTITY; + + +ENTITY light_source_ambient + SUBTYPE OF (light_source); +END_ENTITY; + + +ENTITY light_source_directional + SUBTYPE OF (light_source); + orientation : direction; +END_ENTITY; + + +ENTITY light_source_positional + SUBTYPE OF (light_source); + position : cartesian_point; + constant_attenuation : REAL; + distance_attenuation : REAL; +END_ENTITY; + + +ENTITY light_source_spot + SUBTYPE OF (light_source); + position : cartesian_point; + orientation : direction; + concentration_exponent : REAL; + constant_attenuation : REAL; + distance_attenuation : REAL; + spread_angle : positive_plane_angle_measure; +END_ENTITY; + + +ENTITY limits_and_fits; + form_variance : label; + zone_variance : label; + grade : label; + source : text; +END_ENTITY; + + +ENTITY line + SUBTYPE OF (curve); + pnt : cartesian_point; + dir : vector; +WHERE + WR1 : dir.dim = pnt.dim; +END_ENTITY; + + +ENTITY line_profile_tolerance + SUBTYPE OF (geometric_tolerance); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF (SELF)) OR ( SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) <= 3); + WR2 : SIZEOF ( +QUERY ( sar <* USEDIN (SELF\geometric_tolerance.toleranced_shape_aspect, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')| (sar.name IN [ 'affected plane association', 'resulting intersection curve association' ]) )) = 1; +END_ENTITY; + + +ENTITY linear_dimension + SUBTYPE OF (dimension_curve_directed_callout); +END_ENTITY; + + +ENTITY literal_conjunction + SUBTYPE OF (simple_clause); +END_ENTITY; + + +ENTITY literal_disjunction + SUBTYPE OF (simple_clause); +END_ENTITY; + + +ENTITY literal_number + ABSTRACT SUPERTYPE OF (ONEOF (int_literal, real_literal)) + SUBTYPE OF (simple_numeric_expression, generic_literal); + the_value : NUMBER; +END_ENTITY; + + +ENTITY local_time; + hour_component : hour_in_day; + minute_component : OPTIONAL minute_in_hour; + second_component : OPTIONAL second_in_minute; + zone : coordinated_universal_time_offset; +WHERE + WR1 : valid_time (SELF); +END_ENTITY; + + +ENTITY logical_literal + SUBTYPE OF (generic_literal); + lit_value : LOGICAL; +END_ENTITY; + + +ENTITY logical_representation_item + SUBTYPE OF (representation_item, logical_literal); +END_ENTITY; + + +ENTITY loop + SUPERTYPE OF (ONEOF (vertex_loop, edge_loop, poly_loop)) + SUBTYPE OF (topological_representation_item); +END_ENTITY; + + +ENTITY loss_tangent_measure_with_unit + SUBTYPE OF (ratio_measure_with_unit); +END_ENTITY; + + +ENTITY lot_effectivity + SUBTYPE OF (effectivity); + effectivity_lot_id : identifier; + effectivity_lot_size : measure_with_unit; +END_ENTITY; + + +ENTITY luminous_flux_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LUMINOUS_FLUX_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY luminous_flux_unit + SUBTYPE OF (named_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.lumen); +END_ENTITY; + + +ENTITY luminous_intensity_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LUMINOUS_INTENSITY_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY luminous_intensity_unit + SUBTYPE OF (named_unit); +WHERE + WR1 : (SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 0.0) AND (SELF\named_unit.dimensions.time_exponent = 0.0) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 1.0); +END_ENTITY; + + +ENTITY magnetic_flux_density_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAGNETIC_FLUX_DENSITY_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY magnetic_flux_density_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.tesla); +END_ENTITY; + + +ENTITY magnetic_flux_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAGNETIC_FLUX_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY magnetic_flux_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.weber); +END_ENTITY; + + +ENTITY make_from_usage_option + SUBTYPE OF (product_definition_usage); + ranking : INTEGER; + ranking_rationale : text; + quantity : measure_with_unit; +WHERE + WR1 : (NOT ('NUMBER' IN TYPEOF(quantity.value_component))) + OR (quantity.value_component > 0); +END_ENTITY; + + +ENTITY manifold_solid_brep + SUBTYPE OF (solid_model); + outer : closed_shell; +END_ENTITY; + + +ENTITY manifold_subsurface_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF (QUERY (it <* SELF.items | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D'] * + TYPEOF(it)) = 1))) = 0; + WR2 : SIZEOF (QUERY (it <* SELF.items | + SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM'] * TYPEOF(it)) =1 )) > 0; + WR3 : SIZEOF (QUERY (mi <* QUERY (it <* items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF(it)) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SUBSURFACE_SHAPE_REPRESENTATION' IN + TYPEOF(mi\mapped_item.mapping_source. + mapped_representation)))) = 0; + WR4 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | + NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OPEN_SHELL' IN TYPEOF(cfss)))) = 0; + WR5 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | + NOT( (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET' IN + TYPEOF(cfss\connected_face_sub_set.parent_face_set))AND + (SIZEOF(QUERY(fac <* cfss\connected_face_sub_set.parent_face_set\connected_face_set.cfs_faces | NOT + advanced_face_properties(fac))) = 0)) OR + (SIZEOF(QUERY(fac <* cfss\connected_face_sub_set.parent_face_set\connected_face_set.cfs_faces | NOT + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF(fac)))) = 0) + ))) = 0; + WR6 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | + ( SIZEOF (QUERY (fac <* cfss\connected_face_set.cfs_faces | NOT + advanced_face_properties(fac))) = 0))) = 0; + WR7 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY(fcs <* cfss\connected_face_set.cfs_faces | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SUBFACE' IN TYPEOF(fcs)) AND + NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list | + NOT(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_CURVE' IN + TYPEOF(oe.edge_element)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SUBEDGE' IN + TYPEOF(oe.edge_element)) ))) = 0 + ))) = 0 + ))) = 0 + ))) = 0; + WR8 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY(fcs <* cfss\connected_face_set.cfs_faces | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SUBFACE' IN TYPEOF(fcs)) AND + NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list | + NOT(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF(oe.edge_start)) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN + TYPEOF(oe.edge_end)) + ))) = 0 + ))) = 0 + ))) = 0 + ))) = 0; + WR9 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY(fcs <* cfss\connected_face_set.cfs_faces | + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SUBFACE' IN TYPEOF(fcs)) AND + ( NOT (SIZEOF(QUERY (bnds <* fcs.bounds | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP'] * + TYPEOF(bnds.bound)) = 1 ) + )) = 0) + ))) = 0 + ))) = 0; + WR10 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY(fcs <* cfss\connected_face_set.cfs_faces | + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SUBFACE' IN TYPEOF(fcs)) AND + ( NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE' ] * + TYPEOF(oe.edge_element\edge_curve.edge_geometry)) = 1 ) + )) = 0 + ))) = 0 + )))) = 0 + ))) = 0; + WR11 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY(fcs <* cfss\connected_face_set.cfs_faces | + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SUBFACE' IN TYPEOF(fcs)) AND + (NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE' IN + TYPEOF(oe.edge_element\edge_curve.edge_geometry)) AND + (NOT ((SIZEOF (QUERY (sc_ag <* + oe.edge_element\edge_curve.edge_geometry\ + surface_curve.associated_geometry | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN + TYPEOF(sc_ag)))) = 0))) + )) = 0 + ))) = 0 + )))) = 0 + ))) = 0; + WR12 : SIZEOF (QUERY (cfss <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONNECTED_FACE_SUB_SET' IN TYPEOF(it)) | + NOT (SIZEOF (QUERY(fcs <* cfss\connected_face_set.cfs_faces | + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SUBFACE' IN TYPEOF(fcs)) AND + (NOT (SIZEOF(QUERY (elp_fbnds <* QUERY (bnds <* fcs.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF(bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds.bound\path.edge_list | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN + TYPEOF(oe.edge_element\edge_curve.edge_geometry)) AND + (NOT (SIZEOF (oe\oriented_edge.edge_element\ + edge_curve.edge_geometry\polyline.points) >= 3)) + )) = 0 + ))) = 0 + )))) = 0 + ))) = 0; +END_ENTITY; + + +ENTITY manifold_surface_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF (QUERY (it <* SELF.items | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_SURFACE_MODEL', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D'] * TYPEOF (it)) = 1))) = 0; + WR2 : SIZEOF (QUERY (it <* SELF.items | + SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_SURFACE_MODEL', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM'] * TYPEOF (it)) = 1)) > 0; + WR3 : SIZEOF (QUERY (mi <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MANIFOLD_SURFACE_SHAPE_REPRESENTATION' + IN TYPEOF (mi\mapped_item.mapping_source.mapped_representation)) + AND + (SIZEOF(QUERY (mr_it <* + mi\mapped_item.mapping_source.mapped_representation.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_SURFACE_MODEL' + IN TYPEOF (mr_it)))) > 0 )))) = 0; + WR4 : SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (sh <* + sbsm\shell_based_surface_model.sbsm_boundary | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OPEN_SHELL', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_CLOSED_SHELL', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CLOSED_SHELL'] + * TYPEOF (sh)) = 1))) = 0))) = 0; + WR5 : SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + sbsm\shell_based_surface_model.sbsm_boundary | + NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_SURFACE' IN TYPEOF (fa)) )) = 0))) + = 0))) = 0; + WR6 : SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + sbsm\shell_based_surface_model.sbsm_boundary | + NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (msf_surface_check(fa\face_surface.face_geometry))))) = 0))) + = 0))) = 0; + WR7 : SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + sbsm\shell_based_surface_model.sbsm_boundary | + NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (bnds <* fa.bounds | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP'] + * TYPEOF (bnds.bound)) = 1))) = 0)))) = 0))) = 0))) = 0; + WR8 : SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items| + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + sbsm\shell_based_surface_model.sbsm_boundary | + NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_CURVE' IN TYPEOF + (oe.edge_element)))) = 0))) = 0)))) = 0))) = 0))) = 0; + WR9 : SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + sbsm\shell_based_surface_model.sbsm_boundary | + NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (QUERY (oe_cv <* QUERY (oe <* + elp_fbnds\path.edge_list | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_CURVE' IN TYPEOF (oe.edge_element)) | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_3D', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE'] * + TYPEOF (oe_cv.edge_element\edge_curve.edge_geometry)) + = 1))) = 0))) = 0)))) = 0))) = 0))) = 0; + WR10 : SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + sbsm\shell_based_surface_model.sbsm_boundary | + NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list | + NOT (msf_curve_check (oe.edge_element\edge_curve.edge_geometry)))) + = 0))) = 0)))) = 0))) = 0))) = 0; + WR11 : SIZEOF (QUERY(sbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + sbsm\shell_based_surface_model.sbsm_boundary | + NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list| + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF + (oe.edge_element.edge_start)) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN + TYPEOF (oe.edge_element.edge_end))))) + = 0))) = 0)))) = 0))) = 0))) = 0; + WR12 : SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + sbsm\shell_based_surface_model.sbsm_boundary | + NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list | + NOT ((SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DEGENERATE_PCURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_SURFACE'] * TYPEOF + (oe.edge_element.edge_start\vertex_point.vertex_geometry)) = 1) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DEGENERATE_PCURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_SURFACE'] * TYPEOF + (oe.edge_element.edge_end\vertex_point.vertex_geometry)) = 1 + )))) = 0))) = 0)))) = 0))) = 0))) = 0; + WR13 : SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + sbsm\shell_based_surface_model.sbsm_boundary | + NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (vlp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP' IN TYPEOF (bnds.bound)) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF + (vlp_fbnds\vertex_loop.loop_vertex)))) = 0)))) = 0))) + = 0))) = 0; + WR14 : SIZEOF (QUERY (sbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + sbsm\shell_based_surface_model.sbsm_boundary | + NOT (SIZEOF (QUERY (fa <* cfs\connected_face_set.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (vlp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DEGENERATE_PCURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_SURFACE'] * TYPEOF + (vlp_fbnds\vertex_loop.loop_vertex\vertex_point.vertex_geometry)) + = 1))) = 0)))) = 0))) = 0))) = 0; +END_ENTITY; + + +ENTITY mapped_item + SUBTYPE OF (representation_item); + mapping_source : representation_map; + mapping_target : representation_item; +WHERE + WR1 : acyclic_mapped_representation(SELF); +END_ENTITY; + + +ENTITY mass_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MASS_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY mass_unit + SUBTYPE OF (named_unit); +WHERE + WR1 : (SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 1.0) AND (SELF\named_unit.dimensions.time_exponent = 0.0) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0); +END_ENTITY; + + +ENTITY material_designation; + name : label; + definitions : SET [1:?] OF characterized_definition; +END_ENTITY; + + +ENTITY material_designation_characterization; + name : label; + description : text; + designation : material_designation; + property : characterized_material_property; +END_ENTITY; + + +ENTITY material_property + SUBTYPE OF (property_definition); +UNIQUE + UR1: SELF\property_definition.name, SELF\property_definition.definition; +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CHARACTERIZED_OBJECT' IN + TYPEOF(SELF\property_definition.definition)) OR + (SIZEOF(bag_to_set(USEDIN(SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) - + QUERY(temp <* bag_to_set(USEDIN(SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'MATERIAL_PROPERTY_REPRESENTATION' IN + TYPEOF(temp)))) = 0); +END_ENTITY; + + +ENTITY material_property_representation + SUBTYPE OF (property_definition_representation); + dependent_environment : data_environment; +END_ENTITY; + + +ENTITY measure_qualification; + name : label; + description : text; + qualified_measure : measure_with_unit; + qualifiers : SET [1:?] OF value_qualifier; +WHERE + WR1 : SIZEOF(QUERY(temp <* qualifiers | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRECISION_QUALIFIER' + IN TYPEOF(temp))) < 2; + WR2 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION_ITEM' + IN TYPEOF(SELF\measure_qualification.qualified_measure)); +END_ENTITY; + + +ENTITY measure_representation_item + SUBTYPE OF (representation_item, measure_with_unit); +END_ENTITY; + + +ENTITY measure_with_unit + SUPERTYPE OF (ONEOF (length_measure_with_unit, mass_measure_with_unit, time_measure_with_unit, electric_current_measure_with_unit, thermodynamic_temperature_measure_with_unit, celsius_temperature_measure_with_unit, amount_of_substance_measure_with_unit, luminous_intensity_measure_with_unit, plane_angle_measure_with_unit, solid_angle_measure_with_unit, area_measure_with_unit, volume_measure_with_unit, ratio_measure_with_unit, acceleration_measure_with_unit, capacitance_measure_with_unit, electric_charge_measure_with_unit, conductance_measure_with_unit, electric_potential_measure_with_unit, energy_measure_with_unit, magnetic_flux_density_measure_with_unit, force_measure_with_unit, frequency_measure_with_unit, illuminance_measure_with_unit, inductance_measure_with_unit, luminous_flux_measure_with_unit, magnetic_flux_measure_with_unit, power_measure_with_unit, pressure_measure_with_unit, resistance_measure_with_unit, velocity_measure_with_unit, absorbed_dose_measure_with_unit, radioactivity_measure_with_unit, dose_equivalent_measure_with_unit)); + value_component : measure_value; + unit_component : unit; +WHERE + WR1 : valid_units(SELF); +END_ENTITY; + + +ENTITY mechanical_context + SUBTYPE OF (product_context); +WHERE + WR1 : SELF.discipline_type = 'mechanical'; +END_ENTITY; + + +ENTITY mechanical_design_and_draughting_relationship + SUBTYPE OF (definitional_representation_relationship_with_same_context); + SELF\representation_relationship.rep_1 : mechanical_design_and_draughting_relationship_select; + SELF\representation_relationship.rep_2 : mechanical_design_and_draughting_relationship_select; +WHERE + WR1 : NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'DRAUGHTING_MODEL' IN TYPEOF(rep_2)) OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'DRAUGHTING_MODEL' IN TYPEOF(rep_1)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'SHAPE_REPRESENTATION' IN TYPEOF(rep_1))); + WR2 : NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION' IN TYPEOF(rep_2)) OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION' IN TYPEOF(rep_1)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'SHAPE_REPRESENTATION' IN TYPEOF(rep_1))); + WR3 : NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION' IN TYPEOF(rep_2)) OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION' IN TYPEOF(rep_1)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'SHAPE_REPRESENTATION' IN TYPEOF(rep_1))); +END_ENTITY; + + +ENTITY mechanical_design_geometric_presentation_area + SUBTYPE OF (presentation_area); + SELF\representation.items : SET [1:?] OF mechanical_design_geometric_presentation_area_items; +WHERE + WR1 : SIZEOF(QUERY(it1 <* SELF.items | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF(it1)) + OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESENTATION_VIEW' + IN TYPEOF + (it1\mapped_item.mapping_source.mapped_representation)))) = 0; + WR2 : SIZEOF(QUERY(pv <* QUERY(mi1 <* QUERY(it1 <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF(it1)) | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESENTATION_VIEW' + IN TYPEOF + (mi1\mapped_item.mapping_source.mapped_representation)) | + -- search in all presentation_views for axis2_placements and + -- mapped_items and for the subtype of mapped_item + -- camera_image_3d_with_scale; the latter shall reference + -- a mechanical_design_geometric_presentation_representation; + -- the supertype mapped_item shall reference presentation_view. + NOT (SIZEOF(QUERY(it2 <* pv\mapped_item.mapping_source. + mapped_representation\representation.items | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT' + IN TYPEOF(it2)) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF(it2)) AND NOT + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'CAMERA_IMAGE_3D_WITH_SCALE' IN TYPEOF(it2))) AND NOT ( + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESENTATION_VIEW' + IN TYPEOF + (it2\mapped_item.mapping_source.mapped_representation))) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'CAMERA_IMAGE_3D_WITH_SCALE' IN TYPEOF(it2)) + AND NOT ( + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION' + IN TYPEOF (it2\mapped_item.mapping_source.mapped_representation) )) + ))) = 0))) = 0; + WR3 : (SIZEOF(QUERY(ps <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT') | ((ps.size\planar_extent.size_in_x <= 0) + OR + (ps.size\planar_extent.size_in_y <= 0)))) = 0) + AND + (SIZEOF(QUERY(ais <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AREA_IN_SET.AREA') | + (SIZEOF(QUERY(ps <* USEDIN (ais, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT') | + ((ps.size\planar_extent.size_in_x <= 0) + OR + (ps.size\planar_extent.size_in_y <= 0)))) > 0))) = 0); + WR4 : (SIZEOF(QUERY(ps <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AXIS2_PLACEMENT_2D' IN TYPEOF (ps.size.placement)))) = 1) + AND + (SIZEOF(QUERY(ps <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AXIS2_PLACEMENT_3D' IN TYPEOF (ps.size.placement)))) = 0) + OR + ((SIZEOF(QUERY(ais <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AREA_IN_SET.AREA') | + (SIZEOF(QUERY(ps <* USEDIN (ais, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AXIS2_PLACEMENT_2D' IN TYPEOF (ps.size.placement)))) = 1))) = 1) + AND + (SIZEOF(QUERY(ais <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AREA_IN_SET.AREA') | + (SIZEOF(QUERY(ps <* USEDIN (ais, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AXIS2_PLACEMENT_3D' IN TYPEOF (ps.size.placement)))) = 0))) = 1)); +END_ENTITY; + + +ENTITY mechanical_design_geometric_presentation_representation + SUBTYPE OF (representation); + SELF\representation.items : SET [1:?] OF mechanical_design_geometric_presentation_representation_items; +WHERE + WR1 : SIZEOF(QUERY(mi <* QUERY(it <* SELF.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF(it))) | NOT (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SHAPE_REPRESENTATION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION'] + * TYPEOF(mi\mapped_item.mapping_source.mapped_representation)) + = 1))) = 0; + WR2 : SIZEOF(QUERY(smi <* QUERY(si <* QUERY(it <* SELF.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it))) | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF(si\styled_item.item))) | NOT ( + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SHAPE_REPRESENTATION' IN TYPEOF (smi\styled_item. + item\mapped_item.mapping_source.mapped_representation))) )) = 0; + WR3 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles | + NOT (SIZEOF(QUERY(pss <* psa.styles | NOT (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_STYLE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE'] + * TYPEOF(pss)) = 1))) = 0))) = 0))) = 0; + WR4 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it)) | + NOT (SIZEOF(QUERY(psbc <* QUERY(psa <* si\styled_item.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_STYLE_BY_CONTEXT' IN TYPEOF(psa)) | NOT (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'REPRESENTATION_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION'] + * TYPEOF(psbc\presentation_style_by_context.style_context)) + = 1))) = 0))) = 0; + WR5 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles | + NOT (SIZEOF(QUERY(ps <* QUERY(pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_STYLE' + IN TYPEOF(pss)) | NOT + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'POSITIVE_LENGTH_MEASURE' IN TYPEOF (ps\point_style.marker_size)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_COLOUR'] + * TYPEOF(ps\point_style.marker_colour)) + = 1)))) = 0))) = 0))) = 0; + WR6 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles | + NOT (SIZEOF(QUERY(cs <* QUERY(pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF(pss)) | NOT((SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_COLOUR'] + * TYPEOF(cs\curve_style.curve_colour)) = 1) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'POSITIVE_LENGTH_MEASURE' IN TYPEOF (cs\curve_style.curve_width)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE_FONT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] + * TYPEOF(cs\curve_style.curve_font)) = 1)))) = 0))) = 0))) = 0; + WR7 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles | + NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF(pss)) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_SIDE_STYLE' IN TYPEOF + (ssu\surface_style_usage.style)))) = 0))) = 0))) = 0; + WR8 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles | + NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF(pss)) | NOT (SIZEOF(QUERY(sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + NOT (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_PARAMETER_LINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_CONTROL_GRID', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_SILHOUETTE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_SEGMENTATION_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_FILL_AREA', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_BOUNDARY'] + * TYPEOF(sses)) = 1))) = 0))) = 0))) = 0))) = 0; + WR9 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles | + NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF(pss)) | NOT (SIZEOF(QUERY(sspl <* QUERY(sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_PARAMETER_LINE' IN TYPEOF(sses)) | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF + (sspl\surface_style_parameter_line.style_of_parameter_lines)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_COLOUR'] + * TYPEOF(sspl\surface_style_parameter_line. + style_of_parameter_lines\curve_style.curve_colour)) = 1) + AND ( + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'POSITIVE_LENGTH_MEASURE' IN TYPEOF + (sspl\surface_style_parameter_line. + style_of_parameter_lines\curve_style.curve_width)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE_FONT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] + * TYPEOF(sspl\surface_style_parameter_line. + style_of_parameter_lines\curve_style.curve_font)) = 1)))) + = 0))) = 0))) = 0))) = 0; + WR10 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles | + NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF(pss)) | NOT (SIZEOF(QUERY(sscg <* QUERY(sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_CONTROL_GRID' IN TYPEOF(sses)) | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF (sscg\surface_style_control_grid.style_of_control_grid)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_COLOUR'] + * TYPEOF(sscg\surface_style_control_grid. + style_of_control_grid\curve_style.curve_colour)) = 1) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'POSITIVE_LENGTH_MEASURE' IN TYPEOF + (sscg\surface_style_control_grid. + style_of_control_grid\curve_style.curve_width)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE_FONT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] + * TYPEOF(sscg\surface_style_control_grid. + style_of_control_grid\curve_style.curve_font)) = 1)))) + = 0))) = 0))) = 0))) = 0; + WR11 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it)) | + NOT (SIZEOF(QUERY(psa <* si\styled_item.styles | + NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF(pss)) | NOT (SIZEOF(QUERY(sssh <* QUERY(sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_SILHOUETTE' IN TYPEOF(sses)) | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF (sssh\surface_style_silhouette.style_of_silhouette)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_COLOUR'] + * TYPEOF(sssh\surface_style_silhouette. + style_of_silhouette\curve_style.curve_colour)) = 1) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'POSITIVE_LENGTH_MEASURE' IN TYPEOF + (sssh\surface_style_silhouette.style_of_silhouette\curve_style. + curve_width)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE_FONT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] + * TYPEOF(sssh\surface_style_silhouette. + style_of_silhouette\curve_style.curve_font)) = 1)))) + = 0))) = 0))) = 0))) = 0; + WR12 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles | + NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF(pss)) | NOT (SIZEOF(QUERY(sssc <* QUERY(sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_SEGMENTATION_CURVE' IN TYPEOF(sses)) | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF + (sssc\surface_style_segmentation_curve.style_of_segmentation_curve)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_COLOUR'] + * TYPEOF(sssc\surface_style_segmentation_curve. + style_of_segmentation_curve\curve_style.curve_colour)) = 1) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'POSITIVE_LENGTH_MEASURE' IN TYPEOF + (sssc\surface_style_segmentation_curve. + style_of_segmentation_curve\curve_style.curve_width)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE_FONT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] + * TYPEOF(sssc\surface_style_segmentation_curve. + style_of_segmentation_curve\curve_style.curve_font)) = 1)))) + = 0))) = 0))) = 0))) = 0; + WR13 : SIZEOF(QUERY(si <* QUERY(it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it)) | NOT (SIZEOF(QUERY(psa <* si\styled_item.styles | + NOT (SIZEOF(QUERY(ssu <* QUERY(pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF(pss)) | NOT (SIZEOF(QUERY(ssbd <* QUERY(sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_BOUNDARY' IN TYPEOF(sses)) | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF (ssbd\surface_style_boundary.style_of_boundary)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_COLOUR'] + * TYPEOF(ssbd\surface_style_boundary. + style_of_boundary\curve_style.curve_colour)) = 1) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'POSITIVE_LENGTH_MEASURE' IN TYPEOF (ssbd\surface_style_boundary. + style_of_boundary\curve_style.curve_width)) + AND (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE_FONT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] + * TYPEOF(ssbd\surface_style_boundary. + style_of_boundary\curve_style.curve_font)) = 1)))) = 0))) + = 0))) = 0))) = 0; +END_ENTITY; + + +ENTITY mechanical_design_presentation_representation_with_draughting + SUBTYPE OF (representation); + SELF\representation.items : SET [1:?] OF camera_model_d3; +END_ENTITY; + + +ENTITY mechanical_design_shaded_presentation_area + SUBTYPE OF (presentation_area); +WHERE + WR1 : SIZEOF (QUERY (it1 <* SELF.items | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT' + IN TYPEOF (it1)) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF (it1)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESENTATION_VIEW' + IN TYPEOF + (it1\mapped_item.mapping_source.mapped_representation)))))) = 0; + WR2 : SIZEOF (QUERY (pv <* QUERY (mi1 <* QUERY (it1 <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF (it1)) | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESENTATION_VIEW' + IN TYPEOF + (mi1\mapped_item.mapping_source.mapped_representation)) | + (* search in all presentation_views for axis2_placements and + mapped_items and for the subtype of mapped_item, + camera_image_3d_with_scale; the latter shall reference + a mechanical_design_geometric_presentation_representation; + the supertype mapped_item shall reference presentation_view. *) + NOT (SIZEOF(QUERY(it2 <* pv\mapped_item.mapping_source. + mapped_representation\representation.items | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT' + IN TYPEOF(it2)) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF(it2)) AND NOT + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'CAMERA_IMAGE_3D_WITH_SCALE' IN TYPEOF(it2))) AND NOT ( + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESENTATION_VIEW' + IN TYPEOF + (it2\mapped_item.mapping_source.mapped_representation))) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'CAMERA_IMAGE_3D_WITH_SCALE' IN TYPEOF(it2)) + AND NOT ( + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION' + IN TYPEOF (it2\mapped_item.mapping_source.mapped_representation) )) + ))) = 0))) = 0; + WR3 : (SIZEOF (QUERY(ps <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT') | + NOT ((ps.size\planar_extent.size_in_x > 0) + AND (ps.size\planar_extent.size_in_y > 0)) )) = 0) + AND + (* check secondly for presentation_set, via area_in_set *) + (SIZEOF (QUERY(pset <* QUERY(ais <* + USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AREA_IN_SET.AREA') + | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SET' IN TYPEOF (ais.in_set)) | + (* after having collected all presentation_set, check their sizes *) + SIZEOF (QUERY(psize <* USEDIN(pset, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT') + | NOT ((psize.size\planar_extent.size_in_x > 0) + AND (psize.size\planar_extent.size_in_y > 0)) )) = 0)) = 0); + WR4 : (SIZEOF(QUERY( psize <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT') + | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AXIS2_PLACEMENT_2D' + IN TYPEOF (psize.size.placement))) = 1) + AND + (* check secondly for presentation_set, via area_in_set *) + (SIZEOF (QUERY(pset <* QUERY(ais <* + USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AREA_IN_SET.AREA') + | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SET' IN TYPEOF (ais.in_set)) | + (* after having collected all presentation_set, check their + dimension *) + SIZEOF (QUERY(psize <* USEDIN(pset, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT') + | NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AXIS2_PLACEMENT_2D' + IN TYPEOF (psize.size.placement)) )) = 0)) = 0); + WR5 : SIZEOF (QUERY (pv <* QUERY (mi1 <* QUERY (it1 <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF (it1)) | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESENTATION_VIEW' + IN TYPEOF + (mi1\mapped_item.mapping_source.mapped_representation)) | + (* search in all presentation_views for + mapped_items and for the subtype of mapped_item, + camera_image_3d_with_scale; the latter shall reference + a camera_usage that shall have as its mapping_origin either + camera_model_d3, camera_model_d3_with_hlhsr, or + camera_model_with_light_sources. *) + NOT (SIZEOF(QUERY(ci <* pv\mapped_item.mapping_source. + mapped_representation\representation.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'CAMERA_IMAGE_3D_WITH_SCALE' IN TYPEOF(ci)) + AND + (SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'CAMERA_MODEL_D3', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'CAMERA_MODEL_D3_WITH_HLHSR', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'CAMERA_MODEL_WITH_LIGHT_SOURCES'] * TYPEOF + (ci\mapped_item.mapping_source.mapping_origin)) + = 1))) = 0))) = 0; +END_ENTITY; + + +ENTITY mechanical_design_shaded_presentation_representation + SUBTYPE OF (representation); +WHERE + WR1 : SIZEOF(QUERY(it <* SELF.items | + NOT (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CAMERA_MODEL_D3'] + * TYPEOF(it)) = 1))) = 0; + WR2 : SIZEOF(QUERY(mi <* QUERY(it <* SELF.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF(it))) | NOT (SIZEOF( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SHAPE_REPRESENTATION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION'] + * TYPEOF(mi\mapped_item.mapping_source.mapped_representation)) + = 1))) = 0; + WR3 : SIZEOF(QUERY(smi <* QUERY(si <* QUERY(it <* SELF.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF(it))) | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' + IN TYPEOF(si\styled_item.item))) | NOT ( + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SHAPE_REPRESENTATION' IN TYPEOF (smi\styled_item. + item\mapped_item.mapping_source.mapped_representation))) )) = 0; + WR4 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (pss <* psa.styles | + NOT (SIZEOF ( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_STYLE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE'] + * TYPEOF (pss)) = 1))) = 0))) = 0))) = 0; + WR5 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psbc <* QUERY (psa <* si\styled_item.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'PRESENTATION_STYLE_BY_CONTEXT' IN TYPEOF (psa)) | + NOT (SIZEOF ( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION'] + * TYPEOF (psbc\presentation_style_by_context.style_context)) = 1))) + = 0))) = 0; + WR6 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (ps <* QUERY (pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_STYLE' + IN TYPEOF (pss)) | + NOT ( + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MARKER_TYPE' + IN TYPEOF (ps\point_style.marker)) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF + (ps\point_style.marker_size)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (ps\point_style.marker_colour)) = 1)))) = 0))) = 0))) = 0; + WR7 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (cs <* QUERY (pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF (pss)) | + NOT ( + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (cs\curve_style.curve_colour)) = 1) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF + (cs\curve_style.curve_width)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'CURVE_STYLE_FONT', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF + (cs\curve_style.curve_font)) = 1)))) = 0))) = 0))) = 0; + WR8 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF (pss)) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_SIDE_STYLE' + IN TYPEOF (ssu\surface_style_usage.style)) )) = 0))) = 0 ))) = 0; + WR9 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF (pss)) | + NOT (SIZEOF (QUERY (sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + NOT (SIZEOF ( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_PARAMETER_LINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_CONTROL_GRID', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_SILHOUETTE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_SEGMENTATION_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_BOUNDARY', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_FILL_AREA', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_RENDERING'] * TYPEOF (sses)) = 1))) = 0))) = 0))) + = 0))) = 0; + WR10 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF (pss)) | + NOT (SIZEOF (QUERY (ssfa <* QUERY (sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_FILL_AREA' + IN TYPEOF (sses)) | + NOT (SIZEOF (QUERY (fss <* + ssfa\surface_style_fill_area.fill_area.fill_styles | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'FILL_AREA_STYLE_COLOUR' IN TYPEOF (fss)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (fss\fill_area_style_colour.fill_colour)) = 1)))) = 0))) = 0))) + = 0))) = 0))) = 0; + WR11 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF (pss)) | + NOT (SIZEOF (QUERY (sspl <* QUERY (sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_PARAMETER_LINE' IN TYPEOF (sses)) | + NOT (( + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' IN TYPEOF + (sspl\surface_style_parameter_line.style_of_parameter_lines)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (sspl\surface_style_parameter_line. + style_of_parameter_lines\curve_style.curve_colour)) = 1) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF + (sspl\surface_style_parameter_line. + style_of_parameter_lines\curve_style.curve_width)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'CURVE_STYLE_FONT', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF + (sspl\surface_style_parameter_line. + style_of_parameter_lines\curve_style.curve_font)) = 1)) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE_RENDERING' + IN TYPEOF + (sspl\surface_style_parameter_line.style_of_parameter_lines)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (sspl\surface_style_parameter_line.style_of_parameter_lines\ + curve_style_rendering.rendering_properties.rendered_colour)) + = 1))) )) = 0))) = 0))) = 0))) = 0; + WR12 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF (pss)) | + NOT (SIZEOF (QUERY (sscg <* QUERY (sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_CONTROL_GRID' IN TYPEOF (sses)) | + NOT (( + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF (sscg\surface_style_control_grid.style_of_control_grid)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (sscg\surface_style_control_grid. + style_of_control_grid\curve_style.curve_colour)) = 1) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF + (sscg\surface_style_control_grid. + style_of_control_grid\curve_style.curve_width)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'CURVE_STYLE_FONT', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF + (sscg\surface_style_control_grid. + style_of_control_grid\curve_style.curve_font)) = 1)) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE_RENDERING' + IN TYPEOF (sscg\surface_style_control_grid.style_of_control_grid)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (sscg\surface_style_control_grid.style_of_control_grid\ + curve_style_rendering.rendering_properties.rendered_colour)) + = 1))) )) = 0))) = 0))) = 0))) = 0; + WR13 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF (pss)) | + NOT (SIZEOF (QUERY (sssh <* QUERY (sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_SILHOUETTE' IN TYPEOF (sses)) | + NOT (( + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF (sssh\surface_style_silhouette.style_of_silhouette)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (sssh\surface_style_silhouette. + style_of_silhouette\curve_style.curve_colour)) = 1) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF + (sssh\surface_style_silhouette. + style_of_silhouette\curve_style.curve_width)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'CURVE_STYLE_FONT', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF + (sssh\surface_style_silhouette. + style_of_silhouette\curve_style.curve_font)) = 1)) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE_RENDERING' + IN TYPEOF (sssh\surface_style_silhouette.style_of_silhouette)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (sssh\surface_style_silhouette.style_of_silhouette\ + curve_style_rendering.rendering_properties.rendered_colour)) + = 1))) )) = 0))) = 0))) = 0))) = 0; + WR14 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF (pss)) | + NOT (SIZEOF (QUERY (sssc <* QUERY (sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_SEGMENTATION_CURVE' IN TYPEOF (sses)) | + NOT (( + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF + (sssc\surface_style_segmentation_curve.style_of_segmentation_curve)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (sssc\surface_style_segmentation_curve. + style_of_segmentation_curve\curve_style.curve_colour)) = 1) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF + (sssc\surface_style_segmentation_curve. + style_of_segmentation_curve\curve_style.curve_width)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'CURVE_STYLE_FONT', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF + (sssc\surface_style_segmentation_curve. + style_of_segmentation_curve\curve_style.curve_font)) = 1)) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE_RENDERING' + IN TYPEOF (sssc\surface_style_segmentation_curve. + style_of_segmentation_curve)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (sssc\surface_style_segmentation_curve.style_of_segmentation_curve\ + curve_style_rendering.rendering_properties.rendered_colour)) + = 1))) )) = 0))) = 0))) = 0))) = 0; + WR15 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF (pss)) | + NOT (SIZEOF (QUERY (ssbd <* QUERY (sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_BOUNDARY' IN TYPEOF (sses)) | + NOT (( + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' + IN TYPEOF (ssbd\surface_style_boundary.style_of_boundary)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (ssbd\surface_style_boundary. + style_of_boundary\curve_style.curve_colour)) = 1) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF + (ssbd\surface_style_boundary. + style_of_boundary\curve_style.curve_width)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'CURVE_STYLE_FONT', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF + (ssbd\surface_style_boundary. + style_of_boundary\curve_style.curve_font)) = 1)) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE_RENDERING' + IN TYPEOF (ssbd\surface_style_boundary.style_of_boundary)) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (ssbd\surface_style_boundary.style_of_boundary\ + curve_style_rendering.rendering_properties.rendered_colour)) + = 1))) )) = 0))) = 0))) = 0))) = 0; + WR16 : SIZEOF (QUERY (si <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' + IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (psa <* si\styled_item.styles | + NOT (SIZEOF (QUERY (ssu <* QUERY (pss <* psa.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' + IN TYPEOF (pss)) | + NOT (SIZEOF (QUERY (ssre <* QUERY (sses <* + ssu\surface_style_usage.style\surface_side_style.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'SURFACE_STYLE_RENDERING' IN TYPEOF (sses)) | + NOT + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COLOUR_RGB', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF + (ssre\surface_style_rendering.surface_colour)) = 1))) + = 0))) = 0))) = 0))) = 0; +END_ENTITY; + + +ENTITY min_and_major_ply_orientation_basis + SUBTYPE OF (representation_item_relationship, geometric_representation_item); + SELF\representation_item_relationship.related_representation_item : axis2_placement_3d; + SELF\representation_item_relationship.relating_representation_item : axis2_placement_3d; +DERIVE + major_orientation_basis : axis2_placement_3d := SELF\representation_item_relationship.related_representation_item; + minor_orientation_basis : axis2_placement_3d := SELF\representation_item_relationship.relating_representation_item; +END_ENTITY; + + +ENTITY modified_geometric_tolerance + SUBTYPE OF (geometric_tolerance); + modifier : limit_condition; +END_ENTITY; + + +ENTITY modified_solid + ABSTRACT SUPERTYPE OF (ONEOF (edge_blended_solid, sculptured_solid, shelled_solid, modified_solid_with_placed_configuration)) + SUBTYPE OF (solid_model); + rationale : text; + base_solid : base_solid_select; +END_ENTITY; + + +ENTITY modified_solid_with_placed_configuration + ABSTRACT SUPERTYPE OF (ONEOF (solid_with_depression, solid_with_protrusion, solid_with_shape_element_pattern)) + SUBTYPE OF (modified_solid); + placing : axis2_placement_3d; +END_ENTITY; + + +ENTITY moments_of_inertia_representation + SUBTYPE OF (representation); +WHERE + WR1 : (SIZEOF(SELF.items) = 1) AND + (SIZEOF( QUERY( i <* SELF.items | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'COMPOUND_REPRESENTATION_ITEM' IN TYPEOF(i)) AND + (i.name = 'moments of inertia matrix') )) = 1); + WR2 : SIZEOF( QUERY( i <* SELF.items | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'COMPOUND_REPRESENTATION_ITEM' IN TYPEOF(i)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'LIST_REPRESENTATION_ITEM' IN TYPEOF(i\compound_representation_item.item_element)) AND + value_range_aggregate_rep_item (i\compound_representation_item.item_element) )) = 1; +END_ENTITY; + + +ENTITY multi_language_attribute_assignment + SUBTYPE OF (attribute_value_assignment); + items : SET [1:?] OF multi_language_attribute_item; +DERIVE + translation_language : language := language_indication[1]\attribute_classification_assignment.assigned_class; +INVERSE + language_indication: SET [1:1] OF attribute_language_assignment FOR items; +WHERE + WR1 : (SELF\attribute_value_assignment.role.name = 'alternate language'); + WR2 : SIZEOF( QUERY( ala <* language_indication | + (ala\attribute_classification_assignment.attribute_name = 'attribute_value') AND + (ala\attribute_classification_assignment.role.name='translated') )) = 1; + WR3 : SELF\attribute_value_assignment.attribute_name <> ''; + WR4 : SIZEOF(QUERY(ci <* items | +SIZEOF(QUERY(ata <* USEDIN(ci, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS') | +(ata\attribute_value_assignment.attribute_name = SELF\attribute_value_assignment.attribute_name) AND +(ata.translation_language :=: translation_language) ))>1 )) =0; + WR5 : SIZEOF(QUERY(ci <* items | +SIZEOF(QUERY(ata <* USEDIN(ci, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS') | + (ata\attribute_classification_assignment.role.name='primary') AND + (ata\attribute_classification_assignment.attribute_name= SELF\attribute_value_assignment.attribute_name) AND + (ata\attribute_classification_assignment.assigned_class :=: translation_language) ))>0 )) =0; +END_ENTITY; + + +ENTITY multiple_arity_boolean_expression + ABSTRACT SUPERTYPE + SUBTYPE OF (boolean_expression, multiple_arity_generic_expression); + SELF\multiple_arity_generic_expression.operands : LIST [2:?] OF boolean_expression; +END_ENTITY; + + +ENTITY multiple_arity_generic_expression + ABSTRACT SUPERTYPE + SUBTYPE OF (generic_expression); + operands : LIST [2:?] OF generic_expression; +END_ENTITY; + + +ENTITY multiple_arity_numeric_expression + ABSTRACT SUPERTYPE + SUBTYPE OF (numeric_expression, multiple_arity_generic_expression); + SELF\multiple_arity_generic_expression.operands : LIST [2:?] OF numeric_expression; +END_ENTITY; + + +ENTITY name_assignment + ABSTRACT SUPERTYPE; + assigned_name : label; +DERIVE + role : object_role := get_role(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; +END_ENTITY; + + +ENTITY name_attribute; + attribute_value : label; + named_item : name_attribute_select; +END_ENTITY; + + +ENTITY named_unit + SUPERTYPE OF ((ONEOF (si_unit, conversion_based_unit, context_dependent_unit) ANDOR ONEOF (length_unit, mass_unit, time_unit, electric_current_unit, thermodynamic_temperature_unit, amount_of_substance_unit, luminous_flux_unit, luminous_intensity_unit, plane_angle_unit, solid_angle_unit, ratio_unit))); + dimensions : dimensional_exponents; +END_ENTITY; + + +ENTITY next_assembly_usage_occurrence + SUBTYPE OF (assembly_component_usage); +END_ENTITY; + + +ENTITY non_manifold_surface_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF (QUERY (it <* SELF.items | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D'] * TYPEOF (it)) = 1))) + = 0; + WR2 : SIZEOF (QUERY (it <* SELF.items | + SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM'] * TYPEOF (it)) = 1)) > 0; + WR3 : SIZEOF (QUERY (mi <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'NON_MANIFOLD_SURFACE_SHAPE_REPRESENTATION' + IN TYPEOF (mi\mapped_item.mapping_source.mapped_representation)) + AND + (SIZEOF(QUERY (mr_it <* + mi\mapped_item.mapping_source.mapped_representation.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' + IN TYPEOF (mr_it)))) > 0 )))) = 0; + WR4 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + fbsm\face_based_surface_model.fbsm_faces | + NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_SURFACE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_FACE'] * TYPEOF (fa)) = 1))) + = 0))) = 0))) = 0; + WR5 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + fbsm\face_based_surface_model.fbsm_faces | + NOT (SIZEOF (QUERY (f_sf <* QUERY (fa <* cfs.cfs_faces | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_SURFACE' IN TYPEOF (fa))) | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (f_sf)) + OR + (nmsf_surface_check(f_sf\face_surface.face_geometry))))) = 0))) + = 0))) = 0; + WR6 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + fbsm\face_based_surface_model.fbsm_faces | + NOT (SIZEOF (QUERY (o_fa <* QUERY (fa <* cfs.cfs_faces | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_FACE' IN TYPEOF (fa))) | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF + (o_fa\oriented_face.face_element)) + OR + (nmsf_surface_check + (o_fa\oriented_face.face_element\face_surface.face_geometry))))) + = 0))) = 0))) = 0; + WR7 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + fbsm\face_based_surface_model.fbsm_faces | + NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (bnds <* fa.bounds | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP'] + * TYPEOF (bnds.bound)) = 1))) = 0)))) = 0))) = 0))) = 0; + WR8 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items| + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + fbsm\face_based_surface_model.fbsm_faces | + NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_CURVE' IN TYPEOF + (oe.edge_element)))) = 0))) = 0)))) = 0))) = 0))) = 0; + WR9 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + fbsm\face_based_surface_model.fbsm_faces | + NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (QUERY (oe_cv <* QUERY (oe <* + elp_fbnds\path.edge_list | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_CURVE' IN TYPEOF (oe.edge_element)) | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_3D', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE'] * + TYPEOF (oe_cv.edge_element\edge_curve.edge_geometry)) + = 1))) = 0))) = 0)))) = 0))) = 0))) = 0; + WR10 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + fbsm\face_based_surface_model.fbsm_faces | + NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list | + NOT (nmsf_curve_check (oe.edge_element\edge_curve.edge_geometry)))) + = 0))) = 0)))) = 0))) = 0))) = 0; + WR11 : SIZEOF (QUERY(fbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + fbsm\face_based_surface_model.fbsm_faces | + NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list| + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF + (oe.edge_element.edge_start)) + AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN + TYPEOF (oe.edge_element.edge_end))))) + = 0))) = 0)))) = 0))) = 0))) = 0; + WR12 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + fbsm\face_based_surface_model.fbsm_faces | + NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (elp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (QUERY (oe <* elp_fbnds\path.edge_list | + NOT ((SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DEGENERATE_PCURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_SURFACE'] * TYPEOF + (oe.edge_element.edge_start\vertex_point.vertex_geometry)) = 1) + AND + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DEGENERATE_PCURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_SURFACE'] * TYPEOF + (oe.edge_element.edge_end\vertex_point.vertex_geometry)) = 1 + )))) = 0))) = 0)))) = 0))) = 0))) = 0; + WR13 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + fbsm\face_based_surface_model.fbsm_faces | + NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (vlp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP' IN TYPEOF (bnds.bound)) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF + (vlp_fbnds\vertex_loop.loop_vertex)))) = 0)))) = 0))) + = 0))) = 0; + WR14 : SIZEOF (QUERY (fbsm <* QUERY (it <* SELF.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BASED_SURFACE_MODEL' IN TYPEOF (it)) | + NOT (SIZEOF (QUERY (cfs <* + fbsm\face_based_surface_model.fbsm_faces | + NOT (SIZEOF (QUERY (fa <* cfs.cfs_faces | + NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF (fa)) + OR + (SIZEOF (QUERY (vlp_fbnds <* QUERY (bnds <* fa.bounds | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP' IN TYPEOF (bnds.bound)) | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DEGENERATE_PCURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_SURFACE'] * TYPEOF + (vlp_fbnds\vertex_loop.loop_vertex\vertex_point.vertex_geometry)) + = 1))) = 0)))) = 0))) = 0))) = 0; +END_ENTITY; + + +ENTITY null_representation_item + SUBTYPE OF (representation_item); +END_ENTITY; + + +ENTITY numeric_expression + ABSTRACT SUPERTYPE OF (ONEOF (simple_numeric_expression, unary_numeric_expression, binary_numeric_expression, multiple_arity_numeric_expression)) + SUBTYPE OF (expression); +DERIVE + is_int : LOGICAL := is_int_expr (SELF); + sql_mappable : LOGICAL := is_SQL_mappable (SELF); +END_ENTITY; + + +ENTITY object_role; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY offset_curve_2d + SUBTYPE OF (curve); + basis_curve : curve; + distance : length_measure; + self_intersect : LOGICAL; +WHERE + WR1 : basis_curve.dim = 2; +END_ENTITY; + + +ENTITY offset_curve_3d + SUBTYPE OF (curve); + basis_curve : curve; + distance : length_measure; + self_intersect : LOGICAL; + ref_direction : direction; +WHERE + WR1 : (basis_curve.dim = 3) AND (ref_direction.dim = 3); +END_ENTITY; + + +ENTITY offset_surface + SUBTYPE OF (surface); + basis_surface : surface; + distance : length_measure; + self_intersect : LOGICAL; +END_ENTITY; + + +ENTITY one_direction_repeat_factor + SUBTYPE OF (geometric_representation_item); + repeat_factor : vector; +END_ENTITY; + + +ENTITY open_shell + SUBTYPE OF (connected_face_set); +END_ENTITY; + + +ENTITY ordinal_date + SUBTYPE OF (date); + day_component : day_in_year_number; +WHERE + WR1 : (NOT leap_year(SELF.year_component) AND { 1 <= day_component <= 365 }) OR (leap_year(SELF.year_component) AND { 1 <= day_component <= 366 }); +END_ENTITY; + + +ENTITY ordinate_dimension + SUBTYPE OF (projection_directed_callout); +END_ENTITY; + + +ENTITY organization; + id : OPTIONAL identifier; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY organization_assignment + ABSTRACT SUPERTYPE; + assigned_organization : organization; + role : organization_role; +END_ENTITY; + + +ENTITY organization_relationship; + name : label; + description : OPTIONAL text; + relating_organization : organization; + related_organization : organization; +END_ENTITY; + + +ENTITY organization_role; + name : label; +DERIVE + description : text := get_description_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY organizational_address + SUBTYPE OF (address); + organizations : SET [1:?] OF organization; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY organizational_project; + name : label; + description : OPTIONAL text; + responsible_organizations : SET [1:?] OF organization; +DERIVE + id : identifier := get_id_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY organizational_project_assignment + ABSTRACT SUPERTYPE; + assigned_organizational_project : organizational_project; + role : organizational_project_role; +END_ENTITY; + + +ENTITY organizational_project_relationship; + name : label; + description : OPTIONAL text; + relating_organizational_project : organizational_project; + related_organizational_project : organizational_project; +END_ENTITY; + + +ENTITY organizational_project_role; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY oriented_closed_shell + SUBTYPE OF (closed_shell); + closed_shell_element : closed_shell; + orientation : BOOLEAN; +DERIVE + SELF\connected_face_set.cfs_faces : SET [1:?] OF face := conditional_reverse(SELF.orientation, + SELF.closed_shell_element.cfs_faces); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_CLOSED_SHELL' + IN TYPEOF (SELF.closed_shell_element)); +END_ENTITY; + + +ENTITY oriented_edge + SUBTYPE OF (edge); + edge_element : edge; + orientation : BOOLEAN; +DERIVE + SELF\edge.edge_end : vertex := boolean_choose (SELF.orientation, + SELF.edge_element.edge_end, + SELF.edge_element.edge_start); + SELF\edge.edge_start : vertex := boolean_choose (SELF.orientation, + SELF.edge_element.edge_start, + SELF.edge_element.edge_end); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_EDGE' IN TYPEOF (SELF.edge_element)); +END_ENTITY; + + +ENTITY oriented_face + SUBTYPE OF (face); + face_element : face; + orientation : BOOLEAN; +DERIVE + SELF\face.bounds : SET [1:?] OF face_bound := conditional_reverse(SELF.orientation,SELF.face_element.bounds); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_FACE' IN TYPEOF (SELF.face_element)); +END_ENTITY; + + +ENTITY oriented_open_shell + SUBTYPE OF (open_shell); + open_shell_element : open_shell; + orientation : BOOLEAN; +DERIVE + SELF\connected_face_set.cfs_faces : SET [1:?] OF face := conditional_reverse(SELF.orientation, + SELF.open_shell_element.cfs_faces); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_OPEN_SHELL' + IN TYPEOF (SELF.open_shell_element)); +END_ENTITY; + + +ENTITY oriented_path + SUBTYPE OF (path); + path_element : path; + orientation : BOOLEAN; +DERIVE + SELF\path.edge_list : LIST [1:?] OF UNIQUE oriented_edge := conditional_reverse(SELF.orientation, + SELF.path_element.edge_list); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_PATH' IN TYPEOF (SELF.path_element)); +END_ENTITY; + + +ENTITY oriented_surface + SUBTYPE OF (surface); + orientation : BOOLEAN; +END_ENTITY; + + +ENTITY outer_boundary_curve + SUBTYPE OF (boundary_curve); +END_ENTITY; + + +ENTITY over_riding_styled_item + SUBTYPE OF (styled_item); + over_ridden_style : styled_item; +END_ENTITY; + + +ENTITY package_product_concept_feature + SUBTYPE OF (product_concept_feature); +WHERE + WR1 : NOT ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONDITIONAL_CONCEPT_FEATURE' IN TYPEOF ( SELF ) ); + WR2 : SIZEOF ( QUERY + ( + cfr <* USEDIN ( SELF , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONCEPT_FEATURE_RELATIONSHIP.' +'RELATING_PRODUCT_CONCEPT_FEATURE' ) + | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION' IN TYPEOF (cfr ) ) + AND + ( SIZEOF ( QUERY + ( + ipcf <* USEDIN ( cfr , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONDITIONAL_CONCEPT_FEATURE.' + 'CONDITION' ) + | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'INCLUSION_PRODUCT_CONCEPT_FEATURE' IN TYPEOF ( ipcf ) + ) + )= 1 + ) + ) + )>0; +END_ENTITY; + + +ENTITY parabola + SUBTYPE OF (conic); + focal_dist : length_measure; +WHERE + WR1 : focal_dist <> 0.0; +END_ENTITY; + + +ENTITY parallel_offset + SUBTYPE OF (derived_shape_aspect); + offset : measure_with_unit; +WHERE + WR1 : SIZEOF (SELF\derived_shape_aspect.deriving_relationships)= 1; +END_ENTITY; + + +ENTITY parallelism_tolerance + SUBTYPE OF (geometric_tolerance_with_datum_reference); +WHERE + WR1 : SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) < 3; +END_ENTITY; + + +ENTITY parametric_representation_context + SUBTYPE OF (representation_context); +END_ENTITY; + + +ENTITY part_laminate_table + SUPERTYPE OF (ONEOF (composite_assembly_table, ply_laminate_table)) + SUBTYPE OF (laminate_table); +END_ENTITY; + + +ENTITY partial_document_with_structured_text_representation_assignment + SUBTYPE OF (applied_document_usage_constraint_assignment, characterized_object); +END_ENTITY; + + +ENTITY path + SUPERTYPE OF (ONEOF (edge_loop, oriented_path)) + SUBTYPE OF (topological_representation_item); + edge_list : LIST [1:?] OF UNIQUE oriented_edge; +WHERE + WR1 : path_head_to_tail(SELF); +END_ENTITY; + + +ENTITY pcurve + SUBTYPE OF (curve); + basis_surface : surface; + reference_to_curve : definitional_representation; +WHERE + WR1 : SIZEOF(reference_to_curve\representation.items) = 1; + WR2 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE' IN TYPEOF + (reference_to_curve\representation.items[1]); + WR3 : reference_to_curve\representation.items[1]\ + geometric_representation_item.dim =2; +END_ENTITY; + + +ENTITY percentage_laminate_definition + SUBTYPE OF (product_definition); +WHERE + WR1 : SIZEOF (QUERY (pdr <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRODUCT_DEFINITION_RELATIONSHIP.' + + 'RELATING_PRODUCT_DEFINITION') | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'NEXT_ASSEMBLY_USAGE_OCCURRENCE' IN + TYPEOF (pdr))) > 0; +END_ENTITY; + + +ENTITY percentage_laminate_table + SUBTYPE OF (zone_structural_makeup); +END_ENTITY; + + +ENTITY percentage_ply_definition + SUBTYPE OF (product_definition); +WHERE + WR1 : SIZEOF (QUERY (pdr <* USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRODUCT_DEFINITION_RELATIONSHIP.RELATING_PRODUCT_DEFINITION') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PERCENTAGE_LAMINATE_DEFINITION' + IN TYPEOF (pdr.related_product_definition)) AND + (pdr.name = 'makeup and properties'))) = 0; +END_ENTITY; + + +ENTITY perpendicular_to + SUBTYPE OF (derived_shape_aspect); +WHERE + WR1 : SIZEOF (SELF\derived_shape_aspect.deriving_relationships)= 1; +END_ENTITY; + + +ENTITY perpendicularity_tolerance + SUBTYPE OF (geometric_tolerance_with_datum_reference); +WHERE + WR1 : SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) <= 3; +END_ENTITY; + + +ENTITY person; + id : identifier; + last_name : OPTIONAL label; + first_name : OPTIONAL label; + middle_names : OPTIONAL LIST [1:?] OF label; + prefix_titles : OPTIONAL LIST [1:?] OF label; + suffix_titles : OPTIONAL LIST [1:?] OF label; +WHERE + WR1 : EXISTS(last_name) OR EXISTS(first_name); +END_ENTITY; + + +ENTITY person_and_organization; + the_person : person; + the_organization : organization; +DERIVE + description : text := get_description_value(SELF); + name : label := get_name_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1; + WR2 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY person_and_organization_address + SUBTYPE OF (organizational_address, personal_address); + SELF\organizational_address.organizations : SET [1:1] OF organization; + SELF\personal_address.people : SET [1:1] OF person; +WHERE + WR1 : SIZEOF(QUERY(pao <* USEDIN (SELF\personal_address.people[1], 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PERSON_AND_ORGANIZATION.THE_PERSON') | pao.the_organization :=: SELF\organizational_address.organizations[1])) = 1; +END_ENTITY; + + +ENTITY person_and_organization_assignment + ABSTRACT SUPERTYPE; + assigned_person_and_organization : person_and_organization; + role : person_and_organization_role; +END_ENTITY; + + +ENTITY person_and_organization_role; + name : label; +DERIVE + description : text := get_description_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY personal_address + SUBTYPE OF (address); + people : SET [1:?] OF person; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY physical_breakdown_context + SUBTYPE OF (breakdown_context); +END_ENTITY; + + +ENTITY physical_element_usage + SUBTYPE OF (breakdown_element_usage); +END_ENTITY; + + +ENTITY picture_representation + SUBTYPE OF (presentation_view); + SELF\representation.items : SET [2:?] OF picture_representation_item_select; +INVERSE + size: presentation_size FOR unit; +WHERE + WR1: SIZEOF(QUERY(item <* items | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' IN TYPEOF(item))) = 1; + WR2: SIZEOF (QUERY (se <* QUERY (item <* SELF.items | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STYLED_ITEM' IN TYPEOF (item))) + | NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PICTURE_REPRESENTATION_ITEM' + IN TYPEOF (se\styled_item.item)) )) = 0; +END_ENTITY; + + +ENTITY picture_representation_item + ABSTRACT SUPERTYPE OF (ONEOF (externally_defined_picture_representation_item, predefined_picture_representation_item)) + SUBTYPE OF (bytes_representation_item); +END_ENTITY; + + +ENTITY placed_datum_target_feature + SUBTYPE OF (datum_target); +DERIVE + representation_associations : SET [0:?] OF property_definition_representation := get_shape_aspect_property_definition_representations(SELF); +WHERE + WR1 : SELF.description IN ['point','line','rectangle','circle', 'circular line']; + WR2 : SIZEOF (QUERY (pdr <* representation_associations | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF (pdr.used_representation) )) = 1; + WR3 : valid_datum_target_parameters(SELF); +END_ENTITY; + + +ENTITY placed_feature + SUBTYPE OF (shape_aspect); +END_ENTITY; + + +ENTITY placement + SUPERTYPE OF (ONEOF (axis1_placement, axis2_placement_2d, axis2_placement_3d)) + SUBTYPE OF (geometric_representation_item); + location : cartesian_point; +END_ENTITY; + + +ENTITY planar_box + SUBTYPE OF (planar_extent); + placement : axis2_placement; +END_ENTITY; + + +ENTITY planar_extent + SUBTYPE OF (geometric_representation_item); + size_in_x : length_measure; + size_in_y : length_measure; +END_ENTITY; + + +ENTITY plane + SUBTYPE OF (elementary_surface); +END_ENTITY; + + +ENTITY plane_angle_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE_ANGLE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY plane_angle_unit + SUBTYPE OF (named_unit); +WHERE + WR1 : (SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 0.0) AND (SELF\named_unit.dimensions.time_exponent = 0.0) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0); +END_ENTITY; + + +ENTITY plus_minus_tolerance; + range : tolerance_method_definition; + toleranced_dimension : dimensional_characteristic; +UNIQUE + UR1 : toleranced_dimension; +END_ENTITY; + + +ENTITY ply_laminate_definition + SUBTYPE OF (product_definition); +WHERE + WR1 : SIZEOF (QUERY (pdr <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRODUCT_DEFINITION_RELATIONSHIP.' + + 'RELATING_PRODUCT_DEFINITION') | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'NEXT_ASSEMBLY_USAGE_OCCURRENCE' IN + TYPEOF (pdr))) = 1; +END_ENTITY; + + +ENTITY ply_laminate_sequence_definition + SUBTYPE OF (product_definition); +WHERE + WR1 : SIZEOF (QUERY (pdr <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRODUCT_DEFINITION_RELATIONSHIP.' + + 'RELATING_PRODUCT_DEFINITION') | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'NEXT_ASSEMBLY_USAGE_OCCURRENCE' IN + TYPEOF (pdr))) > 0; +END_ENTITY; + + +ENTITY ply_laminate_table + SUBTYPE OF (part_laminate_table); +END_ENTITY; + + +ENTITY point + SUPERTYPE OF (ONEOF (cartesian_point, point_on_curve, point_on_surface, point_replica, degenerate_pcurve)) + SUBTYPE OF (geometric_representation_item); +END_ENTITY; + + +ENTITY point_and_vector + SUBTYPE OF (compound_representation_item, geometric_representation_item); + SELF\compound_representation_item.item_element : point_and_vector_members; +END_ENTITY; + + +ENTITY point_on_curve + SUBTYPE OF (point); + basis_curve : curve; + point_parameter : parameter_value; +END_ENTITY; + + +ENTITY point_on_surface + SUBTYPE OF (point); + basis_surface : surface; + point_parameter_u : parameter_value; + point_parameter_v : parameter_value; +END_ENTITY; + + +ENTITY point_path + SUBTYPE OF (compound_representation_item, geometric_representation_item); + SELF\compound_representation_item.item_element : point_path_members; +END_ENTITY; + + +ENTITY point_replica + SUBTYPE OF (point); + parent_pt : point; + transformation : cartesian_transformation_operator; +WHERE + WR1 : transformation.dim = parent_pt.dim; + WR2 : acyclic_point_replica (SELF,parent_pt); +END_ENTITY; + + +ENTITY point_style + SUBTYPE OF (founded_item); + name : label; + marker : marker_select; + marker_size : size_select; + marker_colour : colour; +END_ENTITY; + + +ENTITY polar_complex_number_literal + SUBTYPE OF (generic_literal); + radius : REAL; + angle : REAL; +WHERE + WR1 : radius >= 0; + WR2 : { 0 <= angle < 2*PI }; +END_ENTITY; + + +ENTITY poly_loop + SUBTYPE OF (loop, geometric_representation_item); + polygon : LIST [3:?] OF UNIQUE cartesian_point; +END_ENTITY; + + +ENTITY polyline + SUBTYPE OF (bounded_curve); + points : LIST [2:?] OF cartesian_point; +END_ENTITY; + + +ENTITY position_tolerance + SUBTYPE OF (geometric_tolerance); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF (SELF)) OR ( SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) <= 3); +END_ENTITY; + + +ENTITY positioned_sketch + SUBTYPE OF (geometric_representation_item); + sketch_basis : sketch_basis_select; + auxiliary_elements : SET [0:?] OF auxiliary_geometric_representation_item; +WHERE + WR1 : NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_BOUNDED_SURFACE' IN + TYPEOF(sketch_basis)) AND NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE' IN + TYPEOF(sketch_basis\curve_bounded_surface.basis_surface))); + WR2 : NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_SURFACE' IN TYPEOF(sketch_basis)) AND + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE' IN TYPEOF(sketch_basis\face_surface.face_geometry))); + WR3 : SIZEOF(QUERY(q <* auxiliary_elements | (SIZEOF(TYPEOF(q) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT','AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE']) = 0))) = 0; + WR4 : SIZEOF(QUERY(q <* auxiliary_elements | + q\geometric_representation_item.dim <> 3)) = 0; +END_ENTITY; + + +ENTITY power_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POWER_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY power_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.watt); +END_ENTITY; + + +ENTITY pre_defined_colour + SUBTYPE OF (pre_defined_item, colour); +END_ENTITY; + + +ENTITY pre_defined_curve_font + SUBTYPE OF (pre_defined_item); +END_ENTITY; + + +ENTITY pre_defined_dimension_symbol + SUBTYPE OF (pre_defined_symbol); +WHERE + WR1 : SELF.name IN [ 'arc length' , 'conical taper' , 'counterbore' , 'countersink' , 'depth' , 'diameter' , 'plus minus' , 'radius' , 'slope' , 'spherical diameter' , 'spherical radius' , 'square']; +END_ENTITY; + + +ENTITY pre_defined_geometrical_tolerance_symbol + SUBTYPE OF (pre_defined_symbol); +WHERE + WR1 : SELF.name IN ['angularity' , 'basic dimension' , 'blanked datum reference' , 'circular runout' , 'circularity' , 'concentricity' , 'cylindricity' , 'datum target identification' , 'diameter' , 'filled datum reference' , 'flatness' , 'least material condition' , 'maximum material condition' , 'parallelism' , 'perpendicularity' , 'position' , 'profile of a line' , 'profile of a surface' , 'projected tolerance zone' , 'regardless of feature size' , 'straightness' , 'symmetry' , 'total runout' ]; +END_ENTITY; + + +ENTITY pre_defined_item; + name : label; +END_ENTITY; + + +ENTITY pre_defined_marker + SUBTYPE OF (pre_defined_item); +END_ENTITY; + + +ENTITY pre_defined_point_marker_symbol + SUBTYPE OF (pre_defined_marker, pre_defined_symbol); +WHERE + WR1 : SELF.name IN ['asterisk','circle','dot','plus','square','triangle','x']; +END_ENTITY; + + +ENTITY pre_defined_surface_condition_symbol + SUBTYPE OF (pre_defined_symbol); +WHERE + WR1 : SELF.name IN ['000' , '010' , '020' , '030' , '040' , '050' , '060' , '070' , '001' , '011' , '021' , '031' , '041' , '051' , '061' , '071' , '100' , '110' , '120' , '130' , '140' , '150' , '160' , '170' , '101' , '111' , '121' , '131' , '141' , '151' , '161' , '171' , '200' , '210' , '220' , '230' , '240' , '250' , '260' , '270' , '201' , '211' , '221' , '231' , '241' , '251' , '261' , '271']; +END_ENTITY; + + +ENTITY pre_defined_surface_side_style + SUBTYPE OF (pre_defined_item); +END_ENTITY; + + +ENTITY pre_defined_symbol + SUBTYPE OF (pre_defined_item); +END_ENTITY; + + +ENTITY pre_defined_terminator_symbol + SUBTYPE OF (pre_defined_symbol); +WHERE + WR1 : SELF.name IN ['blanked arrow', 'blanked box', 'blanked dot', 'blanked triangle', 'dimension origin', 'filled arrow', 'filled box', 'filled dot', 'integral symbol', 'open arrow', 'slash', 'unfilled arrow', 'unfilled triangle', 'filled triangle']; +END_ENTITY; + + +ENTITY pre_defined_text_font + SUBTYPE OF (pre_defined_item); +END_ENTITY; + + +ENTITY pre_defined_tile + SUBTYPE OF (pre_defined_item); +END_ENTITY; + + +ENTITY precision_qualifier; + precision_value : INTEGER; +END_ENTITY; + + +ENTITY predefined_picture_representation_item + SUBTYPE OF (picture_representation_item); +WHERE + WR1 : SELF\representation_item.name IN pre_defined_picture_representation_types; +END_ENTITY; + + +ENTITY presentation_area + SUBTYPE OF (presentation_representation); +WHERE + WR1 : ((SIZEOF (QUERY (ais <* USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'AREA_IN_SET.AREA') | + SIZEOF (USEDIN (ais, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT')) =1)) > 0) OR + (SIZEOF (USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_SIZE.UNIT')) =1)); +END_ENTITY; + + +ENTITY presentation_layer_assignment; + name : label; + description : text; + assigned_items : SET [1:?] OF layered_item; +END_ENTITY; + + +ENTITY presentation_representation + SUPERTYPE OF (ONEOF (presentation_area, presentation_view)) + SUBTYPE OF (representation); + SELF\representation.context_of_items : geometric_representation_context; +WHERE + WR1 : SELF\representation. + context_of_items\geometric_representation_context. + coordinate_space_dimension = 2; + WR2 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESENTATION_AREA' IN TYPEOF (SELF)) + OR + (SIZEOF (QUERY (prr <* USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'REPRESENTATION_RELATIONSHIP.REP_2') | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESENTATION_REPRESENTATION' IN + TYPEOF (prr\representation_relationship.rep_1))) > 0) + OR + (SIZEOF(QUERY( rm <* USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'REPRESENTATION_MAP.'+ + 'MAPPED_REPRESENTATION') | + SIZEOF(QUERY( mi <* USEDIN(rm, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'MAPPED_ITEM.'+ + 'MAPPING_SOURCE') | + SIZEOF(QUERY( rep <* using_representations (mi) | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'PRESENTATION_REPRESENTATION' IN + TYPEOF (rep))) > 0 + )) > 0)) + > 0); +END_ENTITY; + + +ENTITY presentation_set; +INVERSE + areas: SET [1:?] OF area_in_set FOR in_set; +END_ENTITY; + + +ENTITY presentation_size; + unit : presentation_size_assignment_select; + size : planar_box; +UNIQUE + UR1 : unit; +WHERE + WR1 : (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESENTATION_REPRESENTATION' + IN TYPEOF (SELF.unit)) AND + item_in_context (SELF.size, + SELF.unit\representation.context_of_items) + ) + OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AREA_IN_SET' + IN TYPEOF (SELF.unit)) AND + (SIZEOF (QUERY ( ais <* SELF.unit\area_in_set.in_set.areas | + NOT item_in_context (SELF.size, ais.area\representation. + context_of_items) )) = 0)); +END_ENTITY; + + +ENTITY presentation_style_assignment + SUBTYPE OF (founded_item); + styles : SET [1:?] OF presentation_style_select; +WHERE + WR1 : SIZEOF (QUERY (style1 <* SELF.styles | + NOT (SIZEOF (QUERY (style2 <* (SELF.styles - style1) | + NOT ((TYPEOF (style1) <> TYPEOF (style2)) OR + (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SURFACE_STYLE_USAGE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'EXTERNALLY_DEFINED_STYLE'] * + TYPEOF (style1)) = 1) + ))) = 0 + ))) = 0; + WR2 : SIZEOF (QUERY (style1 <* SELF.styles | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' IN + TYPEOF(style1) + )) <= 2; + WR3 : SIZEOF (QUERY (style1 <* SELF.styles | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' IN TYPEOF (style1)) AND + (SIZEOF (QUERY (style2 <* (SELF.styles - style1) | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_STYLE_USAGE' IN TYPEOF (style2)) AND + ((style1\surface_style_usage.side = both) OR + (style2\surface_style_usage.side = both) OR + (style1\surface_style_usage.side = style2\surface_style_usage.side)) )) > 0))) = 0; +END_ENTITY; + + +ENTITY presentation_style_by_context + SUBTYPE OF (presentation_style_assignment); + style_context : style_context_select; +END_ENTITY; + + +ENTITY presentation_view + SUBTYPE OF (presentation_representation); +END_ENTITY; + + +ENTITY presented_item + ABSTRACT SUPERTYPE; +END_ENTITY; + + +ENTITY presented_item_representation; + presentation : presentation_representation_select; + item : presented_item; +END_ENTITY; + + +ENTITY pressure_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESSURE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY pressure_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.pascal); +END_ENTITY; + + +ENTITY procedural_representation + SUBTYPE OF (representation); + SELF\representation.items : SET [1:?] OF procedural_representation_sequence; +END_ENTITY; + + +ENTITY procedural_representation_sequence + SUBTYPE OF (representation_item); + elements : LIST [1:?] OF representation_item; + suppressed_items : SET [0:?] OF representation_item; + rationale : text; +WHERE + WR1 : SIZEOF(QUERY(q <* suppressed_items | NOT (q IN elements))) = 0; +END_ENTITY; + + +ENTITY procedural_shape_representation + SUBTYPE OF (procedural_representation, shape_representation); + SELF\representation.items : SET [1:?] OF procedural_shape_representation_sequence; +END_ENTITY; + + +ENTITY procedural_shape_representation_sequence + SUBTYPE OF (geometric_representation_item, procedural_representation_sequence); +WHERE + WR1 : SIZEOF(QUERY(q <* SELF\procedural_representation_sequence.elements + | NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_REPRESENTATION_ITEM' + IN TYPEOF(q)))) = 0; +END_ENTITY; + + +ENTITY product; + id : identifier; + name : label; + description : OPTIONAL text; + frame_of_reference : SET [1:?] OF product_context; +END_ENTITY; + + +ENTITY product_category; + name : label; + description : OPTIONAL text; +DERIVE + id : identifier := get_id_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY product_class + SUBTYPE OF (product_concept, characterized_object); +END_ENTITY; + + +ENTITY product_concept; + id : identifier; + name : label; + description : OPTIONAL text; + market_context : product_concept_context; +UNIQUE + UR1 : id; +END_ENTITY; + + +ENTITY product_concept_context + SUBTYPE OF (application_context_element); + market_segment_type : label; +END_ENTITY; + + +ENTITY product_concept_feature; + id : identifier; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY product_concept_feature_association; + name : label; + description : OPTIONAL text; + concept : product_concept; + feature : product_concept_feature; +END_ENTITY; + + +ENTITY product_concept_feature_category + SUBTYPE OF (group); +WHERE + WR1 : SIZEOF(QUERY + ( + aga <* USEDIN( SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GROUP_ASSIGNMENT.ASSIGNED_GROUP' ) + | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'APPLIED_GROUP_ASSIGNMENT' IN TYPEOF(aga)) + AND + ( + ( aga.role.name <> 'specification category member' ) + OR + ( SIZEOF(QUERY + ( + i <* aga.items + | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'PRODUCT_CONCEPT_FEATURE' IN TYPEOF ( i ) ) + AND + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'CONDITIONAL_CONCEPT_FEATURE' IN TYPEOF (i)) + ) + ) <> SIZEOF (aga.items) + ) + ) + ) + ) =0; +END_ENTITY; + + +ENTITY product_concept_feature_category_usage + SUBTYPE OF (group_assignment); + items : SET [1:?] OF category_usage_item; + SELF\group_assignment.assigned_group : product_concept_feature_category; +WHERE + WR1 : SELF.role.name IN [ 'mandatory category usage', 'optional category usage' ]; +END_ENTITY; + + +ENTITY product_concept_relationship; + name : label; + description : OPTIONAL text; + relating_product_concept : product_concept; + related_product_concept : product_concept; +END_ENTITY; + + +ENTITY product_context + SUBTYPE OF (application_context_element); + discipline_type : label; +END_ENTITY; + + +ENTITY product_definition + SUPERTYPE OF (ONEOF (composite_assembly_definition, composite_assembly_sequence_definition, laminate_table, percentage_laminate_definition, percentage_ply_definition, ply_laminate_definition, ply_laminate_sequence_definition, thickness_laminate_definition)); + id : identifier; + description : OPTIONAL text; + formation : product_definition_formation; + frame_of_reference : product_definition_context; +DERIVE + name : label := get_name_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY product_definition_context + SUBTYPE OF (application_context_element); + life_cycle_stage : label; +END_ENTITY; + + +ENTITY product_definition_context_association; + definition : product_definition; + frame_of_reference : product_definition_context; + role : product_definition_context_role; +END_ENTITY; + + +ENTITY product_definition_context_role; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY product_definition_effectivity + SUBTYPE OF (effectivity); + usage : product_definition_relationship; +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'EFFECTIVITY_ASSIGNMENT.ASSIGNED_EFFECTIVITY')) = 0; +END_ENTITY; + + +ENTITY product_definition_element_relationship + SUBTYPE OF (group); +END_ENTITY; + + +ENTITY product_definition_formation; + id : identifier; + description : OPTIONAL text; + of_product : product; +UNIQUE + UR1 : id, of_product; +END_ENTITY; + + +ENTITY product_definition_formation_relationship; + id : identifier; + name : label; + description : OPTIONAL text; + relating_product_definition_formation : product_definition_formation; + related_product_definition_formation : product_definition_formation; +END_ENTITY; + + +ENTITY product_definition_formation_with_specified_source + SUBTYPE OF (product_definition_formation); + make_or_buy : source; +END_ENTITY; + + +ENTITY product_definition_group_assignment + SUBTYPE OF (group_assignment); + items : SET [1:1] OF product_definition_or_product_definition_relationship; + SELF\group_assignment.assigned_group : product_definition_element_relationship; +END_ENTITY; + + +ENTITY product_definition_occurrence_relationship; + name : label; + description : OPTIONAL text; + occurrence : product_definition; + occurrence_usage : assembly_component_usage; +WHERE + WR1 : occurrence_usage.relating_product_definition :<>: + occurrence; + WR2 : occurrence_usage.related_product_definition :<>: + occurrence; + WR3 : occurrence.formation :=: + occurrence_usage.related_product_definition.formation; +END_ENTITY; + + +ENTITY product_definition_relationship; + id : identifier; + name : label; + description : OPTIONAL text; + relating_product_definition : product_definition; + related_product_definition : product_definition; +END_ENTITY; + + +ENTITY product_definition_shape + SUBTYPE OF (property_definition); +UNIQUE + UR1: SELF\property_definition.definition; +WHERE + WR1 : SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CHARACTERIZED_PRODUCT_DEFINITION', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CHARACTERIZED_OBJECT'] * TYPEOF(SELF\property_definition.definition)) > 0; +END_ENTITY; + + +ENTITY product_definition_substitute; + description : OPTIONAL text; + context_relationship : product_definition_relationship; + substitute_definition : product_definition; +DERIVE + name : label := get_name_value(SELF); +WHERE + WR1 : context_relationship.related_product_definition :<>: substitute_definition; + WR2 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY product_definition_usage + SUPERTYPE OF (ONEOF (make_from_usage_option, assembly_component_usage)) + SUBTYPE OF (product_definition_relationship); +UNIQUE + UR1: SELF\product_definition_relationship.id, + SELF\product_definition_relationship.relating_product_definition, + SELF\product_definition_relationship.related_product_definition; + WHERE + WR1 : acyclic_product_definition_relationship + (SELF, + [SELF\product_definition_relationship.related_product_definition], + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION_USAGE'); +END_ENTITY; + + +ENTITY product_definition_with_associated_documents + SUBTYPE OF (product_definition); + documentation_ids : SET [1:?] OF document; +END_ENTITY; + + +ENTITY product_identification + SUBTYPE OF (configuration_item, characterized_object); + SELF\configuration_item.item_concept : product_class; +WHERE + WR1 : SIZEOF(QUERY + ( cd <* USEDIN ( SELF ,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONFIGURATION_DESIGN.CONFIGURATION' ) + | + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'PRODUCT_DEFINITION_FORMATION' IN TYPEOF ( cd. design ) ) + AND + ( SIZEOF ( QUERY + ( + prpc <* USEDIN ( cd. design\product_definition_formation.of_product , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') + | + prpc. name IN ['part' , 'raw material' , 'tool'] ) ) >0 + ) + ) + ) <=1; + WR2 : NOT ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'CONFIGURABLE_ITEM' IN TYPEOF( SELF ) ) + XOR ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'PRODUCT_SPECIFICATION' IN TYPEOF ( SELF ) ); +END_ENTITY; + + +ENTITY product_material_composition_relationship + SUBTYPE OF (product_definition_relationship); + class : label; + constituent_amount : SET [1:?] OF characterized_product_composition_value; + composition_basis : label; + determination_method : text; +END_ENTITY; + + +ENTITY product_related_product_category + SUBTYPE OF (product_category); + products : SET [1:?] OF product; +END_ENTITY; + + +ENTITY product_specification + SUBTYPE OF (product_identification, configurable_item); +END_ENTITY; + + +ENTITY projected_zone_definition + SUBTYPE OF (tolerance_zone_definition); + projection_end : shape_aspect; + projected_length : measure_with_unit; +WHERE + WR1 : ('NUMBER' IN TYPEOF + (projected_length\measure_with_unit.value_component)) AND + (projected_length\measure_with_unit.value_component > 0.0); + WR2 : (derive_dimensional_exponents + (projected_length\measure_with_unit.unit_component)= + dimensional_exponents(1,0,0,0,0,0,0)); +END_ENTITY; + + +ENTITY projection_curve + SUBTYPE OF (annotation_curve_occurrence); +END_ENTITY; + + +ENTITY projection_directed_callout + SUBTYPE OF (draughting_callout); +WHERE + WR1 : SIZEOF(QUERY(p_1<*SELF\draughting_callout.contents | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROJECTION_CURVE' IN (TYPEOF(p_1))))=1; + WR2 : SIZEOF(SELF\draughting_callout.contents) >=2; +END_ENTITY; + + +ENTITY promissory_usage_occurrence + SUBTYPE OF (assembly_component_usage); +END_ENTITY; + + +ENTITY property_definition; + name : label; + description : OPTIONAL text; + definition : characterized_definition; +DERIVE + id : identifier := get_id_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY property_definition_relationship; + name : label; + description : text; + relating_property_definition : property_definition; + related_property_definition : property_definition; +END_ENTITY; + + +ENTITY property_definition_representation; + definition : represented_definition; + used_representation : representation; +DERIVE + description : text := get_description_value(SELF); + name : label := get_name_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) <= 1; + WR2 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY qualified_representation_item + SUBTYPE OF (representation_item); + qualifiers : SET [1:?] OF value_qualifier; +WHERE + WR1 : SIZEOF(QUERY(temp <* qualifiers | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRECISION_QUALIFIER' + IN TYPEOF(temp))) < 2; +END_ENTITY; + + +ENTITY qualitative_uncertainty + SUBTYPE OF (uncertainty_qualifier); + uncertainty_value : text; +END_ENTITY; + + +ENTITY quantified_assembly_component_usage + SUBTYPE OF (assembly_component_usage); + quantity : measure_with_unit; +WHERE + WR1 : (NOT ('NUMBER' IN TYPEOF(quantity.value_component))) + OR (quantity.value_component > 0); +END_ENTITY; + + +ENTITY quasi_uniform_curve + SUBTYPE OF (b_spline_curve); +END_ENTITY; + + +ENTITY quasi_uniform_surface + SUBTYPE OF (b_spline_surface); +END_ENTITY; + + +ENTITY radioactivity_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RADIOACTIVITY_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY radioactivity_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.becquerel); +END_ENTITY; + + +ENTITY radius_dimension + SUBTYPE OF (dimension_curve_directed_callout); +WHERE + WR1 : SIZEOF (QUERY (con <* SELF.contents | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROJECTION_CURVE' IN TYPEOF (con)))<=1; +END_ENTITY; + + +ENTITY range_characteristic + SUBTYPE OF (representation, descriptive_representation_item); +WHERE + WR1 : NOT(SELF\representation.name IN ['tolerance', 'minimum tolerance', 'maximum tolerance', + 'nominal tolerance', 'plus minus tolerance', 'symmetrical tolerance', 'statistical tolerance']); +END_ENTITY; + + +ENTITY ratio_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RATIO_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY ratio_unit + SUBTYPE OF (named_unit); +WHERE + WR1 : (SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 0.0) AND (SELF\named_unit.dimensions.time_exponent = 0.0) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0); +END_ENTITY; + + +ENTITY rational_b_spline_curve + SUBTYPE OF (b_spline_curve); + weights_data : LIST [2:?] OF REAL; +DERIVE + weights : ARRAY [0:upper_index_on_control_points] OF REAL := list_to_array(weights_data,0, + upper_index_on_control_points); +WHERE + WR1 : SIZEOF(weights_data) = SIZEOF(SELF\b_spline_curve. + control_points_list); + WR2 : curve_weights_positive(SELF); +END_ENTITY; + + +ENTITY rational_b_spline_surface + SUBTYPE OF (b_spline_surface); + weights_data : LIST [2:?] OF LIST [2:?] OF REAL; +DERIVE + weights : ARRAY [0:u_upper] OF ARRAY [0:v_upper] OF REAL := make_array_of_array(weights_data,0,u_upper,0,v_upper); +WHERE + WR1 : (SIZEOF(weights_data) = + SIZEOF(SELF\b_spline_surface.control_points_list)) + AND (SIZEOF(weights_data[1]) = + SIZEOF(SELF\b_spline_surface.control_points_list[1])); + WR2 : surface_weights_positive(SELF); +END_ENTITY; + + +ENTITY rational_representation_item + SUBTYPE OF (representation_item, slash_expression); +WHERE + WR1 : SIZEOF( QUERY( operand <* SELF\binary_generic_expression.operands | + NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.INT_LITERAL' IN TYPEOF(operand)))) = 0; +END_ENTITY; + + +ENTITY real_literal + SUBTYPE OF (literal_number); + SELF\literal_number.the_value : REAL; +END_ENTITY; + + +ENTITY real_representation_item + SUBTYPE OF (representation_item, real_literal); +END_ENTITY; + + +ENTITY rectangular_composite_surface + SUBTYPE OF (bounded_surface); + segments : LIST [1:?] OF LIST [1:?] OF surface_patch; +DERIVE + n_u : INTEGER := SIZEOF(segments); + n_v : INTEGER := SIZEOF(segments[1]); +WHERE + WR1 : SIZEOF(QUERY (s <* segments | n_v <> SIZEOF (s))) = 0; + WR2 : constraints_rectangular_composite_surface(SELF); +END_ENTITY; + + +ENTITY rectangular_trimmed_surface + SUBTYPE OF (bounded_surface); + basis_surface : surface; + u1 : parameter_value; + u2 : parameter_value; + v1 : parameter_value; + v2 : parameter_value; + usense : BOOLEAN; + vsense : BOOLEAN; +WHERE + WR1 : u1 <> u2; + WR2 : v1 <> v2; + WR3 : (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELEMENTARY_SURFACE' IN TYPEOF(basis_surface)) + AND (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE' IN TYPEOF(basis_surface)))) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_OF_REVOLUTION' IN TYPEOF(basis_surface)) + OR (usense = (u2 > u1)); + WR4 : (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SPHERICAL_SURFACE' IN TYPEOF(basis_surface)) + OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TOROIDAL_SURFACE' IN TYPEOF(basis_surface))) + OR (vsense = (v2 > v1)); +END_ENTITY; + + +ENTITY referenced_modified_datum + SUBTYPE OF (datum_reference); + modifier : limit_condition; +END_ENTITY; + + +ENTITY relative_event_occurrence + SUBTYPE OF (event_occurrence); + base_event : event_occurrence; + offset : time_measure_with_unit; +END_ENTITY; + + +ENTITY rep_item_group + SUBTYPE OF (group, representation_item); +WHERE + WR1 : SIZEOF(USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'PRESENTATION_LAYER_ASSIGNMENT.' + 'ASSIGNED_ITEMS')) > 0; + WR2 : SIZEOF(QUERY(r <* USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'REPRESENTATION.' + 'ITEMS') | r.name = 'group representation')) > 0; + WR3 : SIZEOF(QUERY(ga <* USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GROUP_ASSIGNMENT.' + 'ASSIGNED_GROUP') | ga.role.name <> 'group membership')) = 0; + WR4 : SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GEOMETRIC_REPRESENTATION_ITEM', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'TOPOLOGICAL_REPRESENTATION_ITEM', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'MAPPED_ITEM','AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'STYLED_ITEM'] * TYPEOF(SELF)) = 1; +END_ENTITY; + + +ENTITY reparametrised_composite_curve_segment + SUBTYPE OF (composite_curve_segment); + param_length : parameter_value; +WHERE + WR1 : param_length > 0.0; +END_ENTITY; + + +ENTITY representation; + name : label; + items : SET [1:?] OF representation_item; + context_of_items : representation_context; +DERIVE + description : text := get_description_value (SELF); + id : identifier := get_id_value (SELF); +WHERE + WR1 : SIZEOF (USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) + <= 1; + WR2 : SIZEOF (USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM')) + <= 1; +END_ENTITY; + + +ENTITY representation_context; + context_identifier : identifier; + context_type : text; +INVERSE + representations_in_context: SET [1:?] OF representation FOR context_of_items; +END_ENTITY; + + +ENTITY representation_item + SUPERTYPE OF (ONEOF (binary_representation_item, compound_representation_item, mapped_item, value_representation_item, mapped_item, styled_item, boolean_representation_item, date_representation_item, date_time_representation_item, integer_representation_item, logical_representation_item, rational_representation_item, real_representation_item)); + name : label; +WHERE + WR1 : SIZEOF(using_representations(SELF)) > 0; +END_ENTITY; + + +ENTITY representation_item_relationship; + name : label; + description : OPTIONAL text; + relating_representation_item : representation_item; + related_representation_item : representation_item; +END_ENTITY; + + +ENTITY representation_map; + mapping_origin : representation_item; + mapped_representation : representation; +INVERSE + map_usage: SET [1:?] OF mapped_item FOR mapping_source; +WHERE + WR1 : item_in_context(SELF.mapping_origin, + SELF.mapped_representation.context_of_items); +END_ENTITY; + + +ENTITY representation_relationship; + name : label; + description : OPTIONAL text; + rep_1 : representation; + rep_2 : representation; +END_ENTITY; + + +ENTITY representation_relationship_with_transformation + SUBTYPE OF (representation_relationship); + transformation_operator : transformation; +WHERE + WR1 : SELF\representation_relationship.rep_1.context_of_items + :<>: SELF\representation_relationship.rep_2.context_of_items; +END_ENTITY; + + +ENTITY requirement_assigned_object + SUBTYPE OF (group_assignment); + items : SET [1:1] OF requirement_assigned_item; + SELF\group_assignment.assigned_group : requirement_assignment; +END_ENTITY; + + +ENTITY requirement_assignment + SUBTYPE OF (characterized_object, group); +END_ENTITY; + + +ENTITY requirement_source + SUBTYPE OF (group); +END_ENTITY; + + +ENTITY requirement_view_definition_relationship + SUBTYPE OF (product_definition_relationship); +END_ENTITY; + + +ENTITY resistance_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RESISTANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY resistance_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = dimensions_for_si_unit (si_unit_name.ohm); +END_ENTITY; + + +ENTITY revolved_area_solid + SUBTYPE OF (swept_area_solid); + axis : axis1_placement; + angle : plane_angle_measure; +DERIVE + axis_line : line := representation_item('')|| + geometric_representation_item()|| curve()|| + line(axis.location, representation_item('')|| + geometric_representation_item()|| + vector(axis.z, 1.0)); +END_ENTITY; + + +ENTITY revolved_face_solid + SUBTYPE OF (swept_face_solid); + axis : axis1_placement; + angle : plane_angle_measure; +DERIVE + axis_line : line := representation_item('')|| + geometric_representation_item()|| curve()|| + line(axis.location, representation_item('')|| + geometric_representation_item()|| + vector(axis.z, 1.0)); +END_ENTITY; + + +ENTITY revolved_face_solid_with_trim_conditions + SUBTYPE OF (revolved_face_solid); + first_trim_condition : trim_condition_select; + second_trim_condition : trim_condition_select; +WHERE + WR1 : NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE' + IN TYPEOF(first_trim_condition)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE' + IN TYPEOF(second_trim_condition))); + WR2 : NOT((('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE_ANGLE_MEASURE' + IN TYPEOF(first_trim_condition)) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE_ANGLE_MEASURE' + IN TYPEOF(second_trim_condition))) AND + (first_trim_condition = second_trim_condition)); +END_ENTITY; + + +ENTITY right_angular_wedge + SUBTYPE OF (geometric_representation_item); + position : axis2_placement_3d; + x : positive_length_measure; + y : positive_length_measure; + z : positive_length_measure; + ltx : length_measure; +WHERE + WR1 : ((0.0 <= ltx) AND (ltx < x)); +END_ENTITY; + + +ENTITY right_circular_cone + SUBTYPE OF (geometric_representation_item); + position : axis1_placement; + height : positive_length_measure; + radius : length_measure; + semi_angle : plane_angle_measure; +WHERE + WR1 : radius >= 0.0; +END_ENTITY; + + +ENTITY right_circular_cylinder + SUBTYPE OF (geometric_representation_item); + position : axis1_placement; + height : positive_length_measure; + radius : positive_length_measure; +END_ENTITY; + + +ENTITY right_to_usage_association + SUBTYPE OF (action_method_relationship); + SELF\action_method_relationship.related_method : information_right; + SELF\action_method_relationship.relating_method : information_usage_right; +DERIVE + right_applied : information_right := SELF\action_method_relationship.related_method; + right_usage : information_usage_right := SELF\action_method_relationship.relating_method; +END_ENTITY; + + +ENTITY role_association; + role : object_role; + item_with_role : role_select; +END_ENTITY; + + +ENTITY roundness_tolerance + SUBTYPE OF (geometric_tolerance); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF (SELF)); +END_ENTITY; + + +ENTITY row_representation_item + SUBTYPE OF (compound_representation_item); + SELF\compound_representation_item.item_element : list_representation_item; +END_ENTITY; + + +ENTITY row_value + SUBTYPE OF (compound_representation_item); +END_ENTITY; + + +ENTITY row_variable + SUBTYPE OF (abstract_variable); +END_ENTITY; + + +ENTITY rule_action + SUBTYPE OF (action); +END_ENTITY; + + +ENTITY rule_condition + SUBTYPE OF (atomic_formula); +END_ENTITY; + + +ENTITY rule_definition + SUBTYPE OF (rule_software_definition); +END_ENTITY; + + +ENTITY rule_set + SUBTYPE OF (rule_software_definition); +END_ENTITY; + + +ENTITY rule_set_group + SUBTYPE OF (rule_software_definition); +END_ENTITY; + + +ENTITY rule_software_definition + SUBTYPE OF (product_definition); +END_ENTITY; + + +ENTITY rule_superseded_assignment + SUBTYPE OF (action_assignment); + items : SET [1:?] OF rule_superseded_item; +END_ENTITY; + + +ENTITY rule_supersedence + SUBTYPE OF (rule_action); +END_ENTITY; + + +ENTITY ruled_surface_swept_area_solid + SUBTYPE OF (surface_curve_swept_area_solid); +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_SURFACE' IN TYPEOF(SELF.reference_surface)) AND + (SELF.reference_surface\b_spline_surface.u_degree = 1); + WR2 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF(SELF.directrix)) OR + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE' IN TYPEOF(SELF.directrix\surface_curve.curve_3d)) + AND + (SELF.directrix\surface_curve.curve_3d\b_spline_curve.degree = + SELF.reference_surface\b_spline_surface.v_degree)); +END_ENTITY; + + +ENTITY runout_zone_definition + SUBTYPE OF (tolerance_zone_definition); + orientation : runout_zone_orientation; +END_ENTITY; + + +ENTITY runout_zone_orientation; + angle : measure_with_unit; +END_ENTITY; + + +ENTITY runout_zone_orientation_reference_direction + SUBTYPE OF (runout_zone_orientation); + orientation_defining_relationship : shape_aspect_relationship; +END_ENTITY; + + +ENTITY satisfied_requirement + SUBTYPE OF (group_assignment); + items : SET [1:1] OF product_definition; + SELF\group_assignment.assigned_group : satisfies_requirement; +END_ENTITY; + + +ENTITY satisfies_requirement + SUBTYPE OF (group); +END_ENTITY; + + +ENTITY satisfying_item + SUBTYPE OF (group_assignment); + items : SET [1:1] OF requirement_satisfaction_item; + SELF\group_assignment.assigned_group : satisfies_requirement; +END_ENTITY; + + +ENTITY scalar_variable + SUBTYPE OF (abstract_variable); +END_ENTITY; + + +ENTITY scattering_parameter + SUBTYPE OF (polar_complex_number_literal); +WHERE + WR1 : SIZEOF(TYPEOF(SELF) - (TYPEOF(SELF\polar_complex_number_literal || + SELF\scattering_parameter))) = 0; +END_ENTITY; + + +ENTITY sculptured_solid + SUBTYPE OF (modified_solid); + sculpturing_element : generalized_surface_select; + positive_side : BOOLEAN; +END_ENTITY; + + +ENTITY seam_curve + SUBTYPE OF (surface_curve); +WHERE + WR1 : SIZEOF(SELF\surface_curve.associated_geometry) = 2; + WR2 : associated_surface(SELF\surface_curve.associated_geometry[1]) = + associated_surface(SELF\surface_curve.associated_geometry[2]); + WR3 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN + TYPEOF(SELF\surface_curve.associated_geometry[1]); + WR4 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN + TYPEOF(SELF\surface_curve.associated_geometry[2]); +END_ENTITY; + + +ENTITY security_classification; + name : label; + purpose : text; + security_level : security_classification_level; +END_ENTITY; + + +ENTITY security_classification_assignment + ABSTRACT SUPERTYPE; + assigned_security_classification : security_classification; +DERIVE + role : object_role := get_role(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE')) <= 1; +END_ENTITY; + + +ENTITY security_classification_level; + name : label; +END_ENTITY; + + +ENTITY serial_numbered_effectivity + SUBTYPE OF (effectivity); + effectivity_start_id : identifier; + effectivity_end_id : OPTIONAL identifier; +END_ENTITY; + + +ENTITY shape_aspect; + name : label; + description : OPTIONAL text; + of_shape : product_definition_shape; + product_definitional : LOGICAL; +DERIVE + id : identifier := get_id_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY shape_aspect_associativity + SUBTYPE OF (shape_aspect_relationship); +WHERE + WR1 : SELF.relating_shape_aspect.product_definitional; + WR2 : NOT (SELF.related_shape_aspect.product_definitional); +END_ENTITY; + + +ENTITY shape_aspect_deriving_relationship + SUBTYPE OF (shape_aspect_relationship); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DERIVED_SHAPE_ASPECT' IN +TYPEOF + (SELF\SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT); +END_ENTITY; + + +ENTITY shape_aspect_relationship; + name : label; + description : OPTIONAL text; + relating_shape_aspect : shape_aspect; + related_shape_aspect : shape_aspect; +DERIVE + id : identifier := get_id_value(SELF); +WHERE + WR1 : SIZEOF(USEDIN(SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM')) <= 1; +END_ENTITY; + + +ENTITY shape_definition_representation + SUBTYPE OF (property_definition_representation); +WHERE + WR1 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF(SELF.definition)) OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_DEFINITION' IN TYPEOF(SELF.definition.definition)); + WR2 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_REPRESENTATION' IN TYPEOF(SELF.used_representation); +END_ENTITY; + + +ENTITY shape_dimension_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF (QUERY (temp <* SELF\representation.items | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM' + IN TYPEOF (temp)))) = 0; + WR2 : SIZEOF (SELF\representation.items) <= 3; + WR3 : SIZEOF (QUERY (pos_mri <* QUERY (real_mri <* + SELF\representation.items | 'REAL' IN TYPEOF + (real_mri\measure_with_unit.value_component) ) | + NOT (pos_mri\measure_with_unit.value_component > 0.0 ))) = 0; +END_ENTITY; + + +ENTITY shape_feature_definition + SUBTYPE OF (characterized_object); +END_ENTITY; + + +ENTITY shape_representation + SUBTYPE OF (representation); +END_ENTITY; + + +ENTITY shape_representation_relationship + SUBTYPE OF (representation_relationship); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_REPRESENTATION' IN (TYPEOF(SELF\representation_relationship.rep_1) + TYPEOF(SELF\representation_relationship.rep_2)); +END_ENTITY; + + +ENTITY shape_representation_with_parameters + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF( QUERY( i <* SELF.items | SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLACEMENT', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM'] * TYPEOF(i)) = 1 )) = SIZEOF(SELF.items); +END_ENTITY; + + +ENTITY shell_based_surface_model + SUBTYPE OF (geometric_representation_item); + sbsm_boundary : SET [1:?] OF shell; +WHERE + WR1 : constraints_geometry_shell_based_surface_model(SELF); +END_ENTITY; + + +ENTITY shell_based_wireframe_model + SUBTYPE OF (geometric_representation_item); + sbwm_boundary : SET [1:?] OF shell; +WHERE + WR1 : constraints_geometry_shell_based_wireframe_model(SELF); +END_ENTITY; + + +ENTITY shell_based_wireframe_shape_representation + SUBTYPE OF (shape_representation); +WHERE + WR1 : SIZEOF ( +QUERY ( it <* SELF.items| NOT ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_WIREFRAME_MODEL', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT_3D' ] * TYPEOF (it)) = 1) )) = 0; + WR2 : SIZEOF ( +QUERY ( it <* SELF.items| ( SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_WIREFRAME_MODEL', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' ] * TYPEOF (it)) = 1) )) >= 1; + WR3 : SIZEOF ( +QUERY ( sbwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( ws <* +QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.WIRE_SHELL' IN TYPEOF (sb)) )| NOT ( SIZEOF ( +QUERY ( eloop <* +QUERY ( wsb <* ws\wire_shell.wire_shell_extent| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (wsb)) )| NOT ( SIZEOF ( +QUERY ( el <* eloop\path.edge_list| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_CURVE' IN TYPEOF (el.edge_element)) )) = 0) )) = 0) )) = 0) )) = 0; + WR4 : SIZEOF ( +QUERY ( sbwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( ws <* +QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.WIRE_SHELL' IN TYPEOF (sb)) )| NOT ( SIZEOF ( +QUERY ( eloop <* +QUERY ( wsb <* ws\wire_shell.wire_shell_extent| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (wsb)) )| NOT ( SIZEOF ( +QUERY ( pline_el <* +QUERY ( el <* eloop\path.edge_list| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF (el.edge_element\edge_curve.edge_geometry)) )| NOT ( SIZEOF (pline_el.edge_element\edge_curve.edge_geometry\polyline.points) > 2) )) = 0) )) = 0) )) = 0) )) = 0; + WR5 : SIZEOF ( +QUERY ( sbwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( ws <* +QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.WIRE_SHELL' IN TYPEOF (sb)) )| NOT ( SIZEOF ( +QUERY ( eloop <* +QUERY ( wsb <* ws\wire_shell.wire_shell_extent| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (wsb)) )| NOT ( SIZEOF ( +QUERY ( el <* eloop\path.edge_list| NOT valid_wireframe_edge_curve(el.edge_element\edge_curve.edge_geometry) )) = 0) )) = 0) )) = 0) )) = 0; + WR6 : SIZEOF ( +QUERY ( sbwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( ws <* +QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.WIRE_SHELL' IN TYPEOF (sb)) )| NOT ( SIZEOF ( +QUERY ( eloop <* +QUERY ( wsb <* ws\wire_shell.wire_shell_extent| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (wsb)) )| NOT ( SIZEOF ( +QUERY ( el <* eloop\path.edge_list| NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF (el.edge_element.edge_start)) AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF (el.edge_element.edge_end))) )) = 0) )) = 0) )) = 0) )) = 0; + WR7 : SIZEOF ( +QUERY ( sbwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( ws <* +QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.WIRE_SHELL' IN TYPEOF (sb)) )| NOT ( SIZEOF ( +QUERY ( eloop <* +QUERY ( wsb <* ws\wire_shell.wire_shell_extent| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE_LOOP' IN TYPEOF (wsb)) )| NOT ( SIZEOF ( +QUERY ( el <* eloop\path.edge_list| NOT (valid_wireframe_vertex_point(el.edge_element.edge_start\vertex_point.vertex_geometry) AND valid_wireframe_vertex_point(el.edge_element.edge_end\vertex_point.vertex_geometry)) )) = 0) )) = 0) )) = 0) )) = 0; + WR8 : SIZEOF ( +QUERY ( sbwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( ws <* +QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.WIRE_SHELL' IN TYPEOF (sb)) )| NOT ( SIZEOF ( +QUERY ( vloop <* +QUERY ( wsb <* ws\wire_shell.wire_shell_extent| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP' IN TYPEOF (wsb)) )| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF (vloop\vertex_loop.loop_vertex)) )) = 0) )) = 0) )) = 0; + WR9 : SIZEOF ( +QUERY ( sbwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( ws <* +QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.WIRE_SHELL' IN TYPEOF (sb)) )| NOT ( SIZEOF ( +QUERY ( vloop <* +QUERY ( wsb <* ws\wire_shell.wire_shell_extent| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_LOOP' IN TYPEOF (wsb)) )| NOT valid_wireframe_vertex_point(vloop\vertex_loop.loop_vertex\vertex_point.vertex_geometry) )) = 0) )) = 0) )) = 0; + WR10 : SIZEOF ( +QUERY ( sbwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( vs <* +QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_SHELL' IN TYPEOF (sb)) )| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_POINT' IN TYPEOF (vs\vertex_shell.vertex_shell_extent.loop_vertex)) )) = 0) )) = 0; + WR11 : SIZEOF ( +QUERY ( sbwm <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL_BASED_WIREFRAME_MODEL' IN TYPEOF (it)) )| NOT ( SIZEOF ( +QUERY ( vs <* +QUERY ( sb <* sbwm\shell_based_wireframe_model.sbwm_boundary| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_SHELL' IN TYPEOF (sb)) )| NOT valid_wireframe_vertex_point(vs\vertex_shell.vertex_shell_extent.loop_vertex\vertex_point.vertex_geometry) )) = 0) )) = 0; + WR12 : SIZEOF ( +QUERY ( mi <* +QUERY ( it <* SELF.items| ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF (it)) )| NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'SHELL_BASED_WIREFRAME_SHAPE_REPRESENTATION' IN TYPEOF (mi\mapped_item.mapping_source.mapped_representation)) )) = 0; + WR13 : SELF.context_of_items\geometric_representation_context.coordinate_space_dimension = 3; +END_ENTITY; + + +ENTITY shelled_solid + SUPERTYPE OF (ONEOF (double_offset_shelled_solid, complex_shelled_solid)) + SUBTYPE OF (modified_solid); + deleted_face_set : SET [1:?] OF face_surface; + thickness : length_measure; +WHERE + WR1 : thickness <> 0; +END_ENTITY; + + +ENTITY si_absorbed_dose_unit + SUBTYPE OF (absorbed_dose_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.gray; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_capacitance_unit + SUBTYPE OF (capacitance_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.farad; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_conductance_unit + SUBTYPE OF (conductance_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.siemens; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_dose_equivalent_unit + SUBTYPE OF (dose_equivalent_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.sievert; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_electric_charge_unit + SUBTYPE OF (electric_charge_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.coulomb; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_electric_potential_unit + SUBTYPE OF (electric_potential_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.volt; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_energy_unit + SUBTYPE OF (energy_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.joule; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_force_unit + SUBTYPE OF (force_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.newton; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_frequency_unit + SUBTYPE OF (frequency_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.hertz; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_illuminance_unit + SUBTYPE OF (illuminance_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.lux; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_inductance_unit + SUBTYPE OF (inductance_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.henry; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_magnetic_flux_density_unit + SUBTYPE OF (magnetic_flux_density_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.tesla; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_magnetic_flux_unit + SUBTYPE OF (magnetic_flux_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.weber; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_power_unit + SUBTYPE OF (power_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.watt; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_pressure_unit + SUBTYPE OF (pressure_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.pascal; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_radioactivity_unit + SUBTYPE OF (radioactivity_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.becquerel; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_resistance_unit + SUBTYPE OF (resistance_unit, si_unit); +WHERE + WR1 : SELF\si_unit.name = si_unit_name.ohm; + WR2 : NOT EXISTS(SELF\derived_unit.name); +END_ENTITY; + + +ENTITY si_unit + SUBTYPE OF (named_unit); + prefix : OPTIONAL si_prefix; + name : si_unit_name; +DERIVE + SELF\named_unit.dimensions : dimensional_exponents := dimensions_for_si_unit(name); +WHERE + WR1 : NOT(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MASS_UNIT' IN TYPEOF(SELF)) AND + (SIZEOF(USEDIN(SELF,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DERIVED_UNIT_ELEMENT.UNIT')) > 0)) OR + (prefix = si_prefix.kilo); +END_ENTITY; + + +ENTITY simple_boolean_expression + ABSTRACT SUPERTYPE + SUBTYPE OF (boolean_expression, simple_generic_expression); +END_ENTITY; + + +ENTITY simple_clause + SUBTYPE OF (compound_representation_item); +END_ENTITY; + + +ENTITY simple_generic_expression + ABSTRACT SUPERTYPE OF (ONEOF (generic_literal, generic_variable)) + SUBTYPE OF (generic_expression); +END_ENTITY; + + +ENTITY simple_numeric_expression + ABSTRACT SUPERTYPE + SUBTYPE OF (numeric_expression, simple_generic_expression); +END_ENTITY; + + +ENTITY slash_expression + SUBTYPE OF (binary_numeric_expression); +END_ENTITY; + + +ENTITY smeared_material_definition + SUBTYPE OF (zone_structural_makeup); +END_ENTITY; + + +ENTITY solid_angle_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_ANGLE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY solid_angle_unit + SUBTYPE OF (named_unit); +WHERE + WR1 : (SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 0.0) AND (SELF\named_unit.dimensions.time_exponent = 0.0) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0); +END_ENTITY; + + +ENTITY solid_curve_font + SUBTYPE OF (pre_defined_curve_font); +END_ENTITY; + + +ENTITY solid_model + SUPERTYPE OF (ONEOF (csg_solid, manifold_solid_brep, swept_face_solid, swept_area_solid, swept_disk_solid, solid_replica)) + SUBTYPE OF (geometric_representation_item); +END_ENTITY; + + +ENTITY solid_replica + SUBTYPE OF (solid_model); + parent_solid : solid_model; + transformation : cartesian_transformation_operator_3d; +WHERE + WR1 : acyclic_solid_replica(SELF, parent_solid); + WR2 : parent_solid\geometric_representation_item.dim = 3; +END_ENTITY; + + +ENTITY solid_with_angle_based_chamfer + SUBTYPE OF (solid_with_chamfered_edges); + offset_distance : positive_length_measure; + left_offset : BOOLEAN; + offset_angle : positive_plane_angle_measure; +END_ENTITY; + + +ENTITY solid_with_chamfered_edges + ABSTRACT SUPERTYPE OF (ONEOF (solid_with_single_offset_chamfer, solid_with_double_offset_chamfer, solid_with_angle_based_chamfer)) + SUBTYPE OF (edge_blended_solid); +END_ENTITY; + + +ENTITY solid_with_circular_pattern + SUPERTYPE OF (solid_with_incomplete_circular_pattern) + SUBTYPE OF (solid_with_shape_element_pattern); + replicate_count : positive_integer; + angular_spacing : plane_angle_measure; + radial_alignment : BOOLEAN; + reference_point : point; +END_ENTITY; + + +ENTITY solid_with_circular_pocket + SUBTYPE OF (solid_with_pocket); + pocket_radius : positive_length_measure; +WHERE + WR1 : SELF\solid_with_pocket.floor_blend_radius <= pocket_radius; +END_ENTITY; + + +ENTITY solid_with_circular_protrusion + SUBTYPE OF (solid_with_protrusion); + protrusion_radius : positive_length_measure; +END_ENTITY; + + +ENTITY solid_with_conical_bottom_round_hole + SUBTYPE OF (solid_with_stepped_round_hole); + semi_apex_angle : positive_plane_angle_measure; + tip_radius : non_negative_length_measure; +WHERE + WR1 : tip_radius < + SELF\solid_with_stepped_round_hole.segment_radii[segments]; +END_ENTITY; + + +ENTITY solid_with_constant_radius_edge_blend + SUBTYPE OF (edge_blended_solid); + radius : positive_length_measure; +END_ENTITY; + + +ENTITY solid_with_curved_slot + SUBTYPE OF (solid_with_slot); + slot_centreline : bounded_curve; +END_ENTITY; + + +ENTITY solid_with_depression + ABSTRACT SUPERTYPE OF ((solid_with_through_depression ANDOR ONEOF (solid_with_hole, solid_with_pocket, solid_with_slot, solid_with_groove))) + SUBTYPE OF (modified_solid_with_placed_configuration); + depth : positive_length_measure; +END_ENTITY; + + +ENTITY solid_with_double_offset_chamfer + SUBTYPE OF (solid_with_chamfered_edges); + left_offset_distance : positive_length_measure; + right_offset_distance : positive_length_measure; +END_ENTITY; + + +ENTITY solid_with_flat_bottom_round_hole + SUBTYPE OF (solid_with_stepped_round_hole); + fillet_radius : non_negative_length_measure; +WHERE + WR1 : fillet_radius < + SELF\solid_with_stepped_round_hole.segment_radii[segments]; +END_ENTITY; + + +ENTITY solid_with_general_pocket + SUBTYPE OF (solid_with_pocket); + profile : positioned_sketch; + reference_point : point; +WHERE + WR1 : SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_BOUNDED_SURFACE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_SURFACE'] * TYPEOF(profile.sketch_basis)) = 1; + WR2 : profile IN using_items(reference_point,[]); +END_ENTITY; + + +ENTITY solid_with_general_protrusion + SUBTYPE OF (solid_with_protrusion); + profile : positioned_sketch; + reference_point : point; +WHERE + WR1 : SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_BOUNDED_SURFACE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_SURFACE'] * TYPEOF(profile.sketch_basis)) = 1; + WR2 : profile IN using_items(reference_point,[]); +END_ENTITY; + + +ENTITY solid_with_groove + SUBTYPE OF (solid_with_depression); + groove_radius : positive_length_measure; + groove_width : positive_length_measure; + draft_angle : plane_angle_measure; + floor_fillet_radius : non_negative_length_measure; + external_groove : BOOLEAN; +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_THROUGH_DEPRESSION' + IN TYPEOF(SELF)); +END_ENTITY; + + +ENTITY solid_with_hole + ABSTRACT SUPERTYPE OF (solid_with_stepped_round_hole) + SUBTYPE OF (solid_with_depression); +END_ENTITY; + + +ENTITY solid_with_incomplete_circular_pattern + SUBTYPE OF (solid_with_circular_pattern); + omitted_instances : SET [1:?] OF positive_integer; +WHERE + WR1 : SIZEOF(omitted_instances) < + SELF\solid_with_circular_pattern.replicate_count; + WR2 : SIZEOF(QUERY(q <* omitted_instances | q > + SELF\solid_with_circular_pattern.replicate_count)) = 0; +END_ENTITY; + + +ENTITY solid_with_incomplete_rectangular_pattern + SUBTYPE OF (solid_with_rectangular_pattern); + omitted_instances : SET [1:?] OF LIST [2:2] OF positive_integer; +WHERE + WR1 : NOT([1,1] IN omitted_instances); + WR2 : SIZEOF(omitted_instances) < + ((SELF\solid_with_rectangular_pattern.row_count * + SELF\solid_with_rectangular_pattern.column_count) - 1); + WR3 : SIZEOF(QUERY(q <* omitted_instances | + ((q[1] > SELF\solid_with_rectangular_pattern.row_count) OR + (q[2] > SELF\solid_with_rectangular_pattern.column_count)))) = 0; +END_ENTITY; + + +ENTITY solid_with_pocket + ABSTRACT SUPERTYPE OF (ONEOF (solid_with_rectangular_pocket, solid_with_circular_pocket, solid_with_general_pocket)) + SUBTYPE OF (solid_with_depression); + floor_blend_radius : non_negative_length_measure; + draft_angle : plane_angle_measure; +END_ENTITY; + + +ENTITY solid_with_protrusion + ABSTRACT SUPERTYPE OF (ONEOF (solid_with_circular_protrusion, solid_with_rectangular_protrusion, solid_with_general_protrusion)) + SUBTYPE OF (modified_solid_with_placed_configuration); + protrusion_height : positive_length_measure; + protrusion_draft_angle : plane_angle_measure; +END_ENTITY; + + +ENTITY solid_with_rectangular_pattern + SUPERTYPE OF (solid_with_incomplete_rectangular_pattern) + SUBTYPE OF (solid_with_shape_element_pattern); + row_count : positive_integer; + column_count : positive_integer; + row_spacing : length_measure; + column_spacing : length_measure; +WHERE + WR1 : (row_count * column_count) > 1; +END_ENTITY; + + +ENTITY solid_with_rectangular_pocket + SUBTYPE OF (solid_with_pocket); + pocket_length : positive_length_measure; + pocket_width : positive_length_measure; + corner_radius : non_negative_length_measure; +WHERE + WR1 : (corner_radius < pocket_width/2) + AND (corner_radius < pocket_length/2); +END_ENTITY; + + +ENTITY solid_with_rectangular_protrusion + SUBTYPE OF (solid_with_protrusion); + protrusion_length : positive_length_measure; + protrusion_width : positive_length_measure; + protrusion_corner_radius : non_negative_length_measure; +WHERE + WR1 : (protrusion_corner_radius <= protrusion_width/2) + AND (protrusion_corner_radius <= protrusion_length/2); +END_ENTITY; + + +ENTITY solid_with_shape_element_pattern + ABSTRACT SUPERTYPE OF (ONEOF (solid_with_circular_pattern, solid_with_rectangular_pattern)) + SUBTYPE OF (modified_solid_with_placed_configuration); + replicated_element : modified_solid_with_placed_configuration; +END_ENTITY; + + +ENTITY solid_with_single_offset_chamfer + SUBTYPE OF (solid_with_chamfered_edges); + offset_distance : positive_length_measure; +END_ENTITY; + + +ENTITY solid_with_slot + ABSTRACT SUPERTYPE OF ((ONEOF (solid_with_trapezoidal_section_slot, solid_with_tee_section_slot) AND ONEOF (solid_with_straight_slot, solid_with_curved_slot))) + SUBTYPE OF (solid_with_depression); + slot_width : positive_length_measure; + closed_ends : LIST [2:2] OF LOGICAL; + end_exit_faces : LIST [2:2] OF SET [0:?] OF face_surface; +WHERE + WR1 : NOT(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_THROUGH_DEPRESSION' IN + TYPEOF(SELF)) AND (closed_ends = [FALSE,FALSE])); + WR2 : NOT(((closed_ends[1] = TRUE) AND (SIZEOF(end_exit_faces[1]) <> 0)) + OR ((closed_ends[2] = TRUE) AND (SIZEOF(end_exit_faces[2]) <> 0))); +END_ENTITY; + + +ENTITY solid_with_spherical_bottom_round_hole + SUBTYPE OF (solid_with_stepped_round_hole); + sphere_radius : positive_length_measure; +WHERE + WR1 : sphere_radius >= + SELF\solid_with_stepped_round_hole.segment_radii[segments]; +END_ENTITY; + + +ENTITY solid_with_stepped_round_hole + SUPERTYPE OF ((solid_with_stepped_round_hole_and_conical_transitions ANDOR ONEOF (solid_with_flat_bottom_round_hole, solid_with_conical_bottom_round_hole, solid_with_spherical_bottom_round_hole))) + SUBTYPE OF (solid_with_hole); + segments : positive_integer; + segment_radii : LIST [1:segments] OF positive_length_measure; + segment_depths : LIST [1:segments] OF positive_length_measure; +DERIVE + SELF\solid_with_depression.depth : positive_length_measure := compute_total_depth(SELF); +WHERE + WR1 : NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_THROUGH_DEPRESSION' + IN TYPEOF(SELF)) AND (SIZEOF(TYPEOF(SELF) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_FLAT_BOTTOM_ROUND_HOLE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_SPHERICAL_BOTTOM_ROUND_HOLE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_FLAT_BOTTOM_ROUND_HOLE']) + <> 0)); +END_ENTITY; + + +ENTITY solid_with_stepped_round_hole_and_conical_transitions + SUBTYPE OF (solid_with_stepped_round_hole); + conical_transitions : SET [1:?] OF conical_stepped_hole_transition; +WHERE + WR1 : SIZEOF (conical_transitions) <= + (SELF\solid_with_stepped_round_hole.segments + 1); + WR2 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_THROUGH_DEPRESSION' + IN TYPEOF(SELF)) XOR (SIZEOF(conical_transitions) <= + SELF\solid_with_stepped_round_hole.segments); + WR3 : validate_countersink_radii(SELF); +END_ENTITY; + + +ENTITY solid_with_straight_slot + SUBTYPE OF (solid_with_slot); + slot_length : positive_length_measure; +END_ENTITY; + + +ENTITY solid_with_tee_section_slot + SUBTYPE OF (solid_with_slot); + tee_section_width : positive_length_measure; + collar_depth : positive_length_measure; +WHERE + WR1 : collar_depth < SELF\solid_with_depression.depth; + WR2 : tee_section_width > SELF\solid_with_slot.slot_width; +END_ENTITY; + + +ENTITY solid_with_through_depression + SUBTYPE OF (solid_with_depression); + exit_faces : SET [1:?] OF face_surface; +WHERE + WR1 : SIZEOF(TYPEOF(SELF) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_HOLE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_POCKET', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_SLOT']) = 1; +END_ENTITY; + + +ENTITY solid_with_trapezoidal_section_slot + SUBTYPE OF (solid_with_slot); + draft_angle : plane_angle_measure; + floor_fillet_radius : non_negative_length_measure; +END_ENTITY; + + +ENTITY solid_with_variable_radius_edge_blend + SUBTYPE OF (edge_blended_solid, track_blended_solid); + point_list : LIST [2:?] OF point; + radius_list : LIST [2:?] OF positive_length_measure; + edge_function_list : LIST [1:?] OF blend_radius_variation_type; +WHERE + WR1 : SIZEOF(point_list) = SIZEOF(radius_list); + WR2 : SIZEOF(edge_function_list) = SIZEOF(radius_list) - 1; + WR3 : NOT((point_list[1] = point_list[HIINDEX(point_list)]) AND NOT + (radius_list[1] = radius_list[HIINDEX(radius_list)])); +END_ENTITY; + + +ENTITY source_for_requirement + SUBTYPE OF (group_assignment); + items : SET [1:1] OF requirement_source_item; + SELF\group_assignment.assigned_group : requirement_source; +END_ENTITY; + + +ENTITY sourced_requirement + SUBTYPE OF (group_assignment); + items : SET [1:1] OF product_definition; + SELF\group_assignment.assigned_group : requirement_source; +END_ENTITY; + + +ENTITY specification_definition + SUBTYPE OF (product_definition); +END_ENTITY; + + +ENTITY specified_higher_usage_occurrence + SUBTYPE OF (assembly_component_usage); + upper_usage : assembly_component_usage; + next_usage : next_assembly_usage_occurrence; +UNIQUE + UR1 : upper_usage, next_usage; +WHERE + WR1 : SELF :<>: upper_usage; + WR2 : SELF\product_definition_relationship.relating_product_definition + :=: upper_usage.relating_product_definition; + WR3 : SELF\product_definition_relationship.related_product_definition + :=: next_usage.related_product_definition; + WR4 : (upper_usage.related_product_definition :=: + next_usage.relating_product_definition) OR + (SIZEOF (QUERY (pdr <* USEDIN (upper_usage.related_product_definition, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION_RELATIONSHIP.' + + 'RELATED_PRODUCT_DEFINITION') | + pdr.relating_product_definition :=: + next_usage.relating_product_definition)) = 1); + WR5 : SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.NEXT_ASSEMBLY_USAGE_OCCURRENCE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SPECIFIED_HIGHER_USAGE_OCCURRENCE'] + * TYPEOF(upper_usage)) = 1; +END_ENTITY; + + +ENTITY sphere + SUBTYPE OF (geometric_representation_item); + radius : positive_length_measure; + centre : point; +END_ENTITY; + + +ENTITY spherical_surface + SUBTYPE OF (elementary_surface); + radius : positive_length_measure; +END_ENTITY; + + +ENTITY standard_uncertainty + SUPERTYPE OF (expanded_uncertainty) + SUBTYPE OF (uncertainty_qualifier); + uncertainty_value : REAL; +END_ENTITY; + + +ENTITY start_request + SUBTYPE OF (action_request_assignment); + items : SET [1:?] OF start_request_item; +END_ENTITY; + + +ENTITY start_work + SUBTYPE OF (action_assignment); + items : SET [1:?] OF work_item; +END_ENTITY; + + +ENTITY straightness_tolerance + SUBTYPE OF (geometric_tolerance); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF (SELF)); +END_ENTITY; + + +ENTITY structured_dimension_callout + SUBTYPE OF (draughting_callout); +WHERE + WR1 : SIZEOF (TYPEOF (SELF) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DATUM_FEATURE_CALLOUT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DATUM_TARGET_CALLOUT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GEOMETRICAL_TOLERANCE_CALLOUT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LEADER_DIRECTED_CALLOUT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROJECTION_DIRECTED_CALLOUT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT']) = 0; + WR2 : SIZEOF (QUERY (ato <* QUERY (con <* SELF.contents | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF (con))) | + NOT (ato.name IN + ['dimension value', 'tolerance value', 'unit text', + 'prefix text', 'suffix text']))) = 0; + WR3 : SIZEOF (QUERY (ato <* QUERY (con <* SELF.contents | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF (con))) | + (ato.name = 'dimension value') + )) >= 1; + WR4 : SIZEOF (QUERY (dcr <* USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_CALLOUT_RELATIONSHIP.' + + 'RELATING_DRAUGHTING_CALLOUT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP' IN TYPEOF (dcr)) AND + (dcr.name = 'prefix') )) <= 1; + WR5 : SIZEOF (QUERY (dcr <* USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_CALLOUT_RELATIONSHIP.' + + 'RELATING_DRAUGHTING_CALLOUT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP' IN TYPEOF (dcr)) AND + (dcr.name = 'suffix') )) <= 1; + WR6 : NOT((SIZEOF (QUERY (ato <* QUERY (con <* SELF.contents | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF(con)) ) | + (ato.name = 'prefix text') + )) > 0)) OR + (SIZEOF (QUERY (dcr <* USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_CALLOUT_RELATIONSHIP.' + + 'RELATING_DRAUGHTING_CALLOUT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP' IN TYPEOF (dcr)) AND + (dcr.name = 'prefix') )) = 1); + WR7 : NOT(SIZEOF (QUERY (ato <* QUERY (con <* SELF.contents | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' + IN TYPEOF(con))) | + (ato.name = 'suffix text') + )) > 0) OR + (SIZEOF (QUERY (dcr <* USEDIN (SELF, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DRAUGHTING_CALLOUT_RELATIONSHIP.' + + 'RELATING_DRAUGHTING_CALLOUT') | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP' IN TYPEOF (dcr)) AND + (dcr.name = 'suffix') )) = 1); +END_ENTITY; + + +ENTITY structured_text_composition + SUBTYPE OF (compound_representation_item); +END_ENTITY; + + +ENTITY structured_text_representation + SUBTYPE OF (representation); + SELF\representation.items : SET [1:?] OF string_representation_item_select; +END_ENTITY; + + +ENTITY styled_item + SUBTYPE OF (representation_item); + styles : SET [1:?] OF presentation_style_assignment; + item : representation_item; +WHERE + WR1 : (SIZEOF(SELF.styles) = 1) + XOR + (SIZEOF(QUERY(pres_style <* SELF.styles | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRESENTATION_STYLE_BY_CONTEXT' IN + TYPEOF(pres_style)) + )) = 0); +END_ENTITY; + + +ENTITY subedge + SUBTYPE OF (edge); + parent_edge : edge; +END_ENTITY; + + +ENTITY subface + SUBTYPE OF (face); + parent_face : face; +WHERE + WR1 : NOT (mixed_loop_type_set(list_to_set(list_face_loops(SELF)) + + list_to_set(list_face_loops(parent_face)))); +END_ENTITY; + + +ENTITY supplied_part_relationship + SUBTYPE OF (product_definition_relationship); +END_ENTITY; + + +ENTITY surface + SUPERTYPE OF (ONEOF (elementary_surface, swept_surface, bounded_surface, offset_surface, surface_replica)) + SUBTYPE OF (geometric_representation_item); +END_ENTITY; + + +ENTITY surface_condition_callout + SUBTYPE OF (draughting_callout); +WHERE + WR1 : SIZEOF ( QUERY ( c <* SELF.contents | SIZEOF ( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'ANNOTATION_CURVE_OCCURRENCE' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'ANNOTATION_SYMBOL_OCCURRENCE' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'ANNOTATION_TEXT_OCCURRENCE']* TYPEOF + ( c ) ) <>1 ) ) =0; +END_ENTITY; + + +ENTITY surface_curve + SUPERTYPE OF ((ONEOF (intersection_curve, seam_curve) ANDOR bounded_surface_curve)) + SUBTYPE OF (curve); + curve_3d : curve; + associated_geometry : LIST [1:2] OF pcurve_or_surface; + master_representation : preferred_surface_curve_representation; +DERIVE + basis_surface : SET [1:2] OF surface := get_basis_surface(SELF); +WHERE + WR1 : curve_3d.dim = 3; + WR2 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF(associated_geometry[1])) OR + (master_representation <> pcurve_s1); + WR3 : ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF(associated_geometry[2])) OR + (master_representation <> pcurve_s2); + WR4 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF(curve_3d)); +END_ENTITY; + + +ENTITY surface_curve_swept_area_solid + SUBTYPE OF (swept_area_solid); + directrix : curve; + start_param : REAL; + end_param : REAL; + reference_surface : surface; +WHERE + WR1 : (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE' IN TYPEOF(directrix))) OR + (reference_surface IN (directrix\surface_curve.basis_surface)); +END_ENTITY; + + +ENTITY surface_of_linear_extrusion + SUBTYPE OF (swept_surface); + extrusion_axis : vector; +END_ENTITY; + + +ENTITY surface_of_revolution + SUBTYPE OF (swept_surface); + axis_position : axis1_placement; +DERIVE + axis_line : line := representation_item('')|| + geometric_representation_item()|| curve()|| + line(axis_position.location, representation_item('')|| + geometric_representation_item()|| + vector(axis_position.z, 1.0)); +END_ENTITY; + + +ENTITY surface_patch + SUBTYPE OF (founded_item); + parent_surface : bounded_surface; + u_transition : transition_code; + v_transition : transition_code; + u_sense : BOOLEAN; + v_sense : BOOLEAN; +INVERSE + using_surfaces: BAG [1:?] OF rectangular_composite_surface FOR segments; +WHERE + WR1 : (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_BOUNDED_SURFACE' + IN TYPEOF(parent_surface))); +END_ENTITY; + + +ENTITY surface_profile_tolerance + SUBTYPE OF (geometric_tolerance); +WHERE + WR1 : NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' IN TYPEOF (SELF)) OR ( SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) <= 3); +END_ENTITY; + + +ENTITY surface_rendering_properties; + rendered_colour : colour; +END_ENTITY; + + +ENTITY surface_replica + SUBTYPE OF (surface); + parent_surface : surface; + transformation : cartesian_transformation_operator_3d; +WHERE + WR1 : acyclic_surface_replica(SELF, parent_surface); +END_ENTITY; + + +ENTITY surface_side_style + SUBTYPE OF (founded_item); + name : label; + styles : SET [1:7] OF surface_style_element_select; +WHERE + WR1 : SIZEOF(QUERY( style1 <* SELF.styles | + SIZEOF(QUERY( style2 <* SELF.styles - style1 | + TYPEOF(style1) = TYPEOF(style2) + )) > 0 + )) = 0; +END_ENTITY; + + +ENTITY surface_style_boundary + SUBTYPE OF (founded_item); + style_of_boundary : curve_or_render; +END_ENTITY; + + +ENTITY surface_style_control_grid + SUBTYPE OF (founded_item); + style_of_control_grid : curve_or_render; +END_ENTITY; + + +ENTITY surface_style_fill_area + SUBTYPE OF (founded_item); + fill_area : fill_area_style; +END_ENTITY; + + +ENTITY surface_style_parameter_line + SUBTYPE OF (founded_item); + style_of_parameter_lines : curve_or_render; + direction_counts : SET [1:2] OF direction_count_select; +WHERE + WR1 : (HIINDEX(SELF.direction_counts) = 1) + XOR + (TYPEOF(SELF.direction_counts[1]) <> + TYPEOF(SELF.direction_counts[2])); +END_ENTITY; + + +ENTITY surface_style_reflectance_ambient; + ambient_reflectance : REAL; +END_ENTITY; + + +ENTITY surface_style_reflectance_ambient_diffuse + SUBTYPE OF (surface_style_reflectance_ambient); + diffuse_reflectance : REAL; +END_ENTITY; + + +ENTITY surface_style_reflectance_ambient_diffuse_specular + SUBTYPE OF (surface_style_reflectance_ambient_diffuse); + specular_reflectance : REAL; + specular_exponent : REAL; + specular_colour : colour; +END_ENTITY; + + +ENTITY surface_style_rendering; + rendering_method : shading_surface_method; + surface_colour : colour; +END_ENTITY; + + +ENTITY surface_style_rendering_with_properties + SUBTYPE OF (surface_style_rendering); + properties : SET [1:2] OF rendering_properties_select; +WHERE + WR1 : (HIINDEX(SELF.properties) = 1) + XOR + (TYPEOF(SELF.properties[1]) <> TYPEOF(SELF.properties[2])); +END_ENTITY; + + +ENTITY surface_style_segmentation_curve + SUBTYPE OF (founded_item); + style_of_segmentation_curve : curve_or_render; +END_ENTITY; + + +ENTITY surface_style_silhouette + SUBTYPE OF (founded_item); + style_of_silhouette : curve_or_render; +END_ENTITY; + + +ENTITY surface_style_transparent; + transparency : REAL; +WHERE + WR1 : {0.0 <= transparency <= 1.0}; +END_ENTITY; + + +ENTITY surface_style_usage + SUBTYPE OF (founded_item); + side : surface_side; + style : surface_side_style_select; +END_ENTITY; + + +ENTITY surface_texture_representation + SUBTYPE OF (representation); +WHERE + WR1 : SIZEOF ( QUERY ( i <* SELF.items | SIZEOF ( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'MEASURE_REPRESENTATION_ITEM' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'VALUE_RANGE' , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DESCRIPTIVE_REPRESENTATION_ITEM']* TYPEOF ( i ) ) <>1 ) ) + =0; + WR2 : ( SIZEOF ( QUERY ( i <* SELF.items | 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF ( i ) ) ) =1 ) + AND ( SIZEOF ( QUERY ( i <* SELF.items | ( + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'DESCRIPTIVE_REPRESENTATION_ITEM' IN + TYPEOF ( i ) ) AND ( i.name = 'measuring method' ) ) ) =1 ); + WR3 : SIZEOF ( QUERY ( i <* SELF.items | SIZEOF ( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'MEASURE_REPRESENTATION_ITEM' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'VALUE_RANGE']* TYPEOF ( i ) ) =1 ) ) + >0; + WR4 : ( SIZEOF ( USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'REPRESENTATION_RELATIONSHIP.'+ + 'REP_1' ) ) <=1 ) AND ( SIZEOF ( USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'REPRESENTATION_RELATIONSHIP.'+ + 'REP_2' ) ) =0 ) AND ( SIZEOF ( QUERY ( rr <* USEDIN ( SELF + , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'REPRESENTATION_RELATIONSHIP.'+ + 'REP_1' ) | rr. rep_2.name = 'measuring direction' ) ) = + SIZEOF ( USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'REPRESENTATION_RELATIONSHIP.'+ + 'REP_1' ) ) ); + WR5 : ( SIZEOF ( USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) ) =1 ) AND ( SIZEOF ( QUERY ( pdr + <* USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) | SIZEOF ( QUERY ( gpa <* USEDIN ( + pdr. definition , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'GENERAL_PROPERTY_ASSOCIATION.'+ + 'DERIVED_DEFINITION' ) | ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'GENERAL_PROPERTY' IN TYPEOF ( gpa. base_definition ) ) AND + ( gpa. base_definition.name ='surface_condition' ) ) ) =1 ) + ) =1 ); +END_ENTITY; + + +ENTITY surfaced_open_shell + SUBTYPE OF (open_shell); +WHERE + WR1 : SIZEOF(QUERY(q <* SELF\connected_face_set.cfs_faces | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_SURFACE' IN TYPEOF(q)))) = 0; +END_ENTITY; + + +ENTITY swept_area_solid + SUPERTYPE OF (ONEOF (revolved_area_solid, extruded_area_solid, surface_curve_swept_area_solid)) + SUBTYPE OF (solid_model); + swept_area : curve_bounded_surface; +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE' IN TYPEOF(swept_area.basis_surface); +END_ENTITY; + + +ENTITY swept_disk_solid + SUBTYPE OF (solid_model); + directrix : curve; + radius : positive_length_measure; + inner_radius : OPTIONAL positive_length_measure; + start_param : REAL; + end_param : REAL; +WHERE + WR1 : directrix.dim = 3; + WR2 : (NOT EXISTS(inner_radius)) OR (radius > inner_radius); +END_ENTITY; + + +ENTITY swept_face_solid + SUPERTYPE OF (ONEOF (extruded_face_solid, revolved_face_solid)) + SUBTYPE OF (solid_model); + swept_face : face_surface; +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE' IN TYPEOF(swept_face.face_geometry); +END_ENTITY; + + +ENTITY swept_surface + SUPERTYPE OF (ONEOF (surface_of_linear_extrusion, surface_of_revolution)) + SUBTYPE OF (surface); + swept_curve : curve; +END_ENTITY; + + +ENTITY symbol + SUBTYPE OF (representation_item); +END_ENTITY; + + +ENTITY symbol_colour; + colour_of_symbol : colour; +END_ENTITY; + + +ENTITY symbol_representation + SUBTYPE OF (representation); +END_ENTITY; + + +ENTITY symbol_representation_map + SUBTYPE OF (representation_map); + SELF\representation_map.mapped_representation : symbol_representation; + SELF\representation_map.mapping_origin : axis2_placement; +END_ENTITY; + + +ENTITY symbol_style + SUBTYPE OF (founded_item); + name : label; + style_of_symbol : symbol_style_select; +END_ENTITY; + + +ENTITY symbol_target + SUBTYPE OF (geometric_representation_item); + placement : axis2_placement; + x_scale : positive_ratio_measure; + y_scale : positive_ratio_measure; +END_ENTITY; + + +ENTITY symmetric_shape_aspect + SUBTYPE OF (shape_aspect); +INVERSE + basis_relationships: SET [1:?] OF shape_aspect_relationship FOR relating_shape_aspect; +WHERE + WR1 : SIZEOF (QUERY (x<*SELF\symmetric_shape_aspect.basis_relationships | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CENTRE_OF_SYMMETRY' IN TYPEOF + (x\shape_aspect_relationship.related_shape_aspect)))>=1; +END_ENTITY; + + +ENTITY symmetry_tolerance + SUBTYPE OF (geometric_tolerance_with_datum_reference); +WHERE + WR1 : SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) <= 3; +END_ENTITY; + + +ENTITY table_representation_item + SUBTYPE OF (compound_representation_item); +WHERE + WR1 : SIZEOF(QUERY(itet <* SELF\compound_representation_item.item_element | + NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ROW_REPRESENTATION_ITEM' IN TYPEOF(itet)) + )) = 0; +END_ENTITY; + + +ENTITY tactile_appearance_representation + SUBTYPE OF (representation); +WHERE + WR1 : SIZEOF ( QUERY ( i <* SELF.items | SIZEOF ( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'MEASURE_REPRESENTATION_ITEM' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'VALUE_RANGE']* TYPEOF ( i ) ) <>1 )) =0; + WR2 : SIZEOF ( QUERY ( i <* SELF.items | name ='depth' ) ) <=1; + WR3 : ( SIZEOF ( USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) ) =1 ) AND ( SIZEOF ( QUERY ( pdr + <* USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) | SIZEOF ( QUERY ( gpa <* USEDIN ( + pdr. definition , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'GENERAL_PROPERTY_ASSOCIATION.'+ + 'DERIVED_DEFINITION' ) | ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'GENERAL_PROPERTY' IN TYPEOF ( gpa. base_definition ) ) AND + ( gpa. base_definition.name ='surface_condition' ) ) ) =1 )) =1 ); +END_ENTITY; + + +ENTITY tagged_text_format + SUBTYPE OF (representation_context); +END_ENTITY; + + +ENTITY tagged_text_item + SUBTYPE OF (descriptive_representation_item); +END_ENTITY; + + +ENTITY tangent + SUBTYPE OF (derived_shape_aspect); +WHERE + WR1 : SIZEOF (SELF\derived_shape_aspect.deriving_relationships)= 1; +END_ENTITY; + + +ENTITY terminator_symbol + SUBTYPE OF (annotation_symbol_occurrence); + annotated_curve : annotation_curve_occurrence; +END_ENTITY; + + +ENTITY text_font; + id : identifier; + name : label; + description : text; +INVERSE + glyphs: SET [1:?] OF character_glyph_font_usage FOR font; +END_ENTITY; + + +ENTITY text_font_family; + id : identifier; + name : label; + description : text; +INVERSE + fonts: SET [1:?] OF text_font_in_family FOR family; +END_ENTITY; + + +ENTITY text_font_in_family; + font : text_font; + family : text_font_family; +END_ENTITY; + + +ENTITY text_literal + SUBTYPE OF (geometric_representation_item); + literal : presentable_text; + placement : axis2_placement; + alignment : text_alignment; + path : text_path; + font : font_select; +END_ENTITY; + + +ENTITY text_literal_with_associated_curves + SUBTYPE OF (text_literal); + associated_curves : SET [1:?] OF curve; +END_ENTITY; + + +ENTITY text_literal_with_blanking_box + SUBTYPE OF (text_literal); + blanking : planar_box; +END_ENTITY; + + +ENTITY text_literal_with_delineation + SUBTYPE OF (text_literal); + delineation : text_delineation; +END_ENTITY; + + +ENTITY text_literal_with_extent + SUBTYPE OF (text_literal); + extent : planar_extent; +END_ENTITY; + + +ENTITY text_string_representation + SUBTYPE OF (representation); + SELF\representation.items : SET [1:?] OF text_string_representation_item; +WHERE + WR1 : SIZEOF ( + QUERY (item <* SELF\representation.items | + NOT (SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_LITERAL', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT_CHARACTER', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DEFINED_CHARACTER_GLYPH', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_TEXT'] * + TYPEOF (item)) = 0) + )) >= 1; + WR2 : SIZEOF ( + QUERY (a2p <* + QUERY (item <* SELF\representation.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AXIS2_PLACEMENT' IN TYPEOF (item)) | + NOT ((SIZEOF ( + QUERY (at <* + QUERY (item <* SELF\representation.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'ANNOTATION_TEXT' IN TYPEOF (item)) | + (at\mapped_item.mapping_target :=: a2p))) >= 1) OR + (SIZEOF ( + QUERY (atc <* + QUERY (item <* SELF\representation.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'ANNOTATION_TEXT_CHARACTER' IN TYPEOF (item)) | + (atc\mapped_item.mapping_target :=: a2p))) >= 1) + ))) = 0; +END_ENTITY; + + +ENTITY text_style + SUBTYPE OF (founded_item); + name : label; + character_appearance : character_style_select; +END_ENTITY; + + +ENTITY text_style_for_defined_font; + text_colour : colour; +END_ENTITY; + + +ENTITY text_style_with_box_characteristics + SUBTYPE OF (text_style); + characteristics : SET [1:4] OF box_characteristic_select; +WHERE + WR1 : SIZEOF( QUERY( c1 <* SELF.characteristics | + SIZEOF( QUERY( c2 <* SELF.characteristics - c1 | + TYPEOF (c1) = TYPEOF (c2) + )) > 0 + )) = 0; +END_ENTITY; + + +ENTITY text_style_with_mirror + SUBTYPE OF (text_style); + mirror_placement : axis2_placement; +END_ENTITY; + + +ENTITY text_style_with_spacing + SUBTYPE OF (text_style); + character_spacing : character_spacing_select; +END_ENTITY; + + +ENTITY thermal_resistance_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.THERMAL_RESISTANCE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY thermal_resistance_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = + dimensional_exponents ( -1.0, -1.0, -3.0, 0.0, 1.0, 0.0, 0.0 ); +END_ENTITY; + + +ENTITY thermodynamic_temperature_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.THERMODYNAMIC_TEMPERATURE_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY thermodynamic_temperature_unit + SUBTYPE OF (named_unit); +WHERE + WR1 : (SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 0.0) AND (SELF\named_unit.dimensions.time_exponent = 0.0) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 1.0) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0); +END_ENTITY; + + +ENTITY thickened_face_solid + SUBTYPE OF (solid_model); + base_element : generalized_surface_select; + offset1 : length_measure; + offset2 : length_measure; +WHERE + WR1 : NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE' IN TYPEOF(base_element)) AND + (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOUNDED_SURFACE' IN TYPEOF(base_element)))); + WR2 : offset1 <> offset2; +END_ENTITY; + + +ENTITY thickness_laminate_definition + SUBTYPE OF (product_definition); +WHERE + WR1 : SIZEOF (QUERY (pdr <* USEDIN (SELF, + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRODUCT_DEFINITION_RELATIONSHIP.' + + 'RELATING_PRODUCT_DEFINITION') | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'NEXT_ASSEMBLY_USAGE_OCCURRENCE' IN + TYPEOF (pdr))) = 1; +END_ENTITY; + + +ENTITY thickness_laminate_table + SUBTYPE OF (zone_structural_makeup); +END_ENTITY; + + +ENTITY time_interval; + id : identifier; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY time_interval_assignment + ABSTRACT SUPERTYPE; + assigned_time_interval : time_interval; + role : time_interval_role; +END_ENTITY; + + +ENTITY time_interval_based_effectivity + SUBTYPE OF (effectivity); + effectivity_period : time_interval; +END_ENTITY; + + +ENTITY time_interval_relationship; + name : label; + description : OPTIONAL text; + relating_time_interval : time_interval; + related_time_interval : time_interval; +END_ENTITY; + + +ENTITY time_interval_role; + name : label; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY time_interval_with_bounds + SUBTYPE OF (time_interval); + primary_bound : OPTIONAL date_time_or_event_occurrence; + secondary_bound : OPTIONAL date_time_or_event_occurrence; + duration : OPTIONAL time_measure_with_unit; +WHERE + WR1 : NOT (EXISTS(secondary_bound) AND EXISTS(duration)); + WR2 : EXISTS(primary_bound) OR EXISTS(secondary_bound); +END_ENTITY; + + +ENTITY time_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TIME_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY time_unit + SUBTYPE OF (named_unit); +WHERE + WR1 : (SELF\named_unit.dimensions.length_exponent = 0.0) AND (SELF\named_unit.dimensions.mass_exponent = 0.0) AND (SELF\named_unit.dimensions.time_exponent = 1.0) AND (SELF\named_unit.dimensions.electric_current_exponent = 0.0) AND (SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0.0) AND (SELF\named_unit.dimensions.amount_of_substance_exponent = 0.0) AND (SELF\named_unit.dimensions.luminous_intensity_exponent = 0.0); +END_ENTITY; + + +ENTITY tolerance_value; + lower_bound : measure_with_unit; + upper_bound : measure_with_unit; +DERIVE + lbvc : REAL := lower_bound\measure_with_unit.value_component; + ubvc : REAL := upper_bound\measure_with_unit.value_component; +WHERE + WR1 : ubvc > lbvc; + WR2 : upper_bound\measure_with_unit.unit_component = + lower_bound\measure_with_unit.unit_component; +END_ENTITY; + + +ENTITY tolerance_zone + SUBTYPE OF (shape_aspect); + defining_tolerance : SET [1:?] OF geometric_tolerance; + form : tolerance_zone_form; +END_ENTITY; + + +ENTITY tolerance_zone_definition + SUPERTYPE OF (ONEOF (projected_zone_definition, runout_zone_definition)); + zone : tolerance_zone; + boundaries : SET [1:?] OF shape_aspect; +END_ENTITY; + + +ENTITY tolerance_zone_form; + name : label; +END_ENTITY; + + +ENTITY topological_representation_item + SUPERTYPE OF (ONEOF (vertex, edge, face_bound, face, vertex_shell, wire_shell, connected_edge_set, connected_face_set, (loop ANDOR path))) + SUBTYPE OF (representation_item); +END_ENTITY; + + +ENTITY toroidal_surface + SUBTYPE OF (elementary_surface); + major_radius : positive_length_measure; + minor_radius : positive_length_measure; +END_ENTITY; + + +ENTITY torus + SUBTYPE OF (geometric_representation_item); + position : axis1_placement; + major_radius : positive_length_measure; + minor_radius : positive_length_measure; +WHERE + WR1 : major_radius > minor_radius; +END_ENTITY; + + +ENTITY total_runout_tolerance + SUBTYPE OF (geometric_tolerance_with_datum_reference); +WHERE + WR1 : SIZEOF (SELF\geometric_tolerance_with_datum_reference.datum_system) <= 2; +END_ENTITY; + + +ENTITY track_blended_solid + ABSTRACT SUPERTYPE OF (track_blended_solid_with_end_conditions) + SUBTYPE OF (edge_blended_solid); +WHERE + WR1 : check_continuous_edges(SELF\edge_blended_solid.blended_edges); +END_ENTITY; + + +ENTITY track_blended_solid_with_end_conditions + SUBTYPE OF (track_blended_solid); + end_conditions : LIST [2:2] OF blend_end_condition_select; +WHERE + WR1 : SIZEOF(TYPEOF(SELF) * + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_CONSTANT_RADIUS_EDGE_BLEND', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_VARIABLE_RADIUS_EDGE_BLEND', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_WITH_CHAMFERED_EDGES']) = 1; + WR2 : NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX' IN TYPEOF(end_conditions[1])) + AND ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX' IN TYPEOF(end_conditions[2]))); + WR3 : NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX' IN TYPEOF(end_conditions[1])) + AND (NOT ((end_conditions[1] + :=: SELF\edge_blended_solid.blended_edges[1].edge_start) + XOR (end_conditions[1] + :=: SELF\edge_blended_solid.blended_edges[1].edge_end)))); + WR4 : NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX' IN TYPEOF(end_conditions[2])) + AND (NOT ((end_conditions[2] + :=: SELF\edge_blended_solid.blended_edges[HIINDEX( + SELF\edge_blended_solid.blended_edges)].edge_start) + XOR (end_conditions[2] + :=: SELF\edge_blended_solid.blended_edges[HIINDEX( + SELF\edge_blended_solid.blended_edges)].edge_end)))); +END_ENTITY; + + +ENTITY transformation_with_derived_angle + SUPERTYPE OF (ONEOF (draped_defined_transformation, laid_defined_transformation)) + SUBTYPE OF (item_defined_transformation); + SELF\item_defined_transformation.transform_item_1 : angle_direction_reference_with_a2p3d_select; + SELF\item_defined_transformation.transform_item_2 : axis2_placement_3d; +DERIVE + orientation_angle : plane_angle_measure := derive_angle ( + SELF\item_defined_transformation.transform_item_1, + SELF\item_defined_transformation.transform_item_2); +WHERE + WR1 : (SELF\item_defined_transformation.transform_item_1\ + axis2_placement_3d.p[3].direction_ratios[1] = + SELF\item_defined_transformation.transform_item_2\ + axis2_placement_3d.p[3].direction_ratios[1]) + AND + (SELF\item_defined_transformation.transform_item_1\ + axis2_placement_3d.p[3].direction_ratios[2] = + SELF\item_defined_transformation.transform_item_2\ + axis2_placement_3d.p[3].direction_ratios[2]) + AND + (SELF\item_defined_transformation.transform_item_1\ + axis2_placement_3d.p[3].direction_ratios[3] = + SELF\item_defined_transformation.transform_item_2\ + axis2_placement_3d.p[3].direction_ratios[3]); +END_ENTITY; + + +ENTITY trimmed_curve + SUBTYPE OF (bounded_curve); + basis_curve : curve; + trim_1 : SET [1:2] OF trimming_select; + trim_2 : SET [1:2] OF trimming_select; + sense_agreement : BOOLEAN; + master_representation : trimming_preference; +WHERE + WR1 : (HIINDEX(trim_1) = 1) OR (TYPEOF(trim_1[1]) <> TYPEOF(trim_1[2])); + WR2 : (HIINDEX(trim_2) = 1) OR (TYPEOF(trim_2[1]) <> TYPEOF(trim_2[2])); +END_ENTITY; + + +ENTITY two_direction_repeat_factor + SUBTYPE OF (one_direction_repeat_factor); + second_repeat_factor : vector; +END_ENTITY; + + +ENTITY type_qualifier; + name : label; +END_ENTITY; + + +ENTITY unary_generic_expression + ABSTRACT SUPERTYPE + SUBTYPE OF (generic_expression); + operand : generic_expression; +END_ENTITY; + + +ENTITY unary_numeric_expression + ABSTRACT SUPERTYPE + SUBTYPE OF (numeric_expression, unary_generic_expression); + SELF\unary_generic_expression.operand : numeric_expression; +END_ENTITY; + + +ENTITY uncertainty_assigned_representation + SUBTYPE OF (representation); + uncertainty : SET [1:?] OF uncertainty_measure_with_unit; +END_ENTITY; + + +ENTITY uncertainty_measure_with_unit + SUBTYPE OF (measure_with_unit); + name : label; + description : OPTIONAL text; +WHERE + WR1 : valid_measure_value (SELF\measure_with_unit.value_component); +END_ENTITY; + + +ENTITY uncertainty_qualifier + SUPERTYPE OF (ONEOF (standard_uncertainty, qualitative_uncertainty)); + measure_name : label; + description : text; +END_ENTITY; + + +ENTITY uniform_curve + SUBTYPE OF (b_spline_curve); +END_ENTITY; + + +ENTITY uniform_resource_identifier + SUBTYPE OF (descriptive_representation_item); +END_ENTITY; + + +ENTITY uniform_surface + SUBTYPE OF (b_spline_surface); +END_ENTITY; + + +ENTITY usage_association + SUBTYPE OF (action_method_relationship); + SELF\action_method_relationship.related_method : information_usage_right; + SELF\action_method_relationship.relating_method : information_usage_right; +DERIVE + related : information_usage_right := SELF\action_method_relationship.related_method; + relating : information_usage_right := SELF\action_method_relationship.relating_method; +END_ENTITY; + + +ENTITY user_defined_curve_font + SUBTYPE OF (curve_style_font, mapped_item); +END_ENTITY; + + +ENTITY user_defined_marker + SUBTYPE OF (mapped_item, pre_defined_marker); +END_ENTITY; + + +ENTITY user_defined_terminator_symbol + SUBTYPE OF (mapped_item, pre_defined_symbol); +END_ENTITY; + + +ENTITY user_selected_elements + SUBTYPE OF (representation_item); + picked_items : SET [1:?] OF representation_item; +END_ENTITY; + + +ENTITY user_selected_shape_elements + SUBTYPE OF (user_selected_elements); +WHERE + WR1 : SIZEOF(QUERY(q <* + SELF\user_selected_elements.picked_items | NOT + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_REPRESENTATION_ITEM' + IN TYPEOF(q)))) = 0; +END_ENTITY; + + +ENTITY value_range + SUBTYPE OF (compound_representation_item); +WHERE + WR1 : ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'SET_REPRESENTATION_ITEM' IN TYPEOF ( item_element ) ) AND value_range_wr1 ( item_element ); + WR2 : value_range_wr2 ( item_element ); + WR3 : value_range_wr3 ( item_element ); +END_ENTITY; + + +ENTITY value_representation_item + SUBTYPE OF (representation_item); + value_component : measure_value; +WHERE + WR1 : SIZEOF (QUERY (rep <* using_representations (SELF) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.GLOBAL_UNIT_ASSIGNED_CONTEXT' + IN TYPEOF (rep.context_of_items) + ))) = 0; +END_ENTITY; + + +ENTITY variable_semantics + ABSTRACT SUPERTYPE; +END_ENTITY; + + +ENTITY variational_representation_item + ABSTRACT SUPERTYPE OF (auxiliary_geometric_representation_item) + SUBTYPE OF (representation_item); +WHERE + WR1 : SIZEOF(QUERY(q <* using_representations(SELF) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VARIATIONAL_REPRESENTATION' + IN TYPEOF(q)))) = 0; + WR2 : SIZEOF(QUERY(q <* using_representations(SELF) | + NOT (SELF IN q.items))) = 0; +END_ENTITY; + + +ENTITY vector + SUBTYPE OF (geometric_representation_item); + orientation : direction; + magnitude : length_measure; +WHERE + WR1 : magnitude >= 0.0; +END_ENTITY; + + +ENTITY vector_style + SUBTYPE OF (curve_style, pre_defined_terminator_symbol); +END_ENTITY; + + +ENTITY velocity_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VELOCITY_UNIT' IN TYPEOF (SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY velocity_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = + dimensional_exponents ( 1.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0 ); +END_ENTITY; + + +ENTITY versioned_action_request; + id : identifier; + version : label; + purpose : text; + description : OPTIONAL text; +END_ENTITY; + + +ENTITY vertex + SUBTYPE OF (topological_representation_item); +END_ENTITY; + + +ENTITY vertex_loop + SUBTYPE OF (loop); + loop_vertex : vertex; +END_ENTITY; + + +ENTITY vertex_point + SUBTYPE OF (vertex, geometric_representation_item); + vertex_geometry : point; +END_ENTITY; + + +ENTITY vertex_shell + SUBTYPE OF (topological_representation_item); + vertex_shell_extent : vertex_loop; +END_ENTITY; + + +ENTITY view_volume + SUBTYPE OF (founded_item); + projection_type : central_or_parallel; + projection_point : cartesian_point; + view_plane_distance : length_measure; + front_plane_distance : length_measure; + front_plane_clipping : BOOLEAN; + back_plane_distance : length_measure; + back_plane_clipping : BOOLEAN; + view_volume_sides_clipping : BOOLEAN; + view_window : planar_box; +END_ENTITY; + + +ENTITY visual_appearance_representation + SUBTYPE OF (representation); +WHERE + WR1 : ( {3<= SIZEOF ( SELF.items ) <=9} ) AND ( SIZEOF ( QUERY ( + i <* items | ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF ( i ) ) AND ( + i.name IN [ 'colour id' , 'colour name' , 'lustre' , 'pattern' , 'transparency', 'orientation'] ) ) + ) + SIZEOF ( QUERY ( i <* items | ( SIZEOF ( + ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'MEASURE_REPRESENTATION_ITEM' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'VALUE_RANGE']* TYPEOF ( i ) ) =1 ) + AND ( i.name IN ['refraction index' , 'opacity'] ) ) + ) + SIZEOF ( QUERY ( i <* items | ( + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'DOCUMENT_FILE' IN TYPEOF ( i ) ) + AND ( i.name IN [ 'texture map' ] ) ) ) + = SIZEOF ( SELF.items ) ); + WR2 : SIZEOF ( QUERY ( i <* SELF.items | i.name = 'colour id' )) =1; + WR3 : SIZEOF ( QUERY ( i <* SELF.items | i.name ='lustre' ) )=1; + WR4 : SIZEOF ( QUERY ( i <* SELF.items | i.name = 'colour name') ) <=1; + WR5 : SIZEOF ( QUERY ( i <* SELF.items | i.name ='pattern' ) )<=1; + WR6 : SIZEOF ( QUERY ( i <* SELF.items | i.name ='transparency') ) <=1; + WR7 : SIZEOF ( QUERY ( i <* SELF.items | i.name = 'texture map') ) <=1; + WR8 : SIZEOF ( QUERY ( i <* SELF.items | i.name ='refraction index' ) )<=1; + WR9 : SIZEOF ( QUERY ( i <* SELF.items | i.name ='opacity') ) <=1; + WR10 : SIZEOF ( QUERY ( i <* SELF.items | i.name ='orientation') ) <=1; + WR11 : ( SIZEOF ( USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) ) =1 ) AND ( SIZEOF ( QUERY ( pdr + <* USEDIN ( SELF , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'PROPERTY_DEFINITION_REPRESENTATION.'+ + 'USED_REPRESENTATION' ) | SIZEOF ( QUERY ( gpa <* USEDIN ( + pdr. definition , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+'GENERAL_PROPERTY_ASSOCIATION.'+ + 'DERIVED_DEFINITION' ) | ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ + 'GENERAL_PROPERTY' IN TYPEOF ( gpa. base_definition ) ) AND + ( gpa. base_definition.name ='surface_condition' ) ) ) =1 )) =1 ); +END_ENTITY; + + +ENTITY volume_measure_with_unit + SUBTYPE OF (measure_with_unit); +WHERE + WR1 : 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VOLUME_UNIT' IN TYPEOF(SELF\measure_with_unit.unit_component); +END_ENTITY; + + +ENTITY volume_unit + SUBTYPE OF (derived_unit); +WHERE + WR1 : derive_dimensional_exponents(SELF) = + dimensional_exponents ( 3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ); +END_ENTITY; + + +ENTITY week_of_year_and_day_date + SUBTYPE OF (date); + week_component : week_in_year_number; + day_component : OPTIONAL day_in_week_number; +END_ENTITY; + + +ENTITY wire_shell + SUBTYPE OF (topological_representation_item); + wire_shell_extent : SET [1:?] OF loop; +WHERE + WR1 : NOT mixed_loop_type_set(wire_shell_extent); +END_ENTITY; + + +ENTITY year_month + SUBTYPE OF (date); + month_component : month_in_year_number; +END_ENTITY; + + +ENTITY zone_structural_makeup + SUPERTYPE OF (ONEOF ((smeared_material_definition AND thickness_laminate_table), (smeared_material_definition AND percentage_laminate_table), thickness_laminate_table, percentage_laminate_table, smeared_material_definition)) + SUBTYPE OF (laminate_table); +END_ENTITY; + + +RULE alternative_solution_requires_solution_definition FOR (product_definition_formation); + LOCAL + solution_versions: SET OF product_definition_formation := []; + END_LOCAL; + solution_versions := QUERY( pdf <* product_definition_formation | + SIZEOF( QUERY( prpc <* USEDIN(pdf.of_product, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF' + '.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | + prpc.name = 'alternative solution')) = 1); +WHERE + WR1 : SIZEOF( QUERY( pdf <* solution_versions | + SIZEOF( QUERY( pd <* USEDIN(pdf, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF' + '.PRODUCT_DEFINITION.FORMATION') | + pd.frame_of_reference.name = 'alternative definition')) <> 1))= 0; +END_RULE; + +RULE application_protocol_definition_required FOR (application_context); + +WHERE + WR1 : SIZEOF( QUERY( ac <* application_context | + (SIZEOF (QUERY (apd <* USEDIN(ac,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.APPLICATION_PROTOCOL_DEFINITION.APPLICATION') | + apd.application_interpreted_model_schema_name = 'ap203_configuration_controlled_3d_design_of_mechanical_parts_and_assemblies' + )) > 0) + )) > 0; +END_RULE; + +RULE breakdown_element_requires_product_definition FOR (product_definition_formation); + +WHERE + WR1 : SIZEOF ( QUERY ( pdf <* product_definition_formation | + ( SIZEOF ( QUERY ( prpc <* USEDIN ( pdf.of_product , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS' ) | + prpc.name = 'functionality' ) ) = 1 ) AND + ( SIZEOF ( QUERY ( pd <* USEDIN ( pdf ,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION.FORMATION') | + pd.frame_of_reference.name = 'functional definition' ) ) <1 ) ) ) = 0; + WR2 : SIZEOF ( QUERY ( pdf <* product_definition_formation | + ( SIZEOF ( QUERY ( prpc <* USEDIN ( pdf.of_product , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS' ) | + prpc.name = 'conceptual design' ) ) = 1 ) AND + ( SIZEOF (QUERY ( pd <* USEDIN ( pdf , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION.FORMATION' ) | + pd.frame_of_reference.name = 'conceptual definition' ) ) <1) ) ) = 0; +END_RULE; + +RULE compatible_dimension FOR (cartesian_point, direction, representation_context, geometric_representation_context); + +WHERE + WR1 : SIZEOF(QUERY(x <* cartesian_point| SIZEOF(QUERY + (y <* geometric_representation_context | item_in_context(x,y) AND + (HIINDEX(x.coordinates) <> y.coordinate_space_dimension))) > 0 )) =0; + WR2 : SIZEOF(QUERY(x <* direction | SIZEOF( QUERY + (y <* geometric_representation_context | item_in_context(x,y) AND + (HIINDEX(x.direction_ratios) <> y.coordinate_space_dimension))) + > 0 )) = 0; +END_RULE; + +RULE component_class_for_assembly_select FOR (composite_assembly_sequence_definition, next_assembly_usage_occurrence, product_related_product_category); + LOCAL + i,j,k : INTEGER :=0; + dkuhr : LOGICAL :=TRUE; + nnauo : INTEGER :=0; + nprpc : INTEGER :=0; + rp : product; + END_LOCAL; + REPEAT i:= LOINDEX (composite_assembly_sequence_definition) TO + HIINDEX (composite_assembly_sequence_definition); + nnauo := 0; + REPEAT j:= LOINDEX (next_assembly_usage_occurrence) TO + HIINDEX (next_assembly_usage_occurrence); + IF (composite_assembly_sequence_definition[i] = + next_assembly_usage_occurrence[j].relating_product_definition) THEN + rp := next_assembly_usage_occurrence[j].related_product_definition. + formation.of_product; + nprpc := 0; + REPEAT k:= LOINDEX (product_related_product_category) TO + HIINDEX (product_related_product_category); + IF ((rp IN product_related_product_category[k].products) AND + (product_related_product_category[k].name IN ['ply', + 'ply laminate', 'filament laminate', 'processed core', + 'composite assembly'])) THEN + nprpc := nprpc + 1; + END_IF; + END_REPEAT; + IF (nprpc = 1) THEN + nnauo := nnauo + 1; + ELSE + dkuhr := FALSE; + ESCAPE; + END_IF; + END_IF; + END_REPEAT; + IF (dkuhr = FALSE) THEN + ESCAPE; + END_IF; + IF(nnauo = 0) THEN + dkuhr := FALSE; + ESCAPE; + END_IF; + END_REPEAT; +WHERE + WR1 : dkuhr; +END_RULE; + +RULE consistent_uncertainty FOR (global_uncertainty_assigned_context, qualified_representation_item, uncertainty_assigned_representation); + +WHERE + WR1 : SIZEOF ( QUERY ( guac <* global_uncertainty_assigned_context | + SIZEOF ( QUERY ( u1 <* guac.uncertainty | + SIZEOF ( QUERY ( u2 <* guac.uncertainty | u2.name = u1.name ) ) >1 ) ) >0 ) ) = 0; + WR2 : SIZEOF ( QUERY ( uar <* uncertainty_assigned_representation | + SIZEOF ( QUERY ( u1<* uar.uncertainty | + SIZEOF ( QUERY ( u2 <* uar.uncertainty | u2.name = u1.name ) ) >1 ) ) >0 ) ) = 0; + WR3 : SIZEOF ( QUERY ( qri <* qualified_representation_item | + SIZEOF ( QUERY ( u1 <* qri.qualifiers | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF' + '.UNCERTAINTY_QUALIFIER' IN TYPEOF ( u1 ) ) AND + ( SIZEOF ( QUERY ( u2 <* qri.qualifiers | + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF' + '.UNCERTAINTY_QUALIFIER' IN TYPEOF ( u2 ) ) AND + ( u2\uncertainty_qualifier.measure_name = u1\uncertainty_qualifier.measure_name ) ) + ) >1 ) ) ) >0 ) ) = 0; +END_RULE; + +RULE constraint_definition_requires_constraint_category FOR (product_definition); + LOCAL + constraint_definitions: SET OF product_definition := []; + END_LOCAL; + constraint_definitions := QUERY( pd <* product_definition | + (pd.frame_of_reference.name = 'design constraint definition')); +WHERE + WR1 : SIZEOF ( QUERY ( pd <* constraint_definitions | + ( SIZEOF ( QUERY ( prpc <* USEDIN ( pd.formation.of_product , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS' ) | + prpc. name ='requirement' ) ) =0 ) ) ) =0; +END_RULE; + +RULE design_constraint_requires_product_definition FOR (product_definition_formation); + +WHERE + WR1 : SIZEOF ( QUERY ( pdf <* product_definition_formation | ( + SIZEOF ( QUERY ( prpc <* USEDIN ( pdf.of_product , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS' ) | + prpc.name = 'requirement' ) ) >0 ) AND + ( SIZEOF ( QUERY ( pd <* USEDIN ( pdf , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION.FORMATION') | + pd.frame_of_reference.name = 'design constraint definition' ) ) <1 ) ) ) = 0; +END_RULE; + +RULE draughting_model_items_constraint FOR (draughting_model); + +WHERE + WR1 : SIZEOF(QUERY(dm <* draughting_model | + NOT(SIZEOF(QUERY(it1 <* dm\representation.items | + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_OCCURRENCE' IN TYPEOF(it1)) + AND + NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DRAUGHTING_ANNOTATION_OCCURRENCE' IN TYPEOF(it1))) + )) = 0) + )) = 0; + WR2 : SIZEOF(QUERY(dm <* draughting_model | + NOT(SIZEOF(QUERY(it1 <* dm\representation.items | + (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_CALLOUT' IN TYPEOF(it1)) + AND + NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DRAUGHTING_ELEMENTS' IN TYPEOF(it1))) + )) = 0) + )) = 0; +END_RULE; + +RULE external_version_assignments_are_valid FOR (applied_external_identification_assignment); + +WHERE + WR1 : SIZEOF(QUERY(aia <* applied_external_identification_assignment | + NOT external_version_assignment_is_valid(aia)))=0; +END_RULE; + +RULE material_for_coating_layer FOR (shape_aspect); + LOCAL + coating_layers: SET OF shape_aspect := []; + END_LOCAL; + coating_layers:= QUERY( r <* shape_aspect | + (r.name = 'coating layer') ); +WHERE + WR1 : SIZEOF( QUERY( r <* coating_layers | + SIZEOF(USEDIN(r , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MATERIAL_DESIGNATION.DEFINITIONS'))<>1 + )) = 0; +END_RULE; + +RULE plib_property_reference_requires_name_scope FOR (externally_defined_general_property); + LOCAL + known_sourced_properties : SET OF externally_defined_general_property; + END_LOCAL; + known_sourced_properties := QUERY( edc <* externally_defined_general_property | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'KNOWN_SOURCE' IN TYPEOF(edc.source) ); +WHERE + WR1 : SIZEOF ( QUERY ( edgp <* known_sourced_properties | + ( SIZEOF ( QUERY ( edir <* USEDIN ( edgp, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'EXTERNALLY_DEFINED_ITEM_RELATIONSHIP.RELATING_ITEM' )| + ( edir.name = 'name scope' ) AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'EXTERNALLY_DEFINED_CLASS' IN TYPEOF ( edir.related_item ) ) AND + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'KNOWN_SOURCE' IN TYPEOF ( edir.related_item.source ) ) ) ) <>1 ) ) ) = 0; +END_RULE; + +RULE plib_property_reference_requires_version FOR (externally_defined_general_property); + LOCAL + plib_properties : SET OF externally_defined_general_property := []; + END_LOCAL; + plib_properties := QUERY ( edgp <* externally_defined_general_property | + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'KNOWN_SOURCE' IN TYPEOF ( edgp.source ) ) AND + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'KNOWN_SOURCE' + '.NAME' = 'ISO 13584 library' ) ); +WHERE + WR1 : SIZEOF( QUERY( edgp <* plib_properties | + (SIZEOF( QUERY( edir <* USEDIN(edgp, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT.ITEMS') | + (edir.role.name = 'version') )) <> 1) )) = 0; +END_RULE; + +RULE ply_reference FOR (ply_laminate_sequence_definition, next_assembly_usage_occurrence, product_related_product_category); + LOCAL + i,j,k : INTEGER; + dkuhr : LOGICAL := TRUE; + nnauo : INTEGER; + nprpc : INTEGER := 0; + rp : product; + END_LOCAL; + REPEAT i:= LOINDEX (ply_laminate_sequence_definition) TO + HIINDEX (ply_laminate_sequence_definition); + nnauo := 0; + REPEAT j:= LOINDEX (next_assembly_usage_occurrence) TO + HIINDEX (next_assembly_usage_occurrence); + IF (ply_laminate_sequence_definition[i] = + next_assembly_usage_occurrence[j].relating_product_definition) THEN + rp := next_assembly_usage_occurrence[j].related_product_definition. + formation.of_product; + nprpc := 0; + REPEAT k:= LOINDEX (product_related_product_category) TO + HIINDEX (product_related_product_category); + IF ((product_related_product_category[k].name = 'ply') AND + (rp IN product_related_product_category[k].products)) THEN + nprpc := nprpc + 1; + END_IF; + END_REPEAT; + IF (nprpc = 1) THEN + nnauo := nnauo + 1; + ELSE + dkuhr := FALSE; + ESCAPE; + END_IF; + END_IF; + END_REPEAT; + IF (dkuhr = FALSE) THEN + ESCAPE; + END_IF; + IF(nnauo = 0) THEN + dkuhr := FALSE; + ESCAPE; + END_IF; + END_REPEAT; +WHERE + WR1 : dkuhr; +END_RULE; + +RULE ply_stock_material_select FOR (product_related_product_category, make_from_usage_option); + LOCAL + i,j,k,kp : INTEGER; + dkuhr : LOGICAL; + nmfuo : INTEGER; + nprpc : INTEGER := 0; + rp : product; + END_LOCAL; + + dkuhr := TRUE; + REPEAT kp:= LOINDEX (product_related_product_category) TO + HIINDEX (product_related_product_category); + + IF (product_related_product_category[kp].name = 'ply') THEN + REPEAT i:= LOINDEX (product_related_product_category[kp].products) TO + HIINDEX (product_related_product_category[kp].products); + + nmfuo := 0; + REPEAT j:= LOINDEX (make_from_usage_option) TO + HIINDEX (make_from_usage_option); + + rp := make_from_usage_option[j].related_product_definition. + formation.of_product; + + IF (product_related_product_category[kp].products[i] = rp) THEN + + REPEAT k:= LOINDEX (product_related_product_category) TO + HIINDEX (product_related_product_category); + + IF ((rp IN product_related_product_category[k].products) AND + (product_related_product_category[k].name IN + ['isotropic material', 'filament assembly', + 'discontinuous fiber assembly'])) THEN + nprpc := nprpc + 1; + END_IF; + + END_REPEAT; + + IF (nprpc = 1) THEN + nmfuo := nmfuo + 1; + ELSE + dkuhr := FALSE; + ESCAPE; + END_IF; + + END_IF; + + END_REPEAT; + + IF (dkuhr = FALSE) THEN + ESCAPE; + END_IF; + IF(nmfuo <> 1) THEN + dkuhr := FALSE; + ESCAPE; + END_IF; + + END_REPEAT; + END_IF; + + END_REPEAT; +WHERE + WR1 : dkuhr; +END_RULE; + +RULE product_concept_feature_requires_category FOR (product_concept_feature); + +WHERE + WR1 : SIZEOF ( QUERY ( pcf <* product_concept_feature | +(SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'INCLUSION_PRODUCT_CONCEPT_FEATURE', +'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONDITIONAL_CONCEPT_FEATURE'] * TYPEOF(pcf)) = 0) AND +(SIZEOF ( QUERY ( aga <* USEDIN ( pcf , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'APPLIED_GROUP_ASSIGNMENT.' + 'ITEMS' ) | +( aga.role.name = 'specification category member' ) AND +('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'PRODUCT_CONCEPT_FEATURE_CATEGORY' IN TYPEOF ( aga.assigned_group )))) <>1 ) ) ) = 0; +END_RULE; + +RULE product_definition_replacement_requires_effectivity_assignment FOR (product_definition_relationship); + +WHERE + WR1 : SIZEOF( QUERY( pdr <* product_definition_relationship | + (pdr.name = 'definition replacement') AND + (SIZEOF( USEDIN(pdr,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.APPLIED_EFFECTIVITY_ASSIGNMENT.ITEMS') ) = 0) )) + = 0; +END_RULE; + +RULE restrict_alternative_definition FOR (product_definition); + LOCAL + solution_definitions: SET OF product_definition := []; + END_LOCAL; + solution_definitions := QUERY( pd <* product_definition | + (pd.frame_of_reference.name = 'alternative definition')); +WHERE + WR1 : SIZEOF ( QUERY ( pd <* solution_definitions | + ( SIZEOF ( QUERY ( pdr <* USEDIN ( pd , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF' + '.PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION' ) | + pdr.name = 'solution alternative definition' ) ) <>1 ) ) ) = 0; + WR2 : SIZEOF ( QUERY ( pd <* solution_definitions | + NOT ( pd.name IN ['technical' , 'supplier' , 'technical supplier' , ''] ) ) ) = 0; + WR3 : SIZEOF ( QUERY ( pd <* solution_definitions | + ( pd.name IN ['supplier' , 'technical supplier'] ) AND ( + SIZEOF ( QUERY ( aoa <* USEDIN ( pd.formation , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF' + '.APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS' ) | + aoa.role.name = 'supplier' )) <>1 ) )) = 0; +END_RULE; + +RULE restrict_assembly_category FOR (product_definition); + LOCAL + assembly_definitions: SET OF product_definition := []; + END_LOCAL; + assembly_definitions := QUERY( pd <* product_definition | + SIZEOF( QUERY( pdca <* USEDIN( pd, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.DEFINITION') | + pdca.frame_of_reference.name= 'assembly definition')) > 0 ); +WHERE + WR1 : SIZEOF( QUERY( pd <* assembly_definitions | + NOT ('assembly' IN categories_of_product(pd.formation.of_product)) ))= 0; +END_RULE; + +RULE restrict_centre_of_mass_representation FOR (representation); + +WHERE + WR1 : SIZEOF ( QUERY ( r <* representation | + ( r.name ='centre of mass' ) AND + ( ( SIZEOF ( r.items ) <>1 ) OR + (SIZEOF ( QUERY ( i <* r.items | + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'POINT' IN TYPEOF ( i ) ) AND + ( i.name = 'centre point' ) )) <>1 ) ) ) ) + =0; +END_RULE; + +RULE restrict_classification_assignments FOR (applied_classification_assignment); + +WHERE + WR1 : SIZEOF(QUERY(aia <* applied_classification_assignment | + NOT class_assignment_is_valid(aia)))=0; +END_RULE; + +RULE restrict_collection_category FOR (product_definition); + LOCAL + collection_definitions: SET OF product_definition := []; + END_LOCAL; + collection_definitions := QUERY( pd <* product_definition | + SIZEOF( QUERY( pdca <* USEDIN( pd, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF' + '.PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.DEFINITION') | + pdca.frame_of_reference.name= 'collection definition')) > 0 ); +WHERE + WR1 : SIZEOF( QUERY( pd <* collection_definitions | + NOT ('collection' IN categories_of_product(pd.formation.of_product)) ))= 0; +END_RULE; + +RULE restrict_concept_feature_operator FOR (concept_feature_operator); + +WHERE + WR1 : SIZEOF ( QUERY ( cfo <* concept_feature_operator | NOT + ( cfo.name IN ['and' , 'or' , 'oneof' , 'not' , 'implication'] ) ) ) = 0; + WR2 : SIZEOF ( QUERY ( cfo <* concept_feature_operator | (cfo.name = 'implication' ) AND + ( SIZEOF ( QUERY (cfrwc <* USEDIN ( cfo , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION.' + + 'CONDITIONAL_OPERATOR' ) | + SIZEOF ( QUERY ( ccf <* USEDIN( cfrwc , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONDITIONAL_CONCEPT_FEATURE.CONDITION' ) | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'INCLUSION_PRODUCT_CONCEPT_FEATURE' IN TYPEOF ( ccf )))) >0 )) >0 ))) = 0; + WR3 : SIZEOF( QUERY (cfo <* concept_feature_operator | (cfo.name = 'not') + AND (SIZEOF(QUERY(cfrwc <* USEDIN(cfo, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION.CONDITIONAL_OPERATOR') | + cfrwc.related_product_concept_feature :<>: cfrwc.relating_product_concept_feature)) >0 ))) = 0; +END_RULE; + +RULE restrict_configuration_design_for_class_breakdown_association FOR (configuration_design); + +WHERE + WR1 : SIZEOF ( QUERY ( cd <* configuration_design | + ( cd.name ='functionality' ) AND + ( NOT ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF ( cd. design ) ) OR + ( cd.design\product_definition.frame_of_reference.name<> 'functional definition' ) ) + ) ) =0; + WR2 : SIZEOF ( QUERY ( cd <* configuration_design | + ( cd.name='realization' ) AND + ( NOT ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF ( cd.design ) ) OR + ( cd.design\product_definition.frame_of_reference.name<> 'conceptual definition' ) ) + ) ) =0; + WR3 : SIZEOF ( QUERY ( cd <* configuration_design | + ( cd.name IN ['functionality' , 'realization'] ) AND + ( NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_CLASS' IN TYPEOF ( cd.configuration.item_concept ) ) ) + ) ) =0; +END_RULE; + +RULE restrict_configuration_design_for_design_constraint FOR (configuration_design); + +WHERE + WR1 : SIZEOF ( QUERY (cd <* configuration_design | + (cd.name = 'design constraint usage') AND + (NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF ( cd.design ) ) OR + (cd.design\product_definition.frame_of_reference.name <> 'design constraint definition')))) = 0; +END_RULE; + +RULE restrict_group_relationship_for_classification_hierarchy FOR (group_relationship); + +WHERE + WR1 : SIZEOF( QUERY( gr <* group_relationship | + (gr\group_relationship.name = 'class hierarchy') AND + (NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CLASS' IN TYPEOF(gr\group_relationship.related_group)) OR + NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CLASS' IN TYPEOF(gr\group_relationship.relating_group))) )) = 0; +END_RULE; + +RULE restrict_group_relationship_for_specification_category FOR (group_relationship); + +WHERE + WR1 : SIZEOF( QUERY( gr <* group_relationship | + (gr.name = 'specification category hierarchy') AND + (NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_CONCEPT_FEATURE_CATEGORY' IN TYPEOF(gr.related_group)) + OR NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_CONCEPT_FEATURE_CATEGORY' IN TYPEOF(gr.relating_group))) )) = 0; +END_RULE; + +RULE restrict_language_assignment_per_attribute FOR (attribute_language_assignment); + +WHERE + WR1 : SIZEOF ( QUERY ( ala1 <* attribute_language_assignment | + SIZEOF(QUERY( it <* ala1.items | + SIZEOF ( QUERY ( ala2 <* USEDIN ( it ,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS' ) | + ( ala1\attribute_classification_assignment.attribute_name = ala2\attribute_classification_assignment.attribute_name ) AND + ( ala1\attribute_classification_assignment.assigned_class :=: ala2\attribute_classification_assignment.assigned_class ) + )) >1 + )) >0 + )) =0; +END_RULE; + +RULE restrict_part_occurrence FOR (product_definition); + LOCAL + part_occurrences: SET OF product_definition := QUERY(pd <* product_definition | + ( pd.frame_of_reference.name = 'part occurrence' )); + END_LOCAL; +WHERE + WR1 : SIZEOF ( QUERY ( pd <* part_occurrences | + ( NOT( pd.name IN + ['single instance' , 'selected instance' ,'quantified instance' , 'specified instance' ] ) ) ) ) = 0; + WR2 : SIZEOF ( QUERY ( pd <* part_occurrences | + (SIZEOF ( QUERY ( pdr <* USEDIN ( pd , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION' ) | + pdr.name = 'definition usage' ) ) <>1 ) AND + ( SIZEOF ( QUERY ( cd <* USEDIN ( pd , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CONFIGURATION_DESIGN.DESIGN' ) | + ( cd.name = 'occurrence usage definition' ) AND + ( NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'PRODUCT_IDENTIFICATION' IN TYPEOF( cd.configuration ) ) ) ) ) <>1 ) ) ) = 0; + WR3 : SIZEOF ( QUERY ( pd <* part_occurrences | + (SIZEOF ( QUERY ( cd <* USEDIN ( pd , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.'+ 'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION' ) | + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' +'PRODUCT_DEFINITION_USAGE' IN TYPEOF ( cd ) ) ) ) = 0 )AND + ( SIZEOF ( USEDIN ( pd , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'PRODUCT_DEFINITION_OCCURRENCE_RELATIONSHIP.OCCURRENCE' ) ) = 0 ) ) ) = 0; + WR4 : SIZEOF ( QUERY ( pd <* part_occurrences | + ( pd.name = 'selected instance' ) AND + NOT valid_selected_instance_representation(pd) ))=0; + WR5 : SIZEOF ( QUERY ( pd <* part_occurrences | + ( pd.name = 'quantified instance' ) AND + ( SIZEOF ( QUERY (ppd <* USEDIN ( pd , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' +'PROPERTY_DEFINITION.DEFINITION' ) | + ( ppd.name ='occurrence quantity' ) AND + ( SIZEOF ( QUERY ( pdr <*USEDIN ( ppd , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' +'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION' ) | ( + pdr.used_representation.name = 'quantity' ) AND + (SIZEOF ( pdr.used_representation.items ) = 1 ) AND + (SIZEOF ( QUERY ( i <* pdr.used_representation.items | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'MEASURE_REPRESENTATION_ITEM' IN TYPEOF ( i ) ) AND + ( i.name = 'quantity measure' ) ) ) = 1)))= 1 )))= 0 )))= 0; + WR6 : SIZEOF ( QUERY ( pd <* part_occurrences | + ( pd.name = 'specified instance' ) AND + ( SIZEOF ( QUERY ( + pdor <* USEDIN ( pd , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' +'PRODUCT_DEFINITION_OCCURRENCE_RELATIONSHIP.OCCURRENCE' ) | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' +'SPECIFIED_HIGHER_USAGE_OCCURRENCE' IN TYPEOF ( pdor.occurrence_usage ) ) ) = 0 ) ) ) = 0; +END_RULE; + +RULE restrict_part_occurrence_category FOR (product_definition); + LOCAL + part_occurrences: SET OF product_definition := QUERY( pd <* product_definition |( + pd.frame_of_reference.name = 'part occurrence')); + END_LOCAL; +WHERE + WR1 : SIZEOF( QUERY( pd <* part_occurrences | + (SIZEOF( QUERY( prpc <* USEDIN(pd.formation.of_product, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | + prpc.name IN ['part','raw material','tool'] )) = 0 ) )) = 0; +END_RULE; + +RULE restrict_product_definitions_for_base_element FOR (product_definition_relationship); + +WHERE + WR1 : SIZEOF ( QUERY ( pdr <* product_definition_relationship | + ( pdr. name = 'solution alternative definition' ) AND + ( NOT( pdr. relating_product_definition.frame_of_reference.name + IN [ 'alternative definition' , 'functional definition' , 'conceptual definition' ] ) OR + ( pdr.related_product_definition.frame_of_reference.name<>'alternative definition' ) ) ) ) =0; +END_RULE; + +RULE restrict_product_definitions_for_collection FOR (product_definition_relationship); + +WHERE + WR1 : SIZEOF ( QUERY ( pdr <* product_definition_relationship | + ( pdr. name = 'collection membership' ) AND + ( ( pdr.relating_product_definition.frame_of_reference.name<>'part definition' ) OR + ( pdr.related_product_definition.frame_of_reference.name<>'part occurrence' ) OR + ( SIZEOF ( QUERY ( pdca <* USEDIN (pdr.relating_product_definition , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF' + '.PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.DEFINITION') | + ( pdca.role.name = 'part definition type' ) AND + ( pdca.frame_of_reference.name = 'collection definition' ) )) =0 ) ) ) ) =0; +END_RULE; + +RULE restrict_product_definitions_for_definition_usage FOR (product_definition_relationship); + +WHERE + WR1 : SIZEOF ( QUERY ( pdr <* product_definition_relationship | + ( pdr.name = 'definition usage' ) AND + ( ( pdr.relating_product_definition.frame_of_reference.name<> 'part definition' ) OR + ( pdr.related_product_definition.frame_of_reference.name<>'part occurrence' )))) =0; +END_RULE; + +RULE restrict_product_definitions_for_design_constraint_association FOR (product_definition_relationship); + +WHERE + WR1 : SIZEOF ( QUERY ( pdr <* product_definition_relationship | + ( pdr. name = 'design constraint association' ) AND + ( (pdr. relating_product_definition.frame_of_reference.name<>'design constraint definition' ) OR + NOT ( pdr.related_product_definition.frame_of_reference.name IN + ['alternative definition' , 'functional definition' ,'conceptual definition' ] ) ) ) ) =0; +END_RULE; + +RULE restrict_product_definitions_for_part_definition_relationship FOR (product_definition_relationship); + +WHERE + WR1 : SIZEOF ( QUERY ( pdr <* product_definition_relationship | + ( pdr.name IN [ 'geometrical relationship' , 'definition replacement' ] ) AND + ( ( pdr.relating_product_definition.frame_of_reference.name <>'part definition' ) OR + ( pdr.related_product_definition.frame_of_reference.name <>'part definition' ) ) ) ) =0; +END_RULE; + +RULE restrict_representation_for_surface_condition FOR (property_definition_representation); + +WHERE + WR1 : SIZEOF(QUERY(pdr <* property_definition_representation | + NOT surface_condition_correlation(pdr.definition, pdr.used_representation) ))=0; +END_RULE; + +RULE restrict_treatment_result FOR (representation); + LOCAL + treatment_results: SET OF representation := []; + END_LOCAL; + treatment_results:= QUERY( r <* representation | + (r.name = 'treatment result') ); +WHERE + WR1 : (SIZEOF( QUERY( r <* treatment_results | (SIZEOF(r.items) > 2) )) = 0) AND + (SIZEOF( QUERY( r <* treatment_results | + (SIZEOF( QUERY( i <* r.items | + NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)) )) > 0) )) = 0); + WR2 : SIZEOF( QUERY( r <* treatment_results | + (SIZEOF( QUERY( i <* r.items | i.name = 'result' )) = 0) )) = 0; + WR3 : SIZEOF( QUERY( r <* treatment_results | + (SIZEOF( QUERY( i <* r.items | i.name = 'purpose' )) > 1) )) = 0; +END_RULE; + +RULE selected_instance_usage_requires_representation FOR (assembly_component_usage); + LOCAL + selected_instance_usages: SET OF assembly_component_usage := QUERY( acr <* assembly_component_usage| + (acr.name = 'selected instance usage')); + END_LOCAL; +WHERE + WR1 : SIZEOF ( QUERY ( acr <* selected_instance_usages | + NOT valid_selected_instance_representation(acr) ))=0; +END_RULE; + +RULE solution_definition_requires_solution_category FOR (product_definition); + LOCAL + solution_definitions: SET OF product_definition := []; + END_LOCAL; + solution_definitions := QUERY( pd <* product_definition | + (pd.frame_of_reference.name = 'alternative definition')); +WHERE + WR1 : SIZEOF( QUERY( pd <* solution_definitions | + (SIZEOF( QUERY( prpc <* USEDIN(pd.formation.of_product, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF' + '.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') | + prpc.name = 'alternative solution')) = 0 ) )) = 0; +END_RULE; + +RULE stock_material_reference FOR (percentage_ply_definition, make_from_usage_option, product_related_product_category); + LOCAL + i,j,k : INTEGER; + dkuhr : LOGICAL; + nmfuo : INTEGER; + nprpc : INTEGER; + rp : product; + END_LOCAL; + dkuhr := TRUE; + REPEAT i:= LOINDEX (percentage_ply_definition) TO + HIINDEX (percentage_ply_definition); + nmfuo := 0; + REPEAT j:= LOINDEX (make_from_usage_option) TO + HIINDEX (make_from_usage_option); + IF (percentage_ply_definition[i] = + make_from_usage_option[j].relating_product_definition) THEN + rp := make_from_usage_option[j].related_product_definition. + formation.of_product; + nprpc := 0; + REPEAT k:= LOINDEX (product_related_product_category) TO + HIINDEX (product_related_product_category); + IF ((rp IN product_related_product_category[k].products) AND + (product_related_product_category[k].name IN + ['anisotropic material', 'isotropic material', 'stock core', + 'filament assembly', 'discontinuous fiber assembly'])) THEN + nprpc := nprpc + 1; + END_IF; + END_REPEAT; + IF (nprpc = 1) THEN + nmfuo := nmfuo + 1; + ELSE + dkuhr := FALSE; + ESCAPE; + END_IF; + END_IF; + END_REPEAT; + IF (dkuhr = FALSE) THEN + ESCAPE; + END_IF; + IF(nmfuo = 0) THEN + dkuhr := FALSE; + ESCAPE; + END_IF; + END_REPEAT; +WHERE + WR1 : dkuhr; +END_RULE; + +RULE styled_curve FOR (styled_item); + +WHERE + WR1 : SIZEOF( QUERY( si <* styled_item | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE' IN TYPEOF (si.item)) AND (SIZEOF (QUERY (psa <* si.styles | (SIZEOF (QUERY (cs <* psa.styles | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_STYLE' IN TYPEOF (cs)) )) > 0) )) <> 1) )) = 0; +END_RULE; + +RULE subtype_exclusiveness_geometric_tolerance FOR (geometric_tolerance); + +WHERE + WR1 : SIZEOF(QUERY (gt <* geometric_tolerance | NOT (type_check_function(gt, ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANGULARITY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CIRCULAR_RUNOUT_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COAXIALITY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONCENTRICITY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CYLINDRICITY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FLATNESS_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE_PROFILE_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PARALLELISM_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PERPENDICULARITY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITION_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ROUNDNESS_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRAIGHTNESS_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_PROFILE_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SYMMETRY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TOTAL_RUNOUT_TOLERANCE'] , 3)))) = 0; +END_RULE; + +RULE subtype_exclusiveness_representation_item FOR (representation_item); + +WHERE + WR1 : SIZEOF(QUERY (cri <* representation_item | + NOT (type_check_function(cri,['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VALUE_REPRESENTATION_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOUND_REPRESENTATION_ITEM'] , 3)))) = 0; +END_RULE; + +RULE subtype_mandatory_geometric_tolerance FOR (geometric_tolerance); + +WHERE + WR1 : SIZEOF(QUERY (gt <* geometric_tolerance | NOT (type_check_function(gt, ['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANGULARITY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CIRCULAR_RUNOUT_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COAXIALITY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONCENTRICITY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CYLINDRICITY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FLATNESS_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE_PROFILE_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PARALLELISM_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PERPENDICULARITY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITION_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ROUNDNESS_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRAIGHTNESS_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_PROFILE_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SYMMETRY_TOLERANCE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TOTAL_RUNOUT_TOLERANCE'] , 0)))) = 0; +END_RULE; + +RULE text_font_usage FOR (externally_defined_text_font, pre_defined_text_font); + +WHERE + WR1 : SIZEOF (QUERY (pdtf <* pre_defined_text_font | SIZEOF (USEDIN (pdtf, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_LITERAL.FONT')) = 0 )) = 0; + WR2 : SIZEOF (QUERY (edtf <* externally_defined_text_font | SIZEOF (USEDIN (edtf, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TEXT_LITERAL.FONT')) = 0 )) = 0; +END_RULE; + +RULE thickness_laminate_table_component_select FOR (thickness_laminate_definition, next_assembly_usage_occurrence, product_related_product_category); + LOCAL + i,j,k : INTEGER; + dkuhr : LOGICAL; + nnauo : INTEGER; + nprpc : INTEGER; + rp : product; + END_LOCAL; + dkuhr := TRUE; + REPEAT i:= LOINDEX (thickness_laminate_definition) TO + HIINDEX (thickness_laminate_definition); + nnauo := 0; + REPEAT j:= LOINDEX (next_assembly_usage_occurrence) TO + HIINDEX (next_assembly_usage_occurrence); + IF (thickness_laminate_definition[i] = + next_assembly_usage_occurrence[j].relating_product_definition) THEN + rp := next_assembly_usage_occurrence[j].related_product_definition. + formation.of_product; + nprpc := 0; + REPEAT k:= LOINDEX (product_related_product_category) TO + HIINDEX (product_related_product_category); + IF ((rp IN product_related_product_category[k].products) AND + (product_related_product_category[k].name IN + ['ply', 'filament laminate', 'processed core'])) THEN + nprpc := nprpc + 1; + END_IF; + END_REPEAT; + IF (nprpc = 1) THEN + nnauo := nnauo + 1; + ELSE + dkuhr := FALSE; + ESCAPE; + END_IF; + END_IF; + END_REPEAT; + IF (dkuhr = FALSE) THEN + ESCAPE; + END_IF; + IF (nnauo <> 1) THEN + dkuhr := FALSE; + ESCAPE; + END_IF; + END_REPEAT; +WHERE + WR1 : dkuhr; +END_RULE; + +RULE validate_dependently_instantiable_entity_data_types FOR (action_method_role, annotation_text, attribute_value_role, auxiliary_geometric_representation_item, binary_numeric_expression, boolean_expression, bounded_curve, bounded_surface, cartesian_transformation_operator, comparison_expression, concept_feature_relationship, concept_feature_relationship_with_condition, connected_edge_set, document_usage_constraint, edge_blended_solid, effectivity_context_role, event_occurrence_role, explicit_procedural_representation_item_relationship, expression, founded_item, generic_expression, generic_variable, indirectly_selected_elements, interval_expression, literal_number, local_time, loop, modified_solid_with_placed_configuration, multiple_arity_boolean_expression, multiple_arity_generic_expression, multiple_arity_numeric_expression, numeric_expression, one_direction_repeat_factor, oriented_open_shell, oriented_path, positioned_sketch, procedural_representation, procedural_representation_sequence, product_definition_context_role, product_definition_effectivity, runout_zone_orientation, simple_boolean_expression, simple_generic_expression, simple_numeric_expression, solid_with_depression, solid_with_hole, solid_with_pocket, solid_with_protrusion, solid_with_shape_element_pattern, solid_with_slot, swept_area_solid, symbol_target, tolerance_zone_form, two_direction_repeat_factor, unary_generic_expression, unary_numeric_expression, user_selected_elements, variational_representation_item, view_volume); +LOCAL + number_of_input_instances : INTEGER; + previous_in_chain : LIST OF GENERIC := []; + set_of_input_types : SET OF STRING := []; + all_instances : SET OF GENERIC := []; +END_LOCAL; + + all_instances := all_instances + action_method_role + annotation_text + attribute_value_role + auxiliary_geometric_representation_item + binary_numeric_expression + boolean_expression + bounded_curve + bounded_surface + cartesian_transformation_operator + comparison_expression + concept_feature_relationship + concept_feature_relationship_with_condition + connected_edge_set + document_usage_constraint + edge_blended_solid + effectivity_context_role + event_occurrence_role + explicit_procedural_representation_item_relationship + expression + founded_item + generic_expression + generic_variable + indirectly_selected_elements + interval_expression + literal_number + local_time + loop + modified_solid_with_placed_configuration + multiple_arity_boolean_expression + multiple_arity_generic_expression + multiple_arity_numeric_expression + numeric_expression + one_direction_repeat_factor + oriented_open_shell + oriented_path + positioned_sketch + procedural_representation + procedural_representation_sequence + product_definition_context_role + product_definition_effectivity + runout_zone_orientation + simple_boolean_expression + simple_generic_expression + simple_numeric_expression + solid_with_depression + solid_with_hole + solid_with_pocket + solid_with_protrusion + solid_with_shape_element_pattern + solid_with_slot + swept_area_solid + symbol_target + tolerance_zone_form + two_direction_repeat_factor + unary_generic_expression + unary_numeric_expression + user_selected_elements + variational_representation_item + view_volume;-- +number_of_input_instances := SIZEOF(all_instances); +(* Collect all type strings of all FOR instances into one set. *) +REPEAT i:=1 TO number_of_input_instances; + set_of_input_types := set_of_input_types + TYPEOF(all_instances[i]); +END_REPEAT; +WHERE + WR1 : dependently_instantiated(all_instances, set_of_input_types, + previous_in_chain); +END_RULE; + +FUNCTION acyclic + (arg1: generic_expression; arg2: SET [0:?] OF generic_expression) : BOOLEAN; +LOCAL + result: BOOLEAN := TRUE; +END_LOCAL; + +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SIMPLE_GENERIC_EXPRESSION' + IN TYPEOF (arg1)) +THEN + RETURN (TRUE); +END_IF; + +IF arg1 IN arg2 +THEN + RETURN (FALSE); +END_IF; + +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.UNARY_GENERIC_EXPRESSION' + IN TYPEOF (arg1) +THEN + RETURN + (acyclic(arg1\unary_generic_expression.operand,arg2+[arg1])); +END_IF; + +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BINARY_GENERIC_EXPRESSION' + IN TYPEOF (arg1) +THEN + RETURN + (acyclic(arg1\binary_generic_expression.operands[1],arg2+[arg1]) + AND + acyclic(arg1\binary_generic_expression.operands[2],arg2+[arg1])); +END_IF; + +IF +'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MULTIPLE_ARITY_GENERIC_EXPRESSION' + IN TYPEOF (arg1) +THEN + result := TRUE; + REPEAT i := 1 TO + SIZEOF (arg1\multiple_arity_generic_expression.operands); + result := result AND + acyclic(arg1\multiple_arity_generic_expression.operands[i], arg2+[arg1]); + END_REPEAT; + + RETURN (result); +END_IF; + RETURN (result); +END_FUNCTION; + +FUNCTION acyclic_composite_text + (start_composite: composite_text; child_text: SET [1:?] OF text_or_character) : LOGICAL; + LOCAL + i : INTEGER; + local_composite_text : SET [0:?] OF composite_text; + local_annotation_text : SET [0:?] OF annotation_text; + local_children : SET [0:?] OF text_or_character; + END_LOCAL; + + local_composite_text := QUERY (child <* child_text | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_TEXT' + IN TYPEOF (child))); + + IF (SIZEOF (local_composite_text) > 0) + THEN + REPEAT i := 1 TO HIINDEX (local_composite_text); + IF (start_composite :=: local_composite_text[i]) + THEN + RETURN (FALSE); + END_IF; + END_REPEAT; + END_IF; + + local_children := child_text; + + IF (SIZEOF (local_composite_text)) > 0 THEN + REPEAT i := 1 TO HIINDEX (local_composite_text); + local_children := local_children + + local_composite_text[i].collected_text; + END_REPEAT; + END_IF; + + local_annotation_text := QUERY (child <* child_text | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT' + IN TYPEOF (child))); + + IF (SIZEOF (local_annotation_text) > 0) THEN + REPEAT i := 1 TO HIINDEX (local_annotation_text); + local_children := local_children + + QUERY (item <* local_annotation_text[i]\mapped_item. + mapping_source.mapped_representation.items | + SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ANNOTATION_TEXT', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_TEXT'] * + TYPEOF(item)) > 0); + END_REPEAT; + END_IF; + + IF (local_children :<>: child_text) THEN + RETURN (acyclic_composite_text (start_composite, local_children)); + ELSE + RETURN (TRUE); + END_IF; +END_FUNCTION; + +FUNCTION acyclic_curve_replica + (rep: curve_replica; parent: curve) : BOOLEAN; +IF NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA') IN TYPEOF(parent)) THEN + RETURN (TRUE); + END_IF; + (* Return TRUE if the parent is not of type curve_replica *) + IF (parent :=: rep) THEN + RETURN (FALSE); + (* Return FALSE if the parent is the same curve_replica, otherwise, + call function again with the parents own parent_curve. *) + ELSE + RETURN(acyclic_curve_replica(rep, + parent\curve_replica.parent_curve)); + END_IF; +END_FUNCTION; + +FUNCTION acyclic_mapped_item_usage + (rep: representation) : BOOLEAN; + LOCAL + items : SET OF representation_item; + END_LOCAL; + + items := QUERY (item <* rep.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM' IN TYPEOF (item)); + IF SIZEOF (items) = 0 + THEN + RETURN (FALSE); + ELSE + REPEAT i := 1 TO HIINDEX (items); + IF items[i]\mapped_item.mapping_source.mapped_representation :=: rep + THEN + RETURN (TRUE); + ELSE + RETURN (acyclic_mapped_item_usage(items[i]\ + mapped_item.mapping_source.mapped_representation)); + END_IF; + END_REPEAT; + RETURN (FALSE); + END_IF; +END_FUNCTION; + +FUNCTION acyclic_mapped_representation + (mi: mapped_item) : BOOLEAN; + LOCAL + rms : SET OF representation_map; + mis : SET OF mapped_item; + rs1, rs2 : SET OF representation; + END_LOCAL; + + rs1 := using_representations(mi); + rs2 := []; + -- loop as long as there are elements in rs1 + REPEAT WHILE SIZEOF(rs1) > 0; + REPEAT i := 1 TO HIINDEX(rs1); + -- Determine the set of representation_map that reference the parent_set + rms := bag_to_set(USEDIN(rs1[i], 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION_MAP.MAPPED_REPRESENTATION')); + IF SIZEOF(rms) > 0 THEN + REPEAT j := 1 TO HIINDEX(rms); + mis := bag_to_set(USEDIN(rms[i], 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAPPED_ITEM.MAPPING_SOURCE')); + IF SIZEOF(mis) > 0 THEN + REPEAT j := 1 TO HIINDEX(mis); + -- check mis members for instance equal with mi. If so then there is a cycle + IF mis[i] :=: mi THEN + RETURN (FALSE); + END_IF; + rs2 := rs2 + using_representations(mis[i]); + END_REPEAT; + END_IF; + END_REPEAT; + END_IF; + END_REPEAT; + rs1 := rs2; + rs2 := []; + END_REPEAT; + RETURN (TRUE); +END_FUNCTION; + +FUNCTION acyclic_point_replica + (rep: point_replica; parent: point) : BOOLEAN; +IF NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_REPLICA') IN TYPEOF(parent)) THEN + RETURN (TRUE); + END_IF; + (* Return TRUE if the parent is not of type point_replica *) + IF (parent :=: rep) THEN + RETURN (FALSE); + (* Return FALSE if the parent is the same point_replica, otherwise, + call function again with the parents own parent_pt. *) + ELSE RETURN(acyclic_point_replica(rep, parent\point_replica.parent_pt)); + END_IF; +END_FUNCTION; + +FUNCTION acyclic_product_definition_relationship + (relation: product_definition_relationship; relatives: SET [1:?] OF product_definition; specific_relation: STRING) : BOOLEAN; + LOCAL + x : SET OF product_definition_relationship; + END_LOCAL; + + IF relation.relating_product_definition IN relatives THEN + RETURN (FALSE); + END_IF; + x := QUERY(pd <* bag_to_set(USEDIN(relation.relating_product_definition, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'PRODUCT_DEFINITION_RELATIONSHIP.' + 'RELATED_PRODUCT_DEFINITION')) | specific_relation IN TYPEOF(pd)); + REPEAT i := 1 TO HIINDEX(x); + IF NOT acyclic_product_definition_relationship(x[i], relatives + relation.relating_product_definition, specific_relation) THEN + RETURN (FALSE); + END_IF; + END_REPEAT; + RETURN (TRUE); +END_FUNCTION; + +FUNCTION acyclic_representation_relationship + (relation: representation_relationship; relatives: SET [1:?] OF representation; specific_relation: STRING) : BOOLEAN; + LOCAL + x : SET OF representation_relationship; + END_LOCAL; + + IF relation.rep_1 IN relatives THEN + RETURN (FALSE); + END_IF; + x := QUERY(r <* bag_to_set(USEDIN(relation.rep_1, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'REPRESENTATION_RELATIONSHIP.' + 'REP_2')) | specific_relation IN TYPEOF(r)); + REPEAT i := 1 TO HIINDEX(x); + IF NOT acyclic_representation_relationship(x[i], relatives + relation.rep_1, specific_relation) THEN + RETURN (FALSE); + END_IF; + END_REPEAT; + RETURN (TRUE); +END_FUNCTION; + +FUNCTION acyclic_solid_replica + (rep: solid_replica; parent: solid_model) : BOOLEAN; +IF NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_REPLICA') IN TYPEOF(parent)) THEN + RETURN (TRUE); + END_IF; + (* Return TRUE if the parent is not of type solid_replica. *) + IF (parent :=: rep) THEN + RETURN (FALSE); + (* Return FALSE if the parent is the same solid_replica, otherwise, + call function again with the parents own parent_solid. *) + ELSE RETURN(acyclic_solid_replica(rep, + parent\solid_replica.parent_solid)); + END_IF; +END_FUNCTION; + +FUNCTION acyclic_surface_replica + (rep: surface_replica; parent: surface) : BOOLEAN; +IF NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_REPLICA') IN TYPEOF(parent)) THEN + RETURN (TRUE); + END_IF; + (* Return TRUE if the parent is not of type surface_replica *) + IF (parent :=: rep) THEN + RETURN (FALSE); + (* Return FALSE if the parent is the same surface_replica, otherwise, + call function again with the parents own parent_surface. *) + ELSE RETURN(acyclic_surface_replica(rep, + parent\surface_replica.parent_surface)); + END_IF; +END_FUNCTION; + +FUNCTION advanced_face_properties + (testface: face) : BOOLEAN; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ADVANCED_FACE' IN TYPEOF(testface) THEN + RETURN (TRUE); +END_IF; +(* if testface is a subface recursively test the parent_face, +return FALSE for all other types of face *) +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SUBFACE' IN TYPEOF(testface)) THEN + RETURN(advanced_face_properties(testface\subface.parent_face)); + ELSE RETURN (FALSE); +END_IF; +END_FUNCTION; + +FUNCTION aspect_ratio + (p: planar_box) : positive_ratio_measure; +IF (p.size_in_x > 0.) AND (p.size_in_y > 0.) THEN + RETURN (p.size_in_x / p.size_in_y); + ELSE + RETURN (?); + END_IF; +END_FUNCTION; + +FUNCTION associated_surface + (arg: pcurve_or_surface) : surface; + LOCAL + surf : surface; + END_LOCAL; + + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF(arg) THEN + surf := arg\pcurve.basis_surface; + ELSE + surf := arg; + END_IF; + RETURN(surf); +END_FUNCTION; + +FUNCTION bag_to_set + (the_bag: BAG [0:?] OF GENERIC: intype) : SET [0:?] OF GENERIC: intype; + LOCAL + the_set : SET OF GENERIC:intype := []; + END_LOCAL; + + IF SIZEOF(the_bag) > 0 THEN + REPEAT i := 1 TO HIINDEX(the_bag); + the_set := the_set + the_bag[i]; + END_REPEAT; + END_IF; + RETURN (the_set); +END_FUNCTION; + +FUNCTION base_axis + (dim: INTEGER; axis1: direction; axis2: direction; axis3: direction) : LIST [2:3] OF direction; + LOCAL + u : LIST [2:3] OF direction; + factor : REAL; + d1, d2 : direction; + END_LOCAL; + + IF (dim = 3) THEN + d1 := NVL(normalise(axis3), dummy_gri || direction([0.0,0.0,1.0])); + d2 := first_proj_axis(d1,axis1); + u := [d2, second_proj_axis(d1,d2,axis2), d1]; + ELSE + IF EXISTS(axis1) THEN + d1 := normalise(axis1); + u := [d1, orthogonal_complement(d1)]; + IF EXISTS(axis2) THEN + factor := dot_product(axis2,u[2]); + IF (factor < 0.0) THEN + u[2].direction_ratios[1] := -u[2].direction_ratios[1]; + u[2].direction_ratios[2] := -u[2].direction_ratios[2]; + END_IF; + END_IF; + ELSE + IF EXISTS(axis2) THEN + d1 := normalise(axis2); + u := [orthogonal_complement(d1), d1]; + u[1].direction_ratios[1] := -u[1].direction_ratios[1]; + u[1].direction_ratios[2] := -u[1].direction_ratios[2]; + ELSE + u := [dummy_gri || direction([1.0, 0.0]), dummy_gri || + direction([0.0, 1.0])]; + END_IF; + END_IF; + END_IF; + RETURN(u); +END_FUNCTION; + +FUNCTION boolean_choose + (b: BOOLEAN; choice1: GENERIC: item; choice2: GENERIC: item) : GENERIC: item; +IF b THEN + RETURN (choice1); + ELSE + RETURN (choice2); + END_IF; +END_FUNCTION; + +FUNCTION build_2axes + (ref_direction: direction) : LIST [2:2] OF direction; + LOCAL + d : direction := NVL(normalise(ref_direction), + dummy_gri || direction([1.0,0.0])); + END_LOCAL; + + RETURN([d, orthogonal_complement(d)]); +END_FUNCTION; + +FUNCTION build_axes + (axis: direction; ref_direction: direction) : LIST [3:3] OF direction; + LOCAL + d1, d2 : direction; + END_LOCAL; + d1 := NVL(normalise(axis), dummy_gri || direction([0.0,0.0,1.0])); + d2 := first_proj_axis(d1, ref_direction); + RETURN([d2, normalise(cross_product(d1,d2))\vector.orientation, d1]); +END_FUNCTION; + +FUNCTION categories_of_product + (obj: product) : SET [0:?] OF STRING; +LOCAL + category_assignments: BAG OF product_category; + categories: SET OF STRING:=[]; +END_LOCAL; +category_assignments := USEDIN(obj, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS'); +REPEAT i := LOINDEX(category_assignments) TO HIINDEX(category_assignments) BY 1; + categories := categories + category_assignments[i].name; +END_REPEAT; +RETURN(categories); +END_FUNCTION; + +FUNCTION cc_design_person_and_organization_correlation + (e: cc_design_person_and_organization_assignment) : BOOLEAN; + LOCAL + po_role : STRING; + END_LOCAL; + po_role := e\person_and_organization_assignment.role.name; + CASE po_role OF + 'request_recipient' : IF SIZEOF (e.items) <> + SIZEOF (QUERY (x <* e.items | + SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'CHANGE_REQUEST', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'START_REQUEST'] * + TYPEOF (x)) = 1)) + THEN RETURN(FALSE); + END_IF; + 'initiator' : IF SIZEOF (e.items) <> + SIZEOF (QUERY (x <* e.items | + SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'CHANGE_REQUEST', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'START_REQUEST', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'START_WORK', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'CHANGE'] * + TYPEOF (x)) = 1)) + THEN RETURN(FALSE); + END_IF; + 'creator' : IF SIZEOF (e.items) <> + SIZEOF (QUERY (x <* e.items | + SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRODUCT_DEFINITION_FORMATION', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRODUCT_DEFINITION'] * + TYPEOF (x)) = 1)) + THEN RETURN (FALSE); + END_IF; + 'part_supplier' : IF SIZEOF (e.items) <> + SIZEOF (QUERY (x <* e.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRODUCT_DEFINITION_FORMATION' + IN TYPEOF (x))) + THEN RETURN(FALSE); + END_IF; + 'design_supplier' : IF SIZEOF (e.items) <> + SIZEOF (QUERY (x <* e.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'PRODUCT_DEFINITION_FORMATION' + IN TYPEOF (x))) + THEN RETURN(FALSE); + END_IF; + 'design_owner' : IF SIZEOF (e.items) <> + SIZEOF (QUERY (x <* e.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT' + IN TYPEOF (x))) + THEN RETURN(FALSE); + END_IF; + 'configuration_manager' : IF SIZEOF (e.items) <> + SIZEOF (QUERY (x <* e.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'CONFIGURATION_ITEM' + IN TYPEOF (x))) + THEN RETURN(FALSE); + END_IF; + 'contractor' : IF SIZEOF (e.items) <> + SIZEOF (QUERY (x <* e.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONTRACT' + IN TYPEOF (x))) + THEN RETURN(FALSE); + END_IF; + 'classification_officer' : IF SIZEOF (e.items) <> + SIZEOF (QUERY (x <* e.items | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + + 'SECURITY_CLASSIFICATION' + IN TYPEOF (x))) THEN + RETURN(FALSE); + END_IF; + OTHERWISE : RETURN(TRUE); + END_CASE; + RETURN (TRUE); +END_FUNCTION; + +FUNCTION check_continuous_edges + (edges: LIST [0:?] OF UNIQUE edge_curve) : BOOLEAN; + LOCAL + i : INTEGER; + next_vertex : vertex; + END_LOCAL; + + -- first check whether there is only one edge in the list: in this + -- case there is no connectivity to be checked. + + IF (SIZEOF(edges) = 1) + THEN RETURN(TRUE); + END_IF; + + -- otherwise, establish the matching vertices of edges 1 and 2 in + -- the list, and determine the vertex of edge 2 to which edge 3, + -- must be connected, if there are more than two edges in the list. + + IF ((edges[2].edge_start :=: edges[1].edge_end) + XOR (edges[2].edge_start :=: edges[1].edge_start)) + THEN next_vertex := edges[2].edge_end; + ELSE + IF ((edges[2].edge_end :=: edges[1].edge_end) + XOR (edges[2].edge_end :=: edges[1].edge_start)) + THEN next_vertex := edges[2].edge_start; + ELSE RETURN(FALSE); -- no match between any vertices of edges 1 and 2 + END_IF; + END_IF; + + -- exit if there are only two edges and they are connected + + IF (SIZEOF(edges) = 2) + THEN RETURN(TRUE); + END_IF; + + -- otherwise, check that any remaining edges are connected in list order. + + REPEAT i := 3 TO HIINDEX(edges); + IF (edges[i].edge_start :=: next_vertex) + THEN next_vertex := edges[i].edge_end; + ELSE + IF (edges[i].edge_end :=: next_vertex) + THEN next_vertex := edges[i].edge_start; + ELSE RETURN(FALSE); -- no match is found. + END_IF; + END_IF; + END_REPEAT; + RETURN(TRUE); +END_FUNCTION; + +FUNCTION check_text_alignment + (ct: composite_text) : BOOLEAN; + LOCAL + a : SET OF text_alignment := []; + END_LOCAL; + + -- create a set of all the alignments + REPEAT i := 1 TO HIINDEX (ct.collected_text); + a := a + [ct.collected_text[i]\text_literal.alignment]; + END_REPEAT; + + -- if there is more than one element in the set + -- then not all alignments were the same + RETURN (SIZEOF(a) = 1); +END_FUNCTION; + +FUNCTION check_text_font + (ct: composite_text) : BOOLEAN; + LOCAL + f : SET OF font_select := []; + END_LOCAL; + + -- build a set of all the fonts + REPEAT i := 1 TO HIINDEX (ct.collected_text); + f := f + [ct.collected_text[i]\text_literal.font]; + END_REPEAT; + + -- if there is more than one element in the set + -- then not all fonts were the same + RETURN (SIZEOF(f) <= 1); +END_FUNCTION; + +FUNCTION class_assignment_is_valid + (aia: applied_classification_assignment) : BOOLEAN; +LOCAL + item: classification_item; + role: classification_role; +END_LOCAL; + +role:= aia\classification_assignment.role; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' +'CLASS_SYSTEM' IN TYPEOF(aia\classification_assignment.assigned_class)) THEN + IF(role\classification_role.name <> 'class system membership') THEN + RETURN(FALSE); + END_IF; + REPEAT i:=LOINDEX(aia\applied_classification_assignment.items) TO HIINDEX(aia\applied_classification_assignment.items); + item:= aia\applied_classification_assignment.items[i]; + + IF (SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CLASS_SYSTEM_ITEM'] * TYPEOF(item))=0) THEN +-- item invalid if item does not belong to the types that may have a class_system + RETURN(FALSE); + END_IF; + END_REPEAT; +END_IF; + +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' +'CHARACTERIZED_CLASS' IN TYPEOF(aia\classification_assignment.assigned_class)) THEN + IF NOT(role\classification_role.name IN ['definitional','non-definitional','']) THEN + RETURN(FALSE); + END_IF; + + + REPEAT i:=LOINDEX(aia\applied_classification_assignment.items) TO HIINDEX(aia\applied_classification_assignment.items); + item:= aia\applied_classification_assignment.items[i]; + + IF (SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'CLASSIFIED_ITEM'] * TYPEOF(item))=0) THEN +-- item invalid if item does not belong to the types that may have a characterized_class + RETURN(FALSE); + END_IF; + END_REPEAT; +END_IF; + + IF + (role\classification_role.name = 'definitional') + THEN + IF NOT + (SIZEOF(QUERY(it <* aia\applied_classification_assignment.items | NOT + (SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION_FORMATION', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRODUCT_DEFINITION'] * TYPEOF(it)) = 1) + )) = 0 ) + THEN + RETURN(FALSE); + END_IF; + END_IF; + +RETURN(TRUE); +END_FUNCTION; + +FUNCTION closed_shell_reversed + (a_shell: closed_shell) : oriented_closed_shell; + LOCAL + the_reverse : oriented_closed_shell; + END_LOCAL; + IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_CLOSED_SHELL' IN TYPEOF (a_shell) ) THEN + the_reverse := dummy_tri || + connected_face_set ( + a_shell\connected_face_set.cfs_faces) || + closed_shell () || oriented_closed_shell( + a_shell\oriented_closed_shell.closed_shell_element, + NOT(a_shell\oriented_closed_shell.orientation)); + ELSE + the_reverse := dummy_tri || + connected_face_set ( + a_shell\connected_face_set.cfs_faces) || + closed_shell () || oriented_closed_shell (a_shell, FALSE); + END_IF; + RETURN (the_reverse); +END_FUNCTION; + +FUNCTION compute_total_depth + (swsrh: solid_with_stepped_round_hole) : positive_length_measure; +LOCAL +i : positive_integer; +n : positive_integer := swsrh.segments; +td : positive_length_measure := swsrh.segment_depths[1]; +END_LOCAL; + +IF n = 1 +THEN RETURN(td); +ELSE + REPEAT i := 2 TO n; + td := td + swsrh.segment_depths[i]; + END_REPEAT; +END_IF; +RETURN(td); +END_FUNCTION; + +FUNCTION conditional_reverse + (p: BOOLEAN; an_item: reversible_topology) : reversible_topology; +IF p THEN + RETURN (an_item); + ELSE + RETURN (topology_reversed (an_item)); + END_IF; +END_FUNCTION; + +FUNCTION constraints_composite_curve_on_surface + (c: composite_curve_on_surface) : BOOLEAN; + LOCAL + n_segments : INTEGER := SIZEOF(c.segments); + END_LOCAL; + + REPEAT k := 1 TO n_segments; + IF (NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN + TYPEOF(c\composite_curve.segments[k].parent_curve))) AND + (NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE' IN + TYPEOF(c\composite_curve.segments[k].parent_curve))) AND + (NOT('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_CURVE_ON_SURFACE' IN + TYPEOF(c\composite_curve.segments[k].parent_curve))) THEN + RETURN (FALSE); + END_IF; + END_REPEAT; + RETURN(TRUE); +END_FUNCTION; + +FUNCTION constraints_geometry_shell_based_surface_model + (m: shell_based_surface_model) : BOOLEAN; + LOCAL + result : BOOLEAN := TRUE; + END_LOCAL; + + REPEAT j := 1 TO SIZEOF(m.sbsm_boundary); + IF (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OPEN_SHELL' IN + TYPEOF(m.sbsm_boundary[j])) AND + (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CLOSED_SHELL' IN + TYPEOF(m.sbsm_boundary[j])))) + THEN + result := FALSE; + RETURN(result); + (* A surface model is composed of OPEN_ and CLOSED_SHELLs. *) + END_IF; + END_REPEAT; + RETURN(result); +END_FUNCTION; + +FUNCTION constraints_geometry_shell_based_wireframe_model + (m: shell_based_wireframe_model) : BOOLEAN; + LOCAL + result : BOOLEAN := TRUE; + END_LOCAL; + + REPEAT j := 1 TO SIZEOF(m.sbwm_boundary); + IF (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.WIRE_SHELL' IN + TYPEOF(m.sbwm_boundary[j])) AND + (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VERTEX_SHELL' IN + TYPEOF(m.sbwm_boundary[j])))) + THEN + result := FALSE; + RETURN(result); + (* A wireframe model is composed of WIRE_ and VERTEX_SHELLs *) + END_IF; + END_REPEAT; + RETURN(result); +END_FUNCTION; + +FUNCTION constraints_param_b_spline + (degree: INTEGER; up_knots: INTEGER; up_cp: INTEGER; knot_mult: LIST [0:?] OF INTEGER; knots: LIST [0:?] OF parameter_value) : BOOLEAN; + LOCAL + result : BOOLEAN := TRUE; + k, sum : INTEGER; + END_LOCAL; + + (* Find sum of knot multiplicities. *) + sum := knot_mult[1]; + + REPEAT i := 2 TO up_knots; + sum := sum + knot_mult[i]; + END_REPEAT; + + (* Check limits holding for all B-spline parametrisations *) + IF (degree < 1) OR (up_knots < 2) OR (up_cp < degree) OR + (sum <> (degree + up_cp + 2)) THEN + result := FALSE; + RETURN(result); + END_IF; + + k := knot_mult[1]; + + IF (k < 1) OR (k > degree + 1) THEN + result := FALSE; + RETURN(result); + END_IF; + + REPEAT i := 2 TO up_knots; + IF (knot_mult[i] < 1) OR (knots[i] <= knots[i-1]) THEN + result := FALSE; + RETURN(result); + END_IF; + + k := knot_mult[i]; + + IF (i < up_knots) AND (k > degree) THEN + result := FALSE; + RETURN(result); + END_IF; + + IF (i = up_knots) AND (k > degree + 1) THEN + result := FALSE; + RETURN(result); + END_IF; + END_REPEAT; + RETURN(result); +END_FUNCTION; + +FUNCTION constraints_rectangular_composite_surface + (s: rectangular_composite_surface) : BOOLEAN; +REPEAT i := 1 TO s.n_u; + REPEAT j := 1 TO s.n_v; + IF NOT (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_SURFACE' IN TYPEOF + (s.segments[i][j].parent_surface)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RECTANGULAR_TRIMMED_SURFACE' IN TYPEOF + (s.segments[i][j].parent_surface))) THEN + RETURN(FALSE); + END_IF; + END_REPEAT; + END_REPEAT; + + (* Check the transition codes, omitting the last row or column *) + REPEAT i := 1 TO s.n_u-1; + REPEAT j := 1 TO s.n_v; + IF s.segments[i][j].u_transition = discontinuous THEN + RETURN(FALSE); + END_IF; + END_REPEAT; + END_REPEAT; + + REPEAT i := 1 TO s.n_u; + REPEAT j := 1 TO s.n_v-1; + IF s.segments[i][j].v_transition = discontinuous THEN + RETURN(FALSE); + END_IF; + END_REPEAT; + END_REPEAT; + RETURN(TRUE); +END_FUNCTION; + +FUNCTION control_characters_free + (s: STRING) : BOOLEAN; + LOCAL + ch : STRING; + END_LOCAL; + + REPEAT i:=1 TO LENGTH(s); + ch := s[i]; + IF (ch = '\x9') OR (ch = '\xA') OR (ch = '\xD') THEN + RETURN(FALSE); + END_IF; + END_REPEAT; + RETURN (TRUE); +END_FUNCTION; + +FUNCTION cross_product + (arg1: direction; arg2: direction) : vector; + LOCAL + mag : REAL; + res : direction; + v1,v2 : LIST[3:3] OF REAL; + result : vector; + END_LOCAL; + + IF ( NOT EXISTS (arg1) OR (arg1.dim = 2)) OR + ( NOT EXISTS (arg2) OR (arg2.dim = 2)) THEN + RETURN(?); + ELSE + BEGIN + v1 := normalise(arg1).direction_ratios; + v2 := normalise(arg2).direction_ratios; + res := dummy_gri || direction([(v1[2]*v2[3] - v1[3]*v2[2]), + (v1[3]*v2[1] - v1[1]*v2[3]), (v1[1]*v2[2] - v1[2]*v2[1])]); + mag := 0.0; + REPEAT i := 1 TO 3; + mag := mag + res.direction_ratios[i]*res.direction_ratios[i]; + END_REPEAT; + IF (mag > 0.0) THEN + result := dummy_gri || vector(res, SQRT(mag)); + ELSE + result := dummy_gri || vector(arg1, 0.0); + END_IF; + RETURN(result); + END; + END_IF; +END_FUNCTION; + +FUNCTION curve_weights_positive + (b: rational_b_spline_curve) : BOOLEAN; + LOCAL + result : BOOLEAN := TRUE; + END_LOCAL; + + REPEAT i := 0 TO b.upper_index_on_control_points; + IF b.weights[i] <= 0.0 THEN + result := FALSE; + RETURN(result); + END_IF; + END_REPEAT; + RETURN(result); +END_FUNCTION; + +FUNCTION default_tolerance_table_cell_wr2 + (agg: compound_item_definition) : BOOLEAN; +BEGIN +IF SIZEOF(agg) <= 5 THEN + RETURN(TRUE); +ELSE + RETURN(FALSE); +END_IF; +END; +END_FUNCTION; + +FUNCTION default_tolerance_table_cell_wr3 + (agg: compound_item_definition) : BOOLEAN; +BEGIN +IF (SIZEOF(QUERY ( i <* agg | (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) + AND (i\representation_item.name = 'significant number of digits')) )) = 1) OR +((SIZEOF(QUERY ( i <* agg | (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND + (i\representation_item.name = 'lower limit')) )) = 1) AND +(SIZEOF( QUERY ( i <* agg | (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND + (i\representation_item.name = 'upper limit')) )) = 1)) THEN + RETURN(TRUE); +ELSE + RETURN(FALSE); +END_IF; +END; +END_FUNCTION; + +FUNCTION default_tolerance_table_cell_wr4 + (agg: compound_item_definition) : BOOLEAN; +BEGIN +IF (SIZEOF(QUERY ( i <* agg | (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND + (i\representation_item.name = 'plus minus tolerance value')) )) = 1) OR +((SIZEOF(QUERY ( i <* agg | (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND ( + i\representation_item.name = 'lower tolerance value')) )) = 1) AND +(SIZEOF( QUERY ( i <* agg | (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND ( + i\representation_item.name = 'upper tolerance value')) )) = 1)) THEN + RETURN(TRUE); +ELSE + RETURN(FALSE); +END_IF; +END; +END_FUNCTION; + +FUNCTION default_tolerance_table_cell_wr5 + (agg: compound_item_definition) : BOOLEAN; +BEGIN +IF (SIZEOF(QUERY ( i <* agg | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)) )) <= 1) AND +(SIZEOF(QUERY ( i <* agg | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)) )) = + SIZEOF(QUERY ( i <* agg | (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF(i)) AND + (i\representation_item.name = 'cell description'))) )) +THEN + RETURN(TRUE); +ELSE + RETURN(FALSE); +END_IF; +END; +END_FUNCTION; + +FUNCTION dependently_instantiated + (set_of_input_instances: SET [0:?] OF GENERIC: igen; set_of_input_types: SET [0:?] OF STRING; previous_in_chain: LIST [0:?] OF GENERIC: cgen) : BOOLEAN; +LOCAL + number_of_input_instances : INTEGER; + number_of_referring_instances : INTEGER; + bag_of_referring_instances : BAG OF GENERIC:igen := []; + dependently_instantiated_flag : BOOLEAN; + previous_in_chain_plus : LIST OF GENERIC:cgen := []; + result : BOOLEAN := true; + set_of_types : SET OF STRING := []; +END_LOCAL; + +IF EXISTS(set_of_input_instances) THEN + number_of_input_instances := SIZEOF(set_of_input_instances); + (* Add the declared type of bag_of_referring_instances to the set of + types of the REFERENCEd instances for the subset comparison later. + *) + set_of_input_types := set_of_input_types + 'GENERIC'; + REPEAT i:=1 TO number_of_input_instances; + (* Determine all references to the current input instance. *) + bag_of_referring_instances := USEDIN (set_of_input_instances[i] , ''); + IF EXISTS(bag_of_referring_instances) THEN + number_of_referring_instances := SIZEOF(bag_of_referring_instances); + dependently_instantiated_flag := false; + REPEAT j:=1 TO number_of_referring_instances; + (* Determine the type strings of the current referencing instance. + *) + set_of_types := TYPEOF(bag_of_referring_instances[j]); + (* If the referencing instance is of one of the types of the + only dependently instantiable select items, the current input + instance may still be invalidly instantiated. + Otherwise it is OK, and the next input instance is tested. + *) + IF set_of_types <= set_of_input_types THEN -- subset operator + (* The referring instance is of one of the restricted types. + However, it may itself be referred to by a valid instance; + then also the current instance would be valid. + Thus, call this function recursively with the referring + instance as input. + To avoid an infinite loop in case a set of instances + reference each other in a closed loop, test first whether + the current referencing instance is in the list of + previously processed chain members. + *) + IF NOT (bag_of_referring_instances[j] IN previous_in_chain) THEN + previous_in_chain_plus := previous_in_chain + + set_of_input_instances[i]; + IF dependently_instantiated([bag_of_referring_instances[j]], + set_of_input_types, + previous_in_chain_plus) THEN + dependently_instantiated_flag := true; + ESCAPE; -- dependently instantiated; next input instance + ELSE + (* Not dependently instantiated: go to next referring + instance. *) + SKIP; + END_IF; + END_IF; + ELSE + dependently_instantiated_flag := true; + ESCAPE; -- dependently instantiated; take next input instance + END_IF; + END_REPEAT; + IF NOT dependently_instantiated_flag THEN + RETURN(false); + END_IF; + ELSE + RETURN(false); -- not referenced at all => invalidly instantiated + END_IF; + END_REPEAT; +ELSE + RETURN(false); -- no input +END_IF; + +RETURN(true); +END_FUNCTION; + +FUNCTION derive_angle + (placement_1: axis2_placement_3d; placement_2: axis2_placement_3d) : plane_angle_measure; + LOCAL + v1 : direction; + v2 : direction; + mag_v1 : REAL; + mag_v2 : REAL; + theta : plane_angle_measure; + END_LOCAL; + v1 := placement_1.p[1]; + v2 := placement_2.p[1]; + mag_v1 := SQRT (v1.direction_ratios[1]*v1.direction_ratios[1] + + v1.direction_ratios[2]*v1.direction_ratios[2]); + mag_v2 := SQRT (v2.direction_ratios[1]*v2.direction_ratios[1] + + v2.direction_ratios[2]*v2.direction_ratios[2]); + IF ((mag_v1 = 0.0) OR (mag_v2 = 0.0)) THEN + theta := 0.0; + RETURN (theta); + END_IF; + theta := ACOS ((v1.direction_ratios[1]*v2.direction_ratios[1] + + v1.direction_ratios[2]*v2.direction_ratios[2]) / + (mag_v1*mag_v2)); + RETURN (theta); +END_FUNCTION; + +FUNCTION derive_dimensional_exponents + (x: unit) : dimensional_exponents; + LOCAL + result : dimensional_exponents := dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); + END_LOCAL; + + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DERIVED_UNIT' IN TYPEOF(x) THEN + REPEAT i := LOINDEX(x\derived_unit.elements) TO HIINDEX(x\derived_unit.elements); + result.length_exponent := result.length_exponent + + (x\derived_unit.elements[i]\derived_unit_element.exponent * + x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.length_exponent); + result.mass_exponent := result.mass_exponent + + (x\derived_unit.elements[i]\derived_unit_element.exponent * + x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.mass_exponent); + result.time_exponent := result.time_exponent + + (x\derived_unit.elements[i]\derived_unit_element.exponent * + x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.time_exponent); + result.electric_current_exponent := result.electric_current_exponent + + (x\derived_unit.elements[i]\derived_unit_element.exponent * + x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.electric_current_exponent); + result.thermodynamic_temperature_exponent := result.thermodynamic_temperature_exponent + + (x\derived_unit.elements[i]\derived_unit_element.exponent * + x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.thermodynamic_temperature_exponent); + result.amount_of_substance_exponent := result.amount_of_substance_exponent + + (x\derived_unit.elements[i]\derived_unit_element.exponent * + x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.amount_of_substance_exponent); + result.luminous_intensity_exponent := result.luminous_intensity_exponent + + (x\derived_unit.elements[i]\derived_unit_element.exponent * + x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.luminous_intensity_exponent); + END_REPEAT; + ELSE + result := x\named_unit.dimensions; + END_IF; + RETURN (result); +END_FUNCTION; + +FUNCTION dimension_of + (item: geometric_representation_item) : dimension_count; + LOCAL + x : SET OF representation; + y : representation_context; + dim : dimension_count; + END_LOCAL; + -- For cartesian_point, direction, or vector dimension is determined by + -- counting components. + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT' IN TYPEOF(item) THEN + dim := SIZEOF(item\cartesian_point.coordinates); + RETURN(dim); + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIRECTION' IN TYPEOF(item) THEN + dim := SIZEOF(item\direction.direction_ratios); + RETURN(dim); + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VECTOR' IN TYPEOF(item) THEN + dim := SIZEOF(item\vector.orientation\direction.direction_ratios); + RETURN(dim); + END_IF; + -- For all other types of geometric_representation_item dim is obtained + -- via context. + -- Find the set of representation in which the item is used. + + x := using_representations(item); + + -- Determines the dimension_count of the + -- geometric_representation_context. Note that the + -- RULE compatible_dimension ensures that the context_of_items + -- is of type geometric_representation_context and has + -- the same dimension_count for all values of x. + -- The SET x is non-empty since this is required by WR1 of + -- representation_item. + y := x[1].context_of_items; + dim := y\geometric_representation_context.coordinate_space_dimension; + RETURN (dim); +END_FUNCTION; + +FUNCTION dimensions_for_si_unit + (n: si_unit_name) : dimensional_exponents; +CASE n OF + metre: + RETURN (dimensional_exponents(1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)); + gram: + RETURN (dimensional_exponents(0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0)); + second: + RETURN (dimensional_exponents(0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0)); + ampere: + RETURN (dimensional_exponents(0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0)); + kelvin: + RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0)); + mole: + RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0)); + candela: + RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0)); + radian: + RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)); + steradian: + RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)); + hertz: + RETURN (dimensional_exponents(0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0)); + newton: + RETURN (dimensional_exponents(1.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0)); + pascal: + RETURN (dimensional_exponents(-1.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0)); + joule: + RETURN (dimensional_exponents(2.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0)); + watt: + RETURN (dimensional_exponents(2.0, 1.0, -3.0, 0.0, 0.0, 0.0, 0.0)); + coulomb: + RETURN (dimensional_exponents(0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0)); + volt: + RETURN (dimensional_exponents(2.0, 1.0, -3.0, -1.0, 0.0, 0.0, 0.0)); + farad: + RETURN (dimensional_exponents(-2.0, -1.0, 4.0, 1.0, 0.0, 0.0, 0.0)); + ohm: + RETURN (dimensional_exponents(2.0, 1.0, -3.0, -2.0, 0.0, 0.0, 0.0)); + siemens: + RETURN (dimensional_exponents(-2.0, -1.0, 3.0, 2.0, 0.0, 0.0, 0.0)); + weber: + RETURN (dimensional_exponents(2.0, 1.0, -2.0, -1.0, 0.0, 0.0, 0.0)); + tesla: + RETURN (dimensional_exponents(0.0, 1.0, -2.0, -1.0, 0.0, 0.0, 0.0)); + henry: + RETURN (dimensional_exponents(2.0, 1.0, -2.0, -2.0, 0.0, 0.0, 0.0)); + degree_Celsius: + RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0)); + lumen: + RETURN (dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0)); + lux: + RETURN (dimensional_exponents(-2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0)); + becquerel: + RETURN (dimensional_exponents(0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0)); + gray: + RETURN (dimensional_exponents(2.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0)); + sievert: + RETURN (dimensional_exponents(2.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0)); + OTHERWISE: + RETURN (?); + END_CASE; +END_FUNCTION; + +FUNCTION dot_product + (arg1: direction; arg2: direction) : REAL; + LOCAL + scalar : REAL; + vec1, vec2: direction; + ndim : INTEGER; + END_LOCAL; + + IF NOT EXISTS (arg1) OR NOT EXISTS (arg2) THEN + scalar := ?; + (* When function is called with invalid data an indeterminate result + is returned *) + ELSE + IF (arg1.dim <> arg2.dim) THEN + scalar := ?; + (* When function is called with invalid data an indeterminate result + is returned *) + ELSE + BEGIN + vec1 := normalise(arg1); + vec2 := normalise(arg2); + ndim := arg1.dim; + scalar := 0.0; + REPEAT i := 1 TO ndim; + scalar := scalar + + vec1.direction_ratios[i]*vec2.direction_ratios[i]; + END_REPEAT; + END; + END_IF; + END_IF; + RETURN (scalar); +END_FUNCTION; + +FUNCTION edge_reversed + (an_edge: edge) : oriented_edge; + LOCAL + the_reverse : oriented_edge; + END_LOCAL; + + IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_EDGE' IN TYPEOF (an_edge) ) THEN + the_reverse := dummy_tri || + edge(an_edge.edge_end, an_edge.edge_start) || + oriented_edge(an_edge\oriented_edge.edge_element, + NOT (an_edge\oriented_edge.orientation)) ; + ELSE + the_reverse := dummy_tri || + edge(an_edge.edge_end, an_edge.edge_start) || + oriented_edge(an_edge, FALSE); + END_IF; + RETURN (the_reverse); +END_FUNCTION; + +FUNCTION external_version_assignment_is_valid + (aia: applied_external_identification_assignment) : BOOLEAN; + LOCAL + item: identification_item; + role: identification_role; + END_LOCAL; + role:= aia.role; + IF role.name='version' THEN + REPEAT i:=LOINDEX(aia.items) TO HIINDEX(aia.items); + item:= aia.items[i]; + IF (SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'EXTERNALLY_VERSIONED_ITEM']*TYPEOF(item))=0) THEN + -- item invalid if item does not belong to versionable types + RETURN(FALSE); + END_IF; + END_REPEAT; + RETURN(TRUE); + ELSE -- case where aia does not convey a version id + RETURN(TRUE); + END_IF; +END_FUNCTION; + +FUNCTION face_bound_reversed + (a_face_bound: face_bound) : face_bound; + LOCAL + the_reverse : face_bound ; + END_LOCAL; + IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_OUTER_BOUND' IN TYPEOF (a_face_bound) ) THEN + the_reverse := dummy_tri || + face_bound(a_face_bound\face_bound.bound, + NOT (a_face_bound\face_bound.orientation)) + || face_outer_bound() ; + ELSE + the_reverse := dummy_tri || + face_bound(a_face_bound.bound, NOT(a_face_bound.orientation)); + END_IF; + RETURN (the_reverse); +END_FUNCTION; + +FUNCTION face_reversed + (a_face: face) : oriented_face; + LOCAL + the_reverse : oriented_face ; + END_LOCAL; + IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_FACE' IN TYPEOF (a_face) ) THEN + the_reverse := dummy_tri || + face(set_of_topology_reversed(a_face.bounds)) || + oriented_face(a_face\oriented_face.face_element, + NOT (a_face\oriented_face.orientation)) ; + ELSE + the_reverse := dummy_tri || + face(set_of_topology_reversed(a_face.bounds)) || + oriented_face(a_face, FALSE) ; + END_IF; + RETURN (the_reverse); +END_FUNCTION; + +FUNCTION first_proj_axis + (z_axis: direction; arg: direction) : direction; + LOCAL + x_axis : direction; + v : direction; + z : direction; + x_vec : vector; + END_LOCAL; + + IF (NOT EXISTS(z_axis)) THEN + RETURN (?) ; + ELSE + z := normalise(z_axis); + IF NOT EXISTS(arg) THEN + IF ((z.direction_ratios <> [1.0,0.0,0.0]) AND + (z.direction_ratios <> [-1.0,0.0,0.0])) THEN + v := dummy_gri || direction([1.0,0.0,0.0]); + ELSE + v := dummy_gri || direction([0.0,1.0,0.0]); + END_IF; + ELSE + IF (arg.dim <> 3) THEN + RETURN (?) ; + END_IF; + IF ((cross_product(arg,z).magnitude) = 0.0) THEN + RETURN (?); + ELSE + v := normalise(arg); + END_IF; + END_IF; + x_vec := scalar_times_vector(dot_product(v, z), z); + x_axis := vector_difference(v, x_vec).orientation; + x_axis := normalise(x_axis); + END_IF; + RETURN(x_axis); +END_FUNCTION; + +FUNCTION gbsf_check_curve + (cv: representation_item) : BOOLEAN; +IF SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOUNDED_CURVE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_3D'] * TYPEOF(cv)) > 1 THEN + RETURN (FALSE); + END_IF; + IF SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CIRCLE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELLIPSE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TRIMMED_CURVE'] * TYPEOF(cv)) = 1 THEN + RETURN (TRUE); + ELSE + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE' IN TYPEOF(cv)) AND (cv\b_spline_curve.self_intersect = FALSE) OR (cv\b_spline_curve.self_intersect = UNKNOWN)) THEN + RETURN (TRUE); + ELSE + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_CURVE' IN TYPEOF(cv)) AND (cv\composite_curve.self_intersect = FALSE) OR (cv\composite_curve.self_intersect = UNKNOWN)) THEN + RETURN (SIZEOF(QUERY(seg <* cv\composite_curve.segments | NOT (gbsf_check_curve(seg.parent_curve)))) = 0); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA' IN TYPEOF(cv) THEN + RETURN (gbsf_check_curve(cv\curve_replica.parent_curve)); + ELSE + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_3D' IN TYPEOF(cv)) AND ((cv\offset_curve_3d.self_intersect = FALSE) OR (cv\offset_curve_3d.self_intersect = UNKNOWN)) AND (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF(cv\offset_curve_3d.basis_curve)))) THEN + RETURN (gbsf_check_curve(cv\offset_curve_3d.basis_curve)); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF(cv) THEN + RETURN ((gbsf_check_curve(cv\pcurve.reference_to_curve\representation.items[1])) AND (gbsf_check_surface(cv\pcurve.basis_surface))); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF(cv) THEN + IF (SIZEOF(cv\polyline.points) >= 3) THEN + RETURN (TRUE); + END_IF; + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE' IN TYPEOF(cv) THEN + IF gbsf_check_curve(cv\surface_curve.curve_3d) THEN + REPEAT i := 1 TO SIZEOF(cv\surface_curve.associated_geometry); + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE' IN TYPEOF(cv\surface_curve.associated_geometry[i]) THEN + IF NOT gbsf_check_surface(cv\surface_curve.associated_geometry[i]) THEN + RETURN (FALSE); + END_IF; + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF(cv\surface_curve.associated_geometry[i]) THEN + IF NOT gbsf_check_curve(cv\surface_curve.associated_geometry[i]) THEN + RETURN (FALSE); + END_IF; + END_IF; + END_IF; + END_REPEAT; + RETURN (TRUE); + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + RETURN (FALSE); +END_FUNCTION; + +FUNCTION gbsf_check_point + (pnt: point) : BOOLEAN; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT' IN TYPEOF(pnt) THEN + RETURN (TRUE); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_CURVE' IN TYPEOF(pnt) THEN + RETURN (gbsf_check_curve(pnt\point_on_curve.basis_curve)); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_SURFACE' IN TYPEOF(pnt) THEN + RETURN (gbsf_check_surface(pnt\point_on_surface.basis_surface)); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DEGENERATE_PCURVE' IN TYPEOF(pnt) THEN + RETURN ((gbsf_check_curve(pnt\degenerate_pcurve.reference_to_curve\representation.items[1])) AND (gbsf_check_surface(pnt\degenerate_pcurve.basis_surface))); + END_IF; + END_IF; + END_IF; + END_IF; + RETURN (FALSE); +END_FUNCTION; + +FUNCTION gbsf_check_surface + (sf: surface) : BOOLEAN; +IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_SURFACE' IN TYPEOF(sf)) AND (sf\b_spline_surface.self_intersect = FALSE) OR (sf\b_spline_surface.self_intersect = UNKNOWN)) THEN + RETURN (TRUE); + ELSE + IF SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SPHERICAL_SURFACE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TOROIDAL_SURFACE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_BOUNDED_SURFACE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RECTANGULAR_TRIMMED_SURFACE'] * TYPEOF(sf)) = 1 THEN + RETURN (TRUE); + ELSE + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_SURFACE' IN TYPEOF(sf)) AND (sf\offset_surface.self_intersect = FALSE) OR (sf\offset_surface.self_intersect = UNKNOWN)) THEN + RETURN (gbsf_check_surface(sf\offset_surface.basis_surface)); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RECTANGULAR_COMPOSITE_SURFACE' IN TYPEOF(sf) THEN + REPEAT i := 1 TO SIZEOF(sf\rectangular_composite_surface.segments); + REPEAT j := 1 TO SIZEOF(sf\rectangular_composite_surface.segments[i]); + IF NOT (gbsf_check_surface(sf\rectangular_composite_surface.segments[i][j].parent_surface)) THEN + RETURN (FALSE); + END_IF; + END_REPEAT; + END_REPEAT; + RETURN (TRUE); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_REPLICA' IN TYPEOF(sf) THEN + RETURN (gbsf_check_surface(sf\surface_replica.parent_surface)); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_OF_REVOLUTION' IN TYPEOF(sf) THEN + RETURN (gbsf_check_curve(sf\swept_surface.swept_curve)); + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + RETURN (FALSE); +END_FUNCTION; + +FUNCTION get_basis_surface + (c: curve_on_surface) : SET [0:2] OF surface; + LOCAL + surfs : SET[0:2] OF surface; + n : INTEGER; + END_LOCAL; + surfs := []; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF (c) THEN + surfs := [c\pcurve.basis_surface]; + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE' IN TYPEOF (c) THEN + n := SIZEOF(c\surface_curve.associated_geometry); + REPEAT i := 1 TO n; + surfs := surfs + + associated_surface(c\surface_curve.associated_geometry[i]); + END_REPEAT; + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_CURVE_ON_SURFACE' IN TYPEOF (c) THEN + (* For a composite_curve_on_surface the basis_surface is the intersection + of the basis_surfaces of all the segments. *) + n := SIZEOF(c\composite_curve.segments); + surfs := get_basis_surface( + c\composite_curve.segments[1].parent_curve); + IF n > 1 THEN + REPEAT i := 2 TO n; + surfs := surfs * get_basis_surface( + c\composite_curve.segments[i].parent_curve); + END_REPEAT; + END_IF; + + END_IF; + RETURN(surfs); +END_FUNCTION; + +FUNCTION get_description_value + (obj: description_attribute_select) : text; + LOCAL + description_bag : BAG OF description_attribute := (USEDIN(obj, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.' + 'DESCRIBED_ITEM')); + END_LOCAL; + + IF SIZEOF(description_bag) = 1 THEN + RETURN (description_bag[1].attribute_value); + ELSE + RETURN (?); + END_IF; +END_FUNCTION; + +FUNCTION get_id_value + (obj: id_attribute_select) : identifier; + LOCAL + id_bag : BAG OF id_attribute := (USEDIN(obj, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ID_ATTRIBUTE.' + 'IDENTIFIED_ITEM')); + END_LOCAL; + + IF SIZEOF(id_bag) = 1 THEN + RETURN (id_bag[1].attribute_value); + ELSE + RETURN (?); + END_IF; +END_FUNCTION; + +FUNCTION get_name_value + (obj: name_attribute_select) : label; + LOCAL + name_bag : BAG OF name_attribute := (USEDIN(obj, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'NAME_ATTRIBUTE.' + 'NAMED_ITEM')); + END_LOCAL; + + IF SIZEOF(name_bag) = 1 THEN + RETURN (name_bag[1].attribute_value); + ELSE + RETURN (?); + END_IF; +END_FUNCTION; + +FUNCTION get_role + (obj: role_select) : object_role; + LOCAL + role_bag : BAG OF role_association := (USEDIN(obj, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'ROLE_ASSOCIATION.' + 'ITEM_WITH_ROLE')); + END_LOCAL; + + IF SIZEOF(role_bag) = 1 THEN + RETURN (role_bag[1].role); + ELSE + RETURN (?); + END_IF; +END_FUNCTION; + +FUNCTION get_shape_aspect_property_definition_representations + (s_a_instance: shape_aspect) : SET [0:?] OF property_definition_representation; +LOCAL +pd_set : SET OF property_definition := []; +pdr_set : SET OF property_definition_representation := [] ; +END_LOCAL; +pd_set := bag_to_set(USEDIN(s_a_instance, 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROPERTY_DEFINITION.DEFINITION')); +IF (SIZEOF(pd_set) < 1) THEN +RETURN (pdr_set); +END_IF; +REPEAT i := 1 TO HIINDEX(pd_set); +pdr_set := pdr_set + (QUERY(pdr <* USEDIN(pd_set[i], 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'PROPERTY_DEFINITION_REPRESENTATION.' + 'DEFINITION') | +'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_DEFINITION_REPRESENTATION' IN TYPEOF(pdr))); +END_REPEAT; +RETURN (pdr_set); +END_FUNCTION; + +FUNCTION is_acyclic + (arg: generic_expression) : BOOLEAN; +RETURN (acyclic (arg, [])); +END_FUNCTION; + +FUNCTION is_int_expr + (arg: numeric_expression) : LOGICAL; +LOCAL + i: INTEGER := 0; +END_LOCAL; + +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.INT_LITERAL' IN TYPEOF(arg) +THEN + RETURN (TRUE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REAL_LITERAL' IN TYPEOF(arg) +THEN + RETURN (FALSE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.INT_NUMERIC_VARIABLE' IN TYPEOF(arg) +THEN + RETURN (TRUE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REAL_NUMERIC_VARIABLE' IN TYPEOF(arg) +THEN + RETURN (FALSE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ABS_FUNCTION' IN TYPEOF(arg) +THEN + RETURN (is_int_expr(arg\unary_numeric_expression.operand)); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MINUS_FUNCTION' IN TYPEOF(arg) +THEN + RETURN (is_int_expr(arg\unary_numeric_expression.operand)); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SIN_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COS_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TAN_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ASIN_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ACOS_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ATAN_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EXP_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LOG_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LOG2_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LOG10_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SQUARE_ROOT_FUNCTION' + IN TYPEOF(arg)) +THEN + RETURN (FALSE); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLUS_EXPRESSION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MULT_EXPRESSION' + IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAXIMUM_FUNCTION' + IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MINIMUM_FUNCTION' + IN TYPEOF(arg)) +THEN + REPEAT i :=1 TO SIZEOF ( + arg\multiple_arity_numeric_expression.operands); + IF NOT + is_int_expr(arg\multiple_arity_numeric_expression.operands[i]) + THEN + RETURN (FALSE); + END_IF; + END_REPEAT; + RETURN (TRUE); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MINUS_EXPRESSION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POWER_EXPRESSION' + IN TYPEOF(arg)) +THEN + RETURN (is_int_expr(arg\binary_numeric_expression.operands[1]) + AND is_int_expr(arg\binary_numeric_expression.operands[2])); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIV_EXPRESSION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MOD_EXPRESSION' IN TYPEOF(arg)) +THEN + RETURN(TRUE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SLASH_EXPRESSION' IN TYPEOF(arg) +THEN + RETURN (FALSE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_FUNCTION' IN TYPEOF(arg) +THEN + RETURN (TRUE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VALUE_FUNCTION' IN TYPEOF(arg) +THEN + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.INT_VALUE_FUNCTION' + IN TYPEOF(arg) + THEN + RETURN (TRUE); + ELSE + RETURN (FALSE); + END_IF; +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.INTEGER_DEFINED_FUNCTION' + IN TYPEOF(arg) +THEN + RETURN(TRUE) ; +END_IF; +IF'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REAL_DEFINED_FUNCTION' IN TYPEOF(arg) +THEN + RETURN(FALSE) ; +END_IF ; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOOLEAN_DEFINED_FUNCTION' + IN TYPEOF(arg) +THEN + RETURN(FALSE) ; +END_IF ; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRING_DEFINED_FUNCTION' + IN TYPEOF(arg) +THEN + RETURN (FALSE) ; +END_IF ; + +RETURN (FALSE); +END_FUNCTION; + +FUNCTION is_SQL_mappable + (arg: expression) : LOGICAL; +LOCAL + i: INTEGER; +END_LOCAL; + +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SIMPLE_NUMERIC_EXPRESSION' + IN TYPEOF (arg) +THEN + RETURN (TRUE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SQL_MAPPABLE_DEFINED_FUNCTION' + IN TYPEOF (arg) +THEN + RETURN (TRUE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MINUS_FUNCTION' IN TYPEOF(arg) +THEN + RETURN (is_SQL_mappable(arg\unary_numeric_expression.operand)); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ABS_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SIN_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COS_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TAN_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ASIN_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ACOS_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ATAN_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EXP_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LOG_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LOG2_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LOG10_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SQUARE_ROOT_FUNCTION' + IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VALUE_FUNCTION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_FUNCTION' + IN TYPEOF(arg)) +THEN + RETURN (FALSE); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLUS_EXPRESSION' IN TYPEOF(arg)) + OR('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MULT_EXPRESSION' IN TYPEOF(arg)) + OR('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAXIMUM_FUNCTION' + IN TYPEOF(arg)) + OR('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MINIMUM_FUNCTION' + IN TYPEOF(arg)) +THEN + REPEAT i :=1 TO SIZEOF ( + arg\multiple_arity_numeric_expression.operands); + IF NOT is_SQL_mappable( + arg\multiple_arity_numeric_expression.operands[i]) + THEN + RETURN (FALSE); + END_IF; + END_REPEAT; +RETURN (TRUE); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MINUS_EXPRESSION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SLASH_EXPRESSION' IN + TYPEOF(arg)) +THEN + RETURN (is_SQL_mappable( + arg\binary_numeric_expression.operands[1]) + AND is_SQL_mappable(arg\binary_numeric_expression.operands[2])); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DIV_EXPRESSION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MOD_EXPRESSION' IN TYPEOF(arg)) + OR('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POWER_EXPRESSION' + IN TYPEOF(arg)) +THEN + RETURN (FALSE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SIMPLE_BOOLEAN_EXPRESSION' + IN TYPEOF (arg) +THEN + RETURN (TRUE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.NOT_EXPRESSION' IN TYPEOF (arg) +THEN + RETURN (is_SQL_mappable (arg\UNARY_GENERIC_EXPRESSION.OPERAND)); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ODD_FUNCTION'IN TYPEOF (arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.XOR_EXPRESSION' + IN TYPEOF (arg)) +THEN + RETURN (FALSE); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AND_EXPRESSION' IN TYPEOF (arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OR_EXPRESSION' IN TYPEOF (arg)) +THEN + REPEAT i:=1 TO SIZEOF ( + arg\MULTIPLE_ARITY_BOOLEAN_EXPRESSION.OPERANDS); + IF NOT is_SQL_mappable ( + arg\MULTIPLE_ARITY_BOOLEAN_EXPRESSION.OPERANDS[i]) + THEN + RETURN (FALSE); + END_IF; + END_REPEAT; + RETURN (TRUE); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EQUALS_EXPRESSION' IN TYPEOF (arg) +THEN + RETURN(is_SQL_mappable ( + arg\BINARY_GENERIC_EXPRESSION.OPERANDS [1]) + AND is_SQL_mappable( + arg\BINARY_GENERIC_EXPRESSION.OPERANDS [2])); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPARISON_EQUAL' IN TYPEOF (arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPARISON_GREATER' + IN TYPEOF (arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPARISON_GREATER_EQUAL' + IN TYPEOF (arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPARISON_LESS' + IN TYPEOF (arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPARISON_LESS_EQUAL' + IN TYPEOF (arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPARISON_NOT_EQUAL' + IN TYPEOF (arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LIKE_EXPRESSION' + IN TYPEOF (arg)) +THEN + RETURN (is_SQL_mappable (arg\COMPARISON_EXPRESSION.OPERANDS[1]) + AND is_SQL_mappable (arg\COMPARISON_EXPRESSION.OPERANDS[2])); +END_IF; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.INTERVAL_EXPRESSION' IN TYPEOF(arg) +THEN + RETURN (is_SQL_mappable(arg\interval_expression.interval_low) + AND is_SQL_mappable(arg\interval_expression.interval_high) + AND is_SQL_mappable(arg\interval_expression.interval_item)); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.NUMERIC_DEFINED_FUNCTION' + IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOOLEAN_DEFINED_FUNCTION' + IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.STRING_DEFINED_FUNCTION' + IN TYPEOF(arg)) +THEN + RETURN (FALSE) ; +END_IF; + +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SIMPLE_STRING_EXPRESSION' + IN TYPEOF(ARG) +THEN + RETURN (TRUE); +END_IF; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.INDEX_EXPRESSION' IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SUBSTRING_EXPRESSION' + IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONCAT_EXPRESSION' + IN TYPEOF(arg)) + OR ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FORMAT_FUNCTION' + IN TYPEOF(arg)) +THEN + RETURN (FALSE); +END_IF; + + RETURN (FALSE); +END_FUNCTION; + +FUNCTION item_in_context + (item: representation_item; cntxt: representation_context) : BOOLEAN; + LOCAL + y : BAG OF representation_item; + END_LOCAL; + -- If there is one or more representation using both the item + -- and cntxt return true. + IF SIZEOF(USEDIN(item,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION.ITEMS') + * cntxt.representations_in_context) > 0 THEN + RETURN (TRUE); + -- Determine the bag of representation_items that reference + -- item + ELSE y := QUERY(z <* USEDIN (item , '') | + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION_ITEM' IN TYPEOF(z)); + -- Ensure that the bag is not empty + IF SIZEOF(y) > 0 THEN + -- For each element in the bag + REPEAT i := 1 TO HIINDEX(y); + -- Check to see it is an item in the input cntxt. + IF item_in_context(y[i], cntxt) THEN + RETURN (TRUE); + END_IF; + END_REPEAT; + END_IF; + END_IF; + -- Return false when all possible branches have been checked + -- with no success. + RETURN (FALSE); +END_FUNCTION; + +FUNCTION leap_year + (year: year_number) : BOOLEAN; +IF ((((year MOD 4) = 0) AND ((year MOD 100) <> 0)) OR ((year MOD 400) = 0)) THEN + RETURN (TRUE); + ELSE + RETURN (FALSE); + END_IF; +END_FUNCTION; + +FUNCTION list_face_loops + (f: face) : LIST [0:?] OF loop; + LOCAL + loops : LIST[0:?] OF loop := []; + END_LOCAL; + + REPEAT i := 1 TO SIZEOF(f.bounds); + loops := loops +(f.bounds[i].bound); + END_REPEAT; + + RETURN(loops); +END_FUNCTION; + +FUNCTION list_of_topology_reversed + (a_list: list_of_reversible_topology_item) : list_of_reversible_topology_item; + LOCAL + the_reverse : list_of_reversible_topology_item; + END_LOCAL; + + the_reverse := []; + REPEAT i := 1 TO SIZEOF (a_list); + the_reverse := topology_reversed (a_list [i]) + the_reverse; + END_REPEAT; + + RETURN (the_reverse); +END_FUNCTION; + +FUNCTION list_to_array + (lis: LIST [0:?] OF GENERIC: T; low: INTEGER; u: INTEGER) : ARRAY [low:u] OF GENERIC: T; + LOCAL + n : INTEGER; + res : ARRAY [low:u] OF GENERIC : T; + END_LOCAL; + + n := SIZEOF(lis); + IF (n <> (u-low +1)) THEN + RETURN(?); + ELSE + res := [lis[1] : n]; + REPEAT i := 2 TO n; + res[low+i-1] := lis[i]; + END_REPEAT; + RETURN(res); + END_IF; +END_FUNCTION; + +FUNCTION list_to_set + (l: LIST [0:?] OF GENERIC: T) : SET [0:?] OF GENERIC: T; + LOCAL + s : SET OF GENERIC:T := []; + END_LOCAL; + + REPEAT i := 1 TO SIZEOF(l); + s := s + l[i]; + END_REPEAT; + + RETURN(s); +END_FUNCTION; + +FUNCTION make_array_of_array + (lis: LIST [1:?] OF LIST [1:?] OF GENERIC: T; low1: INTEGER; u1: INTEGER; low2: INTEGER; u2: INTEGER) : ARRAY [low1:u1] OF ARRAY [low2:u2] OF GENERIC: T; + LOCAL + res : ARRAY[low1:u1] OF ARRAY [low2:u2] OF GENERIC : T; + END_LOCAL; + +(* Check input dimensions for consistency *) + IF (u1-low1+1) <> SIZEOF(lis) THEN + RETURN (?); + END_IF; + IF (u2 - low2 + 1 ) <> SIZEOF(lis[1]) THEN + RETURN (?) ; + END_IF; +(* Initialise res with values from lis[1] *) + res := [list_to_array(lis[1], low2, u2) : (u1-low1 + 1)]; + REPEAT i := 2 TO HIINDEX(lis); + IF (u2-low2+1) <> SIZEOF(lis[i]) THEN + RETURN (?); + END_IF; + res[low1+i-1] := list_to_array(lis[i], low2, u2); + END_REPEAT; + + RETURN (res); +END_FUNCTION; + +FUNCTION mixed_loop_type_set + (l: SET [0:?] OF loop) : LOGICAL; + LOCAL + poly_loop_type: LOGICAL; + END_LOCAL; + IF(SIZEOF(l) <= 1) THEN + RETURN(FALSE); + END_IF; + poly_loop_type := ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLY_LOOP' IN TYPEOF(l[1])); + REPEAT i := 2 TO SIZEOF(l); + IF(('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLY_LOOP' IN TYPEOF(l[i])) <> poly_loop_type) + THEN + RETURN(TRUE); + END_IF; + END_REPEAT; + RETURN(FALSE); +END_FUNCTION; + +FUNCTION msb_shells + (brep: manifold_solid_brep) : SET [1:?] OF closed_shell; + LOCAL + return_set: SET[1:?] OF closed_shell := [brep.outer]; + END_LOCAL; + + IF SIZEOF(QUERY(msbtype <* TYPEOF(brep) | + msbtype LIKE '*BREP_WITH_VOIDS')) >= 1 + THEN + return_set := return_set + brep\brep_with_voids.voids; + END_IF; + RETURN(return_set); +END_FUNCTION; + +FUNCTION msf_curve_check + (cv: representation_item) : BOOLEAN; +IF SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOUNDED_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_3D'] * TYPEOF(cv)) > 1 THEN + RETURN(FALSE); +END_IF; + +(* b_spline_curves shall not self-intersect + *) +IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE' IN TYPEOF (cv)) AND + (cv\b_spline_curve.self_intersect = FALSE)OR + (cv\b_spline_curve.self_intersect = UNKNOWN)) THEN + RETURN(TRUE); +ELSE + + (* conics and lines are valid curve types + *) + IF SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE'] + * TYPEOF (cv)) = 1 THEN + RETURN(TRUE); + ELSE + + (* a curve_replica shall reference a valid curve + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA' IN TYPEOF(cv) THEN + RETURN (msf_curve_check(cv\curve_replica.parent_curve)); + ELSE + + (* an offset_curve_3d shall not self-intersect and + shall reference a valid curve; a polyline is not a + valid basis_curve + *) + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_3D' IN TYPEOF (cv)) + AND + ((cv\offset_curve_3d.self_intersect = FALSE) OR + (cv\offset_curve_3d.self_intersect = UNKNOWN)) + AND + (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF + (cv\offset_curve_3d.basis_curve)))) THEN + RETURN (msf_curve_check(cv\offset_curve_3d.basis_curve)); + ELSE + + (* a pcurve shall reference a valid curve and a valid + basis_surface + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF(cv) THEN + RETURN ((msf_curve_check + (cv\pcurve.reference_to_curve\representation.items[1])) AND + (msf_surface_check(cv\pcurve.basis_surface))); + ELSE + + (* a surface_curve references a curve_3d and one or + two pcurves or one or two surfaces or one of + each; all of these references shall be valid + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE' IN TYPEOF(cv) THEN + + (* if the curve reference is correct, check also the rest + *) + IF msf_curve_check(cv\surface_curve.curve_3d) THEN + REPEAT i := 1 TO SIZEOF + (cv\surface_curve.associated_geometry); + + (* do for one or two associated_geometrys: + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE' IN + TYPEOF (cv\surface_curve.associated_geometry[i]) THEN + IF NOT msf_surface_check + (cv\surface_curve.associated_geometry[i]) THEN + RETURN(FALSE); + END_IF; + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF + (cv\surface_curve.associated_geometry[i]) THEN + IF NOT msf_curve_check + (cv\surface_curve.associated_geometry[i]) THEN + RETURN(FALSE); + END_IF; + END_IF; + END_IF; + END_REPEAT; + RETURN(TRUE); + END_IF; + ELSE + + (* a polyline shall have at least 3 points + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF(cv) THEN + IF (SIZEOF (cv\polyline.points) >= 3) THEN RETURN (TRUE); + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; +END_IF; +(* FALSE is returned if the input parameter cv is not a valid curve. + *) +RETURN (FALSE); +END_FUNCTION; + +FUNCTION msf_surface_check + (surf: surface) : BOOLEAN; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELEMENTARY_SURFACE' IN TYPEOF(surf) THEN + RETURN(TRUE); + ELSE + + (* a swept_surface shall have a valid sweeping curve + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SWEPT_SURFACE' IN TYPEOF (surf) THEN + RETURN (msf_curve_check(surf\swept_surface.swept_curve)); + ELSE + + (* an offset_surface shall not self-intersect and shall + reference a valid surface + *) + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_SURFACE' IN TYPEOF (surf)) AND + (surf\offset_surface.self_intersect = FALSE) OR + (surf\offset_surface.self_intersect = UNKNOWN)) THEN + RETURN (msf_surface_check(surf\offset_surface.basis_surface)); + ELSE + + (* a surface_replica shall have a valid parent surface + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_REPLICA' IN TYPEOF(surf) THEN + RETURN(msf_surface_check(surf\surface_replica.parent_surface)); + ELSE + + (* a b_spline_surface shall not self-intersect + *) + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_SURFACE' IN TYPEOF(surf)) AND + (surf\b_spline_surface.self_intersect = FALSE) OR + (surf\b_spline_surface.self_intersect = UNKNOWN)) THEN + RETURN(TRUE); + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + RETURN(FALSE); +END_FUNCTION; + +FUNCTION nmsf_curve_check + (cv: representation_item) : BOOLEAN; +IF SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.BOUNDED_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_3D'] * TYPEOF(cv)) > 1 + THEN RETURN(FALSE); + ELSE + + (* b_spline_curves shall not self-intersect + *) + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE' IN TYPEOF (cv)) AND + (cv\b_spline_curve.self_intersect = FALSE) OR + (cv\b_spline_curve.self_intersect = UNKNOWN)) + THEN RETURN(TRUE); + ELSE + + (* conics and lines are valid curve types + *) + IF SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE'] * TYPEOF (cv)) = 1 THEN + RETURN(TRUE); + ELSE + + (* a curve_replica shall reference a valid curve + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA' IN TYPEOF(cv) THEN + RETURN (nmsf_curve_check(cv\curve_replica.parent_curve)); + ELSE + + (* an offset_curve_3d shall not self-intersect and + shall reference a valid curve; a polyline is not a + valid basis_curve + *) + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_3D' IN TYPEOF (cv)) + AND + ((cv\offset_curve_3d.self_intersect = FALSE) OR + (cv\offset_curve_3d.self_intersect = UNKNOWN)) + AND + (NOT ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF + (cv\offset_curve_3d.basis_curve)))) THEN + RETURN (nmsf_curve_check(cv\offset_curve_3d.basis_curve)); + ELSE + + (* a pcurve shall reference a valid curve and a valid + basis_surface + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF(cv) THEN + RETURN ((nmsf_curve_check + (cv\pcurve.reference_to_curve\representation.items[1])) + AND + (nmsf_surface_check(cv\pcurve.basis_surface))); + ELSE + + (* a surface_curve references a curve_3d and one or + two pcurves or one or two surfaces or one of + each; all of these references shall be valid + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_CURVE' IN TYPEOF(cv) THEN + + (* if the curve reference is correct, check also the rest + *) + IF nmsf_curve_check(cv\surface_curve.curve_3d) THEN + REPEAT i := 1 TO SIZEOF + (cv\surface_curve.associated_geometry); + + (* do for one or two associated_geometrys: + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE' IN + TYPEOF (cv\surface_curve.associated_geometry[i]) THEN + IF NOT nmsf_surface_check + (cv\surface_curve.associated_geometry[i]) THEN + RETURN(FALSE); + END_IF; + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PCURVE' IN TYPEOF + (cv\surface_curve.associated_geometry[i]) THEN + IF NOT nmsf_curve_check + (cv\surface_curve.associated_geometry[i]) THEN + RETURN(FALSE); + END_IF; + END_IF; + END_IF; + END_REPEAT; + RETURN(TRUE); + END_IF; + ELSE + + (* a polyline shall have at least 3 points + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' IN TYPEOF(cv) THEN + IF (SIZEOF (cv\polyline.points) >= 3) THEN RETURN (TRUE); + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + (* FALSE is returned if the input parameter cv is not a valid curve. + *) + RETURN (FALSE); +END_FUNCTION; + +FUNCTION nmsf_surface_check + (surf: surface) : BOOLEAN; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELEMENTARY_SURFACE' IN TYPEOF(surf) THEN + RETURN(TRUE); + ELSE + + (* a swept_surface shall have a valid sweeping curve + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SWEPT_SURFACE' IN TYPEOF (surf) THEN + RETURN (nmsf_curve_check(surf\swept_surface.swept_curve)); + ELSE + + (* an offset_surface shall not self-intersect and shall + reference a valid surface + *) + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_SURFACE' IN TYPEOF (surf)) AND + (surf\offset_surface.self_intersect = FALSE) OR + (surf\offset_surface.self_intersect = UNKNOWN)) THEN + RETURN (nmsf_surface_check(surf\offset_surface.basis_surface)); + ELSE + + (* a surface_replica shall have a valid parent surface + *) + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SURFACE_REPLICA' IN TYPEOF(surf) THEN + RETURN(nmsf_surface_check(surf\surface_replica.parent_surface)); + ELSE + + (* a b_spline_surface shall not self-intersect + *) + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_SURFACE' IN TYPEOF(surf)) + AND + (surf\b_spline_surface.self_intersect = FALSE) OR + (surf\b_spline_surface.self_intersect = UNKNOWN)) THEN + RETURN(TRUE); + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + RETURN(FALSE); +END_FUNCTION; + +FUNCTION normalise + (arg: vector_or_direction) : vector_or_direction; + LOCAL + ndim : INTEGER; + v : direction; + result : vector_or_direction; + vec : vector; + mag : REAL; + END_LOCAL; + + IF NOT EXISTS (arg) THEN + result := ?; + (* When function is called with invalid data a NULL result is returned *) + ELSE + ndim := arg.dim; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VECTOR' IN TYPEOF(arg) THEN + BEGIN + v := dummy_gri || direction(arg\vector.orientation.direction_ratios); + IF arg.magnitude = 0.0 THEN + RETURN(?); + ELSE + vec := dummy_gri || vector (v, 1.0); + END_IF; + END; + ELSE + v := dummy_gri || direction (arg.direction_ratios); + END_IF; + mag := 0.0; + REPEAT i := 1 TO ndim; + mag := mag + v.direction_ratios[i]*v.direction_ratios[i]; + END_REPEAT; + IF mag > 0.0 THEN + mag := SQRT(mag); + REPEAT i := 1 TO ndim; + v.direction_ratios[i] := v.direction_ratios[i]/mag; + END_REPEAT; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VECTOR' IN TYPEOF(arg) THEN + vec.orientation := v; + result := vec; + ELSE + result := v; + END_IF; + ELSE + RETURN(?); + END_IF; + END_IF; + RETURN (result); +END_FUNCTION; + +FUNCTION open_shell_reversed + (a_shell: open_shell) : oriented_open_shell; + LOCAL + the_reverse : oriented_open_shell; + END_LOCAL; + IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_OPEN_SHELL' IN TYPEOF (a_shell) ) THEN + the_reverse := dummy_tri || + connected_face_set ( + a_shell\connected_face_set.cfs_faces) || + open_shell () || oriented_open_shell( + a_shell\oriented_open_shell.open_shell_element, + (NOT (a_shell\oriented_open_shell.orientation))); + ELSE + the_reverse := dummy_tri || + connected_face_set ( + a_shell\connected_face_set.cfs_faces) || + open_shell () || oriented_open_shell (a_shell, FALSE); + END_IF; + RETURN (the_reverse); +END_FUNCTION; + +FUNCTION orthogonal_complement + (vec: direction) : direction; + LOCAL + result : direction ; + END_LOCAL; + + IF (vec.dim <> 2) OR NOT EXISTS (vec) THEN + RETURN(?); + ELSE + result := dummy_gri || direction([-vec.direction_ratios[2], + vec.direction_ratios[1]]); + RETURN(result); + END_IF; +END_FUNCTION; + +FUNCTION path_head_to_tail + (a_path: path) : LOGICAL; + LOCAL + n : INTEGER; + p : LOGICAL := TRUE; + END_LOCAL; + + n := SIZEOF (a_path.edge_list); + REPEAT i := 2 TO n; + p := p AND (a_path.edge_list[i-1].edge_end :=: + a_path.edge_list[i].edge_start); + END_REPEAT; + + RETURN (p); +END_FUNCTION; + +FUNCTION path_reversed + (a_path: path) : oriented_path; + LOCAL + the_reverse : oriented_path ; + END_LOCAL; + IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ORIENTED_PATH' IN TYPEOF (a_path) ) THEN + the_reverse := dummy_tri || + path(list_of_topology_reversed (a_path.edge_list)) || + oriented_path(a_path\oriented_path.path_element, + NOT(a_path\oriented_path.orientation)) ; + ELSE + the_reverse := dummy_tri || + path(list_of_topology_reversed (a_path.edge_list)) || + oriented_path(a_path, FALSE); + END_IF; + + RETURN (the_reverse); +END_FUNCTION; + +FUNCTION scalar_times_vector + (scalar: REAL; vec: vector_or_direction) : vector; + LOCAL + v : direction; + mag : REAL; + result : vector; + END_LOCAL; + + IF NOT EXISTS (scalar) OR NOT EXISTS (vec) THEN + RETURN (?) ; + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VECTOR' IN TYPEOF (vec) THEN + v := dummy_gri || direction(vec\vector.orientation.direction_ratios); + mag := scalar * vec.magnitude; + ELSE + v := dummy_gri || direction(vec.direction_ratios); + mag := scalar; + END_IF; + IF (mag < 0.0 ) THEN + REPEAT i := 1 TO SIZEOF(v.direction_ratios); + v.direction_ratios[i] := -v.direction_ratios[i]; + END_REPEAT; + mag := -mag; + END_IF; + result := dummy_gri || vector(normalise(v), mag); + END_IF; + RETURN (result); +END_FUNCTION; + +FUNCTION second_proj_axis + (z_axis: direction; x_axis: direction; arg: direction) : direction; + LOCAL + y_axis : vector; + v : direction; + temp : vector; + END_LOCAL; + + IF NOT EXISTS(arg) THEN + v := dummy_gri || direction([0.0,1.0,0.0]); + ELSE + v := arg; + END_IF; + + temp := scalar_times_vector(dot_product(v, z_axis), z_axis); + y_axis := vector_difference(v, temp); + temp := scalar_times_vector(dot_product(v, x_axis), x_axis); + y_axis := vector_difference(y_axis, temp); + y_axis := normalise(y_axis); + RETURN(y_axis.orientation); +END_FUNCTION; + +FUNCTION set_of_topology_reversed + (a_set: set_of_reversible_topology_item) : set_of_reversible_topology_item; + LOCAL + the_reverse : set_of_reversible_topology_item; + END_LOCAL; + + the_reverse := []; + REPEAT i := 1 TO SIZEOF (a_set); + the_reverse := the_reverse + topology_reversed (a_set [i]); + END_REPEAT; + + RETURN (the_reverse); +END_FUNCTION; + +FUNCTION shell_reversed + (a_shell: shell) : shell; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OPEN_SHELL' IN TYPEOF (a_shell) ) THEN + RETURN (open_shell_reversed (a_shell)); + ELSE + IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CLOSED_SHELL' IN TYPEOF (a_shell) ) THEN + RETURN (closed_shell_reversed (a_shell)); + ELSE + RETURN (?); + END_IF; + END_IF; +END_FUNCTION; + +FUNCTION surface_condition_correlation + (pd: property_definition; rep: representation) : LOGICAL; +CASE pd.name OF + 'visual appearance', 'tactile appearance', 'contact ratio', 'hardness', 'treatment result', 'surface texture' : + RETURN(pd.name = rep.name); + OTHERWISE : RETURN(UNKNOWN); + END_CASE; +END_FUNCTION; + +FUNCTION surface_weights_positive + (b: rational_b_spline_surface) : BOOLEAN; + LOCAL + result : BOOLEAN := TRUE; + END_LOCAL; + + REPEAT i := 0 TO b.u_upper; + REPEAT j := 0 TO b.v_upper; + IF (b.weights[i][j] <= 0.0) THEN + result := FALSE; + RETURN(result); + END_IF; + END_REPEAT; + END_REPEAT; + RETURN(result); +END_FUNCTION; + +FUNCTION topology_reversed + (an_item: reversible_topology) : reversible_topology; +IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.EDGE' IN TYPEOF (an_item)) THEN + RETURN (edge_reversed (an_item)); + END_IF; + + IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PATH' IN TYPEOF (an_item)) THEN + RETURN (path_reversed (an_item)); + END_IF; + + IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE_BOUND' IN TYPEOF (an_item)) THEN + RETURN (face_bound_reversed (an_item)); + END_IF; + + IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FACE' IN TYPEOF (an_item)) THEN + RETURN (face_reversed (an_item)); + END_IF; + + IF ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHELL' IN TYPEOF (an_item)) THEN + RETURN (shell_reversed (an_item)); + END_IF; + + IF ('SET' IN TYPEOF (an_item)) THEN + RETURN (set_of_topology_reversed (an_item)); + END_IF; + + IF ('LIST' IN TYPEOF (an_item)) THEN + RETURN (list_of_topology_reversed (an_item)); + END_IF; + + RETURN (?); +END_FUNCTION; + +FUNCTION type_check_function + (the_type: GENERIC; sub_names: SET [0:?] OF STRING; criterion: INTEGER) : LOGICAL; +IF ((NOT EXISTS(the_type)) OR (NOT ({0 <= criterion <= 3})) OR (SIZEOF(sub_names) = 0)) THEN + RETURN (UNKNOWN); + ELSE + CASE criterion OF + 0: + RETURN (SIZEOF(sub_names * TYPEOF(the_type)) > 0); + 1: + RETURN (SIZEOF(sub_names * TYPEOF(the_type)) = 0); + 2: + RETURN (SIZEOF(sub_names * TYPEOF(the_type)) = 1); + 3: + RETURN (SIZEOF(sub_names * TYPEOF(the_type)) <= 1); + END_CASE; + END_IF; +END_FUNCTION; + +FUNCTION using_items + (item: founded_item_select; checked_items: SET [0:?] OF founded_item_select) : SET [0:?] OF founded_item_select; + LOCAL + new_check_items : SET OF founded_item_select; + result_items : SET OF founded_item_select; + next_items : SET OF founded_item_select; + END_LOCAL; + result_items := []; + new_check_items := checked_items + item; + -- Find the set of representation_items or founded_items + -- in which item is used directly. + next_items := QUERY(z <* bag_to_set( USEDIN(item , '')) | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION_ITEM' IN TYPEOF(z)) OR + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FOUNDED_ITEM' IN TYPEOF(z))); + -- If the set of next_items is not empty; + IF SIZEOF(next_items) > 0 THEN + -- For each element in the set, find the using_items recursively + REPEAT i := 1 TO HIINDEX(next_items); + -- Check for loop in data model, i.e. one of the next_items + -- occurred earlier in the set of check_items; + IF NOT(next_items[i] IN new_check_items) THEN + result_items := result_items + next_items[i] + + using_items(next_items[i],new_check_items); + END_IF; + END_REPEAT; + END_IF; + -- return the set of representation_items or founded_items + -- in which the input item is used directly and indirectly. + RETURN (result_items); +END_FUNCTION; + +FUNCTION using_representations + (item: founded_item_select) : SET [0:?] OF representation; + LOCAL + results : SET OF representation; + result_bag : BAG OF representation; + intermediate_items : SET OF founded_item_select; + END_LOCAL; + -- Find the representations in which the item is used and add to the + -- results set. + results := []; + result_bag := USEDIN(item,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION.ITEMS'); + IF SIZEOF(result_bag) > 0 THEN + REPEAT i := 1 TO HIINDEX(result_bag); + results := results + result_bag[i]; + END_REPEAT; + END_IF; + -- Find all representation_items or founded_items + -- by which item is referenced directly or indirectly. + intermediate_items := using_items(item,[]); + -- If the set of intermediate items is not empty; + IF SIZEOF(intermediate_items) > 0 THEN + -- For each element in the set, add the + -- representations of that element. + REPEAT i := 1 TO HIINDEX(intermediate_items); + result_bag := USEDIN(intermediate_items[i], + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.REPRESENTATION.ITEMS'); + IF SIZEOF(result_bag) > 0 THEN + REPEAT j := 1 TO HIINDEX(result_bag); + results := results + result_bag[j]; + END_REPEAT; + END_IF; + END_REPEAT; + END_IF; + -- Return the set of representation in which the input item is + -- used directly and indirectly (through intervening + -- representation_items or founded items). + RETURN (results); +END_FUNCTION; + +FUNCTION valid_basis_curve_in_2d_wireframe + (crv: curve) : BOOLEAN; +IF SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELLIPSE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CIRCLE'] * + TYPEOF (crv)) = 1 + THEN RETURN (TRUE); + ELSE + -- if the curve is a trimmed_curve + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TRIMMED_CURVE') + IN TYPEOF (crv)) THEN + -- if a line, parabola, or hyperbola is being trimmed, then valid + IF SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PARABOLA', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.HYPERBOLA'] * + TYPEOF(crv\trimmed_curve.basis_curve)) = 1 + THEN RETURN (TRUE); + -- otherwise, recursively check basis_curve + ELSE RETURN (valid_basis_curve_in_2d_wireframe + (crv\trimmed_curve.basis_curve)); + END_IF; + ELSE + -- recursively check the offset_curve basis curve + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_2D') + IN TYPEOF (crv)) + THEN RETURN (valid_basis_curve_in_2d_wireframe + (crv\offset_curve_2d.basis_curve)); + ELSE + -- recursively check the curve_replica parent curve + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA') + IN TYPEOF (crv)) + THEN RETURN (valid_basis_curve_in_2d_wireframe + (crv\curve_replica.parent_curve)); + ELSE + -- recursively check the composite_curve segments + IF (('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_CURVE') + IN TYPEOF (crv)) THEN + RETURN (SIZEOF (QUERY (ccs <* crv\composite_curve.segments | + NOT (valid_basis_curve_in_2d_wireframe + (ccs.parent_curve)))) = 0); + END_IF; + END_IF; + END_IF; + END_IF; + END_IF; + RETURN (FALSE); +END_FUNCTION; + +FUNCTION valid_calendar_date + (date: calendar_date) : LOGICAL; +CASE date.month_component OF + 1 : RETURN({ 1 <= date.day_component <= 31 }); + 2 : BEGIN + IF (leap_year(date.year_component)) THEN + RETURN({ 1 <= date.day_component <= 29 }); + ELSE + RETURN({ 1 <= date.day_component <= 28 }); + END_IF; + END; + 3 : RETURN({ 1 <= date.day_component <= 31 }); + 4 : RETURN({ 1 <= date.day_component <= 30 }); + 5 : RETURN({ 1 <= date.day_component <= 31 }); + 6 : RETURN({ 1 <= date.day_component <= 30 }); + 7 : RETURN({ 1 <= date.day_component <= 31 }); + 8 : RETURN({ 1 <= date.day_component <= 31 }); + 9 : RETURN({ 1 <= date.day_component <= 30 }); + 10 : RETURN({ 1 <= date.day_component <= 31 }); + 11 : RETURN({ 1 <= date.day_component <= 30 }); + 12 : RETURN({ 1 <= date.day_component <= 31 }); + END_CASE; + RETURN (FALSE); +END_FUNCTION; + +FUNCTION valid_datum_target_parameters + (pdf: placed_datum_target_feature) : BOOLEAN; +LOCAL + +rep_set : SET OF representation := [] ; + +parameter_representations: SET OF representation; +END_LOCAL; + + +REPEAT i := 1 TO HIINDEX(pdf.representation_associations); +rep_set := rep_set + pdf.representation_associations[i].used_representation; +END_REPEAT; + +parameter_representations := QUERY(rep <* rep_set | +('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN +TYPEOF(rep))); + + +IF (SIZEOF( QUERY( srwp <* parameter_representations | + (SIZEOF( QUERY( i <* srwp.items | + (i.name='orientation') AND + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLACEMENT' IN TYPEOF(i)))) = 1))) <> 1) THEN + RETURN(FALSE); +END_IF; + +CASE pdf\shape_aspect.description OF +'point': RETURN(SIZEOF(QUERY( srwp <* parameter_representations | + (SIZEOF(srwp.items) = 1))) = 1); + +'circle': RETURN((SIZEOF( QUERY( srwp <* parameter_representations | + (SIZEOF(srwp.items) = 2))) = 1) AND + (SIZEOF( QUERY( srwp <* parameter_representations | + (SIZEOF( QUERY( i <* srwp.items | + (i.name='target diameter') AND + (SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i) + ) = 2) )) = 1))) = 1)); + +'line': RETURN(SIZEOF( QUERY( srwp <* parameter_representations | + (SIZEOF( QUERY( i <* srwp.items | + (i.name='target length') AND + (SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i) + ) = 2) )) = 1))) = 1); + +'rectangle': RETURN((SIZEOF( QUERY( srwp <* parameter_representations | + (SIZEOF(srwp.items)= 3))) = 1) AND + (SIZEOF( QUERY( srwp <* parameter_representations | + (SIZEOF( QUERY( i <* srwp.items | + (i.name='target length') AND + (SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i) + ) = 2))) = 1))) = 1) AND + (SIZEOF( QUERY( srwp <* parameter_representations | + (SIZEOF( QUERY( i <* srwp.items | + (i.name='target width') AND + (SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM', + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE_WITH_UNIT']*TYPEOF(i) + ) = 2))) = 1) )) = 1)); +OTHERWISE : RETURN(FALSE); +END_CASE; +END_FUNCTION; + +FUNCTION valid_geometrically_bounded_wf_curve + (crv: curve) : BOOLEAN; +IF SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELLIPSE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CIRCLE' ] * TYPEOF (crv)) = 1 THEN + RETURN (TRUE); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TRIMMED_CURVE' IN TYPEOF (crv) THEN + IF SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PARABOLA', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.HYPERBOLA' ] * TYPEOF (crv\trimmed_curve.basis_curve)) = 1 THEN + RETURN (TRUE); + ELSE + RETURN (valid_geometrically_bounded_wf_curve(crv\trimmed_curve.basis_curve)); + END_IF ; + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_3D' IN TYPEOF (crv) THEN + RETURN (valid_geometrically_bounded_wf_curve(crv\offset_curve_3d.basis_curve)); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA' IN TYPEOF (crv) THEN + RETURN (valid_geometrically_bounded_wf_curve(crv\curve_replica.parent_curve)); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.COMPOSITE_CURVE' IN TYPEOF (crv) THEN + RETURN ( SIZEOF ( +QUERY ( ccs <* crv\composite_curve.segments| NOT valid_geometrically_bounded_wf_curve(ccs.parent_curve) )) = 0); + END_IF ; + END_IF ; + END_IF ; + END_IF ; + END_IF ; + RETURN (FALSE); +END_FUNCTION; + +FUNCTION valid_geometrically_bounded_wf_point + (pnt: point) : BOOLEAN; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT' IN TYPEOF (pnt) THEN + RETURN (TRUE); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_ON_CURVE' IN TYPEOF (pnt) THEN + RETURN (valid_geometrically_bounded_wf_curve(pnt\point_on_curve.basis_curve)); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_REPLICA' IN TYPEOF (pnt) THEN + RETURN (valid_geometrically_bounded_wf_point(pnt\point_replica.parent_pt)); + END_IF ; + END_IF ; + END_IF ; + RETURN (FALSE); +END_FUNCTION; + +FUNCTION valid_measure_value + (m: measure_value) : BOOLEAN; +IF ('REAL' IN TYPEOF (m)) THEN + RETURN (m > 0.0); + ELSE + IF ('INTEGER' IN TYPEOF (m)) THEN + RETURN (m > 0); + ELSE + RETURN (TRUE); + END_IF; + END_IF; +END_FUNCTION; + +FUNCTION valid_selected_instance_representation + (pd: product_definition_or_assembly_relationship) : LOGICAL; + LOCAL + properties: SET OF property_definition := bag_to_set(QUERY( prd<* USEDIN ( pd ,'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROPERTY_DEFINITION.DEFINITION' ) | + (prd.name = 'occurrence selection' ))); + property_definition_representations: SET OF property_definition_representation := bag_to_set(QUERY ( pdr <* USEDIN ( properties[1] , 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | + ( pdr.used_representation.name = 'selection criteria' ))); + selected_representation: representation; + END_LOCAL; + IF (SIZEOF( properties)<>1) THEN + RETURN(FALSE); + END_IF; + IF (SIZEOF(property_definition_representations)<>1) THEN + RETURN(FALSE); + END_IF; + selected_representation := property_definition_representations[1]\property_definition_representation.used_representation; + IF (SIZEOF(selected_representation\representation.items) <1) OR (SIZEOF(selected_representation\representation.items) >2) THEN + RETURN(FALSE); + END_IF; + IF (SIZEOF ( QUERY ( i <* selected_representation\representation.items | + ( SIZEOF (['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VALUE_RANGE']* TYPEOF ( i ) ) = 1) AND + ( i.name = 'selection quantity' ))) <> 1 ) THEN + RETURN(FALSE); + END_IF; + IF (SIZEOF ( QUERY ( i <* selected_representation\representation.items | + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF ( i ) ) AND + ( i.name = 'selection control' )))> 1) THEN + RETURN(FALSE); + END_IF; --the selection control is not specified then the quantity shall be a qualified_representation_item or a value_range + IF (SIZEOF ( QUERY ( i <* selected_representation\representation.items | + ( 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN TYPEOF( i ) ) AND + ( i.name = 'selection control' ) ))= 0) AND + (SIZEOF ( QUERY ( i <* selected_representation\representation.items | + ( i.name = 'selection quantity' ) AND + ( SIZEOF(['AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.QUALIFIED_REPRESENTATION_ITEM' , + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VALUE_RANGE']* TYPEOF ( i ) ) =0 ))) > 0 ) THEN + RETURN(FALSE); + END_IF; + RETURN(TRUE); +END_FUNCTION; + +FUNCTION valid_time + (time: local_time) : BOOLEAN; +IF EXISTS(time.second_component) THEN + RETURN (EXISTS(time.minute_component)); + ELSE + RETURN (TRUE); + END_IF; +END_FUNCTION; + +FUNCTION valid_units + (m: measure_with_unit) : BOOLEAN; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LENGTH_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MASS_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.TIME_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELECTRIC_CURRENT_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.THERMODYNAMIC_TEMPERATURE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CELSIUS_TEMPERATURE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AMOUNT_OF_SUBSTANCE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LUMINOUS_INTENSITY_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PLANE_ANGLE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.SOLID_ANGLE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.AREA_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VOLUME_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RATIO_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POSITIVE_PLANE_ANGLE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ACCELERATION_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 1.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CAPACITANCE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( -2.0, -1.0, 4.0, 1.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELECTRIC_CHARGE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONDUCTANCE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( -2.0, -1.0, 3.0, 2.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ELECTRIC_POTENTIAL_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 2.0, 1.0, -3.0, -1.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ENERGY_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 2.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FORCE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 1.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.FREQUENCY_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ILLUMINANCE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( -2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.INDUCTANCE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 2.0, 1.0, -2.0, -2.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LUMINOUS_FLUX_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAGNETIC_FLUX_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 2.0, 1.0, -2.0, -1.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MAGNETIC_FLUX_DENSITY_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 0.0, 1.0, -2.0, -1.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POWER_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 2.0, 1.0, -3.0, 0.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.PRESSURE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( -1.0, 1.0, -2.0, 0.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RESISTANCE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 2.0, 1.0, -3.0, -2.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VELOCITY_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents( 1.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0 ) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.RADIOACTIVITY_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.ABSORBED_DOSE_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(2.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.DOSE_EQUIVALENT_MEASURE' IN TYPEOF(m.value_component) THEN + IF derive_dimensional_exponents(m.unit_component) <> + dimensional_exponents(2.0, 0.0, -2.0, 0.0, 0.0, 0.0, 0.0) THEN + RETURN (FALSE); + END_IF; + END_IF; + RETURN (TRUE); +END_FUNCTION; + +FUNCTION valid_wireframe_edge_curve + (crv: curve) : BOOLEAN; +IF SIZEOF ([ 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.LINE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CONIC', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.B_SPLINE_CURVE', 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POLYLINE' ] * TYPEOF (crv)) = 1 THEN + RETURN (TRUE); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CURVE_REPLICA' IN TYPEOF (crv) THEN + RETURN (valid_wireframe_edge_curve(crv\curve_replica.parent_curve)); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.OFFSET_CURVE_3D' IN TYPEOF (crv) THEN + RETURN (valid_wireframe_edge_curve(crv\offset_curve_3d.basis_curve)); + END_IF ; + END_IF ; + END_IF ; + RETURN (FALSE); +END_FUNCTION; + +FUNCTION valid_wireframe_vertex_point + (pnt: point) : BOOLEAN; +IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.CARTESIAN_POINT' IN TYPEOF (pnt) THEN + RETURN (TRUE); + ELSE + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.POINT_REPLICA' IN TYPEOF (pnt) THEN + RETURN (valid_wireframe_vertex_point(pnt\point_replica.parent_pt)); + END_IF ; + END_IF ; + RETURN (FALSE); +END_FUNCTION; + +FUNCTION validate_countersink_radii + (cskhole: solid_with_stepped_round_hole_and_conical_transitions) : BOOLEAN; + LOCAL + i,j : INTEGER; + n : INTEGER := 1 + + cskhole\solid_with_stepped_round_hole.segments; + smaller, larger : positive_length_measure; + END_LOCAL; + + REPEAT i := 1 TO SIZEOF(cskhole.conical_transitions); + + -- First check whether transition i applies to the entry of the hole or + -- the exit of a through hole - those cases only need to be checked for + -- the sign of the cone apex angle. + + IF (((cskhole.conical_transitions[i].transition_number = 1) + AND (cskhole.conical_transitions[i].cone_apex_angle < 0)) + XOR ((cskhole.conical_transitions[i].transition_number = n) + AND (cskhole.conical_transitions[i].cone_apex_angle > 0))) + THEN RETURN(FALSE); + ELSE + IF ((cskhole.conical_transitions[i].transition_number <> 1) + AND (cskhole.conical_transitions[i].transition_number <> n)) + THEN + + -- For all remaining transitions, check that the cone base radius + -- lies in the range of validity. + + + BEGIN + j := cskhole.conical_transitions[i].transition_number; + IF cskhole\solid_with_stepped_round_hole.segment_radii[j] + > cskhole\solid_with_stepped_round_hole.segment_radii[j-1] + THEN + BEGIN + IF (cskhole.conical_transitions[i].cone_apex_angle > 0) + THEN RETURN(FALSE); + END_IF; + larger + := cskhole\solid_with_stepped_round_hole.segment_radii[j]; + smaller + := cskhole\solid_with_stepped_round_hole.segment_radii[j-1]; + END; + ELSE + BEGIN + IF (cskhole.conical_transitions[i].cone_apex_angle < 0) + THEN RETURN(FALSE); + END_IF; + larger + := cskhole\solid_with_stepped_round_hole.segment_radii[j-1]; + smaller + := cskhole\solid_with_stepped_round_hole.segment_radii[j]; + END; + END_IF; + IF ((cskhole.conical_transitions[i].cone_base_radius > larger) + OR (cskhole.conical_transitions[i].cone_base_radius < smaller)) + THEN RETURN(FALSE); + END_IF; + END; + END_IF; + END_IF; + END_REPEAT; + RETURN(TRUE); +END_FUNCTION; + +FUNCTION value_range_aggregate_rep_item + (agg: AGGREGATE OF representation_item) : BOOLEAN; +BEGIN + IF (SIZEOF(QUERY(i1 <* agg | ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.' + 'MEASURE_REPRESENTATION_ITEM' IN TYPEOF(i1)) )) = 6) THEN + RETURN (TRUE); + ELSE + RETURN (FALSE); + END_IF; + END; +END_FUNCTION; + +FUNCTION value_range_wr1 + (agg: compound_item_definition) : BOOLEAN; +BEGIN + IF (SIZEOF(agg) = 2) AND ((SIZEOF(QUERY (i1 <* agg | ( + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF + (i1)))) = 2) OR + (SIZEOF(QUERY (i2 <* agg | ( + 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VALUE_REPRESENTATION_ITEM' IN TYPEOF + (i2)))) = 2)) + THEN + RETURN(TRUE); + ELSE + RETURN(FALSE); + END_IF; + END; +END_FUNCTION; + +FUNCTION value_range_wr2 + (agg: compound_item_definition) : BOOLEAN; +BEGIN + IF ((SIZEOF(QUERY (i <* agg | (i\representation_item.name = 'upper limit'))) = 1) + AND (SIZEOF(QUERY (i <* agg | (i\representation_item.name = 'lower limit'))) = 1)) + THEN + RETURN(TRUE); + ELSE + RETURN(FALSE); + END_IF; + END; +END_FUNCTION; + +FUNCTION value_range_wr3 + (agg: compound_item_definition) : BOOLEAN; +BEGIN + IF (SIZEOF(QUERY(i1 <* agg | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF (i1)) AND + (SIZEOF (QUERY (i2 <* agg | + ('AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF (i2)) AND + (i1 :<>: i2) AND (i1\measure_with_unit.unit_component :=: i2\measure_with_unit.unit_component))) = 1))) = 2) + THEN + RETURN (TRUE); + ELSE + RETURN (FALSE); + END_IF; + END; +END_FUNCTION; + +FUNCTION vector_difference + (arg1: vector_or_direction; arg2: vector_or_direction) : vector; + LOCAL + result : vector; + res, vec1, vec2 : direction; + mag, mag1, mag2 : REAL; + ndim : INTEGER; + END_LOCAL; + + IF ((NOT EXISTS (arg1)) OR (NOT EXISTS (arg2))) OR (arg1.dim <> arg2.dim) + THEN + RETURN (?) ; + ELSE + BEGIN + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VECTOR' IN TYPEOF(arg1) THEN + mag1 := arg1.magnitude; + vec1 := arg1\vector.orientation; + ELSE + mag1 := 1.0; + vec1 := arg1; + END_IF; + IF 'AP203_CONFIGURATION_CONTROLLED_3D_DESIGN_OF_MECHANICAL_PARTS_AND_ASSEMBLIES_MIM_LF.VECTOR' IN TYPEOF(arg2) THEN + mag2 := arg2.magnitude; + vec2 := arg2\vector.orientation; + ELSE + mag2 := 1.0; + vec2 := arg2; + END_IF; + vec1 := normalise (vec1); + vec2 := normalise (vec2); + ndim := SIZEOF(vec1.direction_ratios); + mag := 0.0; + res := dummy_gri || direction(vec1.direction_ratios); + REPEAT i := 1 TO ndim; + res.direction_ratios[i] := mag1*vec1.direction_ratios[i] - + mag2*vec2.direction_ratios[i]; + mag := mag + (res.direction_ratios[i]*res.direction_ratios[i]); + END_REPEAT; + IF (mag > 0.0 ) THEN + result := dummy_gri || vector( res, SQRT(mag)); + ELSE + result := dummy_gri || vector( vec1, 0.0); + END_IF; + END; + END_IF; + RETURN (result); +END_FUNCTION; + +END_SCHEMA; + diff --git a/scripts/IFCImporter/schema_ifc2x3.exp b/scripts/StepImporter/schema_ifc2x3.exp similarity index 100% rename from scripts/IFCImporter/schema_ifc2x3.exp rename to scripts/StepImporter/schema_ifc2x3.exp diff --git a/scripts/StepImporter/step_entitylist.txt b/scripts/StepImporter/step_entitylist.txt new file mode 100644 index 000000000..223f57a61 --- /dev/null +++ b/scripts/StepImporter/step_entitylist.txt @@ -0,0 +1,1015 @@ +# ============================================================================== +# List of IFC structures needed by Assimp +# ============================================================================== +# use genentitylist.sh to update this list + +# This machine-generated list is not complete, it lacks many intermediate +# classes in the inheritance hierarchy. Those are magically augmented by the +# code generator. Also, the names of all used entities need to be present +# in the source code for this to work. +absorbed_dose_measure_with_unit +absorbed_dose_unit +abstract_variable +acceleration_measure_with_unit +acceleration_unit +action; +action_assignment +action_directive; +action_method; +action_method_assignment +action_method_relationship; +action_method_role; +action_property; +action_property_representation; +action_relationship; +action_request_assignment +action_request_solution; +action_request_status; +action_status; +address; +advanced_brep_shape_representation +advanced_face +alternate_product_relationship; +amount_of_substance_measure_with_unit +amount_of_substance_unit +angle_direction_reference +angular_dimension +angular_location +angular_size +angularity_tolerance +annotation_curve_occurrence +annotation_fill_area +annotation_fill_area_occurrence +annotation_occurrence +annotation_occurrence_associativity +annotation_occurrence_relationship; +annotation_plane +annotation_subfigure_occurrence +annotation_symbol +annotation_symbol_occurrence +annotation_text +annotation_text_character +annotation_text_occurrence +apex +application_context; +application_context_element +application_protocol_definition; +applied_action_assignment +applied_action_method_assignment +applied_action_request_assignment +applied_approval_assignment +applied_attribute_classification_assignment +applied_certification_assignment +applied_classification_assignment +applied_contract_assignment +applied_date_and_time_assignment +applied_date_assignment +applied_document_reference +applied_document_usage_constraint_assignment +applied_effectivity_assignment +applied_event_occurrence_assignment +applied_external_identification_assignment +applied_group_assignment +applied_identification_assignment +applied_name_assignment +applied_organization_assignment +applied_organizational_project_assignment +applied_person_and_organization_assignment +applied_presented_item +applied_security_classification_assignment +applied_time_interval_assignment +applied_usage_right +approval; +approval_assignment +approval_date_time; +approval_person_organization; +approval_relationship; +approval_role; +approval_status; +area_in_set; +area_measure_with_unit +area_unit +assembly_component_usage +assembly_component_usage_substitute; +assigned_requirement +atomic_formula +attribute_assertion +attribute_classification_assignment +attribute_language_assignment +attribute_value_assignment +attribute_value_role; +auxiliary_geometric_representation_item +axis1_placement +axis2_placement_2d +axis2_placement_3d +b_spline_curve +b_spline_curve_with_knots +b_spline_surface +b_spline_surface_with_knots +back_chaining_rule +back_chaining_rule_body +background_colour +beveled_sheet_representation +bezier_curve +bezier_surface +binary_generic_expression +binary_numeric_expression +binary_representation_item +block +boolean_expression +boolean_literal +boolean_representation_item +boolean_result +boundary_curve +bounded_curve +bounded_pcurve +bounded_surface +bounded_surface_curve +box_domain +boxed_half_space +breakdown_context +breakdown_element_group_assignment +breakdown_element_realization +breakdown_element_usage +breakdown_of +brep_with_voids +bytes_representation_item +calendar_date +camera_image +camera_image_3d_with_scale +camera_model +camera_model_d3 +camera_model_d3_multi_clipping +camera_model_d3_multi_clipping_intersection +camera_model_d3_multi_clipping_union +camera_model_d3_with_hlhsr +camera_model_with_light_sources +camera_usage +capacitance_measure_with_unit +capacitance_unit +cartesian_point +cartesian_transformation_operator +cartesian_transformation_operator_2d +cartesian_transformation_operator_3d +cc_design_approval +cc_design_certification +cc_design_contract +cc_design_date_and_time_assignment +cc_design_person_and_organization_assignment +cc_design_security_classification +cc_design_specification_reference +celsius_temperature_measure_with_unit +centre_of_symmetry +certification; +certification_assignment +certification_type; +change +change_request +character_glyph_font_usage; +character_glyph_style_outline +character_glyph_style_stroke +character_glyph_symbol +character_glyph_symbol_outline +character_glyph_symbol_stroke +characteristic_data_column_header +characteristic_data_column_header_link +characteristic_data_table_header +characteristic_data_table_header_decomposition +characteristic_type +characterized_class +characterized_object; +circle +circular_runout_tolerance +class +class_by_extension +class_by_intension +class_system +class_usage_effectivity_context_assignment +classification_assignment +classification_role; +closed_shell +coaxiality_tolerance +colour; +colour_rgb +colour_specification +common_datum +comparison_expression +complex_clause +complex_conjunctive_clause +complex_disjunctive_clause +complex_shelled_solid +composite_assembly_definition +composite_assembly_sequence_definition +composite_assembly_table +composite_curve +composite_curve_on_surface +composite_curve_segment +composite_material_designation +composite_shape_aspect +composite_sheet_representation +composite_text +composite_text_with_associated_curves +composite_text_with_blanking_box +composite_text_with_delineation +composite_text_with_extent +compound_representation_item +compound_shape_representation +concentricity_tolerance +concept_feature_operator; +concept_feature_relationship; +concept_feature_relationship_with_condition +conditional_concept_feature +conductance_measure_with_unit +conductance_unit +configurable_item +configuration_design; +configuration_effectivity +configuration_item; +configuration_item_hierarchical_relationship +configuration_item_relationship; +configuration_item_revision_sequence +configured_effectivity_assignment +configured_effectivity_context_assignment +conic +conical_stepped_hole_transition +conical_surface +connected_edge_set +connected_face_set +connected_face_sub_set +constructive_geometry_representation +constructive_geometry_representation_relationship +contact_ratio_representation +context_dependent_invisibility +context_dependent_over_riding_styled_item +context_dependent_shape_representation; +context_dependent_unit +contract; +contract_assignment +contract_relationship; +contract_type; +conversion_based_unit +coordinated_universal_time_offset; +csg_shape_representation +csg_solid +currency +currency_measure_with_unit +curve +curve_bounded_surface +curve_dimension +curve_replica +curve_style +curve_style_font +curve_style_font_and_scaling +curve_style_font_pattern +curve_style_rendering; +curve_swept_solid_shape_representation +cylindrical_surface +cylindricity_tolerance +data_environment; +date +date_and_time; +date_and_time_assignment +date_assignment +date_representation_item +date_role; +date_time_representation_item +date_time_role; +dated_effectivity +datum +datum_feature +datum_feature_callout +datum_reference; +datum_target +datum_target_callout +default_tolerance_table +default_tolerance_table_cell +defined_symbol +definitional_representation +definitional_representation_relationship +definitional_representation_relationship_with_same_context +degenerate_pcurve +degenerate_toroidal_surface +derived_shape_aspect +derived_unit +derived_unit_element; +description_attribute; +descriptive_representation_item +design_context +design_make_from_relationship +diameter_dimension +dielectric_constant_measure_with_unit +dimension_callout +dimension_callout_component_relationship +dimension_callout_relationship +dimension_curve +dimension_curve_directed_callout +dimension_curve_terminator +dimension_curve_terminator_to_projection_curve_associativity +dimension_pair +dimension_related_tolerance_zone_element; +dimension_text_associativity +dimensional_characteristic_representation; +dimensional_exponents; +dimensional_location +dimensional_location_with_path +dimensional_size +dimensional_size_with_path +directed_action +directed_dimensional_location +direction +document; +document_file +document_identifier +document_identifier_assignment +document_product_association; +document_product_equivalence +document_reference +document_relationship; +document_representation_type; +document_type; +document_usage_constraint; +document_usage_constraint_assignment +document_usage_role; +dose_equivalent_measure_with_unit +dose_equivalent_unit +double_offset_shelled_solid +draped_defined_transformation +draughting_annotation_occurrence +draughting_callout +draughting_callout_relationship; +draughting_elements +draughting_model +draughting_model_item_association +draughting_pre_defined_colour +draughting_pre_defined_curve_font +draughting_pre_defined_text_font +draughting_subfigure_representation +draughting_symbol_representation +draughting_text_literal_with_delineation +draughting_title; +drawing_definition; +drawing_revision +drawing_revision_sequence; +drawing_sheet_revision +drawing_sheet_revision_sequence +drawing_sheet_revision_usage +edge +edge_based_wireframe_model +edge_based_wireframe_shape_representation +edge_blended_solid +edge_curve +edge_loop +effectivity +effectivity_assignment +effectivity_context_assignment +effectivity_context_role; +effectivity_relationship; +electric_charge_measure_with_unit +electric_charge_unit +electric_current_measure_with_unit +electric_current_unit +electric_potential_measure_with_unit +electric_potential_unit +elementary_brep_shape_representation +elementary_surface +ellipse +energy_measure_with_unit +energy_unit +entity_assertion +enum_reference_prefix +environment; +evaluated_characteristic +evaluated_degenerate_pcurve +evaluation_product_definition +event_occurrence; +event_occurrence_assignment +event_occurrence_relationship; +event_occurrence_role; +exclusive_product_concept_feature_category +executed_action +expanded_uncertainty +explicit_procedural_geometric_representation_item_relationship +explicit_procedural_representation_item_relationship +explicit_procedural_representation_relationship +explicit_procedural_shape_representation_relationship +expression +expression_conversion_based_unit +extension +extent +external_class_library +external_identification_assignment +external_source; +external_source_relationship; +externally_defined_class +externally_defined_colour +externally_defined_context_dependent_unit +externally_defined_conversion_based_unit +externally_defined_currency +externally_defined_curve_font +externally_defined_dimension_definition +externally_defined_general_property +externally_defined_hatch_style +externally_defined_item; +externally_defined_item_relationship; +externally_defined_marker +externally_defined_picture_representation_item +externally_defined_representation_item +externally_defined_string +externally_defined_symbol +externally_defined_terminator_symbol +externally_defined_text_font +externally_defined_tile +externally_defined_tile_style +extruded_area_solid +extruded_face_solid +extruded_face_solid_with_draft_angle +extruded_face_solid_with_multiple_draft_angles +extruded_face_solid_with_trim_conditions +face +face_based_surface_model +face_bound +face_outer_bound +face_surface +faceted_brep +faceted_brep_shape_representation +fact_type +fill_area_style +fill_area_style_colour; +fill_area_style_hatching +fill_area_style_tile_coloured_region +fill_area_style_tile_curve_with_style +fill_area_style_tile_symbol_with_style +fill_area_style_tiles +flat_pattern_ply_representation_relationship +flatness_tolerance +force_measure_with_unit +force_unit +forward_chaining_rule +forward_chaining_rule_premise +founded_item +frequency_measure_with_unit +frequency_unit +func +functional_breakdown_context +functional_element_usage +functionally_defined_transformation; +general_material_property +general_property; +general_property_association; +general_property_relationship; +generic_character_glyph_symbol +generic_expression +generic_literal +generic_variable +geometric_alignment +geometric_curve_set +geometric_intersection +geometric_item_specific_usage +geometric_model_element_relationship +geometric_representation_context +geometric_representation_item +geometric_set +geometric_tolerance; +geometric_tolerance_relationship; +geometric_tolerance_with_datum_reference +geometric_tolerance_with_defined_unit +geometrical_tolerance_callout +geometrically_bounded_2d_wireframe_representation +geometrically_bounded_surface_shape_representation +geometrically_bounded_wireframe_shape_representation +global_assignment +global_uncertainty_assigned_context +global_unit_assigned_context +ground_fact +group; +group_assignment +group_relationship; +half_space_solid +hardness_representation +hidden_element_over_riding_styled_item +hyperbola +id_attribute; +identification_assignment +identification_role; +illuminance_measure_with_unit +illuminance_unit +included_text_block +inclusion_product_concept_feature +indirectly_selected_elements +indirectly_selected_shape_elements +inductance_measure_with_unit +inductance_unit +information_right +information_usage_right +instance_usage_context_assignment +instanced_feature +int_literal +integer_representation_item +intersection_curve +interval_expression +invisibility; +iso4217_currency +item_defined_transformation; +item_identified_representation_usage; +known_source +laid_defined_transformation +laminate_table +language +leader_curve +leader_directed_callout +leader_directed_dimension +leader_terminator +length_measure_with_unit +length_unit +light_source +light_source_ambient +light_source_directional +light_source_positional +light_source_spot +limits_and_fits; +line +line_profile_tolerance +linear_dimension +literal_conjunction +literal_disjunction +literal_number +local_time; +logical_literal +logical_representation_item +loop +loss_tangent_measure_with_unit +lot_effectivity +luminous_flux_measure_with_unit +luminous_flux_unit +luminous_intensity_measure_with_unit +luminous_intensity_unit +magnetic_flux_density_measure_with_unit +magnetic_flux_density_unit +magnetic_flux_measure_with_unit +magnetic_flux_unit +make_from_usage_option +manifold_solid_brep +manifold_subsurface_shape_representation +manifold_surface_shape_representation +mapped_item +mass_measure_with_unit +mass_unit +material_designation; +material_designation_characterization; +material_property +material_property_representation +measure_qualification; +measure_representation_item +measure_with_unit +mechanical_context +mechanical_design_and_draughting_relationship +mechanical_design_geometric_presentation_area +mechanical_design_geometric_presentation_representation +mechanical_design_presentation_representation_with_draughting +mechanical_design_shaded_presentation_area +mechanical_design_shaded_presentation_representation +min_and_major_ply_orientation_basis +modified_geometric_tolerance +modified_solid +modified_solid_with_placed_configuration +moments_of_inertia_representation +multi_language_attribute_assignment +multiple_arity_boolean_expression +multiple_arity_generic_expression +multiple_arity_numeric_expression +name_assignment +name_attribute; +named_unit +next_assembly_usage_occurrence +non_manifold_surface_shape_representation +null_representation_item +numeric_expression +object_role; +offset_curve_2d +offset_curve_3d +offset_surface +one_direction_repeat_factor +open_shell +ordinal_date +ordinate_dimension +organization; +organization_assignment +organization_relationship; +organization_role; +organizational_address +organizational_project; +organizational_project_assignment +organizational_project_relationship; +organizational_project_role; +oriented_closed_shell +oriented_edge +oriented_face +oriented_open_shell +oriented_path +oriented_surface +outer_boundary_curve +over_riding_styled_item +package_product_concept_feature +parabola +parallel_offset +parallelism_tolerance +parametric_representation_context +part_laminate_table +partial_document_with_structured_text_representation_assignment +path +pcurve +percentage_laminate_definition +percentage_laminate_table +percentage_ply_definition +perpendicular_to +perpendicularity_tolerance +person; +person_and_organization; +person_and_organization_address +person_and_organization_assignment +person_and_organization_role; +personal_address +physical_breakdown_context +physical_element_usage +picture_representation +picture_representation_item +placed_datum_target_feature +placed_feature +placement +planar_box +planar_extent +plane +plane_angle_measure_with_unit +plane_angle_unit +plus_minus_tolerance; +ply_laminate_definition +ply_laminate_sequence_definition +ply_laminate_table +point +point_and_vector +point_on_curve +point_on_surface +point_path +point_replica +point_style +polar_complex_number_literal +poly_loop +polyline +position_tolerance +positioned_sketch +power_measure_with_unit +power_unit +pre_defined_colour +pre_defined_curve_font +pre_defined_dimension_symbol +pre_defined_geometrical_tolerance_symbol +pre_defined_item; +pre_defined_marker +pre_defined_point_marker_symbol +pre_defined_surface_condition_symbol +pre_defined_surface_side_style +pre_defined_symbol +pre_defined_terminator_symbol +pre_defined_text_font +pre_defined_tile +precision_qualifier; +predefined_picture_representation_item +presentation_area +presentation_layer_assignment; +presentation_representation +presentation_set; +presentation_size; +presentation_style_assignment +presentation_style_by_context +presentation_view +presented_item +presented_item_representation; +pressure_measure_with_unit +pressure_unit +procedural_representation +procedural_representation_sequence +procedural_shape_representation +procedural_shape_representation_sequence +product; +product_category; +product_class +product_concept; +product_concept_context +product_concept_feature; +product_concept_feature_association; +product_concept_feature_category +product_concept_feature_category_usage +product_concept_relationship; +product_context +product_definition +product_definition_context +product_definition_context_association; +product_definition_context_role; +product_definition_effectivity +product_definition_element_relationship +product_definition_formation; +product_definition_formation_relationship; +product_definition_formation_with_specified_source +product_definition_group_assignment +product_definition_occurrence_relationship; +product_definition_relationship; +product_definition_shape +product_definition_substitute; +product_definition_usage +product_definition_with_associated_documents +product_identification +product_material_composition_relationship +product_related_product_category +product_specification +projected_zone_definition +projection_curve +projection_directed_callout +promissory_usage_occurrence +property_definition; +property_definition_relationship; +property_definition_representation; +qualified_representation_item +qualitative_uncertainty +quantified_assembly_component_usage +quasi_uniform_curve +quasi_uniform_surface +radioactivity_measure_with_unit +radioactivity_unit +radius_dimension +range_characteristic +ratio_measure_with_unit +ratio_unit +rational_b_spline_curve +rational_b_spline_surface +rational_representation_item +real_literal +real_representation_item +rectangular_composite_surface +rectangular_trimmed_surface +referenced_modified_datum +relative_event_occurrence +rep_item_group +reparametrised_composite_curve_segment +representation; +representation_context; +representation_item +representation_item_relationship; +representation_map; +representation_relationship; +representation_relationship_with_transformation +requirement_assigned_object +requirement_assignment +requirement_source +requirement_view_definition_relationship +resistance_measure_with_unit +resistance_unit +revolved_area_solid +revolved_face_solid +revolved_face_solid_with_trim_conditions +right_angular_wedge +right_circular_cone +right_circular_cylinder +right_to_usage_association +role_association; +roundness_tolerance +row_representation_item +row_value +row_variable +rule_action +rule_condition +rule_definition +rule_set +rule_set_group +rule_software_definition +rule_superseded_assignment +rule_supersedence +ruled_surface_swept_area_solid +runout_zone_definition +runout_zone_orientation; +runout_zone_orientation_reference_direction +satisfied_requirement +satisfies_requirement +satisfying_item +scalar_variable +scattering_parameter +sculptured_solid +seam_curve +security_classification; +security_classification_assignment +security_classification_level; +serial_numbered_effectivity +shape_aspect; +shape_aspect_associativity +shape_aspect_deriving_relationship +shape_aspect_relationship; +shape_definition_representation +shape_dimension_representation +shape_feature_definition +shape_representation +shape_representation_relationship +shape_representation_with_parameters +shell_based_surface_model +shell_based_wireframe_model +shell_based_wireframe_shape_representation +shelled_solid +si_absorbed_dose_unit +si_capacitance_unit +si_conductance_unit +si_dose_equivalent_unit +si_electric_charge_unit +si_electric_potential_unit +si_energy_unit +si_force_unit +si_frequency_unit +si_illuminance_unit +si_inductance_unit +si_magnetic_flux_density_unit +si_magnetic_flux_unit +si_power_unit +si_pressure_unit +si_radioactivity_unit +si_resistance_unit +si_unit +simple_boolean_expression +simple_clause +simple_generic_expression +simple_numeric_expression +slash_expression +smeared_material_definition +solid_angle_measure_with_unit +solid_angle_unit +solid_curve_font +solid_model +solid_replica +solid_with_angle_based_chamfer +solid_with_chamfered_edges +solid_with_circular_pattern +solid_with_circular_pocket +solid_with_circular_protrusion +solid_with_conical_bottom_round_hole +solid_with_constant_radius_edge_blend +solid_with_curved_slot +solid_with_depression +solid_with_double_offset_chamfer +solid_with_flat_bottom_round_hole +solid_with_general_pocket +solid_with_general_protrusion +solid_with_groove +solid_with_hole +solid_with_incomplete_circular_pattern +solid_with_incomplete_rectangular_pattern +solid_with_pocket +solid_with_protrusion +solid_with_rectangular_pattern +solid_with_rectangular_pocket +solid_with_rectangular_protrusion +solid_with_shape_element_pattern +solid_with_single_offset_chamfer +solid_with_slot +solid_with_spherical_bottom_round_hole +solid_with_stepped_round_hole +solid_with_stepped_round_hole_and_conical_transitions +solid_with_straight_slot +solid_with_tee_section_slot +solid_with_through_depression +solid_with_trapezoidal_section_slot +solid_with_variable_radius_edge_blend +source_for_requirement +sourced_requirement +specification_definition +specified_higher_usage_occurrence +sphere +spherical_surface +standard_uncertainty +start_request +start_work +straightness_tolerance +structured_dimension_callout +structured_text_composition +structured_text_representation +styled_item +subedge +subface +supplied_part_relationship +surface +surface_condition_callout +surface_curve +surface_curve_swept_area_solid +surface_of_linear_extrusion +surface_of_revolution +surface_patch +surface_profile_tolerance +surface_rendering_properties; +surface_replica +surface_side_style +surface_style_boundary +surface_style_control_grid +surface_style_fill_area +surface_style_parameter_line +surface_style_reflectance_ambient; +surface_style_reflectance_ambient_diffuse +surface_style_reflectance_ambient_diffuse_specular +surface_style_rendering; +surface_style_rendering_with_properties +surface_style_segmentation_curve +surface_style_silhouette +surface_style_transparent; +surface_style_usage +surface_texture_representation +surfaced_open_shell +swept_area_solid +swept_disk_solid +swept_face_solid +swept_surface +symbol +symbol_colour; +symbol_representation +symbol_representation_map +symbol_style +symbol_target +symmetric_shape_aspect +symmetry_tolerance +table_representation_item +tactile_appearance_representation +tagged_text_format +tagged_text_item +tangent +terminator_symbol +text_font; +text_font_family; +text_font_in_family; +text_literal +text_literal_with_associated_curves +text_literal_with_blanking_box +text_literal_with_delineation +text_literal_with_extent +text_string_representation +text_style +text_style_for_defined_font; +text_style_with_box_characteristics +text_style_with_mirror +text_style_with_spacing +thermal_resistance_measure_with_unit +thermal_resistance_unit +thermodynamic_temperature_measure_with_unit +thermodynamic_temperature_unit +thickened_face_solid +thickness_laminate_definition +thickness_laminate_table +time_interval; +time_interval_assignment +time_interval_based_effectivity +time_interval_relationship; +time_interval_role; +time_interval_with_bounds +time_measure_with_unit +time_unit +tolerance_value; +tolerance_zone +tolerance_zone_definition +tolerance_zone_form; +topological_representation_item +toroidal_surface +torus +total_runout_tolerance +track_blended_solid +track_blended_solid_with_end_conditions +transformation_with_derived_angle +trimmed_curve +two_direction_repeat_factor +type_qualifier; +unary_generic_expression +unary_numeric_expression +uncertainty_assigned_representation +uncertainty_measure_with_unit +uncertainty_qualifier +uniform_curve +uniform_resource_identifier +uniform_surface +usage_association +user_defined_curve_font +user_defined_marker +user_defined_terminator_symbol +user_selected_elements +user_selected_shape_elements +value_range +value_representation_item +variable_semantics +variational_representation_item +vector +vector_style +velocity_measure_with_unit +velocity_unit +versioned_action_request; +vertex +vertex_loop +vertex_point +vertex_shell +view_volume +visual_appearance_representation +volume_measure_with_unit +volume_unit +week_of_year_and_day_date +wire_shell +year_month +zone_structural_makeup diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index d92b52b5a..7e2aec270 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -40,14 +40,16 @@ cmake_minimum_required( VERSION 2.6 ) INCLUDE_DIRECTORIES( - ../contrib/gtest/include - ../contrib/gtest/ + ${Assimp_SOURCE_DIR}/contrib/gtest/include + ${Assimp_SOURCE_DIR}/contrib/gtest/ + ${Assimp_SOURCE_DIR}/test/unit ${Assimp_SOURCE_DIR}/include ${Assimp_SOURCE_DIR}/code ) if (MSVC) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING") endif() + # Add the temporary output directories to the library path to make sure the # Assimp library can be found, even if it is not installed system-wide yet. LINK_DIRECTORIES( ${Assimp_BINARY_DIR} ${AssetImporter_BINARY_DIR}/lib ) @@ -74,6 +76,7 @@ SET( COMMON unit/utProfiler.cpp unit/utSharedPPData.cpp unit/utStringUtils.cpp + unit/Common/utLineSplitter.cpp ) SET( IMPORTERS @@ -85,6 +88,7 @@ SET( IMPORTERS unit/utIFCImportExport.cpp unit/utFBXImporterExporter.cpp unit/utImporter.cpp + unit/ImportExport/utExporter.cpp unit/ut3DImportExport.cpp unit/ut3DSImportExport.cpp unit/utACImportExport.cpp @@ -113,6 +117,12 @@ SET( IMPORTERS unit/utColladaImportExport.cpp unit/utCSMImportExport.cpp unit/utB3DImportExport.cpp + unit/utMDCImportExport.cpp + unit/utAssbinImportExport.cpp + unit/ImportExport/utCOBImportExport.cpp + unit/ImportExport/utOgreImportExport.cpp + unit/ImportExport/utQ3BSPFileImportExport.cpp + unit/ImportExport/utOFFImportExport.cpp ) SET( MATERIAL @@ -170,6 +180,7 @@ add_executable( unit ) add_definitions(-DASSIMP_TEST_MODELS_DIR="${CMAKE_CURRENT_LIST_DIR}/models") +add_definitions(-DASSIMP_TEST_MODELS_NONBSD_DIR="${CMAKE_CURRENT_LIST_DIR}/models-nonbsd") SET_PROPERTY( TARGET assimp PROPERTY DEBUG_POSTFIX ${CMAKE_DEBUG_POSTFIX} ) diff --git a/test/models-nonbsd/PK3/SGDTT3.pk3 b/test/models-nonbsd/PK3/SGDTT3.pk3 index 3eeb015c3..0d997e5d9 100644 Binary files a/test/models-nonbsd/PK3/SGDTT3.pk3 and b/test/models-nonbsd/PK3/SGDTT3.pk3 differ diff --git a/test/models/AMF/test_with_mat.amf b/test/models/AMF/test_with_mat.amf new file mode 100644 index 000000000..0127d8252 --- /dev/null +++ b/test/models/AMF/test_with_mat.amf @@ -0,0 +1,38 @@ + + + Split Pyramid + John Smith + + + + 000 + 100 + 010 + 110 + 0.50.51 + + + Hard side + 210 + 014 + 412 + 042 + + + Soft side + 231 + 134 + 432 + 421 + + + + + Hard material + 0.10.10.1 + + + Soft material + 00.90.9
    0.5 + + diff --git a/test/models/BLEND/BlenderDefault_250.blend b/test/models/BLEND/BlenderDefault_250.blend index 80bff9f5d..4cdddeab4 100644 Binary files a/test/models/BLEND/BlenderDefault_250.blend and b/test/models/BLEND/BlenderDefault_250.blend differ diff --git a/test/models/BLEND/BlenderDefault_250_Compressed.blend b/test/models/BLEND/BlenderDefault_250_Compressed.blend index 99294d010..1a6f4df3b 100644 Binary files a/test/models/BLEND/BlenderDefault_250_Compressed.blend and b/test/models/BLEND/BlenderDefault_250_Compressed.blend differ diff --git a/test/models/BLEND/BlenderDefault_262.blend b/test/models/BLEND/BlenderDefault_262.blend index 5d4f2d4d3..a9bab6515 100644 Binary files a/test/models/BLEND/BlenderDefault_262.blend and b/test/models/BLEND/BlenderDefault_262.blend differ diff --git a/test/models/BLEND/BlenderDefault_269.blend b/test/models/BLEND/BlenderDefault_269.blend index ef75dbd92..ed4352f4d 100644 Binary files a/test/models/BLEND/BlenderDefault_269.blend and b/test/models/BLEND/BlenderDefault_269.blend differ diff --git a/test/models/BLEND/BlenderDefault_271.blend b/test/models/BLEND/BlenderDefault_271.blend index d1b178bef..bbf04c2a0 100644 Binary files a/test/models/BLEND/BlenderDefault_271.blend and b/test/models/BLEND/BlenderDefault_271.blend differ diff --git a/test/models/BLEND/CubeHierarchy_248.blend b/test/models/BLEND/CubeHierarchy_248.blend index ebf062d3b..c4761b05e 100644 Binary files a/test/models/BLEND/CubeHierarchy_248.blend and b/test/models/BLEND/CubeHierarchy_248.blend differ diff --git a/test/models/BLEND/MirroredCube_252.blend b/test/models/BLEND/MirroredCube_252.blend index 6fabb2ef3..d433e3eb7 100644 Binary files a/test/models/BLEND/MirroredCube_252.blend and b/test/models/BLEND/MirroredCube_252.blend differ diff --git a/test/models/BLEND/SuzanneSubdiv_252.blend b/test/models/BLEND/SuzanneSubdiv_252.blend index 18eb49223..5ea705070 100644 Binary files a/test/models/BLEND/SuzanneSubdiv_252.blend and b/test/models/BLEND/SuzanneSubdiv_252.blend differ diff --git a/test/models/BLEND/TexturedPlane_ImageUvPacked_248.blend b/test/models/BLEND/TexturedPlane_ImageUvPacked_248.blend index 1fa09af7f..d01a3eb75 100644 Binary files a/test/models/BLEND/TexturedPlane_ImageUvPacked_248.blend and b/test/models/BLEND/TexturedPlane_ImageUvPacked_248.blend differ diff --git a/test/models/BLEND/blender_269_regress1.blend b/test/models/BLEND/blender_269_regress1.blend index ff78851ad..f8ecf7483 100644 Binary files a/test/models/BLEND/blender_269_regress1.blend and b/test/models/BLEND/blender_269_regress1.blend differ diff --git a/test/models/BLEND/yxa_1.blend b/test/models/BLEND/yxa_1.blend index 0f4af4890..966138b3f 100644 Binary files a/test/models/BLEND/yxa_1.blend and b/test/models/BLEND/yxa_1.blend differ diff --git a/test/models/DXF/issue_2229.dxf b/test/models/DXF/issue_2229.dxf new file mode 100644 index 000000000..2f0d7a7e6 --- /dev/null +++ b/test/models/DXF/issue_2229.dxf @@ -0,0 +1,64584 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1015 + 9 +$ACADMAINTVER + 70 + 6 + 9 +$DWGCODEPAGE + 3 +ANSI_1252 + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +-600.0 + 20 +-420.0 + 30 +0.0 + 9 +$EXTMAX + 10 +600.0 + 20 +0.0 + 30 +116.0 + 9 +$LIMMIN + 10 +-600.0 + 20 +-420.0 + 9 +$LIMMAX + 10 +600.0 + 20 +0.0 + 9 +$ORTHOMODE + 70 + 0 + 9 +$REGENMODE + 70 + 1 + 9 +$FILLMODE + 70 + 1 + 9 +$QTEXTMODE + 70 + 0 + 9 +$MIRRTEXT + 70 + 0 + 9 +$LTSCALE + 40 +1.0 + 9 +$ATTMODE + 70 + 1 + 9 +$TEXTSIZE + 40 +5.0 + 9 +$TRACEWID + 40 +1.0 + 9 +$TEXTSTYLE + 7 +Standard + 9 +$CLAYER + 8 +0 + 9 +$CELTYPE + 6 +ByLayer + 9 +$CECOLOR + 62 + 7 + 9 +$CELTSCALE + 40 +1.0 + 9 +$DISPSILH + 70 + 0 + 9 +$DIMSCALE + 40 +1.0 + 9 +$DIMASZ + 40 +3.0 + 9 +$DIMEXO + 40 +1.0 + 9 +$DIMDLI + 40 +7.5 + 9 +$DIMRND + 40 +0.2 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +2.0 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +3.0 + 9 +$DIMCEN + 40 +0.0 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 1 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 1 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + mm + 9 +$DIMAPOST + 1 + mm + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 2 + 9 +$DIMALTF + 40 +1.0 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 1 + 9 +$DIMTVP + 40 +0.0 + 9 +$DIMTIX + 70 + 0 + 9 +$DIMSOXD + 70 + 0 + 9 +$DIMSAH + 70 + 0 + 9 +$DIMBLK1 + 1 + + 9 +$DIMBLK2 + 1 + + 9 +$DIMSTYLE + 2 +Standard + 9 +$DIMCLRD + 70 + 7 + 9 +$DIMCLRE + 70 + 7 + 9 +$DIMCLRT + 70 + 7 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +2.0 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 1 + 9 +$DIMTZIN + 70 + 0 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 2 + 9 +$DIMTDEC + 70 + 3 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 2 + 9 +$DIMTXSTY + 7 +Standard + 9 +$DIMAUNIT + 70 + 0 + 9 +$DIMADEC + 70 + 0 + 9 +$DIMALTRND + 40 +0.01 + 9 +$DIMAZIN + 70 + 0 + 9 +$DIMDSEP + 70 + 0 + 9 +$DIMATFIT + 70 + 3 + 9 +$DIMFRAC + 70 + 2 + 9 +$DIMLDRBLK + 1 + + 9 +$DIMLUNIT + 70 + 2 + 9 +$DIMLWD + 70 + -2 + 9 +$DIMLWE + 70 + -2 + 9 +$DIMTMOVE + 70 + 0 + 9 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 2 + 9 +$SKETCHINC + 40 +1.0 + 9 +$FILLETRAD + 40 +3.0 + 9 +$AUNITS + 70 + 0 + 9 +$AUPREC + 70 + 2 + 9 +$MENU + 1 +. + 9 +$ELEVATION + 40 +0.0 + 9 +$PELEVATION + 40 +0.0 + 9 +$THICKNESS + 40 +0.0 + 9 +$LIMCHECK + 70 + 0 + 9 +$CHAMFERA + 40 +0.5 + 9 +$CHAMFERB + 40 +0.5 + 9 +$CHAMFERC + 40 +1.0 + 9 +$CHAMFERD + 40 +0.0 + 9 +$SKPOLY + 70 + 0 + 9 +$TDCREATE + 40 +2457980.424153067 + 9 +$TDUCREATE + 40 +2457980.340819734 + 9 +$TDUPDATE + 40 +2457980.424153079 + 9 +$TDUUPDATE + 40 +2457980.340819745 + 9 +$TDINDWG + 40 +0.0 + 9 +$TDUSRTIMER + 40 +0.0 + 9 +$USRTIMER + 70 + 1 + 9 +$ANGBASE + 50 +0.0 + 9 +$ANGDIR + 70 + 0 + 9 +$PDMODE + 70 + 0 + 9 +$PDSIZE + 40 +0.0 + 9 +$PLINEWID + 40 +0.0 + 9 +$SPLFRAME + 70 + 0 + 9 +$SPLINETYPE + 70 + 5 + 9 +$SPLINESEGS + 70 + 20 + 9 +$HANDSEED + 5 +884 + 9 +$SURFTAB1 + 70 + 6 + 9 +$SURFTAB2 + 70 + 6 + 9 +$SURFTYPE + 70 + 6 + 9 +$SURFU + 70 + 6 + 9 +$SURFV + 70 + 6 + 9 +$UCSBASE + 2 + + 9 +$UCSNAME + 2 + + 9 +$UCSORG + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSXDIR + 10 +1.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSYDIR + 10 +0.0 + 20 +1.0 + 30 +0.0 + 9 +$UCSORTHOREF + 2 + + 9 +$UCSORTHOVIEW + 70 + 0 + 9 +$UCSORGTOP + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGBOTTOM + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGLEFT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGRIGHT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGFRONT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGBACK + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSBASE + 2 + + 9 +$PUCSNAME + 2 + + 9 +$PUCSORG + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSXDIR + 10 +1.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSYDIR + 10 +0.0 + 20 +1.0 + 30 +0.0 + 9 +$PUCSORTHOREF + 2 + + 9 +$PUCSORTHOVIEW + 70 + 0 + 9 +$PUCSORGTOP + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGBOTTOM + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGLEFT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGRIGHT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGFRONT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGBACK + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$USERI1 + 70 + 0 + 9 +$USERI2 + 70 + 0 + 9 +$USERI3 + 70 + 0 + 9 +$USERI4 + 70 + 0 + 9 +$USERI5 + 70 + 0 + 9 +$USERR1 + 40 +0.0 + 9 +$USERR2 + 40 +0.0 + 9 +$USERR3 + 40 +0.0 + 9 +$USERR4 + 40 +0.0 + 9 +$USERR5 + 40 +0.0 + 9 +$WORLDVIEW + 70 + 1 + 9 +$SHADEDGE + 70 + 3 + 9 +$SHADEDIF + 70 + 70 + 9 +$TILEMODE + 70 + 1 + 9 +$MAXACTVP + 70 + 64 + 9 +$PINSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PLIMCHECK + 70 + 0 + 9 +$PEXTMIN + 10 +-139.7 + 20 +-317.95 + 30 +0.0 + 9 +$PEXTMAX + 10 +139.7 + 20 +-102.05 + 30 +0.0 + 9 +$PLIMMIN + 10 +-139.7 + 20 +-317.95 + 9 +$PLIMMAX + 10 +139.7 + 20 +-102.05 + 9 +$UNITMODE + 70 + 0 + 9 +$VISRETAIN + 70 + 1 + 9 +$PLINEGEN + 70 + 0 + 9 +$PSLTSCALE + 70 + 1 + 9 +$TREEDEPTH + 70 + 3020 + 9 +$CMLSTYLE + 2 +Standard + 9 +$CMLJUST + 70 + 0 + 9 +$CMLSCALE + 40 +1.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 1 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 1 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{405C4499-50CC-4141-B4E7-9C06DD072391} + 9 +$VERSIONGUID + 2 +{FAEB1C32-E019-11D5-929B-00C0DF256EC4} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 0 +ENDSEC + 0 +SECTION + 2 +CLASSES + 0 +CLASS + 1 +ACDBDICTIONARYWDFLT + 2 +AcDbDictionaryWithDefault + 3 +ObjectDBX Classes + 90 + 0 +280 + 0 +281 + 0 + 0 +CLASS + 1 +VISUALSTYLE + 2 +AcDbVisualStyle + 3 +ObjectDBX Classes + 90 + 4095 +280 + 0 +281 + 0 + 0 +CLASS + 1 +TABLESTYLE + 2 +AcDbTableStyle + 3 +ObjectDBX Classes + 90 + 4095 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SCALE + 2 +AcDbScale + 3 +ObjectDBX Classes + 90 + 1153 +280 + 0 +281 + 0 + 0 +CLASS + 1 +DICTIONARYVAR + 2 +AcDbDictionaryVar + 3 +ObjectDBX Classes + 90 + 0 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACDBPLACEHOLDER + 2 +AcDbPlaceHolder + 3 +ObjectDBX Classes + 90 + 0 +280 + 0 +281 + 0 + 0 +CLASS + 1 +LAYOUT + 2 +AcDbLayout + 3 +ObjectDBX Classes + 90 + 0 +280 + 0 +281 + 0 + 0 +ENDSEC + 0 +SECTION + 2 +TABLES + 0 +TABLE + 2 +VPORT + 5 +8 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +VPORT + 5 +29 +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +0.0 + 22 +0.0 + 13 +0.0 + 23 +0.0 + 14 +5.0 + 24 +5.0 + 15 +5.0 + 25 +5.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +-210.0 + 37 +0.0 + 40 +544.620425996723 + 41 +2.203369434416366 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 0 + 72 + 100 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 10 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +3C +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Durchgehend + 70 + 0 + 3 +Durchgehend + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +3D +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Rand + 70 + 0 + 3 +Rand + 72 + 65 + 73 + 6 + 40 +1.75 + 49 +0.5 + 74 + 0 + 49 +-0.25 + 74 + 0 + 49 +0.5 + 74 + 0 + 49 +-0.25 + 74 + 0 + 49 +0.0 + 74 + 0 + 49 +-0.25 + 74 + 0 + 0 +LTYPE + 5 +3E +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Mitte + 70 + 0 + 3 +Mitte + 72 + 65 + 73 + 4 + 40 +2.0 + 49 +1.25 + 74 + 0 + 49 +-0.25 + 74 + 0 + 49 +0.25 + 74 + 0 + 49 +-0.25 + 74 + 0 + 0 +LTYPE + 5 +3F +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Strichpunkt + 70 + 0 + 3 +Strichpunkt + 72 + 65 + 73 + 4 + 40 +1.0 + 49 +0.5 + 74 + 0 + 49 +-0.25 + 74 + 0 + 49 +0.0 + 74 + 0 + 49 +-0.25 + 74 + 0 + 0 +LTYPE + 5 +40 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Gestrichelt + 70 + 0 + 3 +Gestrichelt + 72 + 65 + 73 + 2 + 40 +0.75 + 49 +0.5 + 74 + 0 + 49 +-0.25 + 74 + 0 + 0 +LTYPE + 5 +41 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Geteilt + 70 + 0 + 3 +Geteilt + 72 + 65 + 73 + 6 + 40 +1.25 + 49 +0.5 + 74 + 0 + 49 +-0.25 + 74 + 0 + 49 +0.0 + 74 + 0 + 49 +-0.25 + 74 + 0 + 49 +0.0 + 74 + 0 + 49 +-0.25 + 74 + 0 + 0 +LTYPE + 5 +42 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Punkt + 70 + 0 + 3 +Punkt + 72 + 65 + 73 + 2 + 40 +0.25 + 49 +0.0 + 74 + 0 + 49 +-0.25 + 74 + 0 + 0 +LTYPE + 5 +43 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Verdeckt + 70 + 0 + 3 +Verdeckt + 72 + 65 + 73 + 2 + 40 +0.375 + 49 +0.25 + 74 + 0 + 49 +-0.125 + 74 + 0 + 0 +LTYPE + 5 +44 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +$INVISIBLE + 70 + 0 + 3 +$INVISIBLE + 72 + 65 + 73 + 2 + 40 +200.0 + 49 +-100.0 + 74 + 0 + 49 +-100.0 + 74 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LAYER + 5 +10 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Durchgehend +370 + 0 +390 +F + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +5.0 + 3 + + 4 + +1001 +ACAD +1000 +Times New Roman +1071 + 290 + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +VIEW + 5 +45 +330 +6 +100 +AcDbSymbolTableRecord +100 +AcDbViewTableRecord + 2 +Ansicht_0 + 70 + 0 + 40 +420.0 + 10 +0.0 + 20 +-210.0 + 41 +1200.0 + 11 +0.0 + 21 +0.0 + 31 +1.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 71 + 0 +281 + 0 + 72 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 + 6 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +APPID + 5 +3B +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +TCAD + 70 + 0 + 0 +APPID + 5 +87F +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD_DSTYLE_DIMTEXT_FILL + 70 + 0 + 0 +APPID + 5 +880 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD_DSTYLE_DIM_LINETYPE + 70 + 0 + 0 +APPID + 5 +881 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD_DSTYLE_DIM_EXT1_LINETYPE + 70 + 0 + 0 +APPID + 5 +882 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD_DSTYLE_DIM_EXT2_LINETYPE + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 1 +100 +AcDbDimStyleTable + 0 +DIMSTYLE +105 +27 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 + 3 + mm + 4 + mm + 41 +3.0 + 42 +1.0 + 43 +7.5 + 44 +2.0 + 45 +0.2 + 74 + 0 + 77 + 1 + 78 + 1 +140 +3.0 +141 +0.0 +143 +1.0 +147 +2.0 +148 +0.01 +172 + 1 +176 + 7 +177 + 7 +178 + 7 +271 + 2 +272 + 3 +276 + 2 +278 + 0 +340 +11 +1001 +ACAD_DSTYLE_DIMTEXT_FILL +1070 + 376 +1070 + 0 +1001 +ACAD_DSTYLE_DIM_LINETYPE +1070 + 380 +1005 +14 +1001 +ACAD_DSTYLE_DIM_EXT1_LINETYPE +1070 + 381 +1005 +14 +1001 +ACAD_DSTYLE_DIM_EXT2_LINETYPE +1070 + 382 +1005 +14 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +BLOCK_RECORD + 5 +1F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +22 + 0 +BLOCK_RECORD + 5 +1B +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +1E + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +20 +330 +1F +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +21 +330 +1F +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +1C +330 +1B +100 +AcDbEntity + 67 + 1 + 8 +0 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +1D +330 +1B +100 +AcDbEntity + 67 + 1 + 8 +0 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +POLYLINE + 5 +48 +330 +1F +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbPolyFaceMesh + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 64 + 71 + 8 + 72 + 6 + 0 +VERTEX + 5 +49 +330 +48 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-362.985 + 20 +-59.50000000000001 + 30 +115.0 + 70 + 192 + 0 +VERTEX + 5 +4A +330 +48 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-362.985 + 20 +-59.50000000000001 + 30 +116.0 + 70 + 192 + 0 +VERTEX + 5 +4B +330 +48 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-361.985 + 20 +-59.50000000000001 + 30 +115.0 + 70 + 192 + 0 +VERTEX + 5 +4C +330 +48 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-361.985 + 20 +-59.50000000000001 + 30 +116.0 + 70 + 192 + 0 +VERTEX + 5 +4D +330 +48 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-361.985 + 20 +-60.5 + 30 +115.0 + 70 + 192 + 0 +VERTEX + 5 +4E +330 +48 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-362.985 + 20 +-60.5 + 30 +115.0 + 70 + 192 + 0 +VERTEX + 5 +4F +330 +48 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-362.985 + 20 +-60.5 + 30 +116.0 + 70 + 192 + 0 +VERTEX + 5 +50 +330 +48 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-361.985 + 20 +-60.5 + 30 +116.0 + 70 + 192 + 0 +VERTEX + 5 +51 +330 +48 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 4 + 72 + 2 + 73 + 7 + 74 + 8 + 0 +VERTEX + 5 +52 +330 +48 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 1 + 72 + 3 + 73 + 5 + 74 + 6 + 0 +VERTEX + 5 +53 +330 +48 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 7 + 72 + 2 + 73 + 1 + 74 + 6 + 0 +VERTEX + 5 +54 +330 +48 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 2 + 72 + 4 + 73 + 3 + 74 + 1 + 0 +VERTEX + 5 +55 +330 +48 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 4 + 72 + 8 + 73 + 5 + 74 + 3 + 0 +VERTEX + 5 +56 +330 +48 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 8 + 72 + 7 + 73 + 6 + 74 + 5 + 0 +SEQEND + 5 +57 +330 +48 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 + 0 +POLYLINE + 5 +58 +330 +1F +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbPolyFaceMesh + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 64 + 71 + 8 + 72 + 6 + 0 +VERTEX + 5 +59 +330 +58 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +362.015 + 20 +-59.50000000000001 + 30 +115.0 + 70 + 192 + 0 +VERTEX + 5 +5A +330 +58 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +362.015 + 20 +-59.50000000000001 + 30 +116.0 + 70 + 192 + 0 +VERTEX + 5 +5B +330 +58 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +363.015 + 20 +-59.50000000000001 + 30 +115.0 + 70 + 192 + 0 +VERTEX + 5 +5C +330 +58 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +363.015 + 20 +-59.50000000000001 + 30 +116.0 + 70 + 192 + 0 +VERTEX + 5 +5D +330 +58 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +363.015 + 20 +-60.5 + 30 +115.0 + 70 + 192 + 0 +VERTEX + 5 +5E +330 +58 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +362.015 + 20 +-60.5 + 30 +115.0 + 70 + 192 + 0 +VERTEX + 5 +5F +330 +58 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +362.015 + 20 +-60.5 + 30 +116.0 + 70 + 192 + 0 +VERTEX + 5 +60 +330 +58 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +363.015 + 20 +-60.5 + 30 +116.0 + 70 + 192 + 0 +VERTEX + 5 +61 +330 +58 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 4 + 72 + 2 + 73 + 7 + 74 + 8 + 0 +VERTEX + 5 +62 +330 +58 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 1 + 72 + 3 + 73 + 5 + 74 + 6 + 0 +VERTEX + 5 +63 +330 +58 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 7 + 72 + 2 + 73 + 1 + 74 + 6 + 0 +VERTEX + 5 +64 +330 +58 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 2 + 72 + 4 + 73 + 3 + 74 + 1 + 0 +VERTEX + 5 +65 +330 +58 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 4 + 72 + 8 + 73 + 5 + 74 + 3 + 0 +VERTEX + 5 +66 +330 +58 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 8 + 72 + 7 + 73 + 6 + 74 + 5 + 0 +SEQEND + 5 +67 +330 +58 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 + 0 +POLYLINE + 5 +68 +330 +1F +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbPolyFaceMesh + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 64 + 71 + 680 + 72 + 1174 + 0 +VERTEX + 5 +69 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +41.00199999999998 + 20 +-50.0 + 30 +89.994 + 70 + 192 + 0 +VERTEX + 5 +6A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +42.43300000000006 + 20 +-50.0 + 30 +89.529 + 70 + 192 + 0 +VERTEX + 5 +6B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +43.64999999999996 + 20 +-50.0 + 30 +88.645 + 70 + 192 + 0 +VERTEX + 5 +6C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +44.53499999999999 + 20 +-50.0 + 30 +87.42800000000003 + 70 + 192 + 0 +VERTEX + 5 +6D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +44.53499999999999 + 20 +-50.0 + 30 +83.06099999999999 + 70 + 192 + 0 +VERTEX + 5 +6E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +43.64999999999996 + 20 +-50.0 + 30 +81.844 + 70 + 192 + 0 +VERTEX + 5 +6F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +42.43300000000006 + 20 +-50.0 + 30 +80.959 + 70 + 192 + 0 +VERTEX + 5 +70 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-42.433 + 20 +-50.0 + 30 +80.959 + 70 + 192 + 0 +VERTEX + 5 +71 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-43.651 + 20 +-50.0 + 30 +81.844 + 70 + 192 + 0 +VERTEX + 5 +72 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-44.53499999999999 + 20 +-50.0 + 30 +83.06099999999999 + 70 + 192 + 0 +VERTEX + 5 +73 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-44.99999999999999 + 20 +-50.0 + 30 +84.49200000000002 + 70 + 192 + 0 +VERTEX + 5 +74 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-44.99999999999999 + 20 +-50.0 + 30 +85.997 + 70 + 192 + 0 +VERTEX + 5 +75 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-44.53499999999999 + 20 +-50.0 + 30 +87.42800000000003 + 70 + 192 + 0 +VERTEX + 5 +76 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-43.651 + 20 +-50.0 + 30 +88.645 + 70 + 192 + 0 +VERTEX + 5 +77 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-42.433 + 20 +-50.0 + 30 +89.529 + 70 + 192 + 0 +VERTEX + 5 +78 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-41.00199999999998 + 20 +-50.0 + 30 +89.994 + 70 + 192 + 0 +VERTEX + 5 +79 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +45.00000000000005 + 20 +-50.0 + 30 +84.49200000000002 + 70 + 192 + 0 +VERTEX + 5 +7A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +45.00000000000005 + 20 +-50.0 + 30 +85.997 + 70 + 192 + 0 +VERTEX + 5 +7B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-41.00199999999998 + 20 +-50.0 + 30 +80.49400000000001 + 70 + 192 + 0 +VERTEX + 5 +7C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +41.00199999999998 + 20 +-50.0 + 30 +80.49400000000001 + 70 + 192 + 0 +VERTEX + 5 +7D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +599.883 + 20 +-1.687 + 30 +113.29 + 70 + 192 + 0 +VERTEX + 5 +7E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +598.1390000000001 + 20 +-1.308 + 30 +114.782 + 70 + 192 + 0 +VERTEX + 5 +7F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +599.47 + 20 +-1.789 + 30 +114.172 + 70 + 192 + 0 +VERTEX + 5 +80 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +598.7269999999999 + 20 +-1.972 + 30 +114.782 + 70 + 192 + 0 +VERTEX + 5 +81 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +598.515 + 20 +-1.567 + 30 +114.782 + 70 + 192 + 0 +VERTEX + 5 +82 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +599.406 + 20 +-0.778 + 30 +113.29 + 70 + 192 + 0 +VERTEX + 5 +83 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +599.088 + 20 +-1.06 + 30 +114.172 + 70 + 192 + 0 +VERTEX + 5 +84 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +598.41 + 20 +-0.592 + 30 +114.172 + 70 + 192 + 0 +VERTEX + 5 +85 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +598.561 + 20 +-0.195 + 30 +113.29 + 70 + 192 + 0 +VERTEX + 5 +86 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-598.059 + 20 +-0.071 + 30 +113.29 + 70 + 192 + 0 +VERTEX + 5 +87 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-599.7 + 20 +-1.203 + 30 +113.29 + 70 + 192 + 0 +VERTEX + 5 +88 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-599.019 + 20 +-0.435 + 30 +113.29 + 70 + 192 + 0 +VERTEX + 5 +89 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-598.343 + 20 +-1.415 + 30 +114.782 + 70 + 192 + 0 +VERTEX + 5 +8A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-598.778 + 20 +-0.785 + 30 +114.172 + 70 + 192 + 0 +VERTEX + 5 +8B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-599.324 + 20 +-1.401 + 30 +114.172 + 70 + 192 + 0 +VERTEX + 5 +8C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-598.646 + 20 +-1.757 + 30 +114.782 + 70 + 192 + 0 +VERTEX + 5 +8D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-598.008 + 20 +-0.4929999999999999 + 30 +114.172 + 70 + 192 + 0 +VERTEX + 5 +8E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-597.9160000000002 + 20 +-1.253 + 30 +114.782 + 70 + 192 + 0 +VERTEX + 5 +8F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-595.146 + 20 +-390.164 + 30 +114.824 + 70 + 192 + 0 +VERTEX + 5 +90 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-598.478 + 20 +-381.643 + 30 +114.335 + 70 + 192 + 0 +VERTEX + 5 +91 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-598.94 + 20 +-381.7350000000001 + 30 +113.6 + 70 + 192 + 0 +VERTEX + 5 +92 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-595.813 + 20 +-390.44 + 30 +114.332 + 70 + 192 + 0 +VERTEX + 5 +93 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-596.2480000000002 + 20 +-390.62 + 30 +113.596 + 70 + 192 + 0 +VERTEX + 5 +94 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-578.809 + 20 +-411.874 + 30 +113.593 + 70 + 192 + 0 +VERTEX + 5 +95 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-591.483 + 20 +-398.547 + 30 +114.331 + 70 + 192 + 0 +VERTEX + 5 +96 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-585.142 + 20 +-405.142 + 30 +114.824 + 70 + 192 + 0 +VERTEX + 5 +97 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-585.653 + 20 +-405.653 + 30 +114.331 + 70 + 192 + 0 +VERTEX + 5 +98 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-585.985 + 20 +-405.985 + 30 +113.592 + 70 + 192 + 0 +VERTEX + 5 +99 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-591.874 + 20 +-398.808 + 30 +113.593 + 70 + 192 + 0 +VERTEX + 5 +9A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-578.5480000000002 + 20 +-411.483 + 30 +114.331 + 70 + 192 + 0 +VERTEX + 5 +9B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-570.62 + 20 +-416.247 + 30 +113.596 + 70 + 192 + 0 +VERTEX + 5 +9C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-561.736 + 20 +-418.939 + 30 +113.6 + 70 + 192 + 0 +VERTEX + 5 +9D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-570.44 + 20 +-415.813 + 30 +114.332 + 70 + 192 + 0 +VERTEX + 5 +9E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-570.164 + 20 +-415.145 + 30 +114.824 + 70 + 192 + 0 +VERTEX + 5 +9F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-561.644 + 20 +-418.478 + 30 +114.335 + 70 + 192 + 0 +VERTEX + 5 +A0 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-552.507 + 20 +-419.696 + 30 +113.917 + 70 + 192 + 0 +VERTEX + 5 +A1 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-552.507 + 20 +-419.373 + 30 +114.338 + 70 + 192 + 0 +VERTEX + 5 +A2 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-552.507 + 20 +-418.96 + 30 +114.67 + 70 + 192 + 0 +VERTEX + 5 +A3 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-552.507 + 20 +-418.6530000000001 + 30 +114.828 + 70 + 192 + 0 +VERTEX + 5 +A4 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-552.507 + 20 +-417.958 + 30 +114.994 + 70 + 192 + 0 +VERTEX + 5 +A5 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-552.507 + 20 +-419.998 + 30 +112.908 + 70 + 192 + 0 +VERTEX + 5 +A6 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-552.507 + 20 +-419.847 + 30 +113.608 + 70 + 192 + 0 +VERTEX + 5 +A7 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +552.507 + 20 +-417.958 + 30 +114.994 + 70 + 192 + 0 +VERTEX + 5 +A8 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +552.507 + 20 +-418.6540000000001 + 30 +114.828 + 70 + 192 + 0 +VERTEX + 5 +A9 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +552.507 + 20 +-418.96 + 30 +114.67 + 70 + 192 + 0 +VERTEX + 5 +AA +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +552.507 + 20 +-419.374 + 30 +114.338 + 70 + 192 + 0 +VERTEX + 5 +AB +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +552.507 + 20 +-419.696 + 30 +113.917 + 70 + 192 + 0 +VERTEX + 5 +AC +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +552.507 + 20 +-419.847 + 30 +113.607 + 70 + 192 + 0 +VERTEX + 5 +AD +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +552.507 + 20 +-419.998 + 30 +112.908 + 70 + 192 + 0 +VERTEX + 5 +AE +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +586.491 + 20 +-404.777 + 30 +114.331 + 70 + 192 + 0 +VERTEX + 5 +AF +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +585.967 + 20 +-404.279 + 30 +114.824 + 70 + 192 + 0 +VERTEX + 5 +B0 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +562.0440000000001 + 20 +-418.877 + 30 +113.6 + 70 + 192 + 0 +VERTEX + 5 +B1 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +579.3009999999999 + 20 +-410.968 + 30 +114.331 + 70 + 192 + 0 +VERTEX + 5 +B2 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +571.1890000000001 + 20 +-416.006 + 30 +113.596 + 70 + 192 + 0 +VERTEX + 5 +B3 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +570.719 + 20 +-414.9100000000001 + 30 +114.824 + 70 + 192 + 0 +VERTEX + 5 +B4 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +571.0039999999999 + 20 +-415.574 + 30 +114.332 + 70 + 192 + 0 +VERTEX + 5 +B5 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +561.949 + 20 +-418.416 + 30 +114.335 + 70 + 192 + 0 +VERTEX + 5 +B6 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +579.5689999999998 + 20 +-411.354 + 30 +113.593 + 70 + 192 + 0 +VERTEX + 5 +B7 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +596.9110000000001 + 20 +-388.913 + 30 +113.597 + 70 + 192 + 0 +VERTEX + 5 +B8 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +599.2950000000002 + 20 +-379.6290000000001 + 30 +113.602 + 70 + 192 + 0 +VERTEX + 5 +B9 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +596.4699999999999 + 20 +-388.75 + 30 +114.333 + 70 + 192 + 0 +VERTEX + 5 +BA +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +595.792 + 20 +-388.5 + 30 +114.824 + 70 + 192 + 0 +VERTEX + 5 +BB +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +598.83 + 20 +-379.559 + 30 +114.335 + 70 + 192 + 0 +VERTEX + 5 +BC +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +592.3 + 20 +-397.273 + 30 +114.331 + 70 + 192 + 0 +VERTEX + 5 +BD +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +592.699 + 20 +-397.521 + 30 +113.593 + 70 + 192 + 0 +VERTEX + 5 +BE +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +586.8319999999999 + 20 +-405.1 + 30 +113.592 + 70 + 192 + 0 +VERTEX + 5 +BF +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +597.9580000000001 + 20 +-372.5060000000001 + 30 +114.994 + 70 + 192 + 0 +VERTEX + 5 +C0 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +597.9580000000001 + 20 +-2.2 + 30 +114.994 + 70 + 192 + 0 +VERTEX + 5 +C1 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +598.65 + 20 +-372.5060000000001 + 30 +114.829 + 70 + 192 + 0 +VERTEX + 5 +C2 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +598.755 + 20 +-2.2 + 30 +114.782 + 70 + 192 + 0 +VERTEX + 5 +C3 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +598.96 + 20 +-372.5060000000001 + 30 +114.67 + 70 + 192 + 0 +VERTEX + 5 +C4 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +599.9979999999999 + 20 +-372.5060000000001 + 30 +112.908 + 70 + 192 + 0 +VERTEX + 5 +C5 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +599.9979999999999 + 20 +-2.2 + 30 +112.908 + 70 + 192 + 0 +VERTEX + 5 +C6 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +599.846 + 20 +-372.5060000000001 + 30 +113.609 + 70 + 192 + 0 +VERTEX + 5 +C7 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +599.945 + 20 +-2.2 + 30 +113.29 + 70 + 192 + 0 +VERTEX + 5 +C8 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +599.6959999999999 + 20 +-372.5060000000001 + 30 +113.917 + 70 + 192 + 0 +VERTEX + 5 +C9 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +599.6959999999999 + 20 +-2.2 + 30 +113.917 + 70 + 192 + 0 +VERTEX + 5 +CA +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +599.371 + 20 +-372.5060000000001 + 30 +114.34 + 70 + 192 + 0 +VERTEX + 5 +CB +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +598.96 + 20 +-2.2 + 30 +114.67 + 70 + 192 + 0 +VERTEX + 5 +CC +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +599.52 + 20 +-2.2 + 30 +114.172 + 70 + 192 + 0 +VERTEX + 5 +CD +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-597.958 + 20 +-372.5060000000001 + 30 +114.994 + 70 + 192 + 0 +VERTEX + 5 +CE +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-598.653 + 20 +-372.5060000000001 + 30 +114.828 + 70 + 192 + 0 +VERTEX + 5 +CF +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-597.958 + 20 +-2.2 + 30 +114.994 + 70 + 192 + 0 +VERTEX + 5 +D0 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-598.96 + 20 +-372.5060000000001 + 30 +114.67 + 70 + 192 + 0 +VERTEX + 5 +D1 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-598.755 + 20 +-2.2 + 30 +114.782 + 70 + 192 + 0 +VERTEX + 5 +D2 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-599.373 + 20 +-372.5060000000001 + 30 +114.338 + 70 + 192 + 0 +VERTEX + 5 +D3 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-598.96 + 20 +-2.2 + 30 +114.67 + 70 + 192 + 0 +VERTEX + 5 +D4 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-599.696 + 20 +-372.5060000000001 + 30 +113.917 + 70 + 192 + 0 +VERTEX + 5 +D5 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-599.521 + 20 +-2.2 + 30 +114.172 + 70 + 192 + 0 +VERTEX + 5 +D6 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-599.847 + 20 +-372.5060000000001 + 30 +113.608 + 70 + 192 + 0 +VERTEX + 5 +D7 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-599.696 + 20 +-2.2 + 30 +113.917 + 70 + 192 + 0 +VERTEX + 5 +D8 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-599.998 + 20 +-372.5060000000001 + 30 +112.908 + 70 + 192 + 0 +VERTEX + 5 +D9 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-599.998 + 20 +-2.2 + 30 +112.908 + 70 + 192 + 0 +VERTEX + 5 +DA +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-599.9460000000001 + 20 +-2.2 + 30 +113.29 + 70 + 192 + 0 +VERTEX + 5 +DB +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-597.8 + 20 +-0.004 + 30 +112.933 + 70 + 192 + 0 +VERTEX + 5 +DC +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +597.8 + 20 +-0.004 + 30 +112.933 + 70 + 192 + 0 +VERTEX + 5 +DD +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-597.8 + 20 +-0.055 + 30 +113.29 + 70 + 192 + 0 +VERTEX + 5 +DE +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +597.8 + 20 +-0.055 + 30 +113.29 + 70 + 192 + 0 +VERTEX + 5 +DF +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-597.8 + 20 +-0.317 + 30 +113.938 + 70 + 192 + 0 +VERTEX + 5 +E0 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +597.8 + 20 +-0.317 + 30 +113.938 + 70 + 192 + 0 +VERTEX + 5 +E1 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-597.8 + 20 +-0.4800000000000001 + 30 +114.172 + 70 + 192 + 0 +VERTEX + 5 +E2 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +597.8 + 20 +-0.4800000000000001 + 30 +114.172 + 70 + 192 + 0 +VERTEX + 5 +E3 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-597.8 + 20 +-1.062 + 30 +114.683 + 70 + 192 + 0 +VERTEX + 5 +E4 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +597.8 + 20 +-1.062 + 30 +114.683 + 70 + 192 + 0 +VERTEX + 5 +E5 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-597.8 + 20 +-1.246 + 30 +114.782 + 70 + 192 + 0 +VERTEX + 5 +E6 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +597.8 + 20 +-1.246 + 30 +114.782 + 70 + 192 + 0 +VERTEX + 5 +E7 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +597.8 + 20 +-2.067 + 30 +114.996 + 70 + 192 + 0 +VERTEX + 5 +E8 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-597.8 + 20 +-2.067 + 30 +114.996 + 70 + 192 + 0 +VERTEX + 5 +E9 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-597.1990000000001 + 20 +-1.203 + 30 +1.710000000000003 + 70 + 192 + 0 +VERTEX + 5 +EA +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-595.4150000000002 + 20 +-1.253 + 30 +0.2180000000000099 + 70 + 192 + 0 +VERTEX + 5 +EB +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-595.842 + 20 +-1.415 + 30 +0.2180000000000099 + 70 + 192 + 0 +VERTEX + 5 +EC +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-596.518 + 20 +-0.435 + 30 +1.710000000000003 + 70 + 192 + 0 +VERTEX + 5 +ED +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-596.2769999999999 + 20 +-0.785 + 30 +0.8280000000000093 + 70 + 192 + 0 +VERTEX + 5 +EE +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-595.5070000000002 + 20 +-0.4929999999999999 + 30 +0.8280000000000093 + 70 + 192 + 0 +VERTEX + 5 +EF +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-595.558 + 20 +-0.071 + 30 +1.710000000000003 + 70 + 192 + 0 +VERTEX + 5 +F0 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-596.145 + 20 +-1.757 + 30 +0.2180000000000099 + 70 + 192 + 0 +VERTEX + 5 +F1 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-596.823 + 20 +-1.401 + 30 +0.8280000000000093 + 70 + 192 + 0 +VERTEX + 5 +F2 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-597.182 + 20 +-1.062 + 30 +2.157000000000006 + 70 + 192 + 0 +VERTEX + 5 +F3 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-599.683 + 20 +-1.062 + 30 +112.757 + 70 + 192 + 0 +VERTEX + 5 +F4 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-597.247 + 20 +-1.178 + 30 +2.156000000000005 + 70 + 192 + 0 +VERTEX + 5 +F5 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-599.7479999999999 + 20 +-1.178 + 30 +112.756 + 70 + 192 + 0 +VERTEX + 5 +F6 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-597.495 + 20 +-2.067 + 30 +2.149999999999999 + 70 + 192 + 0 +VERTEX + 5 +F7 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-599.996 + 20 +-2.067 + 30 +112.75 + 70 + 192 + 0 +VERTEX + 5 +F8 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-599.05 + 20 +-0.3900000000000001 + 30 +112.772 + 70 + 192 + 0 +VERTEX + 5 +F9 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-596.549 + 20 +-0.3900000000000001 + 30 +2.172000000000007 + 70 + 192 + 0 +VERTEX + 5 +FA +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-598.938 + 20 +-0.317 + 30 +112.774 + 70 + 192 + 0 +VERTEX + 5 +FB +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-596.438 + 20 +-0.317 + 30 +2.174000000000009 + 70 + 192 + 0 +VERTEX + 5 +FC +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-598.0660000000001 + 20 +-0.016 + 30 +112.794 + 70 + 192 + 0 +VERTEX + 5 +FD +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-595.5650000000002 + 20 +-0.016 + 30 +2.194000000000002 + 70 + 192 + 0 +VERTEX + 5 +FE +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-595.432 + 20 +-0.004 + 30 +2.197000000000005 + 70 + 192 + 0 +VERTEX + 5 +FF +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-597.933 + 20 +-0.004 + 30 +112.797 + 70 + 192 + 0 +VERTEX + 5 +100 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +596.06 + 20 +-0.195 + 30 +1.710000000000003 + 70 + 192 + 0 +VERTEX + 5 +101 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +595.9089999999999 + 20 +-0.592 + 30 +0.8280000000000093 + 70 + 192 + 0 +VERTEX + 5 +102 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +595.638 + 20 +-1.308 + 30 +0.2180000000000099 + 70 + 192 + 0 +VERTEX + 5 +103 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +596.0139999999999 + 20 +-1.567 + 30 +0.2180000000000099 + 70 + 192 + 0 +VERTEX + 5 +104 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +596.226 + 20 +-1.972 + 30 +0.2180000000000099 + 70 + 192 + 0 +VERTEX + 5 +105 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +596.9049999999999 + 20 +-0.778 + 30 +1.710000000000003 + 70 + 192 + 0 +VERTEX + 5 +106 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +596.5870000000001 + 20 +-1.06 + 30 +0.8280000000000093 + 70 + 192 + 0 +VERTEX + 5 +107 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +596.9699999999999 + 20 +-1.789 + 30 +0.8280000000000093 + 70 + 192 + 0 +VERTEX + 5 +108 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +597.382 + 20 +-1.687 + 30 +1.710000000000003 + 70 + 192 + 0 +VERTEX + 5 +109 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-595.3 + 20 +-2.067 + 30 +0.004000000000004 + 70 + 192 + 0 +VERTEX + 5 +10A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +595.2989999999999 + 20 +-2.067 + 30 +0.004000000000004 + 70 + 192 + 0 +VERTEX + 5 +10B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +595.2989999999999 + 20 +-0.004 + 30 +2.066999999999999 + 70 + 192 + 0 +VERTEX + 5 +10C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-595.3 + 20 +-0.004 + 30 +2.066999999999999 + 70 + 192 + 0 +VERTEX + 5 +10D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +595.2989999999999 + 20 +-0.055 + 30 +1.710000000000003 + 70 + 192 + 0 +VERTEX + 5 +10E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-595.3 + 20 +-0.055 + 30 +1.710000000000003 + 70 + 192 + 0 +VERTEX + 5 +10F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +595.2989999999999 + 20 +-0.317 + 30 +1.062000000000007 + 70 + 192 + 0 +VERTEX + 5 +110 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-595.3 + 20 +-0.317 + 30 +1.062000000000007 + 70 + 192 + 0 +VERTEX + 5 +111 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +595.2989999999999 + 20 +-0.4800000000000001 + 30 +0.8280000000000093 + 70 + 192 + 0 +VERTEX + 5 +112 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-595.3 + 20 +-0.4800000000000001 + 30 +0.8280000000000093 + 70 + 192 + 0 +VERTEX + 5 +113 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +595.2989999999999 + 20 +-1.062 + 30 +0.3170000000000117 + 70 + 192 + 0 +VERTEX + 5 +114 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-595.3 + 20 +-1.062 + 30 +0.3170000000000117 + 70 + 192 + 0 +VERTEX + 5 +115 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-595.3 + 20 +-1.246 + 30 +0.2180000000000099 + 70 + 192 + 0 +VERTEX + 5 +116 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +595.2989999999999 + 20 +-1.246 + 30 +0.2180000000000099 + 70 + 192 + 0 +VERTEX + 5 +117 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +597.933 + 20 +-0.004 + 30 +112.797 + 70 + 192 + 0 +VERTEX + 5 +118 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +595.432 + 20 +-0.004 + 30 +2.197000000000005 + 70 + 192 + 0 +VERTEX + 5 +119 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +599.6830000000001 + 20 +-1.062 + 30 +112.757 + 70 + 192 + 0 +VERTEX + 5 +11A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +597.182 + 20 +-1.062 + 30 +2.157000000000006 + 70 + 192 + 0 +VERTEX + 5 +11B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +599.9359999999999 + 20 +-1.674 + 30 +112.752 + 70 + 192 + 0 +VERTEX + 5 +11C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +597.4350000000001 + 20 +-1.674 + 30 +2.152000000000001 + 70 + 192 + 0 +VERTEX + 5 +11D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +599.9960000000001 + 20 +-2.067 + 30 +112.75 + 70 + 192 + 0 +VERTEX + 5 +11E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +597.495 + 20 +-2.067 + 30 +2.149999999999999 + 70 + 192 + 0 +VERTEX + 5 +11F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +596.9460000000003 + 20 +-0.741 + 30 +2.162999999999998 + 70 + 192 + 0 +VERTEX + 5 +120 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +599.4470000000001 + 20 +-0.741 + 30 +112.763 + 70 + 192 + 0 +VERTEX + 5 +121 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +596.437 + 20 +-0.317 + 30 +2.174000000000009 + 70 + 192 + 0 +VERTEX + 5 +122 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +598.9380000000001 + 20 +-0.317 + 30 +112.774 + 70 + 192 + 0 +VERTEX + 5 +123 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +598.58 + 20 +-0.143 + 30 +112.782 + 70 + 192 + 0 +VERTEX + 5 +124 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +596.08 + 20 +-0.143 + 30 +2.182000000000003 + 70 + 192 + 0 +VERTEX + 5 +125 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-582.6179999999999 + 20 +-402.618 + 30 +0.1630000000000104 + 70 + 192 + 0 +VERTEX + 5 +126 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-593.7130000000001 + 20 +-388.104 + 30 +1.31400000000001 + 70 + 192 + 0 +VERTEX + 5 +127 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-567.6510000000002 + 20 +-412.617 + 30 +0.1630000000000104 + 70 + 192 + 0 +VERTEX + 5 +128 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-583.117 + 20 +-403.117 + 30 +0.6200000000000094 + 70 + 192 + 0 +VERTEX + 5 +129 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-567.921 + 20 +-413.27 + 30 +0.6220000000000114 + 70 + 192 + 0 +VERTEX + 5 +12A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-583.456 + 20 +-403.456 + 30 +1.310000000000006 + 70 + 192 + 0 +VERTEX + 5 +12B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-568.1039999999999 + 20 +-413.7130000000001 + 30 +1.31400000000001 + 70 + 192 + 0 +VERTEX + 5 +12C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-593.27 + 20 +-387.92 + 30 +0.6220000000000114 + 70 + 192 + 0 +VERTEX + 5 +12D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-592.6179999999999 + 20 +-387.65 + 30 +0.1630000000000104 + 70 + 192 + 0 +VERTEX + 5 +12E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +582.6179999999999 + 20 +-402.618 + 30 +0.1630000000000104 + 70 + 192 + 0 +VERTEX + 5 +12F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +568.104 + 20 +-413.7130000000001 + 30 +1.31400000000001 + 70 + 192 + 0 +VERTEX + 5 +130 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +592.6170000000001 + 20 +-387.65 + 30 +0.1630000000000104 + 70 + 192 + 0 +VERTEX + 5 +131 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +583.117 + 20 +-403.117 + 30 +0.6200000000000094 + 70 + 192 + 0 +VERTEX + 5 +132 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +593.2700000000001 + 20 +-387.92 + 30 +0.6220000000000114 + 70 + 192 + 0 +VERTEX + 5 +133 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +583.4560000000002 + 20 +-403.456 + 30 +1.310000000000006 + 70 + 192 + 0 +VERTEX + 5 +134 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +593.7130000000001 + 20 +-388.104 + 30 +1.31400000000001 + 70 + 192 + 0 +VERTEX + 5 +135 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +567.921 + 20 +-413.27 + 30 +0.6220000000000114 + 70 + 192 + 0 +VERTEX + 5 +136 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +567.6500000000001 + 20 +-412.617 + 30 +0.1630000000000104 + 70 + 192 + 0 +VERTEX + 5 +137 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-550.006 + 20 +-417.318 + 30 +1.324000000000006 + 70 + 192 + 0 +VERTEX + 5 +138 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +550.0060000000001 + 20 +-417.318 + 30 +1.324000000000006 + 70 + 192 + 0 +VERTEX + 5 +139 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-550.006 + 20 +-417.308 + 30 +1.30100000000001 + 70 + 192 + 0 +VERTEX + 5 +13A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +550.0060000000001 + 20 +-417.308 + 30 +1.30100000000001 + 70 + 192 + 0 +VERTEX + 5 +13B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-550.006 + 20 +-416.838 + 30 +0.6270000000000026 + 70 + 192 + 0 +VERTEX + 5 +13C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +550.0060000000001 + 20 +-416.838 + 30 +0.6270000000000026 + 70 + 192 + 0 +VERTEX + 5 +13D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-550.006 + 20 +-416.8 + 30 +0.5910000000000082 + 70 + 192 + 0 +VERTEX + 5 +13E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +550.0060000000001 + 20 +-416.8 + 30 +0.5910000000000082 + 70 + 192 + 0 +VERTEX + 5 +13F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-550.006 + 20 +-416.13 + 30 +0.1630000000000104 + 70 + 192 + 0 +VERTEX + 5 +140 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +550.0060000000001 + 20 +-416.13 + 30 +0.1630000000000104 + 70 + 192 + 0 +VERTEX + 5 +141 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +550.0060000000001 + 20 +-416.055 + 30 +0.1340000000000091 + 70 + 192 + 0 +VERTEX + 5 +142 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-550.006 + 20 +-416.055 + 30 +0.1340000000000091 + 70 + 192 + 0 +VERTEX + 5 +143 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +596.0549999999998 + 20 +-370.0060000000001 + 30 +0.1340000000000091 + 70 + 192 + 0 +VERTEX + 5 +144 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +596.0549999999998 + 20 +-2.2 + 30 +0.1340000000000091 + 70 + 192 + 0 +VERTEX + 5 +145 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +597.444 + 20 +-2.2 + 30 +1.710000000000003 + 70 + 192 + 0 +VERTEX + 5 +146 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +597.3069999999999 + 20 +-2.2 + 30 +1.30100000000001 + 70 + 192 + 0 +VERTEX + 5 +147 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +597.3179999999999 + 20 +-370.0060000000001 + 30 +1.324000000000006 + 70 + 192 + 0 +VERTEX + 5 +148 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +597.02 + 20 +-2.2 + 30 +0.8280000000000093 + 70 + 192 + 0 +VERTEX + 5 +149 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +597.3069999999999 + 20 +-370.0060000000001 + 30 +1.30100000000001 + 70 + 192 + 0 +VERTEX + 5 +14A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +596.799 + 20 +-2.2 + 30 +0.5910000000000082 + 70 + 192 + 0 +VERTEX + 5 +14B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +596.837 + 20 +-370.0060000000001 + 30 +0.6270000000000026 + 70 + 192 + 0 +VERTEX + 5 +14C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +596.2539999999999 + 20 +-2.2 + 30 +0.2180000000000099 + 70 + 192 + 0 +VERTEX + 5 +14D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +596.1299999999999 + 20 +-370.0060000000001 + 30 +0.1630000000000104 + 70 + 192 + 0 +VERTEX + 5 +14E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +596.799 + 20 +-370.0060000000001 + 30 +0.5910000000000082 + 70 + 192 + 0 +VERTEX + 5 +14F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-596.13 + 20 +-370.0060000000001 + 30 +0.1630000000000104 + 70 + 192 + 0 +VERTEX + 5 +150 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-596.8 + 20 +-370.0060000000001 + 30 +0.5910000000000082 + 70 + 192 + 0 +VERTEX + 5 +151 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-596.8 + 20 +-2.2 + 30 +0.5910000000000082 + 70 + 192 + 0 +VERTEX + 5 +152 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-596.838 + 20 +-370.0060000000001 + 30 +0.6270000000000026 + 70 + 192 + 0 +VERTEX + 5 +153 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-597.318 + 20 +-370.0060000000001 + 30 +1.324000000000006 + 70 + 192 + 0 +VERTEX + 5 +154 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-597.4450000000002 + 20 +-2.2 + 30 +1.710000000000003 + 70 + 192 + 0 +VERTEX + 5 +155 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-597.308 + 20 +-370.0060000000001 + 30 +1.30100000000001 + 70 + 192 + 0 +VERTEX + 5 +156 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-597.02 + 20 +-2.2 + 30 +0.8280000000000093 + 70 + 192 + 0 +VERTEX + 5 +157 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-597.308 + 20 +-2.2 + 30 +1.30100000000001 + 70 + 192 + 0 +VERTEX + 5 +158 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-596.055 + 20 +-370.0060000000001 + 30 +0.1340000000000091 + 70 + 192 + 0 +VERTEX + 5 +159 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-596.055 + 20 +-2.2 + 30 +0.1340000000000091 + 70 + 192 + 0 +VERTEX + 5 +15A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-596.254 + 20 +-2.2 + 30 +0.2180000000000099 + 70 + 192 + 0 +VERTEX + 5 +15B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-597.499 + 20 +-2.2 + 30 +2.149999999999999 + 70 + 192 + 0 +VERTEX + 5 +15C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-600.0 + 20 +-2.2 + 30 +112.75 + 70 + 192 + 0 +VERTEX + 5 +15D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +585.3530000000001 + 20 +-403.696 + 30 +115.0 + 70 + 192 + 0 +VERTEX + 5 +15E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +570.3820000000001 + 20 +-414.125 + 30 +115.0 + 70 + 192 + 0 +VERTEX + 5 +15F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +552.507 + 20 +-417.8 + 30 +115.0 + 70 + 192 + 0 +VERTEX + 5 +160 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-552.507 + 20 +-417.8 + 30 +115.0 + 70 + 192 + 0 +VERTEX + 5 +161 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-569.837 + 20 +-414.355 + 30 +115.0 + 70 + 192 + 0 +VERTEX + 5 +162 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-584.536 + 20 +-404.535 + 30 +115.0 + 70 + 192 + 0 +VERTEX + 5 +163 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-594.3550000000001 + 20 +-389.836 + 30 +115.0 + 70 + 192 + 0 +VERTEX + 5 +164 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-597.8 + 20 +-372.5060000000001 + 30 +115.0 + 70 + 192 + 0 +VERTEX + 5 +165 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-597.8 + 20 +-2.2 + 30 +115.0 + 70 + 192 + 0 +VERTEX + 5 +166 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +597.8 + 20 +-2.2 + 30 +115.0 + 70 + 192 + 0 +VERTEX + 5 +167 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +597.8 + 20 +-372.5060000000001 + 30 +115.0 + 70 + 192 + 0 +VERTEX + 5 +168 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +594.9939999999999 + 20 +-388.205 + 30 +115.0 + 70 + 192 + 0 +VERTEX + 5 +169 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +597.8 + 20 +0.0 + 30 +112.8 + 70 + 192 + 0 +VERTEX + 5 +16A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-597.8 + 20 +0.0 + 30 +112.8 + 70 + 192 + 0 +VERTEX + 5 +16B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-595.3 + 20 +0.0 + 30 +2.200000000000007 + 70 + 192 + 0 +VERTEX + 5 +16C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +595.2989999999999 + 20 +0.0 + 30 +2.200000000000007 + 70 + 192 + 0 +VERTEX + 5 +16D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +595.2989999999999 + 20 +-2.2 + 30 +0.0 + 70 + 192 + 0 +VERTEX + 5 +16E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-595.3 + 20 +-2.2 + 30 +0.0 + 70 + 192 + 0 +VERTEX + 5 +16F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-595.3 + 20 +-370.0060000000001 + 30 +0.0 + 70 + 192 + 0 +VERTEX + 5 +170 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-591.855 + 20 +-387.334 + 30 +0.0 + 70 + 192 + 0 +VERTEX + 5 +171 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-582.035 + 20 +-402.035 + 30 +0.0 + 70 + 192 + 0 +VERTEX + 5 +172 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-567.335 + 20 +-411.855 + 30 +0.0 + 70 + 192 + 0 +VERTEX + 5 +173 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-550.006 + 20 +-415.299 + 30 +0.0 + 70 + 192 + 0 +VERTEX + 5 +174 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +550.0060000000001 + 20 +-415.299 + 30 +0.0 + 70 + 192 + 0 +VERTEX + 5 +175 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +567.335 + 20 +-411.855 + 30 +0.0 + 70 + 192 + 0 +VERTEX + 5 +176 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +582.035 + 20 +-402.035 + 30 +0.0 + 70 + 192 + 0 +VERTEX + 5 +177 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +591.8549999999999 + 20 +-387.334 + 30 +0.0 + 70 + 192 + 0 +VERTEX + 5 +178 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +595.2989999999999 + 20 +-370.0060000000001 + 30 +0.0 + 70 + 192 + 0 +VERTEX + 5 +179 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-568.444 + 20 +-120.987 + 30 +115.0 + 70 + 192 + 0 +VERTEX + 5 +17A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-581.9830000000001 + 20 +-130.029 + 30 +115.0 + 70 + 192 + 0 +VERTEX + 5 +17B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-591.028 + 20 +-143.565 + 30 +115.0 + 70 + 192 + 0 +VERTEX + 5 +17C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-567.852 + 20 +-122.418 + 30 +114.362 + 70 + 192 + 0 +VERTEX + 5 +17D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-589.164 + 20 +-144.337 + 30 +113.673 + 70 + 192 + 0 +VERTEX + 5 +17E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-589.605 + 20 +-144.154 + 30 +114.372 + 70 + 192 + 0 +VERTEX + 5 +17F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-590.26 + 20 +-143.883 + 30 +114.835 + 70 + 192 + 0 +VERTEX + 5 +180 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-568.1239999999999 + 20 +-121.76 + 30 +114.832 + 70 + 192 + 0 +VERTEX + 5 +181 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-580.8919999999999 + 20 +-131.121 + 30 +114.368 + 70 + 192 + 0 +VERTEX + 5 +182 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-581.394 + 20 +-130.619 + 30 +114.834 + 70 + 192 + 0 +VERTEX + 5 +183 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-580.5550000000001 + 20 +-131.458 + 30 +113.665 + 70 + 192 + 0 +VERTEX + 5 +184 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-567.669 + 20 +-122.858 + 30 +113.654 + 70 + 192 + 0 +VERTEX + 5 +185 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-552.486 + 20 +-117.814 + 30 +115.0 + 70 + 192 + 0 +VERTEX + 5 +186 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-552.486 + 20 +-117.947 + 30 +114.996 + 70 + 192 + 0 +VERTEX + 5 +187 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-552.486 + 20 +-118.656 + 30 +114.833 + 70 + 192 + 0 +VERTEX + 5 +188 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-552.486 + 20 +-118.953 + 30 +114.683 + 70 + 192 + 0 +VERTEX + 5 +189 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-552.486 + 20 +-119.37 + 30 +114.356 + 70 + 192 + 0 +VERTEX + 5 +18A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-552.486 + 20 +-119.697 + 30 +113.938 + 70 + 192 + 0 +VERTEX + 5 +18B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-552.486 + 20 +-119.847 + 30 +113.642 + 70 + 192 + 0 +VERTEX + 5 +18C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-552.486 + 20 +-120.011 + 30 +112.933 + 70 + 192 + 0 +VERTEX + 5 +18D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +552.4859999999999 + 20 +-117.814 + 30 +115.0 + 70 + 192 + 0 +VERTEX + 5 +18E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +552.4859999999999 + 20 +-117.947 + 30 +114.996 + 70 + 192 + 0 +VERTEX + 5 +18F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +552.4859999999999 + 20 +-118.656 + 30 +114.833 + 70 + 192 + 0 +VERTEX + 5 +190 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +552.4859999999999 + 20 +-119.37 + 30 +114.356 + 70 + 192 + 0 +VERTEX + 5 +191 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +552.4859999999999 + 20 +-119.697 + 30 +113.938 + 70 + 192 + 0 +VERTEX + 5 +192 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +552.4859999999999 + 20 +-118.953 + 30 +114.683 + 70 + 192 + 0 +VERTEX + 5 +193 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +568.2029999999999 + 20 +-121.794 + 30 +114.832 + 70 + 192 + 0 +VERTEX + 5 +194 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +591.119 + 20 +-143.786 + 30 +115.0 + 70 + 192 + 0 +VERTEX + 5 +195 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +590.3459999999999 + 20 +-144.1 + 30 +114.835 + 70 + 192 + 0 +VERTEX + 5 +196 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +581.5 + 20 +-130.738 + 30 +114.834 + 70 + 192 + 0 +VERTEX + 5 +197 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +568.5250000000001 + 20 +-121.02 + 30 +115.0 + 70 + 192 + 0 +VERTEX + 5 +198 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +582.0979999999998 + 20 +-130.145 + 30 +115.0 + 70 + 192 + 0 +VERTEX + 5 +199 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +552.4859999999999 + 20 +-119.847 + 30 +113.642 + 70 + 192 + 0 +VERTEX + 5 +19A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +552.4859999999999 + 20 +-120.011 + 30 +112.933 + 70 + 192 + 0 +VERTEX + 5 +19B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +589.689 + 20 +-144.368 + 30 +114.372 + 70 + 192 + 0 +VERTEX + 5 +19C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +589.247 + 20 +-144.548 + 30 +113.673 + 70 + 192 + 0 +VERTEX + 5 +19D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +580.996 + 20 +-131.238 + 30 +114.368 + 70 + 192 + 0 +VERTEX + 5 +19E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +580.658 + 20 +-131.574 + 30 +113.665 + 70 + 192 + 0 +VERTEX + 5 +19F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +567.746 + 20 +-122.891 + 30 +113.654 + 70 + 192 + 0 +VERTEX + 5 +1A0 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +567.929 + 20 +-122.451 + 30 +114.362 + 70 + 192 + 0 +VERTEX + 5 +1A1 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +592.1820000000001 + 20 +-159.519 + 30 +113.675 + 70 + 192 + 0 +VERTEX + 5 +1A2 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +592.6619999999999 + 20 +-159.519 + 30 +114.372 + 70 + 192 + 0 +VERTEX + 5 +1A3 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +592.696 + 20 +-159.519 + 30 +114.405 + 70 + 192 + 0 +VERTEX + 5 +1A4 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +593.3689999999999 + 20 +-159.519 + 30 +114.837 + 70 + 192 + 0 +VERTEX + 5 +1A5 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +593.4359999999999 + 20 +-159.519 + 30 +114.863 + 70 + 192 + 0 +VERTEX + 5 +1A6 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +594.2010000000002 + 20 +-159.519 + 30 +115.0 + 70 + 192 + 0 +VERTEX + 5 +1A7 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +592.1919999999999 + 20 +-159.519 + 30 +113.696 + 70 + 192 + 0 +VERTEX + 5 +1A8 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-594.201 + 20 +-159.519 + 30 +115.0 + 70 + 192 + 0 +VERTEX + 5 +1A9 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-593.4359999999999 + 20 +-159.519 + 30 +114.863 + 70 + 192 + 0 +VERTEX + 5 +1AA +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-593.371 + 20 +-159.519 + 30 +114.837 + 70 + 192 + 0 +VERTEX + 5 +1AB +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-592.696 + 20 +-159.519 + 30 +114.405 + 70 + 192 + 0 +VERTEX + 5 +1AC +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-592.6629999999999 + 20 +-159.519 + 30 +114.373 + 70 + 192 + 0 +VERTEX + 5 +1AD +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-592.192 + 20 +-159.519 + 30 +113.696 + 70 + 192 + 0 +VERTEX + 5 +1AE +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-592.183 + 20 +-159.519 + 30 +113.676 + 70 + 192 + 0 +VERTEX + 5 +1AF +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +594.2010000000002 + 20 +-372.507 + 30 +115.0 + 70 + 192 + 0 +VERTEX + 5 +1B0 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +593.4359999999999 + 20 +-372.507 + 30 +114.863 + 70 + 192 + 0 +VERTEX + 5 +1B1 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +593.3700000000001 + 20 +-372.507 + 30 +114.837 + 70 + 192 + 0 +VERTEX + 5 +1B2 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +592.663 + 20 +-372.507 + 30 +114.373 + 70 + 192 + 0 +VERTEX + 5 +1B3 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +592.1919999999999 + 20 +-372.507 + 30 +113.696 + 70 + 192 + 0 +VERTEX + 5 +1B4 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +589.138 + 20 +-387.765 + 30 +113.686 + 70 + 192 + 0 +VERTEX + 5 +1B5 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +568.2379999999999 + 20 +-411.1210000000001 + 30 +115.0 + 70 + 192 + 0 +VERTEX + 5 +1B6 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +580.7909999999999 + 20 +-401.0120000000001 + 30 +114.38 + 70 + 192 + 0 +VERTEX + 5 +1B7 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +567.926 + 20 +-410.353 + 30 +114.837 + 70 + 192 + 0 +VERTEX + 5 +1B8 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +590.996 + 20 +-388.5390000000001 + 30 +115.0 + 70 + 192 + 0 +VERTEX + 5 +1B9 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +581.875 + 20 +-402.105 + 30 +115.0 + 70 + 192 + 0 +VERTEX + 5 +1BA +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +592.183 + 20 +-372.507 + 30 +113.676 + 70 + 192 + 0 +VERTEX + 5 +1BB +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +567.659 + 20 +-409.698 + 30 +114.378 + 70 + 192 + 0 +VERTEX + 5 +1BC +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +567.4789999999999 + 20 +-409.255 + 30 +113.686 + 70 + 192 + 0 +VERTEX + 5 +1BD +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +580.453 + 20 +-400.672 + 30 +113.69 + 70 + 192 + 0 +VERTEX + 5 +1BE +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +581.2879999999999 + 20 +-401.5130000000001 + 30 +114.837 + 70 + 192 + 0 +VERTEX + 5 +1BF +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +592.696 + 20 +-372.507 + 30 +114.405 + 70 + 192 + 0 +VERTEX + 5 +1C0 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +590.232 + 20 +-388.2210000000001 + 30 +114.837 + 70 + 192 + 0 +VERTEX + 5 +1C1 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +589.5800000000003 + 20 +-387.9490000000001 + 30 +114.378 + 70 + 192 + 0 +VERTEX + 5 +1C2 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +552.507 + 20 +-412.1820000000001 + 30 +113.675 + 70 + 192 + 0 +VERTEX + 5 +1C3 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +552.507 + 20 +-414.201 + 30 +115.0 + 70 + 192 + 0 +VERTEX + 5 +1C4 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +552.507 + 20 +-413.483 + 30 +114.88 + 70 + 192 + 0 +VERTEX + 5 +1C5 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +552.507 + 20 +-413.366 + 30 +114.835 + 70 + 192 + 0 +VERTEX + 5 +1C6 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +552.507 + 20 +-412.721 + 30 +114.428 + 70 + 192 + 0 +VERTEX + 5 +1C7 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +552.507 + 20 +-412.1980000000001 + 30 +113.711 + 70 + 192 + 0 +VERTEX + 5 +1C8 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +552.507 + 20 +-412.661 + 30 +114.371 + 70 + 192 + 0 +VERTEX + 5 +1C9 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-552.507 + 20 +-414.201 + 30 +115.0 + 70 + 192 + 0 +VERTEX + 5 +1CA +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-592.696 + 20 +-372.507 + 30 +114.405 + 70 + 192 + 0 +VERTEX + 5 +1CB +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-593.371 + 20 +-372.507 + 30 +114.837 + 70 + 192 + 0 +VERTEX + 5 +1CC +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-594.201 + 20 +-372.507 + 30 +115.0 + 70 + 192 + 0 +VERTEX + 5 +1CD +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-593.4359999999999 + 20 +-372.507 + 30 +114.863 + 70 + 192 + 0 +VERTEX + 5 +1CE +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-591.028 + 20 +-388.4640000000001 + 30 +115.0 + 70 + 192 + 0 +VERTEX + 5 +1CF +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-590.264 + 20 +-388.147 + 30 +114.837 + 70 + 192 + 0 +VERTEX + 5 +1D0 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-552.507 + 20 +-413.483 + 30 +114.88 + 70 + 192 + 0 +VERTEX + 5 +1D1 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-552.507 + 20 +-413.37 + 30 +114.837 + 70 + 192 + 0 +VERTEX + 5 +1D2 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-552.507 + 20 +-412.663 + 30 +114.373 + 70 + 192 + 0 +VERTEX + 5 +1D3 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-552.507 + 20 +-412.1980000000001 + 30 +113.711 + 70 + 192 + 0 +VERTEX + 5 +1D4 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-552.507 + 20 +-412.721 + 30 +114.428 + 70 + 192 + 0 +VERTEX + 5 +1D5 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-552.507 + 20 +-412.183 + 30 +113.676 + 70 + 192 + 0 +VERTEX + 5 +1D6 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-592.183 + 20 +-372.507 + 30 +113.676 + 70 + 192 + 0 +VERTEX + 5 +1D7 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-589.168 + 20 +-387.694 + 30 +113.686 + 70 + 192 + 0 +VERTEX + 5 +1D8 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-592.6629999999999 + 20 +-372.507 + 30 +114.373 + 70 + 192 + 0 +VERTEX + 5 +1D9 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-592.192 + 20 +-372.507 + 30 +113.696 + 70 + 192 + 0 +VERTEX + 5 +1DA +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-568.1469999999999 + 20 +-410.259 + 30 +114.837 + 70 + 192 + 0 +VERTEX + 5 +1DB +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-568.465 + 20 +-411.028 + 30 +115.0 + 70 + 192 + 0 +VERTEX + 5 +1DC +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-581.991 + 20 +-401.99 + 30 +115.0 + 70 + 192 + 0 +VERTEX + 5 +1DD +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-581.4019999999999 + 20 +-401.402 + 30 +114.837 + 70 + 192 + 0 +VERTEX + 5 +1DE +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-589.611 + 20 +-387.877 + 30 +114.378 + 70 + 192 + 0 +VERTEX + 5 +1DF +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-580.9029999999999 + 20 +-400.903 + 30 +114.38 + 70 + 192 + 0 +VERTEX + 5 +1E0 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-580.564 + 20 +-400.564 + 30 +113.69 + 70 + 192 + 0 +VERTEX + 5 +1E1 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-567.693 + 20 +-409.164 + 30 +113.686 + 70 + 192 + 0 +VERTEX + 5 +1E2 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-567.877 + 20 +-409.607 + 30 +114.378 + 70 + 192 + 0 +VERTEX + 5 +1E3 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +592.0009999999999 + 20 +-159.519 + 30 +112.85 + 70 + 192 + 0 +VERTEX + 5 +1E4 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +591.5149999999999 + 20 +-153.339 + 30 +112.849 + 70 + 192 + 0 +VERTEX + 5 +1E5 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +589.0810000000001 + 20 +-144.616 + 30 +112.846 + 70 + 192 + 0 +VERTEX + 5 +1E6 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +587.6940000000001 + 20 +-141.585 + 30 +112.844 + 70 + 192 + 0 +VERTEX + 5 +1E7 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +567.679 + 20 +-123.051 + 30 +112.819 + 70 + 192 + 0 +VERTEX + 5 +1E8 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +558.6669999999999 + 20 +-120.501 + 30 +112.808 + 70 + 192 + 0 +VERTEX + 5 +1E9 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +570.4250000000001 + 20 +-124.32 + 30 +112.823 + 70 + 192 + 0 +VERTEX + 5 +1EA +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +580.4269999999999 + 20 +-131.585 + 30 +112.835 + 70 + 192 + 0 +VERTEX + 5 +1EB +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +580.5369999999999 + 20 +-131.695 + 30 +112.835 + 70 + 192 + 0 +VERTEX + 5 +1EC +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +44.53499999999999 + 20 +-120.015 + 30 +87.42800000000003 + 70 + 192 + 0 +VERTEX + 5 +1ED +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +43.64999999999996 + 20 +-120.015 + 30 +88.645 + 70 + 192 + 0 +VERTEX + 5 +1EE +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +42.43300000000006 + 20 +-120.015 + 30 +89.529 + 70 + 192 + 0 +VERTEX + 5 +1EF +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +41.00199999999998 + 20 +-120.015 + 30 +89.994 + 70 + 192 + 0 +VERTEX + 5 +1F0 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-41.00199999999998 + 20 +-120.015 + 30 +89.994 + 70 + 192 + 0 +VERTEX + 5 +1F1 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-42.433 + 20 +-120.015 + 30 +89.529 + 70 + 192 + 0 +VERTEX + 5 +1F2 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-43.651 + 20 +-120.015 + 30 +88.645 + 70 + 192 + 0 +VERTEX + 5 +1F3 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-44.53499999999999 + 20 +-120.015 + 30 +87.42800000000003 + 70 + 192 + 0 +VERTEX + 5 +1F4 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-44.99999999999999 + 20 +-120.015 + 30 +85.997 + 70 + 192 + 0 +VERTEX + 5 +1F5 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-44.99999999999999 + 20 +-120.015 + 30 +84.49200000000002 + 70 + 192 + 0 +VERTEX + 5 +1F6 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-44.53499999999999 + 20 +-120.015 + 30 +83.06099999999999 + 70 + 192 + 0 +VERTEX + 5 +1F7 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-43.651 + 20 +-120.015 + 30 +81.844 + 70 + 192 + 0 +VERTEX + 5 +1F8 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-42.433 + 20 +-120.015 + 30 +80.959 + 70 + 192 + 0 +VERTEX + 5 +1F9 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-41.00199999999998 + 20 +-120.015 + 30 +80.49400000000001 + 70 + 192 + 0 +VERTEX + 5 +1FA +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +41.00199999999998 + 20 +-120.015 + 30 +80.49400000000001 + 70 + 192 + 0 +VERTEX + 5 +1FB +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +42.43300000000006 + 20 +-120.015 + 30 +80.959 + 70 + 192 + 0 +VERTEX + 5 +1FC +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +43.64999999999996 + 20 +-120.015 + 30 +81.844 + 70 + 192 + 0 +VERTEX + 5 +1FD +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +44.53499999999999 + 20 +-120.015 + 30 +83.06099999999999 + 70 + 192 + 0 +VERTEX + 5 +1FE +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +45.00000000000005 + 20 +-120.015 + 30 +84.49200000000002 + 70 + 192 + 0 +VERTEX + 5 +1FF +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +45.00000000000005 + 20 +-120.015 + 30 +85.997 + 70 + 192 + 0 +VERTEX + 5 +200 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +552.4859999999999 + 20 +-120.015 + 30 +112.8 + 70 + 192 + 0 +VERTEX + 5 +201 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-552.486 + 20 +-120.015 + 30 +112.8 + 70 + 192 + 0 +VERTEX + 5 +202 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-591.515 + 20 +-153.339 + 30 +112.849 + 70 + 192 + 0 +VERTEX + 5 +203 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-587.6949999999999 + 20 +-141.585 + 30 +112.844 + 70 + 192 + 0 +VERTEX + 5 +204 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-580.4280000000001 + 20 +-131.585 + 30 +112.835 + 70 + 192 + 0 +VERTEX + 5 +205 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-570.426 + 20 +-124.32 + 30 +112.823 + 70 + 192 + 0 +VERTEX + 5 +206 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-558.6679999999999 + 20 +-120.501 + 30 +112.808 + 70 + 192 + 0 +VERTEX + 5 +207 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-550.942 + 20 +-120.015 + 30 +44.50000000000001 + 70 + 192 + 0 +VERTEX + 5 +208 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-550.942 + 20 +-120.501 + 30 +38.32100000000001 + 70 + 192 + 0 +VERTEX + 5 +209 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-588.286 + 20 +-159.519 + 30 +31.617 + 70 + 192 + 0 +VERTEX + 5 +20A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-588.2270000000001 + 20 +-159.519 + 30 +31.448 + 70 + 192 + 0 +VERTEX + 5 +20B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-582.368 + 20 +-159.519 + 30 +20.56600000000001 + 70 + 192 + 0 +VERTEX + 5 +20C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-573.8720000000001 + 20 +-159.519 + 30 +12.335 + 70 + 192 + 0 +VERTEX + 5 +20D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-573.433 + 20 +-159.519 + 30 +12.02700000000001 + 70 + 192 + 0 +VERTEX + 5 +20E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-550.942 + 20 +-159.065 + 30 +5.003000000000007 + 70 + 192 + 0 +VERTEX + 5 +20F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-550.942 + 20 +-158.632 + 30 +5.010000000000001 + 70 + 192 + 0 +VERTEX + 5 +210 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-550.942 + 20 +-121.949 + 30 +32.291 + 70 + 192 + 0 +VERTEX + 5 +211 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-550.942 + 20 +-159.378 + 30 +5.000000000000004 + 70 + 192 + 0 +VERTEX + 5 +212 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-562.297 + 20 +-159.519 + 30 +6.667000000000006 + 70 + 192 + 0 +VERTEX + 5 +213 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-550.942 + 20 +-147.341 + 30 +6.923999999999999 + 70 + 192 + 0 +VERTEX + 5 +214 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-552.002 + 20 +-147.462 + 30 +6.900000000000003 + 70 + 192 + 0 +VERTEX + 5 +215 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-550.942 + 20 +-153.339 + 30 +5.486000000000006 + 70 + 192 + 0 +VERTEX + 5 +216 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-550.942 + 20 +-153.936 + 30 +5.396000000000011 + 70 + 192 + 0 +VERTEX + 5 +217 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-555.633 + 20 +-148.642 + 30 +6.818000000000006 + 70 + 192 + 0 +VERTEX + 5 +218 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-550.942 + 20 +-141.585 + 30 +9.305000000000007 + 70 + 192 + 0 +VERTEX + 5 +219 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-550.942 + 20 +-136.31 + 30 +12.536 + 70 + 192 + 0 +VERTEX + 5 +21A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-550.942 + 20 +-127.564 + 30 +21.277 + 70 + 192 + 0 +VERTEX + 5 +21B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-550.942 + 20 +-124.32 + 30 +26.56700000000001 + 70 + 192 + 0 +VERTEX + 5 +21C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-557.12 + 20 +-120.501 + 30 +44.36000000000002 + 70 + 192 + 0 +VERTEX + 5 +21D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-568.8720000000001 + 20 +-124.32 + 30 +44.09500000000001 + 70 + 192 + 0 +VERTEX + 5 +21E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-578.868 + 20 +-131.585 + 30 +43.86900000000001 + 70 + 192 + 0 +VERTEX + 5 +21F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-586.131 + 20 +-141.585 + 30 +43.70400000000001 + 70 + 192 + 0 +VERTEX + 5 +220 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-589.9499999999999 + 20 +-153.339 + 30 +43.618 + 70 + 192 + 0 +VERTEX + 5 +221 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-562.979 + 20 +-159.519 + 30 +6.878000000000009 + 70 + 192 + 0 +VERTEX + 5 +222 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-577.226 + 20 +-132.952 + 30 +31.697 + 70 + 192 + 0 +VERTEX + 5 +223 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-584.133 + 20 +-142.462 + 30 +31.54 + 70 + 192 + 0 +VERTEX + 5 +224 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-582.583 + 20 +-159.519 + 30 +20.85100000000001 + 70 + 192 + 0 +VERTEX + 5 +225 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-587.765 + 20 +-153.642 + 30 +31.458 + 70 + 192 + 0 +VERTEX + 5 +226 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-581.975 + 20 +-154.52 + 30 +20.57500000000001 + 70 + 192 + 0 +VERTEX + 5 +227 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-550.942 + 20 +-157.769 + 30 +5.039000000000001 + 70 + 192 + 0 +VERTEX + 5 +228 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-562.1469999999999 + 20 +-157.61 + 30 +6.670000000000009 + 70 + 192 + 0 +VERTEX + 5 +229 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-573.148 + 20 +-155.887 + 30 +12.034 + 70 + 192 + 0 +VERTEX + 5 +22A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-567.718 + 20 +-126.043 + 30 +31.91100000000001 + 70 + 192 + 0 +VERTEX + 5 +22B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-560.967 + 20 +-153.977 + 30 +6.697000000000008 + 70 + 192 + 0 +VERTEX + 5 +22C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-558.722 + 20 +-150.887 + 30 +6.748000000000004 + 70 + 192 + 0 +VERTEX + 5 +22D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-570.903 + 20 +-148.978 + 30 +12.08400000000001 + 70 + 192 + 0 +VERTEX + 5 +22E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-578.886 + 20 +-145.01 + 30 +20.64500000000001 + 70 + 192 + 0 +VERTEX + 5 +22F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-573.01 + 20 +-136.92 + 30 +20.77800000000001 + 70 + 192 + 0 +VERTEX + 5 +230 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-566.634 + 20 +-143.1 + 30 +12.18100000000001 + 70 + 192 + 0 +VERTEX + 5 +231 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-550.942 + 20 +-131.585 + 30 +16.569 + 70 + 192 + 0 +VERTEX + 5 +232 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-560.7579999999999 + 20 +-138.83 + 30 +12.31400000000001 + 70 + 192 + 0 +VERTEX + 5 +233 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-553.851 + 20 +-136.585 + 30 +12.47000000000001 + 70 + 192 + 0 +VERTEX + 5 +234 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-564.922 + 20 +-131.043 + 30 +20.96000000000001 + 70 + 192 + 0 +VERTEX + 5 +235 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-556.5420000000001 + 20 +-122.411 + 30 +32.16400000000001 + 70 + 192 + 0 +VERTEX + 5 +236 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-555.415 + 20 +-127.953 + 30 +21.175 + 70 + 192 + 0 +VERTEX + 5 +237 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-588.286 + 20 +-370.941 + 30 +31.617 + 70 + 192 + 0 +VERTEX + 5 +238 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-550.942 + 20 +-408.285 + 30 +31.617 + 70 + 192 + 0 +VERTEX + 5 +239 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-550.942 + 20 +-408.2260000000001 + 30 +31.445 + 70 + 192 + 0 +VERTEX + 5 +23A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-550.942 + 20 +-402.363 + 30 +20.56000000000001 + 70 + 192 + 0 +VERTEX + 5 +23B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-550.942 + 20 +-393.871 + 30 +12.335 + 70 + 192 + 0 +VERTEX + 5 +23C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-550.942 + 20 +-393.421 + 30 +12.019 + 70 + 192 + 0 +VERTEX + 5 +23D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-550.942 + 20 +-382.2660000000001 + 30 +6.658000000000011 + 70 + 192 + 0 +VERTEX + 5 +23E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-550.942 + 20 +-375.647 + 30 +5.281000000000008 + 70 + 192 + 0 +VERTEX + 5 +23F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-562.2669999999999 + 20 +-370.941 + 30 +6.658000000000011 + 70 + 192 + 0 +VERTEX + 5 +240 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-550.942 + 20 +-382.979 + 30 +6.878000000000009 + 70 + 192 + 0 +VERTEX + 5 +241 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-562.979 + 20 +-370.941 + 30 +6.878000000000009 + 70 + 192 + 0 +VERTEX + 5 +242 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-573.422 + 20 +-370.941 + 30 +12.019 + 70 + 192 + 0 +VERTEX + 5 +243 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-582.364 + 20 +-370.941 + 30 +20.56000000000001 + 70 + 192 + 0 +VERTEX + 5 +244 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-588.226 + 20 +-370.941 + 30 +31.445 + 70 + 192 + 0 +VERTEX + 5 +245 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-582.583 + 20 +-370.941 + 30 +20.85100000000001 + 70 + 192 + 0 +VERTEX + 5 +246 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-550.942 + 20 +-371.8090000000001 + 30 +5.010000000000001 + 70 + 192 + 0 +VERTEX + 5 +247 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-551.8100000000001 + 20 +-370.941 + 30 +5.010000000000001 + 70 + 192 + 0 +VERTEX + 5 +248 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-577.219 + 20 +-397.218 + 30 +31.1 + 70 + 192 + 0 +VERTEX + 5 +249 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-567.71 + 20 +-404.128 + 30 +31.158 + 70 + 192 + 0 +VERTEX + 5 +24A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-564.9150000000001 + 20 +-398.882 + 30 +20.32300000000001 + 70 + 192 + 0 +VERTEX + 5 +24B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-551.999 + 20 +-382.146 + 30 +6.637000000000004 + 70 + 192 + 0 +VERTEX + 5 +24C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-553.845 + 20 +-393.146 + 30 +11.96 + 70 + 192 + 0 +VERTEX + 5 +24D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-555.631 + 20 +-380.965 + 30 +6.581000000000003 + 70 + 192 + 0 +VERTEX + 5 +24E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-560.753 + 20 +-390.9 + 30 +11.854 + 70 + 192 + 0 +VERTEX + 5 +24F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-558.72 + 20 +-378.7200000000001 + 30 +6.561999999999999 + 70 + 192 + 0 +VERTEX + 5 +250 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-555.648 + 20 +-370.941 + 30 +5.281000000000008 + 70 + 192 + 0 +VERTEX + 5 +251 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-560.965 + 20 +-375.63 + 30 +6.581000000000003 + 70 + 192 + 0 +VERTEX + 5 +252 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-562.1460000000001 + 20 +-371.998 + 30 +6.637000000000004 + 70 + 192 + 0 +VERTEX + 5 +253 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-566.63 + 20 +-386.6300000000001 + 30 +11.81800000000001 + 70 + 192 + 0 +VERTEX + 5 +254 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-573.0039999999999 + 20 +-393.004 + 30 +20.273 + 70 + 192 + 0 +VERTEX + 5 +255 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-584.129 + 20 +-387.709 + 30 +31.158 + 70 + 192 + 0 +VERTEX + 5 +256 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-587.763 + 20 +-376.532 + 30 +31.32900000000001 + 70 + 192 + 0 +VERTEX + 5 +257 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-573.8720000000001 + 20 +-370.941 + 30 +12.335 + 70 + 192 + 0 +VERTEX + 5 +258 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-570.901 + 20 +-380.753 + 30 +11.854 + 70 + 192 + 0 +VERTEX + 5 +259 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-578.8820000000001 + 20 +-384.915 + 30 +20.32300000000001 + 70 + 192 + 0 +VERTEX + 5 +25A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-581.974 + 20 +-375.407 + 30 +20.468 + 70 + 192 + 0 +VERTEX + 5 +25B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-573.1469999999999 + 20 +-373.844 + 30 +11.96 + 70 + 192 + 0 +VERTEX + 5 +25C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-556.532 + 20 +-407.763 + 30 +31.32900000000001 + 70 + 192 + 0 +VERTEX + 5 +25D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-555.407 + 20 +-401.973 + 30 +20.468 + 70 + 192 + 0 +VERTEX + 5 +25E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-550.942 + 20 +-402.583 + 30 +20.85100000000001 + 70 + 192 + 0 +VERTEX + 5 +25F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +550.941 + 20 +-408.285 + 30 +31.617 + 70 + 192 + 0 +VERTEX + 5 +260 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +588.2850000000001 + 20 +-370.941 + 30 +31.617 + 70 + 192 + 0 +VERTEX + 5 +261 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +588.226 + 20 +-370.941 + 30 +31.445 + 70 + 192 + 0 +VERTEX + 5 +262 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +582.364 + 20 +-370.941 + 30 +20.56000000000001 + 70 + 192 + 0 +VERTEX + 5 +263 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +573.8720000000001 + 20 +-370.941 + 30 +12.335 + 70 + 192 + 0 +VERTEX + 5 +264 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +573.422 + 20 +-370.941 + 30 +12.019 + 70 + 192 + 0 +VERTEX + 5 +265 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +562.2669999999999 + 20 +-370.941 + 30 +6.658000000000011 + 70 + 192 + 0 +VERTEX + 5 +266 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +555.6469999999999 + 20 +-370.941 + 30 +5.281000000000008 + 70 + 192 + 0 +VERTEX + 5 +267 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +550.941 + 20 +-382.2660000000001 + 30 +6.658000000000011 + 70 + 192 + 0 +VERTEX + 5 +268 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +562.979 + 20 +-370.941 + 30 +6.878000000000009 + 70 + 192 + 0 +VERTEX + 5 +269 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +550.941 + 20 +-382.979 + 30 +6.878000000000009 + 70 + 192 + 0 +VERTEX + 5 +26A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +550.941 + 20 +-393.422 + 30 +12.019 + 70 + 192 + 0 +VERTEX + 5 +26B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +550.941 + 20 +-402.364 + 30 +20.56000000000001 + 70 + 192 + 0 +VERTEX + 5 +26C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +550.941 + 20 +-408.2260000000001 + 30 +31.445 + 70 + 192 + 0 +VERTEX + 5 +26D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +550.941 + 20 +-402.583 + 30 +20.85100000000001 + 70 + 192 + 0 +VERTEX + 5 +26E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +551.8100000000001 + 20 +-370.941 + 30 +5.010000000000001 + 70 + 192 + 0 +VERTEX + 5 +26F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +550.941 + 20 +-371.8090000000001 + 30 +5.010000000000001 + 70 + 192 + 0 +VERTEX + 5 +270 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +577.219 + 20 +-397.218 + 30 +31.1 + 70 + 192 + 0 +VERTEX + 5 +271 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +584.129 + 20 +-387.709 + 30 +31.158 + 70 + 192 + 0 +VERTEX + 5 +272 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +578.8820000000001 + 20 +-384.915 + 30 +20.32300000000001 + 70 + 192 + 0 +VERTEX + 5 +273 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +562.146 + 20 +-371.998 + 30 +6.637000000000004 + 70 + 192 + 0 +VERTEX + 5 +274 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +573.1469999999999 + 20 +-373.844 + 30 +11.96 + 70 + 192 + 0 +VERTEX + 5 +275 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +560.965 + 20 +-375.63 + 30 +6.581000000000003 + 70 + 192 + 0 +VERTEX + 5 +276 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +570.9000000000001 + 20 +-380.753 + 30 +11.854 + 70 + 192 + 0 +VERTEX + 5 +277 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +558.72 + 20 +-378.7200000000001 + 30 +6.561999999999999 + 70 + 192 + 0 +VERTEX + 5 +278 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +550.941 + 20 +-375.647 + 30 +5.281000000000008 + 70 + 192 + 0 +VERTEX + 5 +279 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +555.63 + 20 +-380.965 + 30 +6.581000000000003 + 70 + 192 + 0 +VERTEX + 5 +27A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +551.999 + 20 +-382.146 + 30 +6.637000000000004 + 70 + 192 + 0 +VERTEX + 5 +27B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +566.6300000000001 + 20 +-386.6300000000001 + 30 +11.81800000000001 + 70 + 192 + 0 +VERTEX + 5 +27C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +573.0039999999999 + 20 +-393.004 + 30 +20.273 + 70 + 192 + 0 +VERTEX + 5 +27D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +567.709 + 20 +-404.128 + 30 +31.158 + 70 + 192 + 0 +VERTEX + 5 +27E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +556.5319999999999 + 20 +-407.763 + 30 +31.32900000000001 + 70 + 192 + 0 +VERTEX + 5 +27F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +550.941 + 20 +-393.871 + 30 +12.335 + 70 + 192 + 0 +VERTEX + 5 +280 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +560.7529999999999 + 20 +-390.9 + 30 +11.854 + 70 + 192 + 0 +VERTEX + 5 +281 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +564.915 + 20 +-398.882 + 30 +20.32300000000001 + 70 + 192 + 0 +VERTEX + 5 +282 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +555.407 + 20 +-401.973 + 30 +20.468 + 70 + 192 + 0 +VERTEX + 5 +283 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +553.845 + 20 +-393.146 + 30 +11.96 + 70 + 192 + 0 +VERTEX + 5 +284 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +587.7629999999999 + 20 +-376.532 + 30 +31.32900000000001 + 70 + 192 + 0 +VERTEX + 5 +285 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +581.974 + 20 +-375.407 + 30 +20.468 + 70 + 192 + 0 +VERTEX + 5 +286 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +582.583 + 20 +-370.941 + 30 +20.85100000000001 + 70 + 192 + 0 +VERTEX + 5 +287 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +550.941 + 20 +-120.015 + 30 +44.50000000000001 + 70 + 192 + 0 +VERTEX + 5 +288 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +573.8720000000001 + 20 +-159.519 + 30 +12.335 + 70 + 192 + 0 +VERTEX + 5 +289 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +582.368 + 20 +-159.519 + 30 +20.56600000000001 + 70 + 192 + 0 +VERTEX + 5 +28A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +588.227 + 20 +-159.519 + 30 +31.448 + 70 + 192 + 0 +VERTEX + 5 +28B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +590.436 + 20 +-159.519 + 30 +43.60700000000001 + 70 + 192 + 0 +VERTEX + 5 +28C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +588.2850000000001 + 20 +-159.519 + 30 +31.617 + 70 + 192 + 0 +VERTEX + 5 +28D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +550.941 + 20 +-120.501 + 30 +38.32100000000001 + 70 + 192 + 0 +VERTEX + 5 +28E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +550.941 + 20 +-121.949 + 30 +32.291 + 70 + 192 + 0 +VERTEX + 5 +28F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +550.941 + 20 +-127.564 + 30 +21.277 + 70 + 192 + 0 +VERTEX + 5 +290 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +550.941 + 20 +-131.585 + 30 +16.569 + 70 + 192 + 0 +VERTEX + 5 +291 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +550.941 + 20 +-136.31 + 30 +12.536 + 70 + 192 + 0 +VERTEX + 5 +292 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +550.941 + 20 +-147.341 + 30 +6.923999999999999 + 70 + 192 + 0 +VERTEX + 5 +293 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +550.941 + 20 +-153.339 + 30 +5.486000000000006 + 70 + 192 + 0 +VERTEX + 5 +294 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +550.941 + 20 +-153.936 + 30 +5.396000000000011 + 70 + 192 + 0 +VERTEX + 5 +295 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +550.941 + 20 +-141.585 + 30 +9.305000000000007 + 70 + 192 + 0 +VERTEX + 5 +296 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +552.0010000000001 + 20 +-147.462 + 30 +6.900000000000003 + 70 + 192 + 0 +VERTEX + 5 +297 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +560.966 + 20 +-153.977 + 30 +6.697000000000008 + 70 + 192 + 0 +VERTEX + 5 +298 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +550.941 + 20 +-159.378 + 30 +5.000000000000004 + 70 + 192 + 0 +VERTEX + 5 +299 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +550.941 + 20 +-159.065 + 30 +5.003000000000007 + 70 + 192 + 0 +VERTEX + 5 +29A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +550.941 + 20 +-158.632 + 30 +5.010000000000001 + 70 + 192 + 0 +VERTEX + 5 +29B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +573.433 + 20 +-159.519 + 30 +12.02700000000001 + 70 + 192 + 0 +VERTEX + 5 +29C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +562.146 + 20 +-157.61 + 30 +6.670000000000009 + 70 + 192 + 0 +VERTEX + 5 +29D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +562.979 + 20 +-159.519 + 30 +6.878000000000009 + 70 + 192 + 0 +VERTEX + 5 +29E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +562.2969999999999 + 20 +-159.519 + 30 +6.667000000000006 + 70 + 192 + 0 +VERTEX + 5 +29F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +573.0099999999999 + 20 +-136.92 + 30 +20.77800000000001 + 70 + 192 + 0 +VERTEX + 5 +2A0 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +577.225 + 20 +-132.952 + 30 +31.697 + 70 + 192 + 0 +VERTEX + 5 +2A1 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +578.868 + 20 +-131.585 + 30 +43.86900000000001 + 70 + 192 + 0 +VERTEX + 5 +2A2 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +589.949 + 20 +-153.339 + 30 +43.618 + 70 + 192 + 0 +VERTEX + 5 +2A3 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +586.1310000000001 + 20 +-141.585 + 30 +43.70400000000001 + 70 + 192 + 0 +VERTEX + 5 +2A4 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +568.871 + 20 +-124.32 + 30 +44.09500000000001 + 70 + 192 + 0 +VERTEX + 5 +2A5 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +557.12 + 20 +-120.501 + 30 +44.36000000000002 + 70 + 192 + 0 +VERTEX + 5 +2A6 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +567.7180000000001 + 20 +-126.043 + 30 +31.91100000000001 + 70 + 192 + 0 +VERTEX + 5 +2A7 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +553.851 + 20 +-136.585 + 30 +12.47000000000001 + 70 + 192 + 0 +VERTEX + 5 +2A8 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +564.922 + 20 +-131.043 + 30 +20.96000000000001 + 70 + 192 + 0 +VERTEX + 5 +2A9 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +566.634 + 20 +-143.1 + 30 +12.18100000000001 + 70 + 192 + 0 +VERTEX + 5 +2AA +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +560.7579999999999 + 20 +-138.83 + 30 +12.31400000000001 + 70 + 192 + 0 +VERTEX + 5 +2AB +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +550.941 + 20 +-157.769 + 30 +5.039000000000001 + 70 + 192 + 0 +VERTEX + 5 +2AC +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +555.6329999999999 + 20 +-148.642 + 30 +6.818000000000006 + 70 + 192 + 0 +VERTEX + 5 +2AD +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +558.7220000000001 + 20 +-150.887 + 30 +6.748000000000004 + 70 + 192 + 0 +VERTEX + 5 +2AE +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +573.1469999999999 + 20 +-155.887 + 30 +12.034 + 70 + 192 + 0 +VERTEX + 5 +2AF +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +570.903 + 20 +-148.978 + 30 +12.08400000000001 + 70 + 192 + 0 +VERTEX + 5 +2B0 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +578.8859999999999 + 20 +-145.01 + 30 +20.64500000000001 + 70 + 192 + 0 +VERTEX + 5 +2B1 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +584.1329999999999 + 20 +-142.462 + 30 +31.54 + 70 + 192 + 0 +VERTEX + 5 +2B2 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +582.583 + 20 +-159.519 + 30 +20.85100000000001 + 70 + 192 + 0 +VERTEX + 5 +2B3 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +581.975 + 20 +-154.52 + 30 +20.57500000000001 + 70 + 192 + 0 +VERTEX + 5 +2B4 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +587.764 + 20 +-153.642 + 30 +31.458 + 70 + 192 + 0 +VERTEX + 5 +2B5 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +556.541 + 20 +-122.411 + 30 +32.16400000000001 + 70 + 192 + 0 +VERTEX + 5 +2B6 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +555.4150000000001 + 20 +-127.953 + 30 +21.175 + 70 + 192 + 0 +VERTEX + 5 +2B7 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +550.941 + 20 +-124.32 + 30 +26.56700000000001 + 70 + 192 + 0 +VERTEX + 5 +2B8 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-550.942 + 20 +-370.941 + 30 +5.000000000000004 + 70 + 192 + 0 +VERTEX + 5 +2B9 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-550.942 + 20 +-159.519 + 30 +5.000000000000004 + 70 + 192 + 0 +VERTEX + 5 +2BA +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +550.941 + 20 +-159.519 + 30 +5.000000000000004 + 70 + 192 + 0 +VERTEX + 5 +2BB +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +550.941 + 20 +-370.941 + 30 +5.000000000000004 + 70 + 192 + 0 +VERTEX + 5 +2BC +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-561.765 + 20 +-419.089 + 30 +112.742 + 70 + 192 + 0 +VERTEX + 5 +2BD +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-562.5740000000002 + 20 +-418.921 + 30 +112.741 + 70 + 192 + 0 +VERTEX + 5 +2BE +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-560.074 + 20 +-416.42 + 30 +2.141000000000004 + 70 + 192 + 0 +VERTEX + 5 +2BF +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-568.176 + 20 +-413.887 + 30 +2.135000000000012 + 70 + 192 + 0 +VERTEX + 5 +2C0 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-570.678 + 20 +-416.387 + 30 +112.735 + 70 + 192 + 0 +VERTEX + 5 +2C1 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-575.26 + 20 +-414.196 + 30 +112.733 + 70 + 192 + 0 +VERTEX + 5 +2C2 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-572.759 + 20 +-411.695 + 30 +2.13300000000001 + 70 + 192 + 0 +VERTEX + 5 +2C3 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-578.8919999999999 + 20 +-411.998 + 30 +112.731 + 70 + 192 + 0 +VERTEX + 5 +2C4 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-586.091 + 20 +-406.0900000000001 + 30 +112.73 + 70 + 192 + 0 +VERTEX + 5 +2C5 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-596.387 + 20 +-390.678 + 30 +112.735 + 70 + 192 + 0 +VERTEX + 5 +2C6 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-598.921 + 20 +-382.574 + 30 +112.741 + 70 + 192 + 0 +VERTEX + 5 +2C7 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-596.42 + 20 +-380.073 + 30 +2.141000000000004 + 70 + 192 + 0 +VERTEX + 5 +2C8 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-600.0 + 20 +-372.5060000000001 + 30 +112.75 + 70 + 192 + 0 +VERTEX + 5 +2C9 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-599.0889999999999 + 20 +-381.7650000000001 + 30 +112.742 + 70 + 192 + 0 +VERTEX + 5 +2CA +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-597.499 + 20 +-370.0060000000001 + 30 +2.149999999999999 + 70 + 192 + 0 +VERTEX + 5 +2CB +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-594.1959999999999 + 20 +-395.259 + 30 +112.733 + 70 + 192 + 0 +VERTEX + 5 +2CC +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-593.8870000000001 + 20 +-388.1760000000001 + 30 +2.135000000000012 + 70 + 192 + 0 +VERTEX + 5 +2CD +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-591.998 + 20 +-398.8910000000001 + 30 +112.731 + 70 + 192 + 0 +VERTEX + 5 +2CE +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-583.59 + 20 +-403.59 + 30 +2.130000000000007 + 70 + 192 + 0 +VERTEX + 5 +2CF +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-591.696 + 20 +-392.758 + 30 +2.13300000000001 + 70 + 192 + 0 +VERTEX + 5 +2D0 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +599.4590000000001 + 20 +-379.654 + 30 +112.743 + 70 + 192 + 0 +VERTEX + 5 +2D1 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +598.9209999999999 + 20 +-382.574 + 30 +112.741 + 70 + 192 + 0 +VERTEX + 5 +2D2 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +596.4200000000001 + 20 +-380.073 + 30 +2.141000000000004 + 70 + 192 + 0 +VERTEX + 5 +2D3 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +597.057 + 20 +-388.967 + 30 +112.736 + 70 + 192 + 0 +VERTEX + 5 +2D4 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +593.887 + 20 +-388.1760000000001 + 30 +2.135000000000012 + 70 + 192 + 0 +VERTEX + 5 +2D5 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +595.0859999999999 + 20 +-393.547 + 30 +112.733 + 70 + 192 + 0 +VERTEX + 5 +2D6 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +594.196 + 20 +-395.259 + 30 +112.733 + 70 + 192 + 0 +VERTEX + 5 +2D7 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +591.6949999999999 + 20 +-392.758 + 30 +2.13300000000001 + 70 + 192 + 0 +VERTEX + 5 +2D8 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +592.829 + 20 +-397.6020000000001 + 30 +112.732 + 70 + 192 + 0 +VERTEX + 5 +2D9 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +586.9479999999999 + 20 +-405.2100000000001 + 30 +112.73 + 70 + 192 + 0 +VERTEX + 5 +2DA +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +586.091 + 20 +-406.0900000000001 + 30 +112.73 + 70 + 192 + 0 +VERTEX + 5 +2DB +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +583.5899999999999 + 20 +-403.59 + 30 +2.130000000000007 + 70 + 192 + 0 +VERTEX + 5 +2DC +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +579.6550000000001 + 20 +-411.477 + 30 +112.731 + 70 + 192 + 0 +VERTEX + 5 +2DD +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +572.7589999999999 + 20 +-411.695 + 30 +2.13300000000001 + 70 + 192 + 0 +VERTEX + 5 +2DE +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +575.2590000000002 + 20 +-414.196 + 30 +112.733 + 70 + 192 + 0 +VERTEX + 5 +2DF +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +571.249 + 20 +-416.146 + 30 +112.735 + 70 + 192 + 0 +VERTEX + 5 +2E0 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +568.1759999999999 + 20 +-413.887 + 30 +2.135000000000012 + 70 + 192 + 0 +VERTEX + 5 +2E1 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +562.663 + 20 +-418.902 + 30 +112.741 + 70 + 192 + 0 +VERTEX + 5 +2E2 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +562.5740000000002 + 20 +-418.921 + 30 +112.741 + 70 + 192 + 0 +VERTEX + 5 +2E3 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +560.0730000000001 + 20 +-416.42 + 30 +2.141000000000004 + 70 + 192 + 0 +VERTEX + 5 +2E4 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-550.006 + 20 +-417.499 + 30 +2.149999999999999 + 70 + 192 + 0 +VERTEX + 5 +2E5 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-552.507 + 20 +-420.0 + 30 +112.75 + 70 + 192 + 0 +VERTEX + 5 +2E6 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +552.507 + 20 +-420.0 + 30 +112.75 + 70 + 192 + 0 +VERTEX + 5 +2E7 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +550.0060000000001 + 20 +-417.499 + 30 +2.149999999999999 + 70 + 192 + 0 +VERTEX + 5 +2E8 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +600.0 + 20 +-2.2 + 30 +112.75 + 70 + 192 + 0 +VERTEX + 5 +2E9 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +597.4989999999999 + 20 +-2.2 + 30 +2.149999999999999 + 70 + 192 + 0 +VERTEX + 5 +2EA +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +597.4989999999999 + 20 +-102.812 + 30 +2.149999999999999 + 70 + 192 + 0 +VERTEX + 5 +2EB +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +597.4989999999999 + 20 +-370.0060000000001 + 30 +2.149999999999999 + 70 + 192 + 0 +VERTEX + 5 +2EC +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +600.0 + 20 +-372.5060000000001 + 30 +112.75 + 70 + 192 + 0 +VERTEX + 5 +2ED +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-591.519 + 20 +-378.666 + 30 +112.857 + 70 + 192 + 0 +VERTEX + 5 +2EE +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-587.704 + 20 +-390.427 + 30 +112.867 + 70 + 192 + 0 +VERTEX + 5 +2EF +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-578.861 + 20 +-398.8610000000001 + 30 +43.238 + 70 + 192 + 0 +VERTEX + 5 +2F0 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-580.4359999999999 + 20 +-400.435 + 30 +112.87 + 70 + 192 + 0 +VERTEX + 5 +2F1 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-570.428 + 20 +-407.704 + 30 +112.867 + 70 + 192 + 0 +VERTEX + 5 +2F2 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-558.667 + 20 +-411.518 + 30 +112.857 + 70 + 192 + 0 +VERTEX + 5 +2F3 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-567.6229999999999 + 20 +-408.996 + 30 +112.865 + 70 + 192 + 0 +VERTEX + 5 +2F4 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-568.8630000000002 + 20 +-406.126 + 30 +43.29900000000001 + 70 + 192 + 0 +VERTEX + 5 +2F5 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-557.11 + 20 +-409.948 + 30 +43.47900000000001 + 70 + 192 + 0 +VERTEX + 5 +2F6 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-588.996 + 20 +-387.622 + 30 +112.865 + 70 + 192 + 0 +VERTEX + 5 +2F7 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-589.948 + 20 +-377.109 + 30 +43.47900000000001 + 70 + 192 + 0 +VERTEX + 5 +2F8 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-586.127 + 20 +-388.862 + 30 +43.29900000000001 + 70 + 192 + 0 +VERTEX + 5 +2F9 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +558.6669999999999 + 20 +-411.518 + 30 +112.857 + 70 + 192 + 0 +VERTEX + 5 +2FA +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +570.4269999999999 + 20 +-407.704 + 30 +112.867 + 70 + 192 + 0 +VERTEX + 5 +2FB +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +580.326 + 20 +-400.544 + 30 +112.87 + 70 + 192 + 0 +VERTEX + 5 +2FC +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +578.861 + 20 +-398.8610000000001 + 30 +43.238 + 70 + 192 + 0 +VERTEX + 5 +2FD +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +580.435 + 20 +-400.435 + 30 +112.87 + 70 + 192 + 0 +VERTEX + 5 +2FE +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +587.7039999999998 + 20 +-390.427 + 30 +112.867 + 70 + 192 + 0 +VERTEX + 5 +2FF +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +586.1260000000002 + 20 +-388.862 + 30 +43.29900000000001 + 70 + 192 + 0 +VERTEX + 5 +300 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +588.966 + 20 +-387.694 + 30 +112.865 + 70 + 192 + 0 +VERTEX + 5 +301 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +589.948 + 20 +-377.109 + 30 +43.47900000000001 + 70 + 192 + 0 +VERTEX + 5 +302 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +592.0009999999999 + 20 +-372.507 + 30 +112.85 + 70 + 192 + 0 +VERTEX + 5 +303 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +591.5180000000003 + 20 +-378.666 + 30 +112.857 + 70 + 192 + 0 +VERTEX + 5 +304 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +590.436 + 20 +-370.941 + 30 +43.60700000000001 + 70 + 192 + 0 +VERTEX + 5 +305 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +567.408 + 20 +-409.084 + 30 +112.865 + 70 + 192 + 0 +VERTEX + 5 +306 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +557.1100000000001 + 20 +-409.948 + 30 +43.47900000000001 + 70 + 192 + 0 +VERTEX + 5 +307 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +568.8620000000001 + 20 +-406.126 + 30 +43.29900000000001 + 70 + 192 + 0 +VERTEX + 5 +308 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-590.4359999999999 + 20 +-159.519 + 30 +43.60700000000001 + 70 + 192 + 0 +VERTEX + 5 +309 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-590.4359999999999 + 20 +-370.941 + 30 +43.60700000000001 + 70 + 192 + 0 +VERTEX + 5 +30A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-592.0020000000001 + 20 +-372.507 + 30 +112.85 + 70 + 192 + 0 +VERTEX + 5 +30B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-592.0020000000001 + 20 +-159.519 + 30 +112.85 + 70 + 192 + 0 +VERTEX + 5 +30C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +550.941 + 20 +-410.436 + 30 +43.60700000000001 + 70 + 192 + 0 +VERTEX + 5 +30D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +552.507 + 20 +-412.0010000000001 + 30 +112.85 + 70 + 192 + 0 +VERTEX + 5 +30E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +131.4769999999999 + 20 +-412.0010000000001 + 30 +112.85 + 70 + 192 + 0 +VERTEX + 5 +30F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-552.507 + 20 +-412.0010000000001 + 30 +112.85 + 70 + 192 + 0 +VERTEX + 5 +310 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-550.942 + 20 +-410.436 + 30 +43.60700000000001 + 70 + 192 + 0 +VERTEX + 5 +311 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 4 + 72 + 18 + 73 + 407 + 74 + 388 + 0 +VERTEX + 5 +312 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 3 + 72 + 4 + 73 + 388 + 74 + 389 + 0 +VERTEX + 5 +313 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 2 + 72 + 3 + 73 + 389 + 74 + 390 + 0 +VERTEX + 5 +314 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 1 + 72 + 2 + 73 + 390 + 74 + 391 + 0 +VERTEX + 5 +315 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 16 + 72 + 1 + 73 + 391 + 74 + 392 + 0 +VERTEX + 5 +316 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 15 + 72 + 16 + 73 + 392 + 74 + 393 + 0 +VERTEX + 5 +317 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 14 + 72 + 15 + 73 + 393 + 74 + 394 + 0 +VERTEX + 5 +318 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 13 + 72 + 14 + 73 + 394 + 74 + 395 + 0 +VERTEX + 5 +319 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 12 + 72 + 13 + 73 + 395 + 74 + 396 + 0 +VERTEX + 5 +31A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 11 + 72 + 12 + 73 + 396 + 74 + 397 + 0 +VERTEX + 5 +31B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 5 + 72 + 6 + 73 + 404 + 74 + 405 + 0 +VERTEX + 5 +31C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 6 + 72 + 7 + 73 + 403 + 74 + 404 + 0 +VERTEX + 5 +31D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 17 + 72 + 5 + 73 + 405 + 74 + 406 + 0 +VERTEX + 5 +31E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 7 + 72 + 20 + 73 + 402 + 74 + 403 + 0 +VERTEX + 5 +31F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 9 + 72 + 10 + 73 + 398 + 74 + 399 + 0 +VERTEX + 5 +320 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 8 + 72 + 9 + 73 + 399 + 74 + 400 + 0 +VERTEX + 5 +321 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 10 + 72 + 11 + 73 + 397 + 74 + 398 + 0 +VERTEX + 5 +322 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 19 + 72 + 8 + 73 + 400 + 74 + 401 + 0 +VERTEX + 5 +323 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -644 + 72 + 641 + 73 + 640 + 0 +VERTEX + 5 +324 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 18 + 72 + 17 + 73 + 406 + 74 + 407 + 0 +VERTEX + 5 +325 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 20 + 72 + 19 + 73 + 401 + 74 + 402 + 0 +VERTEX + 5 +326 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 640 + 72 + 181 + 73 + 93 + 0 +VERTEX + 5 +327 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 93 + 72 + 181 + 73 + 21 + 0 +VERTEX + 5 +328 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 95 + 72 + 21 + 73 + 97 + 0 +VERTEX + 5 +329 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 95 + 72 + 93 + 73 + 21 + 0 +VERTEX + 5 +32A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 181 + 72 + 179 + 73 + 21 + 0 +VERTEX + 5 +32B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 21 + 72 + 179 + 73 + 177 + 0 +VERTEX + 5 +32C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 26 + 72 + 177 + 73 + 184 + 0 +VERTEX + 5 +32D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 186 + 72 + 26 + 73 + 184 + 0 +VERTEX + 5 +32E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 186 + 72 + 29 + 73 + 26 + 0 +VERTEX + 5 +32F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 186 + 72 + 187 + 73 + 29 + 0 +VERTEX + 5 +330 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 29 + 72 + 187 + 73 + 175 + 0 +VERTEX + 5 +331 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 118 + 72 + 175 + 73 + 116 + 0 +VERTEX + 5 +332 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 118 + 72 + 29 + 73 + 175 + 0 +VERTEX + 5 +333 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 118 + 72 + 120 + 73 + 29 + 0 +VERTEX + 5 +334 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 29 + 72 + 120 + 73 + 28 + 0 +VERTEX + 5 +335 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 99 + 72 + 24 + 73 + 90 + 0 +VERTEX + 5 +336 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 99 + 72 + 23 + 73 + 24 + 0 +VERTEX + 5 +337 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 99 + 72 + 100 + 73 + 23 + 0 +VERTEX + 5 +338 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 23 + 72 + 100 + 73 + 97 + 0 +VERTEX + 5 +339 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 21 + 72 + 23 + 73 + 97 + 0 +VERTEX + 5 +33A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 26 + 72 + 27 + 73 + 23 + 74 + 21 + 0 +VERTEX + 5 +33B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 21 + 72 + 177 + 73 + 26 + 0 +VERTEX + 5 +33C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 175 + 72 + 257 + 73 + 116 + 0 +VERTEX + 5 +33D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 120 + 72 + 122 + 73 + 28 + 0 +VERTEX + 5 +33E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 28 + 72 + 122 + 73 + 124 + 0 +VERTEX + 5 +33F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 22 + 72 + 124 + 73 + 126 + 0 +VERTEX + 5 +340 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 127 + 72 + 22 + 73 + 126 + 0 +VERTEX + 5 +341 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 127 + 72 + 254 + 73 + 22 + 0 +VERTEX + 5 +342 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 254 + 72 + 88 + 73 + 24 + 0 +VERTEX + 5 +343 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 254 + 72 + 24 + 73 + 25 + 0 +VERTEX + 5 +344 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 22 + 72 + 25 + 73 + 27 + 74 + 28 + 0 +VERTEX + 5 +345 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 124 + 72 + 22 + 73 + 28 + 0 +VERTEX + 5 +346 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 254 + 72 + 25 + 73 + 22 + 0 +VERTEX + 5 +347 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 90 + 72 + 24 + 73 + 88 + 0 +VERTEX + 5 +348 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 27 + 72 + 25 + 73 + 24 + 74 + 23 + 0 +VERTEX + 5 +349 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 29 + 72 + 28 + 73 + 27 + 74 + 26 + 0 +VERTEX + 5 +34A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 258 + 72 + 151 + 73 + 115 + 0 +VERTEX + 5 +34B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 115 + 72 + 151 + 73 + 148 + 0 +VERTEX + 5 +34C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 30 + 72 + 148 + 73 + 146 + 0 +VERTEX + 5 +34D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 32 + 72 + 146 + 73 + 144 + 0 +VERTEX + 5 +34E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 139 + 72 + 32 + 73 + 144 + 0 +VERTEX + 5 +34F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 139 + 72 + 31 + 73 + 32 + 0 +VERTEX + 5 +350 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 139 + 72 + 141 + 73 + 31 + 0 +VERTEX + 5 +351 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 31 + 72 + 141 + 73 + 143 + 0 +VERTEX + 5 +352 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 114 + 72 + 143 + 73 + 113 + 0 +VERTEX + 5 +353 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 114 + 72 + 31 + 73 + 143 + 0 +VERTEX + 5 +354 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 114 + 72 + 111 + 73 + 31 + 0 +VERTEX + 5 +355 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 31 + 72 + 111 + 73 + 35 + 0 +VERTEX + 5 +356 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 33 + 72 + 36 + 73 + 253 + 0 +VERTEX + 5 +357 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 143 + 72 + 244 + 73 + 113 + 0 +VERTEX + 5 +358 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 111 + 72 + 109 + 73 + 35 + 0 +VERTEX + 5 +359 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 35 + 72 + 109 + 73 + 107 + 0 +VERTEX + 5 +35A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 36 + 72 + 107 + 73 + 105 + 0 +VERTEX + 5 +35B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 103 + 72 + 36 + 73 + 105 + 0 +VERTEX + 5 +35C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 103 + 72 + 253 + 73 + 36 + 0 +VERTEX + 5 +35D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 253 + 72 + 128 + 73 + 38 + 0 +VERTEX + 5 +35E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 253 + 72 + 38 + 73 + 33 + 0 +VERTEX + 5 +35F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 128 + 72 + 125 + 73 + 38 + 0 +VERTEX + 5 +360 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 38 + 72 + 125 + 73 + 123 + 0 +VERTEX + 5 +361 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 37 + 72 + 123 + 73 + 121 + 0 +VERTEX + 5 +362 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 119 + 72 + 37 + 73 + 121 + 0 +VERTEX + 5 +363 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 119 + 72 + 30 + 73 + 37 + 0 +VERTEX + 5 +364 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 119 + 72 + 117 + 73 + 30 + 0 +VERTEX + 5 +365 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 30 + 72 + 117 + 73 + 115 + 0 +VERTEX + 5 +366 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 148 + 72 + 30 + 73 + 115 + 0 +VERTEX + 5 +367 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 32 + 72 + 30 + 73 + 146 + 0 +VERTEX + 5 +368 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 32 + 72 + 34 + 73 + 37 + 74 + 30 + 0 +VERTEX + 5 +369 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 34 + 72 + 32 + 73 + 31 + 74 + 35 + 0 +VERTEX + 5 +36A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 33 + 72 + 34 + 73 + 35 + 74 + 36 + 0 +VERTEX + 5 +36B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 34 + 72 + 33 + 73 + 38 + 74 + 37 + 0 +VERTEX + 5 +36C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 36 + 72 + 35 + 73 + 107 + 0 +VERTEX + 5 +36D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 38 + 72 + 123 + 73 + 37 + 0 +VERTEX + 5 +36E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 637 + 72 + 61 + 73 + 596 + 0 +VERTEX + 5 +36F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 596 + 72 + 61 + 73 + 52 + 0 +VERTEX + 5 +370 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 597 + 72 + 52 + 73 + 51 + 0 +VERTEX + 5 +371 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 600 + 72 + 51 + 73 + 601 + 0 +VERTEX + 5 +372 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 600 + 72 + 597 + 73 + 51 + 0 +VERTEX + 5 +373 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 61 + 72 + 62 + 73 + 52 + 0 +VERTEX + 5 +374 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 52 + 72 + 62 + 73 + 56 + 0 +VERTEX + 5 +375 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 55 + 72 + 56 + 73 + 57 + 0 +VERTEX + 5 +376 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 58 + 72 + 55 + 73 + 57 + 0 +VERTEX + 5 +377 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 58 + 72 + 59 + 73 + 55 + 0 +VERTEX + 5 +378 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 55 + 72 + 59 + 73 + 54 + 0 +VERTEX + 5 +379 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 53 + 72 + 54 + 73 + 50 + 0 +VERTEX + 5 +37A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 51 + 72 + 50 + 73 + 44 + 0 +VERTEX + 5 +37B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 601 + 72 + 44 + 73 + 603 + 0 +VERTEX + 5 +37C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 601 + 72 + 51 + 73 + 44 + 0 +VERTEX + 5 +37D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 59 + 72 + 60 + 73 + 54 + 0 +VERTEX + 5 +37E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 54 + 72 + 60 + 73 + 249 + 0 +VERTEX + 5 +37F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 250 + 72 + 54 + 73 + 249 + 0 +VERTEX + 5 +380 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 250 + 72 + 46 + 73 + 54 + 0 +VERTEX + 5 +381 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 250 + 72 + 39 + 73 + 46 + 0 +VERTEX + 5 +382 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 250 + 72 + 251 + 73 + 39 + 0 +VERTEX + 5 +383 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 39 + 72 + 251 + 73 + 101 + 0 +VERTEX + 5 +384 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 102 + 72 + 39 + 73 + 101 + 0 +VERTEX + 5 +385 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 102 + 72 + 40 + 73 + 39 + 0 +VERTEX + 5 +386 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 102 + 72 + 104 + 73 + 40 + 0 +VERTEX + 5 +387 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 40 + 72 + 104 + 73 + 106 + 0 +VERTEX + 5 +388 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 108 + 72 + 40 + 73 + 106 + 0 +VERTEX + 5 +389 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 108 + 72 + 41 + 73 + 40 + 0 +VERTEX + 5 +38A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 108 + 72 + 110 + 73 + 41 + 0 +VERTEX + 5 +38B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 41 + 72 + 110 + 73 + 112 + 0 +VERTEX + 5 +38C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 609 + 72 + 112 + 73 + 608 + 0 +VERTEX + 5 +38D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 609 + 72 + 41 + 73 + 112 + 0 +VERTEX + 5 +38E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 609 + 72 + 606 + 73 + 41 + 0 +VERTEX + 5 +38F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 41 + 72 + 606 + 73 + 43 + 0 +VERTEX + 5 +390 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 42 + 72 + 43 + 73 + 45 + 0 +VERTEX + 5 +391 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 39 + 72 + 45 + 73 + 46 + 0 +VERTEX + 5 +392 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 39 + 72 + 42 + 73 + 45 + 0 +VERTEX + 5 +393 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 39 + 72 + 40 + 73 + 42 + 0 +VERTEX + 5 +394 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 42 + 72 + 40 + 73 + 41 + 0 +VERTEX + 5 +395 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 43 + 72 + 42 + 73 + 41 + 0 +VERTEX + 5 +396 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 60 + 72 + 248 + 73 + 249 + 0 +VERTEX + 5 +397 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 251 + 72 + 252 + 73 + 101 + 0 +VERTEX + 5 +398 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 606 + 72 + 605 + 73 + 43 + 0 +VERTEX + 5 +399 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 43 + 72 + 605 + 73 + 611 + 0 +VERTEX + 5 +39A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 49 + 72 + 611 + 73 + 613 + 0 +VERTEX + 5 +39B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 48 + 72 + 613 + 73 + 604 + 0 +VERTEX + 5 +39C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 603 + 72 + 48 + 73 + 604 + 0 +VERTEX + 5 +39D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 603 + 72 + 44 + 73 + 48 + 0 +VERTEX + 5 +39E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 48 + 72 + 44 + 73 + 47 + 0 +VERTEX + 5 +39F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 49 + 72 + 47 + 73 + 45 + 0 +VERTEX + 5 +3A0 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 43 + 72 + 49 + 73 + 45 + 0 +VERTEX + 5 +3A1 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 43 + 72 + 611 + 73 + 49 + 0 +VERTEX + 5 +3A2 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 597 + 72 + 596 + 73 + 52 + 0 +VERTEX + 5 +3A3 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 54 + 72 + 46 + 73 + 50 + 0 +VERTEX + 5 +3A4 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 50 + 72 + 46 + 73 + 47 + 0 +VERTEX + 5 +3A5 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 44 + 72 + 50 + 73 + 47 + 0 +VERTEX + 5 +3A6 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 47 + 72 + 46 + 73 + 45 + 0 +VERTEX + 5 +3A7 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 613 + 72 + 48 + 73 + 49 + 0 +VERTEX + 5 +3A8 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 49 + 72 + 48 + 73 + 47 + 0 +VERTEX + 5 +3A9 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 50 + 72 + 51 + 73 + 53 + 0 +VERTEX + 5 +3AA +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 53 + 72 + 51 + 73 + 52 + 0 +VERTEX + 5 +3AB +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 55 + 72 + 52 + 73 + 56 + 0 +VERTEX + 5 +3AC +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 55 + 72 + 53 + 73 + 52 + 0 +VERTEX + 5 +3AD +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 55 + 72 + 54 + 73 + 53 + 0 +VERTEX + 5 +3AE +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 61 + 72 + 637 + 73 + 638 + 74 + 69 + 0 +VERTEX + 5 +3AF +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 62 + 72 + 69 + 73 + 68 + 0 +VERTEX + 5 +3B0 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 67 + 72 + 62 + 73 + 68 + 0 +VERTEX + 5 +3B1 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 67 + 72 + 56 + 73 + 62 + 0 +VERTEX + 5 +3B2 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 67 + 72 + 57 + 73 + 56 + 0 +VERTEX + 5 +3B3 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 67 + 72 + 66 + 73 + 57 + 0 +VERTEX + 5 +3B4 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 57 + 72 + 66 + 73 + 65 + 0 +VERTEX + 5 +3B5 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 58 + 72 + 65 + 73 + 59 + 0 +VERTEX + 5 +3B6 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 58 + 72 + 57 + 73 + 65 + 0 +VERTEX + 5 +3B7 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 65 + 72 + 64 + 73 + 59 + 0 +VERTEX + 5 +3B8 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 59 + 72 + 64 + 73 + 63 + 0 +VERTEX + 5 +3B9 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 60 + 72 + 59 + 73 + 63 + 0 +VERTEX + 5 +3BA +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 247 + 72 + 248 + 73 + 60 + 74 + 63 + 0 +VERTEX + 5 +3BB +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 62 + 72 + 61 + 73 + 69 + 0 +VERTEX + 5 +3BC +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 644 + 72 + 92 + 73 + 616 + 0 +VERTEX + 5 +3BD +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 616 + 72 + 92 + 73 + 80 + 0 +VERTEX + 5 +3BE +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 617 + 72 + 80 + 73 + 79 + 0 +VERTEX + 5 +3BF +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 619 + 72 + 79 + 73 + 621 + 0 +VERTEX + 5 +3C0 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 619 + 72 + 617 + 73 + 79 + 0 +VERTEX + 5 +3C1 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 92 + 72 + 94 + 73 + 80 + 0 +VERTEX + 5 +3C2 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 80 + 72 + 94 + 73 + 96 + 0 +VERTEX + 5 +3C3 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 83 + 72 + 96 + 73 + 98 + 0 +VERTEX + 5 +3C4 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 91 + 72 + 83 + 73 + 98 + 0 +VERTEX + 5 +3C5 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 91 + 72 + 89 + 73 + 83 + 0 +VERTEX + 5 +3C6 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 83 + 72 + 89 + 73 + 82 + 0 +VERTEX + 5 +3C7 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 81 + 72 + 82 + 73 + 84 + 0 +VERTEX + 5 +3C8 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 79 + 72 + 84 + 73 + 85 + 0 +VERTEX + 5 +3C9 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 621 + 72 + 85 + 73 + 622 + 0 +VERTEX + 5 +3CA +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 621 + 72 + 79 + 73 + 85 + 0 +VERTEX + 5 +3CB +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 89 + 72 + 87 + 73 + 82 + 0 +VERTEX + 5 +3CC +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 82 + 72 + 87 + 73 + 256 + 0 +VERTEX + 5 +3CD +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 71 + 72 + 256 + 73 + 245 + 0 +VERTEX + 5 +3CE +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 246 + 72 + 71 + 73 + 245 + 0 +VERTEX + 5 +3CF +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 246 + 72 + 75 + 73 + 71 + 0 +VERTEX + 5 +3D0 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 246 + 72 + 63 + 73 + 75 + 0 +VERTEX + 5 +3D1 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 246 + 72 + 247 + 73 + 63 + 0 +VERTEX + 5 +3D2 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 87 + 72 + 255 + 73 + 256 + 0 +VERTEX + 5 +3D3 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 63 + 72 + 64 + 73 + 75 + 0 +VERTEX + 5 +3D4 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 75 + 72 + 64 + 73 + 77 + 0 +VERTEX + 5 +3D5 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 76 + 72 + 77 + 73 + 72 + 0 +VERTEX + 5 +3D6 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 74 + 72 + 72 + 73 + 633 + 0 +VERTEX + 5 +3D7 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 631 + 72 + 74 + 73 + 633 + 0 +VERTEX + 5 +3D8 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 631 + 72 + 630 + 73 + 74 + 0 +VERTEX + 5 +3D9 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 74 + 72 + 630 + 73 + 78 + 0 +VERTEX + 5 +3DA +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 73 + 72 + 78 + 73 + 86 + 0 +VERTEX + 5 +3DB +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 70 + 72 + 86 + 73 + 84 + 0 +VERTEX + 5 +3DC +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 71 + 72 + 84 + 73 + 82 + 0 +VERTEX + 5 +3DD +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 256 + 72 + 71 + 73 + 82 + 0 +VERTEX + 5 +3DE +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 64 + 72 + 65 + 73 + 77 + 0 +VERTEX + 5 +3DF +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 77 + 72 + 65 + 73 + 66 + 0 +VERTEX + 5 +3E0 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 67 + 72 + 77 + 73 + 66 + 0 +VERTEX + 5 +3E1 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 67 + 72 + 72 + 73 + 77 + 0 +VERTEX + 5 +3E2 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 67 + 72 + 68 + 73 + 72 + 0 +VERTEX + 5 +3E3 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 72 + 72 + 68 + 73 + 69 + 0 +VERTEX + 5 +3E4 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 638 + 72 + 72 + 73 + 69 + 0 +VERTEX + 5 +3E5 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 638 + 72 + 634 + 73 + 72 + 0 +VERTEX + 5 +3E6 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 72 + 72 + 634 + 73 + 633 + 0 +VERTEX + 5 +3E7 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 630 + 72 + 628 + 73 + 78 + 0 +VERTEX + 5 +3E8 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 78 + 72 + 628 + 73 + 626 + 0 +VERTEX + 5 +3E9 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 86 + 72 + 626 + 73 + 625 + 0 +VERTEX + 5 +3EA +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 624 + 72 + 86 + 73 + 625 + 0 +VERTEX + 5 +3EB +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 624 + 72 + 85 + 73 + 86 + 0 +VERTEX + 5 +3EC +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 624 + 72 + 622 + 73 + 85 + 0 +VERTEX + 5 +3ED +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 617 + 72 + 616 + 73 + 80 + 0 +VERTEX + 5 +3EE +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 84 + 72 + 71 + 73 + 70 + 0 +VERTEX + 5 +3EF +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 70 + 72 + 71 + 73 + 73 + 0 +VERTEX + 5 +3F0 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 86 + 72 + 70 + 73 + 73 + 0 +VERTEX + 5 +3F1 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 71 + 72 + 75 + 73 + 73 + 0 +VERTEX + 5 +3F2 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 73 + 72 + 75 + 73 + 76 + 0 +VERTEX + 5 +3F3 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 74 + 72 + 76 + 73 + 72 + 0 +VERTEX + 5 +3F4 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 74 + 72 + 73 + 73 + 76 + 0 +VERTEX + 5 +3F5 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 74 + 72 + 78 + 73 + 73 + 0 +VERTEX + 5 +3F6 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 77 + 72 + 76 + 73 + 75 + 0 +VERTEX + 5 +3F7 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 86 + 72 + 78 + 73 + 626 + 0 +VERTEX + 5 +3F8 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 84 + 72 + 79 + 73 + 81 + 0 +VERTEX + 5 +3F9 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 81 + 72 + 79 + 73 + 80 + 0 +VERTEX + 5 +3FA +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 83 + 72 + 80 + 73 + 96 + 0 +VERTEX + 5 +3FB +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 83 + 72 + 81 + 73 + 80 + 0 +VERTEX + 5 +3FC +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 83 + 72 + 82 + 73 + 81 + 0 +VERTEX + 5 +3FD +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 86 + 72 + 85 + 73 + 84 + 0 +VERTEX + 5 +3FE +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 88 + 72 + 254 + 73 + 255 + 74 + 87 + 0 +VERTEX + 5 +3FF +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 89 + 72 + 88 + 73 + 87 + 0 +VERTEX + 5 +400 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 89 + 72 + 90 + 73 + 88 + 0 +VERTEX + 5 +401 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 89 + 72 + 91 + 73 + 90 + 0 +VERTEX + 5 +402 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 90 + 72 + 91 + 73 + 99 + 0 +VERTEX + 5 +403 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 99 + 72 + 91 + 73 + 98 + 0 +VERTEX + 5 +404 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 100 + 72 + 98 + 73 + 96 + 0 +VERTEX + 5 +405 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 97 + 72 + 96 + 73 + 94 + 0 +VERTEX + 5 +406 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 95 + 72 + 94 + 73 + 92 + 0 +VERTEX + 5 +407 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 93 + 72 + 95 + 73 + 92 + 0 +VERTEX + 5 +408 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 644 + 72 + 640 + 73 + 93 + 74 + 92 + 0 +VERTEX + 5 +409 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 95 + 72 + 97 + 73 + 94 + 0 +VERTEX + 5 +40A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 97 + 72 + 100 + 73 + 96 + 0 +VERTEX + 5 +40B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 100 + 72 + 99 + 73 + 98 + 0 +VERTEX + 5 +40C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 113 + 72 + 244 + 73 + 608 + 74 + 112 + 0 +VERTEX + 5 +40D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 114 + 72 + 112 + 73 + 110 + 0 +VERTEX + 5 +40E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 111 + 72 + 110 + 73 + 108 + 0 +VERTEX + 5 +40F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 109 + 72 + 108 + 73 + 106 + 0 +VERTEX + 5 +410 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 107 + 72 + 106 + 73 + 104 + 0 +VERTEX + 5 +411 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 105 + 72 + 104 + 73 + 102 + 0 +VERTEX + 5 +412 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 103 + 72 + 102 + 73 + 101 + 0 +VERTEX + 5 +413 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 103 + 72 + 101 + 73 + 252 + 74 + 253 + 0 +VERTEX + 5 +414 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 103 + 72 + 105 + 73 + 102 + 0 +VERTEX + 5 +415 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 105 + 72 + 107 + 73 + 104 + 0 +VERTEX + 5 +416 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 107 + 72 + 109 + 73 + 106 + 0 +VERTEX + 5 +417 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 109 + 72 + 111 + 73 + 108 + 0 +VERTEX + 5 +418 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 111 + 72 + 114 + 73 + 110 + 0 +VERTEX + 5 +419 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 114 + 72 + 113 + 73 + 112 + 0 +VERTEX + 5 +41A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 128 + 72 + 253 + 73 + 254 + 74 + 127 + 0 +VERTEX + 5 +41B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 115 + 72 + 116 + 73 + 257 + 74 + 258 + 0 +VERTEX + 5 +41C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 117 + 72 + 118 + 73 + 116 + 74 + 115 + 0 +VERTEX + 5 +41D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 119 + 72 + 120 + 73 + 118 + 74 + 117 + 0 +VERTEX + 5 +41E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 121 + 72 + 122 + 73 + 120 + 74 + 119 + 0 +VERTEX + 5 +41F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 123 + 72 + 124 + 73 + 122 + 74 + 121 + 0 +VERTEX + 5 +420 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 125 + 72 + 126 + 73 + 124 + 74 + 123 + 0 +VERTEX + 5 +421 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 128 + 72 + 127 + 73 + 126 + 74 + 125 + 0 +VERTEX + 5 +422 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 262 + 72 + 241 + 73 + 136 + 0 +VERTEX + 5 +423 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 262 + 72 + 136 + 73 + 131 + 0 +VERTEX + 5 +424 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 262 + 72 + 131 + 73 + 130 + 0 +VERTEX + 5 +425 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 161 + 72 + 130 + 73 + 173 + 0 +VERTEX + 5 +426 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 161 + 72 + 262 + 73 + 130 + 0 +VERTEX + 5 +427 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 241 + 72 + 242 + 73 + 136 + 0 +VERTEX + 5 +428 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 136 + 72 + 242 + 73 + 233 + 0 +VERTEX + 5 +429 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 137 + 72 + 233 + 73 + 238 + 0 +VERTEX + 5 +42A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 239 + 72 + 137 + 73 + 238 + 0 +VERTEX + 5 +42B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 239 + 72 + 129 + 73 + 137 + 0 +VERTEX + 5 +42C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 239 + 72 + 236 + 73 + 129 + 0 +VERTEX + 5 +42D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 129 + 72 + 236 + 73 + 142 + 0 +VERTEX + 5 +42E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 140 + 72 + 129 + 73 + 142 + 0 +VERTEX + 5 +42F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 140 + 72 + 138 + 73 + 129 + 0 +VERTEX + 5 +430 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 129 + 72 + 138 + 73 + 132 + 0 +VERTEX + 5 +431 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 130 + 72 + 134 + 73 + 172 + 0 +VERTEX + 5 +432 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 173 + 72 + 130 + 73 + 172 + 0 +VERTEX + 5 +433 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 236 + 72 + 243 + 73 + 142 + 0 +VERTEX + 5 +434 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 138 + 72 + 145 + 73 + 132 + 0 +VERTEX + 5 +435 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 132 + 72 + 145 + 73 + 147 + 0 +VERTEX + 5 +436 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 135 + 72 + 147 + 73 + 149 + 0 +VERTEX + 5 +437 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 164 + 72 + 149 + 73 + 150 + 0 +VERTEX + 5 +438 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 259 + 72 + 164 + 73 + 150 + 0 +VERTEX + 5 +439 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 149 + 72 + 164 + 73 + 135 + 0 +VERTEX + 5 +43A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 135 + 72 + 164 + 73 + 166 + 0 +VERTEX + 5 +43B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 168 + 72 + 135 + 73 + 166 + 0 +VERTEX + 5 +43C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 168 + 72 + 134 + 73 + 135 + 0 +VERTEX + 5 +43D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 168 + 72 + 170 + 73 + 134 + 0 +VERTEX + 5 +43E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 134 + 72 + 170 + 73 + 172 + 0 +VERTEX + 5 +43F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 132 + 72 + 133 + 73 + 137 + 74 + 129 + 0 +VERTEX + 5 +440 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 134 + 72 + 130 + 73 + 131 + 74 + 133 + 0 +VERTEX + 5 +441 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 133 + 72 + 131 + 73 + 136 + 74 + 137 + 0 +VERTEX + 5 +442 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 147 + 72 + 135 + 73 + 132 + 0 +VERTEX + 5 +443 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 135 + 72 + 134 + 73 + 133 + 74 + 132 + 0 +VERTEX + 5 +444 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 233 + 72 + 137 + 73 + 136 + 0 +VERTEX + 5 +445 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 151 + 72 + 258 + 73 + 259 + 74 + 150 + 0 +VERTEX + 5 +446 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 139 + 72 + 144 + 73 + 145 + 74 + 138 + 0 +VERTEX + 5 +447 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 140 + 72 + 141 + 73 + 139 + 74 + 138 + 0 +VERTEX + 5 +448 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 143 + 72 + 141 + 73 + 140 + 74 + 142 + 0 +VERTEX + 5 +449 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 143 + 72 + 142 + 73 + 243 + 74 + 244 + 0 +VERTEX + 5 +44A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 146 + 72 + 147 + 73 + 145 + 74 + 144 + 0 +VERTEX + 5 +44B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 148 + 72 + 149 + 73 + 147 + 74 + 146 + 0 +VERTEX + 5 +44C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 151 + 72 + 150 + 73 + 149 + 74 + 148 + 0 +VERTEX + 5 +44D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 641 + 72 + 221 + 73 + 182 + 0 +VERTEX + 5 +44E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 182 + 72 + 221 + 73 + 160 + 0 +VERTEX + 5 +44F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 180 + 72 + 160 + 73 + 178 + 0 +VERTEX + 5 +450 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 180 + 72 + 182 + 73 + 160 + 0 +VERTEX + 5 +451 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 221 + 72 + 222 + 73 + 160 + 0 +VERTEX + 5 +452 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 160 + 72 + 222 + 73 + 159 + 0 +VERTEX + 5 +453 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 167 + 72 + 153 + 73 + 169 + 0 +VERTEX + 5 +454 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 167 + 72 + 152 + 73 + 153 + 0 +VERTEX + 5 +455 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 167 + 72 + 165 + 73 + 152 + 0 +VERTEX + 5 +456 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 152 + 72 + 165 + 73 + 176 + 0 +VERTEX + 5 +457 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 188 + 72 + 152 + 73 + 176 + 0 +VERTEX + 5 +458 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 188 + 72 + 185 + 73 + 152 + 0 +VERTEX + 5 +459 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 152 + 72 + 185 + 73 + 157 + 0 +VERTEX + 5 +45A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 158 + 72 + 153 + 73 + 152 + 74 + 157 + 0 +VERTEX + 5 +45B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 222 + 72 + 224 + 73 + 159 + 0 +VERTEX + 5 +45C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 159 + 72 + 224 + 73 + 226 + 0 +VERTEX + 5 +45D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 156 + 72 + 226 + 73 + 228 + 0 +VERTEX + 5 +45E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 220 + 72 + 156 + 73 + 228 + 0 +VERTEX + 5 +45F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 220 + 72 + 261 + 73 + 156 + 0 +VERTEX + 5 +460 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 261 + 72 + 162 + 73 + 154 + 0 +VERTEX + 5 +461 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 261 + 72 + 154 + 73 + 155 + 0 +VERTEX + 5 +462 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 261 + 72 + 155 + 73 + 156 + 0 +VERTEX + 5 +463 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 162 + 72 + 174 + 73 + 154 + 0 +VERTEX + 5 +464 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 154 + 72 + 174 + 73 + 171 + 0 +VERTEX + 5 +465 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 153 + 72 + 171 + 73 + 169 + 0 +VERTEX + 5 +466 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 153 + 72 + 154 + 73 + 171 + 0 +VERTEX + 5 +467 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 158 + 72 + 155 + 73 + 154 + 74 + 153 + 0 +VERTEX + 5 +468 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 156 + 72 + 155 + 73 + 158 + 74 + 159 + 0 +VERTEX + 5 +469 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 226 + 72 + 156 + 73 + 159 + 0 +VERTEX + 5 +46A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 165 + 72 + 163 + 73 + 176 + 0 +VERTEX + 5 +46B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 176 + 72 + 163 + 73 + 260 + 0 +VERTEX + 5 +46C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 185 + 72 + 183 + 73 + 157 + 0 +VERTEX + 5 +46D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 157 + 72 + 183 + 73 + 178 + 0 +VERTEX + 5 +46E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 160 + 72 + 157 + 73 + 178 + 0 +VERTEX + 5 +46F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 160 + 72 + 159 + 73 + 158 + 74 + 157 + 0 +VERTEX + 5 +470 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 261 + 72 + 262 + 73 + 161 + 74 + 162 + 0 +VERTEX + 5 +471 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 174 + 72 + 162 + 73 + 161 + 74 + 173 + 0 +VERTEX + 5 +472 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 163 + 72 + 164 + 73 + 259 + 74 + 260 + 0 +VERTEX + 5 +473 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 165 + 72 + 166 + 73 + 164 + 74 + 163 + 0 +VERTEX + 5 +474 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 167 + 72 + 168 + 73 + 166 + 74 + 165 + 0 +VERTEX + 5 +475 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 169 + 72 + 170 + 73 + 168 + 74 + 167 + 0 +VERTEX + 5 +476 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 171 + 72 + 172 + 73 + 170 + 74 + 169 + 0 +VERTEX + 5 +477 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 174 + 72 + 173 + 73 + 172 + 74 + 171 + 0 +VERTEX + 5 +478 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 260 + 72 + 257 + 73 + 175 + 74 + 176 + 0 +VERTEX + 5 +479 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 188 + 72 + 176 + 73 + 175 + 74 + 187 + 0 +VERTEX + 5 +47A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 178 + 72 + 183 + 73 + 184 + 74 + 177 + 0 +VERTEX + 5 +47B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 179 + 72 + 180 + 73 + 178 + 74 + 177 + 0 +VERTEX + 5 +47C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 182 + 72 + 180 + 73 + 179 + 74 + 181 + 0 +VERTEX + 5 +47D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 182 + 72 + 181 + 73 + 640 + 74 + 641 + 0 +VERTEX + 5 +47E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 185 + 72 + 186 + 73 + 184 + 74 + 183 + 0 +VERTEX + 5 +47F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 188 + 72 + 187 + 73 + 186 + 74 + 185 + 0 +VERTEX + 5 +480 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 610 + 72 + 235 + 73 + 607 + 0 +VERTEX + 5 +481 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 607 + 72 + 235 + 73 + 190 + 0 +VERTEX + 5 +482 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 612 + 72 + 190 + 73 + 615 + 0 +VERTEX + 5 +483 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 612 + 72 + 607 + 73 + 190 + 0 +VERTEX + 5 +484 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 235 + 72 + 237 + 73 + 190 + 0 +VERTEX + 5 +485 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 190 + 72 + 237 + 73 + 234 + 0 +VERTEX + 5 +486 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 196 + 72 + 234 + 73 + 232 + 0 +VERTEX + 5 +487 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 197 + 72 + 232 + 73 + 231 + 0 +VERTEX + 5 +488 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 240 + 72 + 197 + 73 + 231 + 0 +VERTEX + 5 +489 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 240 + 72 + 264 + 73 + 197 + 0 +VERTEX + 5 +48A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 240 + 72 + 263 + 73 + 264 + 0 +VERTEX + 5 +48B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 264 + 72 + 265 + 73 + 197 + 0 +VERTEX + 5 +48C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 197 + 72 + 265 + 73 + 189 + 0 +VERTEX + 5 +48D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 192 + 72 + 189 + 73 + 191 + 0 +VERTEX + 5 +48E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 193 + 72 + 191 + 73 + 213 + 0 +VERTEX + 5 +48F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 211 + 72 + 193 + 73 + 213 + 0 +VERTEX + 5 +490 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 211 + 72 + 195 + 73 + 193 + 0 +VERTEX + 5 +491 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 211 + 72 + 209 + 73 + 195 + 0 +VERTEX + 5 +492 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 195 + 72 + 209 + 73 + 207 + 0 +VERTEX + 5 +493 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 598 + 72 + 207 + 73 + 636 + 0 +VERTEX + 5 +494 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 598 + 72 + 195 + 73 + 207 + 0 +VERTEX + 5 +495 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 598 + 72 + 599 + 73 + 195 + 0 +VERTEX + 5 +496 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 195 + 72 + 599 + 73 + 602 + 0 +VERTEX + 5 +497 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 194 + 72 + 602 + 73 + 614 + 0 +VERTEX + 5 +498 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 615 + 72 + 194 + 73 + 614 + 0 +VERTEX + 5 +499 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 615 + 72 + 190 + 73 + 194 + 0 +VERTEX + 5 +49A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 194 + 72 + 190 + 73 + 196 + 0 +VERTEX + 5 +49B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 192 + 72 + 196 + 73 + 197 + 0 +VERTEX + 5 +49C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 189 + 72 + 192 + 73 + 197 + 0 +VERTEX + 5 +49D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 189 + 72 + 265 + 73 + 191 + 0 +VERTEX + 5 +49E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 191 + 72 + 265 + 73 + 266 + 0 +VERTEX + 5 +49F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 218 + 72 + 266 + 73 + 267 + 0 +VERTEX + 5 +4A0 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 218 + 72 + 191 + 73 + 266 + 0 +VERTEX + 5 +4A1 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 218 + 72 + 215 + 73 + 191 + 0 +VERTEX + 5 +4A2 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 191 + 72 + 215 + 73 + 213 + 0 +VERTEX + 5 +4A3 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 234 + 72 + 196 + 73 + 190 + 0 +VERTEX + 5 +4A4 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 192 + 72 + 193 + 73 + 194 + 0 +VERTEX + 5 +4A5 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 196 + 72 + 192 + 73 + 194 + 0 +VERTEX + 5 +4A6 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 193 + 72 + 192 + 73 + 191 + 0 +VERTEX + 5 +4A7 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 602 + 72 + 194 + 73 + 195 + 0 +VERTEX + 5 +4A8 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 195 + 72 + 194 + 73 + 193 + 0 +VERTEX + 5 +4A9 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 197 + 72 + 196 + 73 + 232 + 0 +VERTEX + 5 +4AA +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 639 + 72 + 208 + 73 + 635 + 0 +VERTEX + 5 +4AB +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 635 + 72 + 208 + 73 + 199 + 0 +VERTEX + 5 +4AC +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 632 + 72 + 199 + 73 + 629 + 0 +VERTEX + 5 +4AD +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 632 + 72 + 635 + 73 + 199 + 0 +VERTEX + 5 +4AE +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 208 + 72 + 210 + 73 + 199 + 0 +VERTEX + 5 +4AF +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 199 + 72 + 210 + 73 + 212 + 0 +VERTEX + 5 +4B0 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 205 + 72 + 212 + 73 + 214 + 0 +VERTEX + 5 +4B1 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 206 + 72 + 214 + 73 + 216 + 0 +VERTEX + 5 +4B2 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 217 + 72 + 206 + 73 + 216 + 0 +VERTEX + 5 +4B3 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 217 + 72 + 269 + 73 + 206 + 0 +VERTEX + 5 +4B4 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 217 + 72 + 268 + 73 + 269 + 0 +VERTEX + 5 +4B5 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 269 + 72 + 270 + 73 + 206 + 0 +VERTEX + 5 +4B6 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 206 + 72 + 270 + 73 + 198 + 0 +VERTEX + 5 +4B7 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 201 + 72 + 198 + 73 + 200 + 0 +VERTEX + 5 +4B8 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 202 + 72 + 200 + 73 + 230 + 0 +VERTEX + 5 +4B9 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 227 + 72 + 202 + 73 + 230 + 0 +VERTEX + 5 +4BA +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 227 + 72 + 204 + 73 + 202 + 0 +VERTEX + 5 +4BB +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 227 + 72 + 225 + 73 + 204 + 0 +VERTEX + 5 +4BC +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 204 + 72 + 225 + 73 + 223 + 0 +VERTEX + 5 +4BD +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 618 + 72 + 223 + 73 + 643 + 0 +VERTEX + 5 +4BE +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 618 + 72 + 204 + 73 + 223 + 0 +VERTEX + 5 +4BF +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 618 + 72 + 620 + 73 + 204 + 0 +VERTEX + 5 +4C0 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 204 + 72 + 620 + 73 + 623 + 0 +VERTEX + 5 +4C1 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 203 + 72 + 623 + 73 + 627 + 0 +VERTEX + 5 +4C2 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 629 + 72 + 203 + 73 + 627 + 0 +VERTEX + 5 +4C3 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 629 + 72 + 199 + 73 + 203 + 0 +VERTEX + 5 +4C4 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 203 + 72 + 199 + 73 + 205 + 0 +VERTEX + 5 +4C5 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 201 + 72 + 205 + 73 + 206 + 0 +VERTEX + 5 +4C6 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 198 + 72 + 201 + 73 + 206 + 0 +VERTEX + 5 +4C7 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 198 + 72 + 270 + 73 + 200 + 0 +VERTEX + 5 +4C8 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 200 + 72 + 270 + 73 + 271 + 0 +VERTEX + 5 +4C9 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 219 + 72 + 271 + 73 + 272 + 0 +VERTEX + 5 +4CA +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 219 + 72 + 200 + 73 + 271 + 0 +VERTEX + 5 +4CB +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 219 + 72 + 229 + 73 + 200 + 0 +VERTEX + 5 +4CC +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 200 + 72 + 229 + 73 + 230 + 0 +VERTEX + 5 +4CD +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 212 + 72 + 205 + 73 + 199 + 0 +VERTEX + 5 +4CE +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 201 + 72 + 202 + 73 + 203 + 0 +VERTEX + 5 +4CF +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 205 + 72 + 201 + 73 + 203 + 0 +VERTEX + 5 +4D0 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 202 + 72 + 201 + 73 + 200 + 0 +VERTEX + 5 +4D1 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 623 + 72 + 203 + 73 + 204 + 0 +VERTEX + 5 +4D2 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 204 + 72 + 203 + 73 + 202 + 0 +VERTEX + 5 +4D3 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 206 + 72 + 205 + 73 + 214 + 0 +VERTEX + 5 +4D4 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 218 + 72 + 267 + 73 + 268 + 74 + 217 + 0 +VERTEX + 5 +4D5 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 207 + 72 + 208 + 73 + 639 + 74 + 636 + 0 +VERTEX + 5 +4D6 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 209 + 72 + 210 + 73 + 208 + 74 + 207 + 0 +VERTEX + 5 +4D7 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 211 + 72 + 212 + 73 + 210 + 74 + 209 + 0 +VERTEX + 5 +4D8 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 213 + 72 + 214 + 73 + 212 + 74 + 211 + 0 +VERTEX + 5 +4D9 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 215 + 72 + 216 + 73 + 214 + 74 + 213 + 0 +VERTEX + 5 +4DA +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 218 + 72 + 217 + 73 + 216 + 74 + 215 + 0 +VERTEX + 5 +4DB +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 272 + 72 + 261 + 73 + 220 + 74 + 219 + 0 +VERTEX + 5 +4DC +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 219 + 72 + 220 + 73 + 229 + 0 +VERTEX + 5 +4DD +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 229 + 72 + 220 + 73 + 228 + 0 +VERTEX + 5 +4DE +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 230 + 72 + 228 + 73 + 226 + 0 +VERTEX + 5 +4DF +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 227 + 72 + 226 + 73 + 224 + 0 +VERTEX + 5 +4E0 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 225 + 72 + 224 + 73 + 222 + 0 +VERTEX + 5 +4E1 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 223 + 72 + 222 + 73 + 221 + 0 +VERTEX + 5 +4E2 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 642 + 72 + 221 + 73 + 641 + 0 +VERTEX + 5 +4E3 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 642 + 72 + 223 + 73 + 221 + 0 +VERTEX + 5 +4E4 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 642 + 72 + 643 + 73 + 223 + 0 +VERTEX + 5 +4E5 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 223 + 72 + 225 + 73 + 222 + 0 +VERTEX + 5 +4E6 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 225 + 72 + 227 + 73 + 224 + 0 +VERTEX + 5 +4E7 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 227 + 72 + 230 + 73 + 226 + 0 +VERTEX + 5 +4E8 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 230 + 72 + 229 + 73 + 228 + 0 +VERTEX + 5 +4E9 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 241 + 72 + 262 + 73 + 263 + 74 + 240 + 0 +VERTEX + 5 +4EA +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 242 + 72 + 240 + 73 + 231 + 0 +VERTEX + 5 +4EB +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 232 + 72 + 242 + 73 + 231 + 0 +VERTEX + 5 +4EC +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 232 + 72 + 233 + 73 + 242 + 0 +VERTEX + 5 +4ED +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 232 + 72 + 234 + 73 + 233 + 0 +VERTEX + 5 +4EE +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 233 + 72 + 234 + 73 + 238 + 0 +VERTEX + 5 +4EF +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 238 + 72 + 234 + 73 + 237 + 0 +VERTEX + 5 +4F0 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 239 + 72 + 237 + 73 + 235 + 0 +VERTEX + 5 +4F1 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 236 + 72 + 235 + 73 + 610 + 0 +VERTEX + 5 +4F2 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 243 + 72 + 236 + 73 + 610 + 0 +VERTEX + 5 +4F3 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 236 + 72 + 239 + 73 + 235 + 0 +VERTEX + 5 +4F4 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 239 + 72 + 238 + 73 + 237 + 0 +VERTEX + 5 +4F5 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 242 + 72 + 241 + 73 + 240 + 0 +VERTEX + 5 +4F6 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 610 + 72 + 608 + 73 + 244 + 74 + 243 + 0 +VERTEX + 5 +4F7 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -16 + 72 + 2 + 73 + 1 + 0 +VERTEX + 5 +4F8 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 260 + 72 + 259 + 73 + 258 + 74 + 257 + 0 +VERTEX + 5 +4F9 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -251 + 72 + 356 + 73 + 252 + 0 +VERTEX + 5 +4FA +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 409 + 72 + 292 + 73 + 414 + 0 +VERTEX + 5 +4FB +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 414 + 72 + 292 + 73 + 291 + 0 +VERTEX + 5 +4FC +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 284 + 72 + 291 + 73 + 290 + 0 +VERTEX + 5 +4FD +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 276 + 72 + 290 + 73 + 289 + 0 +VERTEX + 5 +4FE +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 288 + 72 + 276 + 73 + 289 + 0 +VERTEX + 5 +4FF +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 288 + 72 + 280 + 73 + 276 + 0 +VERTEX + 5 +500 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 288 + 72 + 287 + 73 + 280 + 0 +VERTEX + 5 +501 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 280 + 72 + 287 + 73 + 286 + 0 +VERTEX + 5 +502 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 273 + 72 + 286 + 73 + 285 + 0 +VERTEX + 5 +503 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 273 + 72 + 280 + 73 + 286 + 0 +VERTEX + 5 +504 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 273 + 72 + 282 + 73 + 280 + 0 +VERTEX + 5 +505 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 273 + 72 + 274 + 73 + 282 + 0 +VERTEX + 5 +506 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 282 + 72 + 274 + 73 + 279 + 0 +VERTEX + 5 +507 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 278 + 72 + 279 + 73 + 323 + 0 +VERTEX + 5 +508 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 324 + 72 + 278 + 73 + 323 + 0 +VERTEX + 5 +509 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 324 + 72 + 325 + 73 + 278 + 0 +VERTEX + 5 +50A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 278 + 72 + 325 + 73 + 277 + 0 +VERTEX + 5 +50B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 281 + 72 + 277 + 73 + 283 + 0 +VERTEX + 5 +50C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 276 + 72 + 283 + 73 + 284 + 0 +VERTEX + 5 +50D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 290 + 72 + 276 + 73 + 284 + 0 +VERTEX + 5 +50E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 274 + 72 + 275 + 73 + 279 + 0 +VERTEX + 5 +50F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 279 + 72 + 275 + 73 + 321 + 0 +VERTEX + 5 +510 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 322 + 72 + 279 + 73 + 321 + 0 +VERTEX + 5 +511 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 322 + 72 + 323 + 73 + 279 + 0 +VERTEX + 5 +512 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 275 + 72 + 320 + 73 + 321 + 0 +VERTEX + 5 +513 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 325 + 72 + 326 + 73 + 277 + 0 +VERTEX + 5 +514 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 277 + 72 + 326 + 73 + 410 + 0 +VERTEX + 5 +515 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 411 + 72 + 277 + 73 + 410 + 0 +VERTEX + 5 +516 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 411 + 72 + 283 + 73 + 277 + 0 +VERTEX + 5 +517 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 411 + 72 + 412 + 73 + 283 + 0 +VERTEX + 5 +518 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 283 + 72 + 412 + 73 + 413 + 0 +VERTEX + 5 +519 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 284 + 72 + 413 + 73 + 414 + 0 +VERTEX + 5 +51A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 291 + 72 + 284 + 73 + 414 + 0 +VERTEX + 5 +51B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 326 + 72 + 675 + 73 + 410 + 0 +VERTEX + 5 +51C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 276 + 72 + 280 + 73 + 281 + 0 +VERTEX + 5 +51D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 283 + 72 + 276 + 73 + 281 + 0 +VERTEX + 5 +51E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 277 + 72 + 281 + 73 + 278 + 0 +VERTEX + 5 +51F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 278 + 72 + 281 + 73 + 282 + 0 +VERTEX + 5 +520 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 279 + 72 + 278 + 73 + 282 + 0 +VERTEX + 5 +521 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 282 + 72 + 281 + 73 + 280 + 0 +VERTEX + 5 +522 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 284 + 72 + 283 + 73 + 413 + 0 +VERTEX + 5 +523 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 292 + 72 + 409 + 73 + 408 + 74 + 306 + 0 +VERTEX + 5 +524 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 286 + 72 + 294 + 73 + 293 + 74 + 285 + 0 +VERTEX + 5 +525 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 287 + 72 + 295 + 73 + 294 + 74 + 286 + 0 +VERTEX + 5 +526 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 288 + 72 + 298 + 73 + 295 + 74 + 287 + 0 +VERTEX + 5 +527 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 289 + 72 + 296 + 73 + 298 + 74 + 288 + 0 +VERTEX + 5 +528 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 290 + 72 + 297 + 73 + 296 + 74 + 289 + 0 +VERTEX + 5 +529 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 291 + 72 + 305 + 73 + 297 + 74 + 290 + 0 +VERTEX + 5 +52A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 292 + 72 + 306 + 73 + 305 + 74 + 291 + 0 +VERTEX + 5 +52B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 379 + 72 + 313 + 73 + 380 + 0 +VERTEX + 5 +52C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 380 + 72 + 313 + 73 + 308 + 0 +VERTEX + 5 +52D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 381 + 72 + 308 + 73 + 382 + 0 +VERTEX + 5 +52E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 381 + 72 + 380 + 73 + 308 + 0 +VERTEX + 5 +52F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 313 + 72 + 319 + 73 + 308 + 0 +VERTEX + 5 +530 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 308 + 72 + 319 + 73 + 307 + 0 +VERTEX + 5 +531 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 309 + 72 + 307 + 73 + 302 + 0 +VERTEX + 5 +532 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 299 + 72 + 302 + 73 + 303 + 0 +VERTEX + 5 +533 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 294 + 72 + 303 + 73 + 293 + 0 +VERTEX + 5 +534 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 294 + 72 + 299 + 73 + 303 + 0 +VERTEX + 5 +535 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 294 + 72 + 295 + 73 + 299 + 0 +VERTEX + 5 +536 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 299 + 72 + 295 + 73 + 298 + 0 +VERTEX + 5 +537 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 312 + 72 + 298 + 73 + 296 + 0 +VERTEX + 5 +538 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 297 + 72 + 312 + 73 + 296 + 0 +VERTEX + 5 +539 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 297 + 72 + 311 + 73 + 312 + 0 +VERTEX + 5 +53A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 297 + 72 + 305 + 73 + 311 + 0 +VERTEX + 5 +53B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 311 + 72 + 305 + 73 + 384 + 0 +VERTEX + 5 +53C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 383 + 72 + 311 + 73 + 384 + 0 +VERTEX + 5 +53D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 383 + 72 + 385 + 73 + 311 + 0 +VERTEX + 5 +53E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 311 + 72 + 385 + 73 + 310 + 0 +VERTEX + 5 +53F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 312 + 72 + 310 + 73 + 309 + 0 +VERTEX + 5 +540 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 299 + 72 + 309 + 73 + 302 + 0 +VERTEX + 5 +541 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 299 + 72 + 312 + 73 + 309 + 0 +VERTEX + 5 +542 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 299 + 72 + 298 + 73 + 312 + 0 +VERTEX + 5 +543 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 319 + 72 + 314 + 73 + 307 + 0 +VERTEX + 5 +544 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 307 + 72 + 314 + 73 + 315 + 0 +VERTEX + 5 +545 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 301 + 72 + 315 + 73 + 316 + 0 +VERTEX + 5 +546 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 317 + 72 + 301 + 73 + 316 + 0 +VERTEX + 5 +547 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 317 + 72 + 300 + 73 + 301 + 0 +VERTEX + 5 +548 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 317 + 72 + 318 + 73 + 300 + 0 +VERTEX + 5 +549 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 300 + 72 + 304 + 73 + 301 + 0 +VERTEX + 5 +54A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 301 + 72 + 304 + 73 + 302 + 0 +VERTEX + 5 +54B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 307 + 72 + 301 + 73 + 302 + 0 +VERTEX + 5 +54C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 307 + 72 + 315 + 73 + 301 + 0 +VERTEX + 5 +54D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 304 + 72 + 303 + 73 + 302 + 0 +VERTEX + 5 +54E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 305 + 72 + 306 + 73 + 384 + 0 +VERTEX + 5 +54F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 384 + 72 + 306 + 73 + 408 + 0 +VERTEX + 5 +550 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 385 + 72 + 386 + 73 + 310 + 0 +VERTEX + 5 +551 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 310 + 72 + 386 + 73 + 387 + 0 +VERTEX + 5 +552 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 382 + 72 + 310 + 73 + 387 + 0 +VERTEX + 5 +553 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 382 + 72 + 308 + 73 + 310 + 0 +VERTEX + 5 +554 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 310 + 72 + 308 + 73 + 309 + 0 +VERTEX + 5 +555 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 309 + 72 + 308 + 73 + 307 + 0 +VERTEX + 5 +556 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 312 + 72 + 311 + 73 + 310 + 0 +VERTEX + 5 +557 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 379 + 72 + 666 + 73 + 313 + 0 +VERTEX + 5 +558 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 329 + 72 + 317 + 73 + 316 + 0 +VERTEX + 5 +559 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 343 + 72 + 316 + 73 + 315 + 0 +VERTEX + 5 +55A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 330 + 72 + 315 + 73 + 314 + 0 +VERTEX + 5 +55B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 331 + 72 + 314 + 73 + 319 + 0 +VERTEX + 5 +55C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 338 + 72 + 319 + 73 + 313 + 0 +VERTEX + 5 +55D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 666 + 72 + 338 + 73 + 313 + 0 +VERTEX + 5 +55E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 331 + 72 + 330 + 73 + 314 + 0 +VERTEX + 5 +55F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 330 + 72 + 343 + 73 + 315 + 0 +VERTEX + 5 +560 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 343 + 72 + 329 + 73 + 316 + 0 +VERTEX + 5 +561 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 329 + 72 + 328 + 73 + 317 + 0 +VERTEX + 5 +562 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 318 + 72 + 317 + 73 + 328 + 74 + 327 + 0 +VERTEX + 5 +563 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 331 + 72 + 319 + 73 + 338 + 0 +VERTEX + 5 +564 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 321 + 72 + 320 + 73 + 356 + 74 + 357 + 0 +VERTEX + 5 +565 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 355 + 72 + 321 + 73 + 357 + 0 +VERTEX + 5 +566 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 355 + 72 + 322 + 73 + 321 + 0 +VERTEX + 5 +567 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 355 + 72 + 323 + 73 + 322 + 0 +VERTEX + 5 +568 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 355 + 72 + 354 + 73 + 323 + 0 +VERTEX + 5 +569 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 323 + 72 + 354 + 73 + 368 + 0 +VERTEX + 5 +56A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 324 + 72 + 368 + 73 + 325 + 0 +VERTEX + 5 +56B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 324 + 72 + 323 + 73 + 368 + 0 +VERTEX + 5 +56C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 368 + 72 + 369 + 73 + 325 + 0 +VERTEX + 5 +56D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 325 + 72 + 369 + 73 + 366 + 0 +VERTEX + 5 +56E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 326 + 72 + 366 + 73 + 675 + 0 +VERTEX + 5 +56F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 326 + 72 + 325 + 73 + 366 + 0 +VERTEX + 5 +570 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 366 + 72 + 674 + 73 + 675 + 0 +VERTEX + 5 +571 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 677 + 72 + 346 + 73 + 657 + 0 +VERTEX + 5 +572 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 657 + 72 + 346 + 73 + 340 + 0 +VERTEX + 5 +573 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 669 + 72 + 340 + 73 + 658 + 0 +VERTEX + 5 +574 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 669 + 72 + 657 + 73 + 340 + 0 +VERTEX + 5 +575 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 346 + 72 + 351 + 73 + 340 + 0 +VERTEX + 5 +576 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 340 + 72 + 351 + 73 + 339 + 0 +VERTEX + 5 +577 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 341 + 72 + 339 + 73 + 334 + 0 +VERTEX + 5 +578 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 345 + 72 + 334 + 73 + 342 + 0 +VERTEX + 5 +579 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 344 + 72 + 342 + 73 + 336 + 0 +VERTEX + 5 +57A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 328 + 72 + 336 + 73 + 327 + 0 +VERTEX + 5 +57B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 328 + 72 + 344 + 73 + 336 + 0 +VERTEX + 5 +57C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 328 + 72 + 329 + 73 + 344 + 0 +VERTEX + 5 +57D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 344 + 72 + 329 + 73 + 343 + 0 +VERTEX + 5 +57E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 345 + 72 + 343 + 73 + 330 + 0 +VERTEX + 5 +57F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 331 + 72 + 345 + 73 + 330 + 0 +VERTEX + 5 +580 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 331 + 72 + 332 + 73 + 345 + 0 +VERTEX + 5 +581 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 331 + 72 + 338 + 73 + 332 + 0 +VERTEX + 5 +582 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 332 + 72 + 338 + 73 + 667 + 0 +VERTEX + 5 +583 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 664 + 72 + 332 + 73 + 667 + 0 +VERTEX + 5 +584 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 664 + 72 + 662 + 73 + 332 + 0 +VERTEX + 5 +585 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 332 + 72 + 662 + 73 + 341 + 0 +VERTEX + 5 +586 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 345 + 72 + 341 + 73 + 334 + 0 +VERTEX + 5 +587 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 345 + 72 + 332 + 73 + 341 + 0 +VERTEX + 5 +588 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 351 + 72 + 352 + 73 + 339 + 0 +VERTEX + 5 +589 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 339 + 72 + 352 + 73 + 350 + 0 +VERTEX + 5 +58A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 335 + 72 + 350 + 73 + 349 + 0 +VERTEX + 5 +58B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 348 + 72 + 335 + 73 + 349 + 0 +VERTEX + 5 +58C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 348 + 72 + 333 + 73 + 335 + 0 +VERTEX + 5 +58D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 348 + 72 + 347 + 73 + 333 + 0 +VERTEX + 5 +58E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 333 + 72 + 337 + 73 + 335 + 0 +VERTEX + 5 +58F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 335 + 72 + 337 + 73 + 342 + 0 +VERTEX + 5 +590 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 339 + 72 + 342 + 73 + 334 + 0 +VERTEX + 5 +591 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 339 + 72 + 335 + 73 + 342 + 0 +VERTEX + 5 +592 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 339 + 72 + 350 + 73 + 335 + 0 +VERTEX + 5 +593 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 337 + 72 + 336 + 73 + 342 + 0 +VERTEX + 5 +594 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 338 + 72 + 666 + 73 + 667 + 0 +VERTEX + 5 +595 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 662 + 72 + 661 + 73 + 341 + 0 +VERTEX + 5 +596 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 341 + 72 + 661 + 73 + 659 + 0 +VERTEX + 5 +597 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 658 + 72 + 341 + 73 + 659 + 0 +VERTEX + 5 +598 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 658 + 72 + 340 + 73 + 341 + 0 +VERTEX + 5 +599 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 341 + 72 + 340 + 73 + 339 + 0 +VERTEX + 5 +59A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 342 + 72 + 344 + 73 + 345 + 0 +VERTEX + 5 +59B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 345 + 72 + 344 + 73 + 343 + 0 +VERTEX + 5 +59C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 679 + 72 + 365 + 73 + 678 + 0 +VERTEX + 5 +59D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 678 + 72 + 365 + 73 + 346 + 0 +VERTEX + 5 +59E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 677 + 72 + 678 + 73 + 346 + 0 +VERTEX + 5 +59F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 346 + 72 + 365 + 73 + 351 + 0 +VERTEX + 5 +5A0 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 351 + 72 + 365 + 73 + 363 + 0 +VERTEX + 5 +5A1 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 352 + 72 + 363 + 73 + 362 + 0 +VERTEX + 5 +5A2 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 350 + 72 + 362 + 73 + 364 + 0 +VERTEX + 5 +5A3 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 349 + 72 + 364 + 73 + 361 + 0 +VERTEX + 5 +5A4 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 348 + 72 + 361 + 73 + 360 + 0 +VERTEX + 5 +5A5 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 347 + 72 + 348 + 73 + 360 + 74 + 353 + 0 +VERTEX + 5 +5A6 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 348 + 72 + 349 + 73 + 361 + 0 +VERTEX + 5 +5A7 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 349 + 72 + 350 + 73 + 364 + 0 +VERTEX + 5 +5A8 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 350 + 72 + 352 + 73 + 362 + 0 +VERTEX + 5 +5A9 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 352 + 72 + 351 + 73 + 363 + 0 +VERTEX + 5 +5AA +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 353 + 72 + 360 + 73 + 371 + 0 +VERTEX + 5 +5AB +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 371 + 72 + 360 + 73 + 370 + 0 +VERTEX + 5 +5AC +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 372 + 72 + 370 + 73 + 373 + 0 +VERTEX + 5 +5AD +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 359 + 72 + 373 + 73 + 374 + 0 +VERTEX + 5 +5AE +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 354 + 72 + 374 + 73 + 368 + 0 +VERTEX + 5 +5AF +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 354 + 72 + 359 + 73 + 374 + 0 +VERTEX + 5 +5B0 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 354 + 72 + 355 + 73 + 359 + 0 +VERTEX + 5 +5B1 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 359 + 72 + 355 + 73 + 357 + 0 +VERTEX + 5 +5B2 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 358 + 72 + 357 + 73 + 356 + 0 +VERTEX + 5 +5B3 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 358 + 72 + 359 + 73 + 357 + 0 +VERTEX + 5 +5B4 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 358 + 72 + 372 + 73 + 359 + 0 +VERTEX + 5 +5B5 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 359 + 72 + 372 + 73 + 373 + 0 +VERTEX + 5 +5B6 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 360 + 72 + 361 + 73 + 370 + 0 +VERTEX + 5 +5B7 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 370 + 72 + 361 + 73 + 364 + 0 +VERTEX + 5 +5B8 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 378 + 72 + 364 + 73 + 362 + 0 +VERTEX + 5 +5B9 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 363 + 72 + 378 + 73 + 362 + 0 +VERTEX + 5 +5BA +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 363 + 72 + 377 + 73 + 378 + 0 +VERTEX + 5 +5BB +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 363 + 72 + 365 + 73 + 377 + 0 +VERTEX + 5 +5BC +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 377 + 72 + 365 + 73 + 650 + 0 +VERTEX + 5 +5BD +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 651 + 72 + 377 + 73 + 650 + 0 +VERTEX + 5 +5BE +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 651 + 72 + 649 + 73 + 377 + 0 +VERTEX + 5 +5BF +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 377 + 72 + 649 + 73 + 376 + 0 +VERTEX + 5 +5C0 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 378 + 72 + 376 + 73 + 375 + 0 +VERTEX + 5 +5C1 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 370 + 72 + 375 + 73 + 373 + 0 +VERTEX + 5 +5C2 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 370 + 72 + 378 + 73 + 375 + 0 +VERTEX + 5 +5C3 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 370 + 72 + 364 + 73 + 378 + 0 +VERTEX + 5 +5C4 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 365 + 72 + 679 + 73 + 650 + 0 +VERTEX + 5 +5C5 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 649 + 72 + 648 + 73 + 376 + 0 +VERTEX + 5 +5C6 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 376 + 72 + 648 + 73 + 646 + 0 +VERTEX + 5 +5C7 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 367 + 72 + 646 + 73 + 654 + 0 +VERTEX + 5 +5C8 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 645 + 72 + 367 + 73 + 654 + 0 +VERTEX + 5 +5C9 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 645 + 72 + 366 + 73 + 367 + 0 +VERTEX + 5 +5CA +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 645 + 72 + 674 + 73 + 366 + 0 +VERTEX + 5 +5CB +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 366 + 72 + 369 + 73 + 367 + 0 +VERTEX + 5 +5CC +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 367 + 72 + 369 + 73 + 374 + 0 +VERTEX + 5 +5CD +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 376 + 72 + 374 + 73 + 375 + 0 +VERTEX + 5 +5CE +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 376 + 72 + 367 + 73 + 374 + 0 +VERTEX + 5 +5CF +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 376 + 72 + 646 + 73 + 367 + 0 +VERTEX + 5 +5D0 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 369 + 72 + 368 + 73 + 374 + 0 +VERTEX + 5 +5D1 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 372 + 72 + 371 + 73 + 370 + 0 +VERTEX + 5 +5D2 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 375 + 72 + 374 + 73 + 373 + 0 +VERTEX + 5 +5D3 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 378 + 72 + 377 + 73 + 376 + 0 +VERTEX + 5 +5D4 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 547 + 72 + 668 + 73 + 666 + 74 + 379 + 0 +VERTEX + 5 +5D5 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 570 + 72 + 547 + 73 + 379 + 74 + 380 + 0 +VERTEX + 5 +5D6 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 381 + 72 + 570 + 73 + 380 + 0 +VERTEX + 5 +5D7 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 381 + 72 + 571 + 73 + 570 + 0 +VERTEX + 5 +5D8 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 381 + 72 + 382 + 73 + 571 + 0 +VERTEX + 5 +5D9 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 571 + 72 + 382 + 73 + 387 + 0 +VERTEX + 5 +5DA +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 569 + 72 + 387 + 73 + 386 + 0 +VERTEX + 5 +5DB +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 383 + 72 + 572 + 73 + 385 + 0 +VERTEX + 5 +5DC +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 383 + 72 + 573 + 73 + 572 + 0 +VERTEX + 5 +5DD +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 383 + 72 + 384 + 73 + 573 + 0 +VERTEX + 5 +5DE +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 543 + 72 + 573 + 73 + 384 + 74 + 408 + 0 +VERTEX + 5 +5DF +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 569 + 72 + 386 + 73 + 385 + 74 + 572 + 0 +VERTEX + 5 +5E0 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 569 + 72 + 571 + 73 + 387 + 0 +VERTEX + 5 +5E1 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -272 + 72 + 262 + 73 + 261 + 0 +VERTEX + 5 +5E2 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 436 + 72 + 415 + 73 + 409 + 74 + 414 + 0 +VERTEX + 5 +5E3 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 440 + 72 + 410 + 73 + 675 + 74 + 672 + 0 +VERTEX + 5 +5E4 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 439 + 72 + 411 + 73 + 410 + 74 + 440 + 0 +VERTEX + 5 +5E5 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 438 + 72 + 412 + 73 + 411 + 74 + 439 + 0 +VERTEX + 5 +5E6 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 437 + 72 + 413 + 73 + 412 + 74 + 438 + 0 +VERTEX + 5 +5E7 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 436 + 72 + 414 + 73 + 413 + 74 + 437 + 0 +VERTEX + 5 +5E8 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 425 + 72 + 593 + 73 + 594 + 74 + 560 + 0 +VERTEX + 5 +5E9 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 432 + 72 + 427 + 73 + 554 + 74 + 557 + 0 +VERTEX + 5 +5EA +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 553 + 72 + 433 + 73 + 432 + 74 + 557 + 0 +VERTEX + 5 +5EB +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 457 + 72 + 552 + 73 + 434 + 0 +VERTEX + 5 +5EC +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 457 + 72 + 433 + 73 + 553 + 74 + 552 + 0 +VERTEX + 5 +5ED +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 552 + 72 + 551 + 73 + 434 + 0 +VERTEX + 5 +5EE +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 434 + 72 + 551 + 73 + 435 + 0 +VERTEX + 5 +5EF +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 435 + 72 + 551 + 73 + 591 + 0 +VERTEX + 5 +5F0 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 416 + 72 + 424 + 73 + 550 + 74 + 549 + 0 +VERTEX + 5 +5F1 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 543 + 72 + 415 + 73 + 416 + 74 + 549 + 0 +VERTEX + 5 +5F2 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 435 + 72 + 591 + 73 + 550 + 74 + 424 + 0 +VERTEX + 5 +5F3 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 429 + 72 + 555 + 73 + 554 + 74 + 427 + 0 +VERTEX + 5 +5F4 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 430 + 72 + 556 + 73 + 555 + 74 + 429 + 0 +VERTEX + 5 +5F5 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 447 + 72 + 579 + 73 + 556 + 74 + 430 + 0 +VERTEX + 5 +5F6 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 423 + 72 + 562 + 73 + 579 + 74 + 447 + 0 +VERTEX + 5 +5F7 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 422 + 72 + 561 + 73 + 562 + 74 + 423 + 0 +VERTEX + 5 +5F8 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 425 + 72 + 560 + 73 + 561 + 74 + 422 + 0 +VERTEX + 5 +5F9 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 473 + 72 + 471 + 73 + 426 + 0 +VERTEX + 5 +5FA +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 441 + 72 + 473 + 73 + 426 + 0 +VERTEX + 5 +5FB +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 441 + 72 + 474 + 73 + 473 + 0 +VERTEX + 5 +5FC +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 441 + 72 + 421 + 73 + 474 + 0 +VERTEX + 5 +5FD +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 474 + 72 + 421 + 73 + 495 + 0 +VERTEX + 5 +5FE +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 495 + 72 + 421 + 73 + 420 + 0 +VERTEX + 5 +5FF +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 475 + 72 + 420 + 73 + 419 + 0 +VERTEX + 5 +600 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 477 + 72 + 419 + 73 + 444 + 0 +VERTEX + 5 +601 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 476 + 72 + 444 + 73 + 418 + 0 +VERTEX + 5 +602 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 463 + 72 + 418 + 73 + 417 + 0 +VERTEX + 5 +603 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 463 + 72 + 417 + 73 + 672 + 74 + 673 + 0 +VERTEX + 5 +604 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 463 + 72 + 476 + 73 + 418 + 0 +VERTEX + 5 +605 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 476 + 72 + 477 + 73 + 444 + 0 +VERTEX + 5 +606 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 477 + 72 + 475 + 73 + 419 + 0 +VERTEX + 5 +607 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 475 + 72 + 495 + 73 + 420 + 0 +VERTEX + 5 +608 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 471 + 72 + 488 + 73 + 426 + 0 +VERTEX + 5 +609 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 426 + 72 + 488 + 73 + 593 + 0 +VERTEX + 5 +60A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 593 + 72 + 488 + 73 + 479 + 0 +VERTEX + 5 +60B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 592 + 72 + 593 + 73 + 479 + 0 +VERTEX + 5 +60C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 672 + 72 + 417 + 73 + 440 + 0 +VERTEX + 5 +60D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 440 + 72 + 417 + 73 + 445 + 0 +VERTEX + 5 +60E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 437 + 72 + 442 + 73 + 450 + 0 +VERTEX + 5 +60F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 436 + 72 + 450 + 73 + 461 + 0 +VERTEX + 5 +610 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 416 + 72 + 461 + 73 + 424 + 0 +VERTEX + 5 +611 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 416 + 72 + 436 + 73 + 461 + 0 +VERTEX + 5 +612 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 416 + 72 + 415 + 73 + 436 + 0 +VERTEX + 5 +613 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 417 + 72 + 418 + 73 + 445 + 0 +VERTEX + 5 +614 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 445 + 72 + 418 + 73 + 444 + 0 +VERTEX + 5 +615 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 446 + 72 + 444 + 73 + 419 + 0 +VERTEX + 5 +616 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 420 + 72 + 446 + 73 + 419 + 0 +VERTEX + 5 +617 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 420 + 72 + 449 + 73 + 446 + 0 +VERTEX + 5 +618 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 420 + 72 + 421 + 73 + 449 + 0 +VERTEX + 5 +619 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 449 + 72 + 421 + 73 + 441 + 0 +VERTEX + 5 +61A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 448 + 72 + 441 + 73 + 426 + 0 +VERTEX + 5 +61B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 422 + 72 + 426 + 73 + 425 + 0 +VERTEX + 5 +61C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 422 + 72 + 448 + 73 + 426 + 0 +VERTEX + 5 +61D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 422 + 72 + 423 + 73 + 448 + 0 +VERTEX + 5 +61E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 448 + 72 + 423 + 73 + 447 + 0 +VERTEX + 5 +61F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 451 + 72 + 447 + 73 + 452 + 0 +VERTEX + 5 +620 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 456 + 72 + 452 + 73 + 458 + 0 +VERTEX + 5 +621 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 460 + 72 + 458 + 73 + 462 + 0 +VERTEX + 5 +622 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 461 + 72 + 462 + 73 + 435 + 0 +VERTEX + 5 +623 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 424 + 72 + 461 + 73 + 435 + 0 +VERTEX + 5 +624 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 426 + 72 + 593 + 73 + 425 + 0 +VERTEX + 5 +625 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 447 + 72 + 430 + 73 + 431 + 0 +VERTEX + 5 +626 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 452 + 72 + 431 + 73 + 458 + 0 +VERTEX + 5 +627 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 452 + 72 + 447 + 73 + 431 + 0 +VERTEX + 5 +628 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 427 + 72 + 428 + 73 + 429 + 0 +VERTEX + 5 +629 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 427 + 72 + 432 + 73 + 428 + 0 +VERTEX + 5 +62A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 428 + 72 + 432 + 73 + 459 + 0 +VERTEX + 5 +62B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 431 + 72 + 459 + 73 + 458 + 0 +VERTEX + 5 +62C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 431 + 72 + 428 + 73 + 459 + 0 +VERTEX + 5 +62D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 431 + 72 + 429 + 73 + 428 + 0 +VERTEX + 5 +62E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 431 + 72 + 430 + 73 + 429 + 0 +VERTEX + 5 +62F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 432 + 72 + 433 + 73 + 459 + 0 +VERTEX + 5 +630 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 459 + 72 + 433 + 73 + 457 + 0 +VERTEX + 5 +631 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 462 + 72 + 457 + 73 + 434 + 0 +VERTEX + 5 +632 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 435 + 72 + 462 + 73 + 434 + 0 +VERTEX + 5 +633 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 436 + 72 + 437 + 73 + 450 + 0 +VERTEX + 5 +634 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 437 + 72 + 438 + 73 + 442 + 0 +VERTEX + 5 +635 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 439 + 72 + 443 + 73 + 442 + 74 + 438 + 0 +VERTEX + 5 +636 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 440 + 72 + 445 + 73 + 443 + 74 + 439 + 0 +VERTEX + 5 +637 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 441 + 72 + 448 + 73 + 449 + 0 +VERTEX + 5 +638 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 442 + 72 + 455 + 73 + 450 + 0 +VERTEX + 5 +639 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 443 + 72 + 454 + 73 + 455 + 74 + 442 + 0 +VERTEX + 5 +63A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 453 + 72 + 454 + 73 + 446 + 74 + 449 + 0 +VERTEX + 5 +63B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 445 + 72 + 446 + 73 + 454 + 74 + 443 + 0 +VERTEX + 5 +63C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 446 + 72 + 445 + 73 + 444 + 0 +VERTEX + 5 +63D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 447 + 72 + 451 + 73 + 448 + 0 +VERTEX + 5 +63E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 451 + 72 + 453 + 73 + 449 + 74 + 448 + 0 +VERTEX + 5 +63F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 455 + 72 + 456 + 73 + 460 + 0 +VERTEX + 5 +640 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 450 + 72 + 460 + 73 + 461 + 0 +VERTEX + 5 +641 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 450 + 72 + 455 + 73 + 460 + 0 +VERTEX + 5 +642 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 452 + 72 + 456 + 73 + 453 + 74 + 451 + 0 +VERTEX + 5 +643 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 456 + 72 + 455 + 73 + 454 + 74 + 453 + 0 +VERTEX + 5 +644 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 458 + 72 + 460 + 73 + 456 + 0 +VERTEX + 5 +645 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 457 + 72 + 462 + 73 + 459 + 0 +VERTEX + 5 +646 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 459 + 72 + 462 + 73 + 458 + 0 +VERTEX + 5 +647 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 462 + 72 + 461 + 73 + 460 + 0 +VERTEX + 5 +648 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 519 + 72 + 595 + 73 + 592 + 74 + 478 + 0 +VERTEX + 5 +649 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 511 + 72 + 470 + 73 + 469 + 0 +VERTEX + 5 +64A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 472 + 72 + 511 + 73 + 469 + 0 +VERTEX + 5 +64B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 472 + 72 + 513 + 73 + 511 + 0 +VERTEX + 5 +64C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 468 + 72 + 514 + 73 + 513 + 74 + 472 + 0 +VERTEX + 5 +64D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 535 + 72 + 514 + 73 + 468 + 74 + 467 + 0 +VERTEX + 5 +64E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 466 + 72 + 515 + 73 + 535 + 74 + 467 + 0 +VERTEX + 5 +64F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 517 + 72 + 515 + 73 + 466 + 74 + 502 + 0 +VERTEX + 5 +650 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 465 + 72 + 516 + 73 + 517 + 74 + 502 + 0 +VERTEX + 5 +651 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 503 + 72 + 516 + 73 + 465 + 74 + 464 + 0 +VERTEX + 5 +652 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 503 + 72 + 464 + 73 + 680 + 74 + 676 + 0 +VERTEX + 5 +653 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 511 + 72 + 528 + 73 + 470 + 0 +VERTEX + 5 +654 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 519 + 72 + 478 + 73 + 470 + 74 + 528 + 0 +VERTEX + 5 +655 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 680 + 72 + 464 + 73 + 653 + 0 +VERTEX + 5 +656 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 653 + 72 + 464 + 73 + 500 + 0 +VERTEX + 5 +657 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 463 + 72 + 494 + 73 + 476 + 0 +VERTEX + 5 +658 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 463 + 72 + 655 + 73 + 494 + 0 +VERTEX + 5 +659 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 463 + 72 + 673 + 73 + 655 + 0 +VERTEX + 5 +65A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 464 + 72 + 465 + 73 + 500 + 0 +VERTEX + 5 +65B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 500 + 72 + 465 + 73 + 502 + 0 +VERTEX + 5 +65C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 501 + 72 + 502 + 73 + 466 + 0 +VERTEX + 5 +65D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 467 + 72 + 501 + 73 + 466 + 0 +VERTEX + 5 +65E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 467 + 72 + 484 + 73 + 501 + 0 +VERTEX + 5 +65F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 467 + 72 + 468 + 73 + 484 + 0 +VERTEX + 5 +660 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 484 + 72 + 468 + 73 + 472 + 0 +VERTEX + 5 +661 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 483 + 72 + 472 + 73 + 469 + 0 +VERTEX + 5 +662 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 470 + 72 + 483 + 73 + 469 + 0 +VERTEX + 5 +663 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 470 + 72 + 485 + 73 + 483 + 0 +VERTEX + 5 +664 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 470 + 72 + 487 + 73 + 485 + 0 +VERTEX + 5 +665 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 470 + 72 + 478 + 73 + 487 + 0 +VERTEX + 5 +666 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 471 + 72 + 490 + 73 + 488 + 0 +VERTEX + 5 +667 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 471 + 72 + 473 + 73 + 490 + 0 +VERTEX + 5 +668 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 490 + 72 + 473 + 73 + 499 + 0 +VERTEX + 5 +669 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 472 + 72 + 483 + 73 + 484 + 0 +VERTEX + 5 +66A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 473 + 72 + 474 + 73 + 499 + 0 +VERTEX + 5 +66B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 499 + 72 + 474 + 73 + 495 + 0 +VERTEX + 5 +66C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 498 + 72 + 495 + 73 + 475 + 0 +VERTEX + 5 +66D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 477 + 72 + 498 + 73 + 475 + 0 +VERTEX + 5 +66E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 477 + 72 + 494 + 73 + 498 + 0 +VERTEX + 5 +66F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 477 + 72 + 476 + 73 + 494 + 0 +VERTEX + 5 +670 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 656 + 72 + 493 + 73 + 494 + 74 + 655 + 0 +VERTEX + 5 +671 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 647 + 72 + 480 + 73 + 493 + 74 + 656 + 0 +VERTEX + 5 +672 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 652 + 72 + 481 + 73 + 480 + 74 + 647 + 0 +VERTEX + 5 +673 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 653 + 72 + 500 + 73 + 481 + 74 + 652 + 0 +VERTEX + 5 +674 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 479 + 72 + 488 + 73 + 487 + 0 +VERTEX + 5 +675 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 592 + 72 + 487 + 73 + 478 + 0 +VERTEX + 5 +676 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 592 + 72 + 479 + 73 + 487 + 0 +VERTEX + 5 +677 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 486 + 72 + 482 + 73 + 501 + 74 + 484 + 0 +VERTEX + 5 +678 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 491 + 72 + 492 + 73 + 482 + 74 + 486 + 0 +VERTEX + 5 +679 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 480 + 72 + 492 + 73 + 497 + 74 + 493 + 0 +VERTEX + 5 +67A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 482 + 72 + 492 + 73 + 480 + 74 + 481 + 0 +VERTEX + 5 +67B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 482 + 72 + 481 + 73 + 500 + 74 + 501 + 0 +VERTEX + 5 +67C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 485 + 72 + 486 + 73 + 484 + 74 + 483 + 0 +VERTEX + 5 +67D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 487 + 72 + 491 + 73 + 486 + 74 + 485 + 0 +VERTEX + 5 +67E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 496 + 72 + 491 + 73 + 487 + 74 + 489 + 0 +VERTEX + 5 +67F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 489 + 72 + 487 + 73 + 488 + 0 +VERTEX + 5 +680 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 490 + 72 + 489 + 73 + 488 + 0 +VERTEX + 5 +681 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 490 + 72 + 499 + 73 + 496 + 74 + 489 + 0 +VERTEX + 5 +682 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 496 + 72 + 497 + 73 + 492 + 74 + 491 + 0 +VERTEX + 5 +683 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 494 + 72 + 493 + 73 + 497 + 74 + 498 + 0 +VERTEX + 5 +684 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 495 + 72 + 498 + 73 + 499 + 0 +VERTEX + 5 +685 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 499 + 72 + 498 + 73 + 497 + 74 + 496 + 0 +VERTEX + 5 +686 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 502 + 72 + 501 + 73 + 500 + 0 +VERTEX + 5 +687 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 595 + 72 + 518 + 73 + 594 + 0 +VERTEX + 5 +688 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 594 + 72 + 518 + 73 + 510 + 0 +VERTEX + 5 +689 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 566 + 72 + 510 + 73 + 509 + 0 +VERTEX + 5 +68A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 512 + 72 + 566 + 73 + 509 + 0 +VERTEX + 5 +68B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 512 + 72 + 565 + 73 + 566 + 0 +VERTEX + 5 +68C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 512 + 72 + 563 + 73 + 565 + 0 +VERTEX + 5 +68D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 512 + 72 + 508 + 73 + 563 + 0 +VERTEX + 5 +68E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 563 + 72 + 508 + 73 + 507 + 0 +VERTEX + 5 +68F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 544 + 72 + 507 + 73 + 545 + 0 +VERTEX + 5 +690 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 544 + 72 + 563 + 73 + 507 + 0 +VERTEX + 5 +691 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 507 + 72 + 506 + 73 + 545 + 0 +VERTEX + 5 +692 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 545 + 72 + 506 + 73 + 542 + 0 +VERTEX + 5 +693 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 586 + 72 + 542 + 73 + 546 + 0 +VERTEX + 5 +694 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 586 + 72 + 545 + 73 + 542 + 0 +VERTEX + 5 +695 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 542 + 72 + 505 + 73 + 546 + 0 +VERTEX + 5 +696 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 546 + 72 + 505 + 73 + 504 + 0 +VERTEX + 5 +697 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 548 + 72 + 546 + 73 + 504 + 0 +VERTEX + 5 +698 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 668 + 72 + 547 + 73 + 548 + 74 + 504 + 0 +VERTEX + 5 +699 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 566 + 72 + 594 + 73 + 510 + 0 +VERTEX + 5 +69A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 668 + 72 + 504 + 73 + 665 + 0 +VERTEX + 5 +69B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 665 + 72 + 504 + 73 + 540 + 0 +VERTEX + 5 +69C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 503 + 72 + 534 + 73 + 516 + 0 +VERTEX + 5 +69D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 503 + 72 + 670 + 73 + 534 + 0 +VERTEX + 5 +69E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 503 + 72 + 676 + 73 + 670 + 0 +VERTEX + 5 +69F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 504 + 72 + 505 + 73 + 540 + 0 +VERTEX + 5 +6A0 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 540 + 72 + 505 + 73 + 542 + 0 +VERTEX + 5 +6A1 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 541 + 72 + 542 + 73 + 506 + 0 +VERTEX + 5 +6A2 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 507 + 72 + 541 + 73 + 506 + 0 +VERTEX + 5 +6A3 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 507 + 72 + 524 + 73 + 541 + 0 +VERTEX + 5 +6A4 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 507 + 72 + 508 + 73 + 524 + 0 +VERTEX + 5 +6A5 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 524 + 72 + 508 + 73 + 512 + 0 +VERTEX + 5 +6A6 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 523 + 72 + 512 + 73 + 509 + 0 +VERTEX + 5 +6A7 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 510 + 72 + 523 + 73 + 509 + 0 +VERTEX + 5 +6A8 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 510 + 72 + 525 + 73 + 523 + 0 +VERTEX + 5 +6A9 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 510 + 72 + 527 + 73 + 525 + 0 +VERTEX + 5 +6AA +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 510 + 72 + 518 + 73 + 527 + 0 +VERTEX + 5 +6AB +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 511 + 72 + 530 + 73 + 528 + 0 +VERTEX + 5 +6AC +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 511 + 72 + 513 + 73 + 530 + 0 +VERTEX + 5 +6AD +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 530 + 72 + 513 + 73 + 539 + 0 +VERTEX + 5 +6AE +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 512 + 72 + 523 + 73 + 524 + 0 +VERTEX + 5 +6AF +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 513 + 72 + 514 + 73 + 539 + 0 +VERTEX + 5 +6B0 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 539 + 72 + 514 + 73 + 535 + 0 +VERTEX + 5 +6B1 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 538 + 72 + 535 + 73 + 515 + 0 +VERTEX + 5 +6B2 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 517 + 72 + 538 + 73 + 515 + 0 +VERTEX + 5 +6B3 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 517 + 72 + 534 + 73 + 538 + 0 +VERTEX + 5 +6B4 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 517 + 72 + 516 + 73 + 534 + 0 +VERTEX + 5 +6B5 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 671 + 72 + 533 + 73 + 534 + 74 + 670 + 0 +VERTEX + 5 +6B6 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 660 + 72 + 520 + 73 + 533 + 74 + 671 + 0 +VERTEX + 5 +6B7 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 663 + 72 + 521 + 73 + 520 + 74 + 660 + 0 +VERTEX + 5 +6B8 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 665 + 72 + 540 + 73 + 521 + 74 + 663 + 0 +VERTEX + 5 +6B9 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 519 + 72 + 528 + 73 + 527 + 0 +VERTEX + 5 +6BA +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 595 + 72 + 527 + 73 + 518 + 0 +VERTEX + 5 +6BB +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 595 + 72 + 519 + 73 + 527 + 0 +VERTEX + 5 +6BC +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 526 + 72 + 522 + 73 + 541 + 74 + 524 + 0 +VERTEX + 5 +6BD +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 531 + 72 + 532 + 73 + 522 + 74 + 526 + 0 +VERTEX + 5 +6BE +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 520 + 72 + 532 + 73 + 537 + 74 + 533 + 0 +VERTEX + 5 +6BF +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 522 + 72 + 532 + 73 + 520 + 74 + 521 + 0 +VERTEX + 5 +6C0 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 522 + 72 + 521 + 73 + 540 + 74 + 541 + 0 +VERTEX + 5 +6C1 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 525 + 72 + 526 + 73 + 524 + 74 + 523 + 0 +VERTEX + 5 +6C2 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 527 + 72 + 531 + 73 + 526 + 74 + 525 + 0 +VERTEX + 5 +6C3 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 536 + 72 + 531 + 73 + 527 + 74 + 529 + 0 +VERTEX + 5 +6C4 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 529 + 72 + 527 + 73 + 528 + 0 +VERTEX + 5 +6C5 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 530 + 72 + 529 + 73 + 528 + 0 +VERTEX + 5 +6C6 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 530 + 72 + 539 + 73 + 536 + 74 + 529 + 0 +VERTEX + 5 +6C7 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 536 + 72 + 537 + 73 + 532 + 74 + 531 + 0 +VERTEX + 5 +6C8 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 534 + 72 + 533 + 73 + 537 + 74 + 538 + 0 +VERTEX + 5 +6C9 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 535 + 72 + 538 + 73 + 539 + 0 +VERTEX + 5 +6CA +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 539 + 72 + 538 + 73 + 537 + 74 + 536 + 0 +VERTEX + 5 +6CB +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 542 + 72 + 541 + 73 + 540 + 0 +VERTEX + 5 +6CC +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 543 + 72 + 549 + 73 + 573 + 0 +VERTEX + 5 +6CD +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 573 + 72 + 549 + 73 + 589 + 0 +VERTEX + 5 +6CE +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 574 + 72 + 589 + 73 + 576 + 0 +VERTEX + 5 +6CF +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 567 + 72 + 576 + 73 + 577 + 0 +VERTEX + 5 +6D0 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 544 + 72 + 582 + 73 + 563 + 0 +VERTEX + 5 +6D1 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 544 + 72 + 587 + 73 + 582 + 0 +VERTEX + 5 +6D2 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 544 + 72 + 545 + 73 + 587 + 0 +VERTEX + 5 +6D3 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 587 + 72 + 545 + 73 + 586 + 0 +VERTEX + 5 +6D4 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 588 + 72 + 586 + 73 + 546 + 0 +VERTEX + 5 +6D5 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 548 + 72 + 588 + 73 + 546 + 0 +VERTEX + 5 +6D6 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 548 + 72 + 570 + 73 + 588 + 0 +VERTEX + 5 +6D7 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 548 + 72 + 547 + 73 + 570 + 0 +VERTEX + 5 +6D8 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 549 + 72 + 550 + 73 + 589 + 0 +VERTEX + 5 +6D9 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 589 + 72 + 550 + 73 + 591 + 0 +VERTEX + 5 +6DA +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 590 + 72 + 591 + 73 + 551 + 0 +VERTEX + 5 +6DB +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 552 + 72 + 590 + 73 + 551 + 0 +VERTEX + 5 +6DC +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 552 + 72 + 575 + 73 + 590 + 0 +VERTEX + 5 +6DD +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 552 + 72 + 553 + 73 + 575 + 0 +VERTEX + 5 +6DE +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 575 + 72 + 553 + 73 + 557 + 0 +VERTEX + 5 +6DF +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 558 + 72 + 557 + 73 + 554 + 0 +VERTEX + 5 +6E0 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 555 + 72 + 558 + 73 + 554 + 0 +VERTEX + 5 +6E1 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 555 + 72 + 580 + 73 + 558 + 0 +VERTEX + 5 +6E2 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 555 + 72 + 556 + 73 + 580 + 0 +VERTEX + 5 +6E3 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 580 + 72 + 556 + 73 + 579 + 0 +VERTEX + 5 +6E4 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 581 + 72 + 579 + 73 + 559 + 0 +VERTEX + 5 +6E5 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 577 + 72 + 581 + 73 + 559 + 74 + 583 + 0 +VERTEX + 5 +6E6 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 581 + 72 + 577 + 73 + 578 + 0 +VERTEX + 5 +6E7 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 580 + 72 + 578 + 73 + 575 + 0 +VERTEX + 5 +6E8 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 558 + 72 + 575 + 73 + 557 + 0 +VERTEX + 5 +6E9 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 558 + 72 + 580 + 73 + 575 + 0 +VERTEX + 5 +6EA +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 579 + 72 + 562 + 73 + 564 + 0 +VERTEX + 5 +6EB +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 564 + 72 + 582 + 73 + 583 + 74 + 559 + 0 +VERTEX + 5 +6EC +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 559 + 72 + 579 + 73 + 564 + 0 +VERTEX + 5 +6ED +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 560 + 72 + 566 + 73 + 561 + 0 +VERTEX + 5 +6EE +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 560 + 72 + 594 + 73 + 566 + 0 +VERTEX + 5 +6EF +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 561 + 72 + 566 + 73 + 564 + 0 +VERTEX + 5 +6F0 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 562 + 72 + 561 + 73 + 564 + 0 +VERTEX + 5 +6F1 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 563 + 72 + 582 + 73 + 565 + 0 +VERTEX + 5 +6F2 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 565 + 72 + 582 + 73 + 564 + 0 +VERTEX + 5 +6F3 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 566 + 72 + 565 + 73 + 564 + 0 +VERTEX + 5 +6F4 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 577 + 72 + 583 + 73 + 584 + 74 + 567 + 0 +VERTEX + 5 +6F5 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 569 + 72 + 572 + 73 + 568 + 0 +VERTEX + 5 +6F6 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 568 + 72 + 572 + 73 + 574 + 0 +VERTEX + 5 +6F7 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 567 + 72 + 574 + 73 + 576 + 0 +VERTEX + 5 +6F8 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 567 + 72 + 568 + 73 + 574 + 0 +VERTEX + 5 +6F9 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 567 + 72 + 584 + 73 + 585 + 74 + 568 + 0 +VERTEX + 5 +6FA +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 585 + 72 + 571 + 73 + 569 + 74 + 568 + 0 +VERTEX + 5 +6FB +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 571 + 72 + 585 + 73 + 588 + 74 + 570 + 0 +VERTEX + 5 +6FC +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 572 + 72 + 573 + 73 + 574 + 0 +VERTEX + 5 +6FD +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 574 + 72 + 573 + 73 + 589 + 0 +VERTEX + 5 +6FE +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 576 + 72 + 589 + 73 + 590 + 0 +VERTEX + 5 +6FF +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 578 + 72 + 590 + 73 + 575 + 0 +VERTEX + 5 +700 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 578 + 72 + 576 + 73 + 590 + 0 +VERTEX + 5 +701 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 578 + 72 + 577 + 73 + 576 + 0 +VERTEX + 5 +702 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 578 + 72 + 580 + 73 + 581 + 0 +VERTEX + 5 +703 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 581 + 72 + 580 + 73 + 579 + 0 +VERTEX + 5 +704 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 583 + 72 + 582 + 73 + 587 + 74 + 584 + 0 +VERTEX + 5 +705 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 585 + 72 + 584 + 73 + 587 + 74 + 588 + 0 +VERTEX + 5 +706 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 588 + 72 + 587 + 73 + 586 + 0 +VERTEX + 5 +707 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 591 + 72 + 590 + 73 + 589 + 0 +VERTEX + 5 +708 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 595 + 72 + 594 + 73 + 593 + 74 + 592 + 0 +VERTEX + 5 +709 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 636 + 72 + 637 + 73 + 598 + 0 +VERTEX + 5 +70A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 598 + 72 + 637 + 73 + 596 + 0 +VERTEX + 5 +70B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 597 + 72 + 598 + 73 + 596 + 0 +VERTEX + 5 +70C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 597 + 72 + 600 + 73 + 598 + 0 +VERTEX + 5 +70D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 598 + 72 + 600 + 73 + 599 + 0 +VERTEX + 5 +70E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 599 + 72 + 600 + 73 + 602 + 0 +VERTEX + 5 +70F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 602 + 72 + 600 + 73 + 601 + 0 +VERTEX + 5 +710 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 603 + 72 + 602 + 73 + 601 + 0 +VERTEX + 5 +711 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 603 + 72 + 614 + 73 + 602 + 0 +VERTEX + 5 +712 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 603 + 72 + 604 + 73 + 614 + 0 +VERTEX + 5 +713 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 614 + 72 + 604 + 73 + 613 + 0 +VERTEX + 5 +714 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 615 + 72 + 613 + 73 + 611 + 0 +VERTEX + 5 +715 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 612 + 72 + 611 + 73 + 605 + 0 +VERTEX + 5 +716 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 606 + 72 + 612 + 73 + 605 + 0 +VERTEX + 5 +717 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 606 + 72 + 607 + 73 + 612 + 0 +VERTEX + 5 +718 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 606 + 72 + 609 + 73 + 607 + 0 +VERTEX + 5 +719 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 607 + 72 + 609 + 73 + 610 + 0 +VERTEX + 5 +71A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 610 + 72 + 609 + 73 + 608 + 0 +VERTEX + 5 +71B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 612 + 72 + 615 + 73 + 611 + 0 +VERTEX + 5 +71C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 615 + 72 + 614 + 73 + 613 + 0 +VERTEX + 5 +71D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 644 + 72 + 616 + 73 + 643 + 0 +VERTEX + 5 +71E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 643 + 72 + 616 + 73 + 618 + 0 +VERTEX + 5 +71F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 618 + 72 + 616 + 73 + 617 + 0 +VERTEX + 5 +720 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 619 + 72 + 618 + 73 + 617 + 0 +VERTEX + 5 +721 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 619 + 72 + 620 + 73 + 618 + 0 +VERTEX + 5 +722 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 619 + 72 + 621 + 73 + 620 + 0 +VERTEX + 5 +723 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 620 + 72 + 621 + 73 + 623 + 0 +VERTEX + 5 +724 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 623 + 72 + 621 + 73 + 622 + 0 +VERTEX + 5 +725 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 624 + 72 + 623 + 73 + 622 + 0 +VERTEX + 5 +726 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 624 + 72 + 627 + 73 + 623 + 0 +VERTEX + 5 +727 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 624 + 72 + 625 + 73 + 627 + 0 +VERTEX + 5 +728 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 627 + 72 + 625 + 73 + 626 + 0 +VERTEX + 5 +729 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 628 + 72 + 627 + 73 + 626 + 0 +VERTEX + 5 +72A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 628 + 72 + 629 + 73 + 627 + 0 +VERTEX + 5 +72B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 628 + 72 + 630 + 73 + 629 + 0 +VERTEX + 5 +72C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 629 + 72 + 630 + 73 + 632 + 0 +VERTEX + 5 +72D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 632 + 72 + 630 + 73 + 631 + 0 +VERTEX + 5 +72E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 633 + 72 + 632 + 73 + 631 + 0 +VERTEX + 5 +72F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 633 + 72 + 635 + 73 + 632 + 0 +VERTEX + 5 +730 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 633 + 72 + 634 + 73 + 635 + 0 +VERTEX + 5 +731 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 639 + 72 + 635 + 73 + 634 + 74 + 638 + 0 +VERTEX + 5 +732 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 639 + 72 + 638 + 73 + 637 + 74 + 636 + 0 +VERTEX + 5 +733 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -409 + 72 + 393 + 73 + -392 + 0 +VERTEX + 5 +734 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 674 + 72 + 645 + 73 + 673 + 0 +VERTEX + 5 +735 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 673 + 72 + 645 + 73 + 655 + 0 +VERTEX + 5 +736 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 655 + 72 + 645 + 73 + 654 + 0 +VERTEX + 5 +737 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 656 + 72 + 654 + 73 + 646 + 0 +VERTEX + 5 +738 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 648 + 72 + 656 + 73 + 646 + 0 +VERTEX + 5 +739 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 648 + 72 + 647 + 73 + 656 + 0 +VERTEX + 5 +73A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 648 + 72 + 652 + 73 + 647 + 0 +VERTEX + 5 +73B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 648 + 72 + 649 + 73 + 652 + 0 +VERTEX + 5 +73C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 652 + 72 + 649 + 73 + 651 + 0 +VERTEX + 5 +73D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 653 + 72 + 651 + 73 + 650 + 0 +VERTEX + 5 +73E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 680 + 72 + 650 + 73 + 679 + 0 +VERTEX + 5 +73F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 680 + 72 + 653 + 73 + 650 + 0 +VERTEX + 5 +740 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 653 + 72 + 652 + 73 + 651 + 0 +VERTEX + 5 +741 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 656 + 72 + 655 + 73 + 654 + 0 +VERTEX + 5 +742 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 677 + 72 + 657 + 73 + 676 + 0 +VERTEX + 5 +743 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 676 + 72 + 657 + 73 + 670 + 0 +VERTEX + 5 +744 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 670 + 72 + 657 + 73 + 669 + 0 +VERTEX + 5 +745 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 671 + 72 + 669 + 73 + 658 + 0 +VERTEX + 5 +746 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 659 + 72 + 671 + 73 + 658 + 0 +VERTEX + 5 +747 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 659 + 72 + 660 + 73 + 671 + 0 +VERTEX + 5 +748 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 659 + 72 + 661 + 73 + 660 + 0 +VERTEX + 5 +749 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 660 + 72 + 661 + 73 + 663 + 0 +VERTEX + 5 +74A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 663 + 72 + 661 + 73 + 662 + 0 +VERTEX + 5 +74B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 664 + 72 + 663 + 73 + 662 + 0 +VERTEX + 5 +74C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 664 + 72 + 665 + 73 + 663 + 0 +VERTEX + 5 +74D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 664 + 72 + 667 + 73 + 665 + 0 +VERTEX + 5 +74E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 665 + 72 + 667 + 73 + 668 + 0 +VERTEX + 5 +74F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 668 + 72 + 667 + 73 + 666 + 0 +VERTEX + 5 +750 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 671 + 72 + 670 + 73 + 669 + 0 +VERTEX + 5 +751 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 675 + 72 + 674 + 73 + 673 + 74 + 672 + 0 +VERTEX + 5 +752 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 16 + 72 + 15 + 73 + -14 + 0 +VERTEX + 5 +753 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -16 + 72 + 14 + 73 + -13 + 0 +VERTEX + 5 +754 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -16 + 72 + 13 + 73 + -12 + 0 +VERTEX + 5 +755 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -16 + 72 + 12 + 73 + -11 + 0 +VERTEX + 5 +756 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -16 + 72 + 11 + 73 + -10 + 0 +VERTEX + 5 +757 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -16 + 72 + 10 + 73 + -9 + 0 +VERTEX + 5 +758 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -16 + 72 + 9 + 73 + -8 + 0 +VERTEX + 5 +759 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -16 + 72 + 8 + 73 + -19 + 0 +VERTEX + 5 +75A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -16 + 72 + 19 + 73 + -20 + 0 +VERTEX + 5 +75B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -16 + 72 + 20 + 73 + -7 + 0 +VERTEX + 5 +75C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -16 + 72 + 7 + 73 + -6 + 0 +VERTEX + 5 +75D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -16 + 72 + 6 + 73 + -5 + 0 +VERTEX + 5 +75E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -16 + 72 + 5 + 73 + -17 + 0 +VERTEX + 5 +75F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -16 + 72 + 17 + 73 + -18 + 0 +VERTEX + 5 +760 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -16 + 72 + 18 + 73 + -4 + 0 +VERTEX + 5 +761 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -16 + 72 + 4 + 73 + -3 + 0 +VERTEX + 5 +762 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -16 + 72 + 3 + 73 + -2 + 0 +VERTEX + 5 +763 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 254 + 72 + -253 + 73 + -285 + 0 +VERTEX + 5 +764 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -254 + 72 + 285 + 73 + -293 + 0 +VERTEX + 5 +765 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -254 + 72 + 293 + 73 + -303 + 0 +VERTEX + 5 +766 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -254 + 72 + 303 + 73 + -304 + 0 +VERTEX + 5 +767 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -254 + 72 + 304 + 73 + -300 + 0 +VERTEX + 5 +768 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -254 + 72 + 300 + 73 + -318 + 0 +VERTEX + 5 +769 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -254 + 72 + -318 + 73 + -256 + 0 +VERTEX + 5 +76A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -254 + 72 + 256 + 73 + 255 + 0 +VERTEX + 5 +76B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 253 + 72 + 252 + 73 + -356 + 0 +VERTEX + 5 +76C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -253 + 72 + 356 + 73 + -320 + 0 +VERTEX + 5 +76D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -253 + 72 + 320 + 73 + -275 + 0 +VERTEX + 5 +76E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -253 + 72 + 275 + 73 + -274 + 0 +VERTEX + 5 +76F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -253 + 72 + 274 + 73 + -273 + 0 +VERTEX + 5 +770 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -253 + 72 + 273 + 73 + -285 + 0 +VERTEX + 5 +771 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 318 + 72 + -327 + 73 + -256 + 0 +VERTEX + 5 +772 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -336 + 72 + -256 + 73 + 327 + 0 +VERTEX + 5 +773 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -256 + 72 + -336 + 73 + 245 + 0 +VERTEX + 5 +774 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -337 + 72 + -245 + 73 + 336 + 0 +VERTEX + 5 +775 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -245 + 72 + -337 + 73 + 246 + 0 +VERTEX + 5 +776 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -333 + 72 + -246 + 73 + 337 + 0 +VERTEX + 5 +777 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -246 + 72 + 333 + 73 + -347 + 0 +VERTEX + 5 +778 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -246 + 72 + -347 + 73 + 247 + 0 +VERTEX + 5 +779 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -353 + 72 + -247 + 73 + 347 + 0 +VERTEX + 5 +77A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -247 + 72 + -353 + 73 + 248 + 0 +VERTEX + 5 +77B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -371 + 72 + -248 + 73 + 353 + 0 +VERTEX + 5 +77C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -248 + 72 + -371 + 73 + 249 + 0 +VERTEX + 5 +77D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -372 + 72 + -249 + 73 + 371 + 0 +VERTEX + 5 +77E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -249 + 72 + -372 + 73 + 250 + 0 +VERTEX + 5 +77F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -358 + 72 + -250 + 73 + 372 + 0 +VERTEX + 5 +780 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -250 + 72 + -358 + 73 + 251 + 0 +VERTEX + 5 +781 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -356 + 72 + -251 + 73 + 358 + 0 +VERTEX + 5 +782 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 272 + 72 + 271 + 73 + -270 + 0 +VERTEX + 5 +783 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -272 + 72 + 270 + 73 + -269 + 0 +VERTEX + 5 +784 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -272 + 72 + 269 + 73 + -268 + 0 +VERTEX + 5 +785 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -272 + 72 + 268 + 73 + -267 + 0 +VERTEX + 5 +786 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -272 + 72 + 267 + 73 + -266 + 0 +VERTEX + 5 +787 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -272 + 72 + 266 + 73 + -265 + 0 +VERTEX + 5 +788 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -272 + 72 + 265 + 73 + -264 + 0 +VERTEX + 5 +789 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -272 + 72 + 264 + 73 + -263 + 0 +VERTEX + 5 +78A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -272 + 72 + 263 + 73 + -262 + 0 +VERTEX + 5 +78B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 415 + 72 + -543 + 73 + -402 + 0 +VERTEX + 5 +78C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -415 + 72 + 402 + 73 + -401 + 0 +VERTEX + 5 +78D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -415 + 72 + 401 + 73 + -400 + 0 +VERTEX + 5 +78E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -415 + 72 + 400 + 73 + -399 + 0 +VERTEX + 5 +78F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -415 + 72 + 399 + 73 + -398 + 0 +VERTEX + 5 +790 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -415 + 72 + 398 + 73 + 397 + 0 +VERTEX + 5 +791 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 415 + 72 + -397 + 73 + 409 + 0 +VERTEX + 5 +792 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 408 + 72 + -409 + 73 + -392 + 0 +VERTEX + 5 +793 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -408 + 72 + 392 + 73 + -391 + 0 +VERTEX + 5 +794 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -408 + 72 + 391 + 73 + -390 + 0 +VERTEX + 5 +795 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -408 + 72 + 390 + 73 + -389 + 0 +VERTEX + 5 +796 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -408 + 72 + 389 + 73 + -388 + 0 +VERTEX + 5 +797 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -408 + 72 + 388 + 73 + -407 + 0 +VERTEX + 5 +798 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -408 + 72 + 407 + 73 + -406 + 0 +VERTEX + 5 +799 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -408 + 72 + 406 + 73 + -405 + 0 +VERTEX + 5 +79A +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -408 + 72 + 405 + 73 + -404 + 0 +VERTEX + 5 +79B +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -408 + 72 + 404 + 73 + -403 + 0 +VERTEX + 5 +79C +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -408 + 72 + 403 + 73 + -402 + 0 +VERTEX + 5 +79D +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -408 + 72 + -402 + 73 + 543 + 0 +VERTEX + 5 +79E +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -409 + 72 + 397 + 73 + -396 + 0 +VERTEX + 5 +79F +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -409 + 72 + 396 + 73 + -395 + 0 +VERTEX + 5 +7A0 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -409 + 72 + 395 + 73 + -394 + 0 +VERTEX + 5 +7A1 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -409 + 72 + 394 + 73 + -393 + 0 +VERTEX + 5 +7A2 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 644 + 72 + 643 + 73 + -642 + 0 +VERTEX + 5 +7A3 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -644 + 72 + 642 + 73 + -641 + 0 +VERTEX + 5 +7A4 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 680 + 72 + 679 + 73 + -678 + 0 +VERTEX + 5 +7A5 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -680 + 72 + 678 + 73 + -677 + 0 +VERTEX + 5 +7A6 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -680 + 72 + 677 + 73 + 676 + 0 +SEQEND + 5 +7A7 +330 +68 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 7 + 0 +POLYLINE + 5 +7A8 +330 +1F +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbPolyFaceMesh + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 64 + 71 + 72 + 72 + 104 + 0 +VERTEX + 5 +7A9 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +0.0 + 20 +-199.0 + 30 +5.0 + 70 + 192 + 0 +VERTEX + 5 +7AA +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-4.774999999999999 + 20 +-199.418 + 30 +5.0 + 70 + 192 + 0 +VERTEX + 5 +7AB +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-9.405999999999999 + 20 +-200.658 + 30 +5.0 + 70 + 192 + 0 +VERTEX + 5 +7AC +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-13.75 + 20 +-202.684 + 30 +5.0 + 70 + 192 + 0 +VERTEX + 5 +7AD +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-17.677 + 20 +-205.434 + 30 +5.0 + 70 + 192 + 0 +VERTEX + 5 +7AE +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-21.066 + 20 +-208.823 + 30 +5.0 + 70 + 192 + 0 +VERTEX + 5 +7AF +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-23.816 + 20 +-212.75 + 30 +5.0 + 70 + 192 + 0 +VERTEX + 5 +7B0 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-25.842 + 20 +-217.0940000000001 + 30 +5.0 + 70 + 192 + 0 +VERTEX + 5 +7B1 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-27.082 + 20 +-221.725 + 30 +5.0 + 70 + 192 + 0 +VERTEX + 5 +7B2 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-27.5 + 20 +-226.5 + 30 +5.0 + 70 + 192 + 0 +VERTEX + 5 +7B3 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-27.082 + 20 +-231.275 + 30 +5.0 + 70 + 192 + 0 +VERTEX + 5 +7B4 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-25.842 + 20 +-235.906 + 30 +5.0 + 70 + 192 + 0 +VERTEX + 5 +7B5 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-23.816 + 20 +-240.2500000000001 + 30 +5.0 + 70 + 192 + 0 +VERTEX + 5 +7B6 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-21.066 + 20 +-244.177 + 30 +5.0 + 70 + 192 + 0 +VERTEX + 5 +7B7 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-17.677 + 20 +-247.566 + 30 +5.0 + 70 + 192 + 0 +VERTEX + 5 +7B8 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-13.75 + 20 +-250.316 + 30 +5.0 + 70 + 192 + 0 +VERTEX + 5 +7B9 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-9.405999999999999 + 20 +-252.342 + 30 +5.0 + 70 + 192 + 0 +VERTEX + 5 +7BA +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-4.774999999999999 + 20 +-253.582 + 30 +5.0 + 70 + 192 + 0 +VERTEX + 5 +7BB +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +0.0 + 20 +-254.0 + 30 +5.0 + 70 + 192 + 0 +VERTEX + 5 +7BC +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +4.774999999999999 + 20 +-253.582 + 30 +5.0 + 70 + 192 + 0 +VERTEX + 5 +7BD +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +9.405999999999999 + 20 +-252.342 + 30 +5.0 + 70 + 192 + 0 +VERTEX + 5 +7BE +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +13.75 + 20 +-250.316 + 30 +5.0 + 70 + 192 + 0 +VERTEX + 5 +7BF +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +17.677 + 20 +-247.566 + 30 +5.0 + 70 + 192 + 0 +VERTEX + 5 +7C0 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +21.066 + 20 +-244.177 + 30 +5.0 + 70 + 192 + 0 +VERTEX + 5 +7C1 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +23.816 + 20 +-240.2500000000001 + 30 +5.0 + 70 + 192 + 0 +VERTEX + 5 +7C2 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +25.842 + 20 +-235.906 + 30 +5.0 + 70 + 192 + 0 +VERTEX + 5 +7C3 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +27.082 + 20 +-231.275 + 30 +5.0 + 70 + 192 + 0 +VERTEX + 5 +7C4 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +27.5 + 20 +-226.5 + 30 +5.0 + 70 + 192 + 0 +VERTEX + 5 +7C5 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +27.082 + 20 +-221.725 + 30 +5.0 + 70 + 192 + 0 +VERTEX + 5 +7C6 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +25.842 + 20 +-217.0940000000001 + 30 +5.0 + 70 + 192 + 0 +VERTEX + 5 +7C7 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +23.816 + 20 +-212.75 + 30 +5.0 + 70 + 192 + 0 +VERTEX + 5 +7C8 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +21.066 + 20 +-208.823 + 30 +5.0 + 70 + 192 + 0 +VERTEX + 5 +7C9 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +17.677 + 20 +-205.434 + 30 +5.0 + 70 + 192 + 0 +VERTEX + 5 +7CA +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +13.75 + 20 +-202.684 + 30 +5.0 + 70 + 192 + 0 +VERTEX + 5 +7CB +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +9.405999999999999 + 20 +-200.658 + 30 +5.0 + 70 + 192 + 0 +VERTEX + 5 +7CC +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +4.774999999999999 + 20 +-199.418 + 30 +5.0 + 70 + 192 + 0 +VERTEX + 5 +7CD +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +4.774999999999999 + 20 +-199.418 + 30 +7.0 + 70 + 192 + 0 +VERTEX + 5 +7CE +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +9.405999999999999 + 20 +-200.658 + 30 +7.0 + 70 + 192 + 0 +VERTEX + 5 +7CF +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +13.75 + 20 +-202.684 + 30 +7.0 + 70 + 192 + 0 +VERTEX + 5 +7D0 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +17.677 + 20 +-205.434 + 30 +7.0 + 70 + 192 + 0 +VERTEX + 5 +7D1 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +21.066 + 20 +-208.823 + 30 +7.0 + 70 + 192 + 0 +VERTEX + 5 +7D2 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +23.816 + 20 +-212.75 + 30 +7.0 + 70 + 192 + 0 +VERTEX + 5 +7D3 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +25.842 + 20 +-217.0940000000001 + 30 +7.0 + 70 + 192 + 0 +VERTEX + 5 +7D4 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +27.082 + 20 +-221.725 + 30 +7.0 + 70 + 192 + 0 +VERTEX + 5 +7D5 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +27.5 + 20 +-226.5 + 30 +7.0 + 70 + 192 + 0 +VERTEX + 5 +7D6 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +27.082 + 20 +-231.275 + 30 +7.0 + 70 + 192 + 0 +VERTEX + 5 +7D7 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +25.842 + 20 +-235.906 + 30 +7.0 + 70 + 192 + 0 +VERTEX + 5 +7D8 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +23.816 + 20 +-240.2500000000001 + 30 +7.0 + 70 + 192 + 0 +VERTEX + 5 +7D9 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +21.066 + 20 +-244.177 + 30 +7.0 + 70 + 192 + 0 +VERTEX + 5 +7DA +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +17.677 + 20 +-247.566 + 30 +7.0 + 70 + 192 + 0 +VERTEX + 5 +7DB +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +13.75 + 20 +-250.316 + 30 +7.0 + 70 + 192 + 0 +VERTEX + 5 +7DC +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +9.405999999999999 + 20 +-252.342 + 30 +7.0 + 70 + 192 + 0 +VERTEX + 5 +7DD +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +4.774999999999999 + 20 +-253.582 + 30 +7.0 + 70 + 192 + 0 +VERTEX + 5 +7DE +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +0.0 + 20 +-254.0 + 30 +7.0 + 70 + 192 + 0 +VERTEX + 5 +7DF +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-4.774999999999999 + 20 +-253.582 + 30 +7.0 + 70 + 192 + 0 +VERTEX + 5 +7E0 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-9.405999999999999 + 20 +-252.342 + 30 +7.0 + 70 + 192 + 0 +VERTEX + 5 +7E1 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-13.75 + 20 +-250.316 + 30 +7.0 + 70 + 192 + 0 +VERTEX + 5 +7E2 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-17.677 + 20 +-247.566 + 30 +7.0 + 70 + 192 + 0 +VERTEX + 5 +7E3 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-21.066 + 20 +-244.177 + 30 +7.0 + 70 + 192 + 0 +VERTEX + 5 +7E4 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-23.816 + 20 +-240.2500000000001 + 30 +7.0 + 70 + 192 + 0 +VERTEX + 5 +7E5 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-25.842 + 20 +-235.906 + 30 +7.0 + 70 + 192 + 0 +VERTEX + 5 +7E6 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-27.082 + 20 +-231.275 + 30 +7.0 + 70 + 192 + 0 +VERTEX + 5 +7E7 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-27.5 + 20 +-226.5 + 30 +7.0 + 70 + 192 + 0 +VERTEX + 5 +7E8 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-27.082 + 20 +-221.725 + 30 +7.0 + 70 + 192 + 0 +VERTEX + 5 +7E9 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-25.842 + 20 +-217.0940000000001 + 30 +7.0 + 70 + 192 + 0 +VERTEX + 5 +7EA +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-23.816 + 20 +-212.75 + 30 +7.0 + 70 + 192 + 0 +VERTEX + 5 +7EB +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-21.066 + 20 +-208.823 + 30 +7.0 + 70 + 192 + 0 +VERTEX + 5 +7EC +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-17.677 + 20 +-205.434 + 30 +7.0 + 70 + 192 + 0 +VERTEX + 5 +7ED +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-13.75 + 20 +-202.684 + 30 +7.0 + 70 + 192 + 0 +VERTEX + 5 +7EE +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-9.405999999999999 + 20 +-200.658 + 30 +7.0 + 70 + 192 + 0 +VERTEX + 5 +7EF +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +-4.774999999999999 + 20 +-199.418 + 30 +7.0 + 70 + 192 + 0 +VERTEX + 5 +7F0 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbVertex +100 +AcDbPolyFaceMeshVertex + 10 +0.0 + 20 +-199.0 + 30 +7.0 + 70 + 192 + 0 +VERTEX + 5 +7F1 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 37 + 72 + 36 + 73 + 1 + 74 + 72 + 0 +VERTEX + 5 +7F2 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 37 + 72 + 38 + 73 + 35 + 74 + 36 + 0 +VERTEX + 5 +7F3 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 38 + 72 + 39 + 73 + 34 + 74 + 35 + 0 +VERTEX + 5 +7F4 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 39 + 72 + 40 + 73 + 33 + 74 + 34 + 0 +VERTEX + 5 +7F5 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 40 + 72 + 41 + 73 + 32 + 74 + 33 + 0 +VERTEX + 5 +7F6 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 41 + 72 + 42 + 73 + 31 + 74 + 32 + 0 +VERTEX + 5 +7F7 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 42 + 72 + 43 + 73 + 30 + 74 + 31 + 0 +VERTEX + 5 +7F8 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 43 + 72 + 44 + 73 + 29 + 74 + 30 + 0 +VERTEX + 5 +7F9 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 44 + 72 + 45 + 73 + 28 + 74 + 29 + 0 +VERTEX + 5 +7FA +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 45 + 72 + 46 + 73 + 27 + 74 + 28 + 0 +VERTEX + 5 +7FB +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 46 + 72 + 47 + 73 + 26 + 74 + 27 + 0 +VERTEX + 5 +7FC +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 47 + 72 + 48 + 73 + 25 + 74 + 26 + 0 +VERTEX + 5 +7FD +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 48 + 72 + 49 + 73 + 24 + 74 + 25 + 0 +VERTEX + 5 +7FE +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 49 + 72 + 50 + 73 + 23 + 74 + 24 + 0 +VERTEX + 5 +7FF +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 50 + 72 + 51 + 73 + 22 + 74 + 23 + 0 +VERTEX + 5 +800 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 51 + 72 + 52 + 73 + 21 + 74 + 22 + 0 +VERTEX + 5 +801 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 52 + 72 + 53 + 73 + 20 + 74 + 21 + 0 +VERTEX + 5 +802 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 53 + 72 + 54 + 73 + 19 + 74 + 20 + 0 +VERTEX + 5 +803 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 54 + 72 + 55 + 73 + 18 + 74 + 19 + 0 +VERTEX + 5 +804 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 55 + 72 + 56 + 73 + 17 + 74 + 18 + 0 +VERTEX + 5 +805 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 56 + 72 + 57 + 73 + 16 + 74 + 17 + 0 +VERTEX + 5 +806 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 57 + 72 + 58 + 73 + 15 + 74 + 16 + 0 +VERTEX + 5 +807 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 58 + 72 + 59 + 73 + 14 + 74 + 15 + 0 +VERTEX + 5 +808 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 59 + 72 + 60 + 73 + 13 + 74 + 14 + 0 +VERTEX + 5 +809 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 60 + 72 + 61 + 73 + 12 + 74 + 13 + 0 +VERTEX + 5 +80A +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 61 + 72 + 62 + 73 + 11 + 74 + 12 + 0 +VERTEX + 5 +80B +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 62 + 72 + 63 + 73 + 10 + 74 + 11 + 0 +VERTEX + 5 +80C +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 63 + 72 + 64 + 73 + 9 + 74 + 10 + 0 +VERTEX + 5 +80D +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 64 + 72 + 65 + 73 + 8 + 74 + 9 + 0 +VERTEX + 5 +80E +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 65 + 72 + 66 + 73 + 7 + 74 + 8 + 0 +VERTEX + 5 +80F +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 66 + 72 + 67 + 73 + 6 + 74 + 7 + 0 +VERTEX + 5 +810 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 67 + 72 + 68 + 73 + 5 + 74 + 6 + 0 +VERTEX + 5 +811 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 68 + 72 + 69 + 73 + 4 + 74 + 5 + 0 +VERTEX + 5 +812 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 69 + 72 + 70 + 73 + 3 + 74 + 4 + 0 +VERTEX + 5 +813 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 70 + 72 + 71 + 73 + 2 + 74 + 3 + 0 +VERTEX + 5 +814 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 71 + 72 + 72 + 73 + 1 + 74 + 2 + 0 +VERTEX + 5 +815 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -36 + 72 + 2 + 73 + 1 + 0 +VERTEX + 5 +816 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 36 + 72 + 35 + 73 + -34 + 0 +VERTEX + 5 +817 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -36 + 72 + 34 + 73 + -33 + 0 +VERTEX + 5 +818 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -36 + 72 + 33 + 73 + -32 + 0 +VERTEX + 5 +819 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -36 + 72 + 32 + 73 + -31 + 0 +VERTEX + 5 +81A +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -36 + 72 + 31 + 73 + -30 + 0 +VERTEX + 5 +81B +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -36 + 72 + 30 + 73 + -29 + 0 +VERTEX + 5 +81C +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -36 + 72 + 29 + 73 + -28 + 0 +VERTEX + 5 +81D +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -36 + 72 + 28 + 73 + -27 + 0 +VERTEX + 5 +81E +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -36 + 72 + 27 + 73 + -26 + 0 +VERTEX + 5 +81F +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -36 + 72 + 26 + 73 + -25 + 0 +VERTEX + 5 +820 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -36 + 72 + 25 + 73 + -24 + 0 +VERTEX + 5 +821 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -36 + 72 + 24 + 73 + -23 + 0 +VERTEX + 5 +822 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -36 + 72 + 23 + 73 + -22 + 0 +VERTEX + 5 +823 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -36 + 72 + 22 + 73 + -21 + 0 +VERTEX + 5 +824 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -36 + 72 + 21 + 73 + -20 + 0 +VERTEX + 5 +825 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -36 + 72 + 20 + 73 + -19 + 0 +VERTEX + 5 +826 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -36 + 72 + 19 + 73 + -18 + 0 +VERTEX + 5 +827 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -36 + 72 + 18 + 73 + -17 + 0 +VERTEX + 5 +828 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -36 + 72 + 17 + 73 + -16 + 0 +VERTEX + 5 +829 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -36 + 72 + 16 + 73 + -15 + 0 +VERTEX + 5 +82A +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -36 + 72 + 15 + 73 + -14 + 0 +VERTEX + 5 +82B +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -36 + 72 + 14 + 73 + -13 + 0 +VERTEX + 5 +82C +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -36 + 72 + 13 + 73 + -12 + 0 +VERTEX + 5 +82D +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -36 + 72 + 12 + 73 + -11 + 0 +VERTEX + 5 +82E +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -36 + 72 + 11 + 73 + -10 + 0 +VERTEX + 5 +82F +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -36 + 72 + 10 + 73 + -9 + 0 +VERTEX + 5 +830 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -36 + 72 + 9 + 73 + -8 + 0 +VERTEX + 5 +831 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -36 + 72 + 8 + 73 + -7 + 0 +VERTEX + 5 +832 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -36 + 72 + 7 + 73 + -6 + 0 +VERTEX + 5 +833 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -36 + 72 + 6 + 73 + -5 + 0 +VERTEX + 5 +834 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -36 + 72 + 5 + 73 + -4 + 0 +VERTEX + 5 +835 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -36 + 72 + 4 + 73 + -3 + 0 +VERTEX + 5 +836 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -36 + 72 + 3 + 73 + -2 + 0 +VERTEX + 5 +837 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + 72 + 72 + 71 + 73 + -70 + 0 +VERTEX + 5 +838 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -72 + 72 + 70 + 73 + -69 + 0 +VERTEX + 5 +839 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -72 + 72 + 69 + 73 + -68 + 0 +VERTEX + 5 +83A +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -72 + 72 + 68 + 73 + -67 + 0 +VERTEX + 5 +83B +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -72 + 72 + 67 + 73 + -66 + 0 +VERTEX + 5 +83C +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -72 + 72 + 66 + 73 + -65 + 0 +VERTEX + 5 +83D +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -72 + 72 + 65 + 73 + -64 + 0 +VERTEX + 5 +83E +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -72 + 72 + 64 + 73 + -63 + 0 +VERTEX + 5 +83F +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -72 + 72 + 63 + 73 + -62 + 0 +VERTEX + 5 +840 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -72 + 72 + 62 + 73 + -61 + 0 +VERTEX + 5 +841 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -72 + 72 + 61 + 73 + -60 + 0 +VERTEX + 5 +842 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -72 + 72 + 60 + 73 + -59 + 0 +VERTEX + 5 +843 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -72 + 72 + 59 + 73 + -58 + 0 +VERTEX + 5 +844 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -72 + 72 + 58 + 73 + -57 + 0 +VERTEX + 5 +845 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -72 + 72 + 57 + 73 + -56 + 0 +VERTEX + 5 +846 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -72 + 72 + 56 + 73 + -55 + 0 +VERTEX + 5 +847 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -72 + 72 + 55 + 73 + -54 + 0 +VERTEX + 5 +848 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -72 + 72 + 54 + 73 + -53 + 0 +VERTEX + 5 +849 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -72 + 72 + 53 + 73 + -52 + 0 +VERTEX + 5 +84A +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -72 + 72 + 52 + 73 + -51 + 0 +VERTEX + 5 +84B +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -72 + 72 + 51 + 73 + -50 + 0 +VERTEX + 5 +84C +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -72 + 72 + 50 + 73 + -49 + 0 +VERTEX + 5 +84D +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -72 + 72 + 49 + 73 + -48 + 0 +VERTEX + 5 +84E +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -72 + 72 + 48 + 73 + -47 + 0 +VERTEX + 5 +84F +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -72 + 72 + 47 + 73 + -46 + 0 +VERTEX + 5 +850 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -72 + 72 + 46 + 73 + -45 + 0 +VERTEX + 5 +851 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -72 + 72 + 45 + 73 + -44 + 0 +VERTEX + 5 +852 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -72 + 72 + 44 + 73 + -43 + 0 +VERTEX + 5 +853 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -72 + 72 + 43 + 73 + -42 + 0 +VERTEX + 5 +854 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -72 + 72 + 42 + 73 + -41 + 0 +VERTEX + 5 +855 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -72 + 72 + 41 + 73 + -40 + 0 +VERTEX + 5 +856 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -72 + 72 + 40 + 73 + -39 + 0 +VERTEX + 5 +857 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -72 + 72 + 39 + 73 + -38 + 0 +VERTEX + 5 +858 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 +100 +AcDbFaceRecord + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 128 + 71 + -72 + 72 + 38 + 73 + 37 + 0 +SEQEND + 5 +859 +330 +7A8 +100 +AcDbEntity + 8 +0 + 6 +Durchgehend + 62 + 250 + 0 +VIEWPORT + 5 +85A +330 +1B +100 +AcDbEntity + 67 + 1 + 8 +0 +100 +AcDbViewport + 10 +0.0 + 20 +-210.0 + 30 +0.0 + 40 +1200.0 + 41 +420.0 + 68 + 1 + 69 + 1 + 12 +0.0 + 22 +-210.0 + 13 +0.0 + 23 +0.0 + 14 +5.0 + 24 +5.0 + 15 +5.0 + 25 +5.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 45 +420.0 + 50 +0.0 + 51 +0.0 + 72 + 1000 + 90 + 32800 + 1 + +281 + 0 + 71 + 1 + 74 + 0 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +C +330 +0 +100 +AcDbDictionary +281 + 1 + 3 +ACAD_GROUP +350 +D + 3 +ACAD_LAYOUT +350 +1A + 3 +ACAD_MLEADERSTYLE +350 +85C + 3 +ACAD_MLINESTYLE +350 +17 + 3 +ACAD_PLOTSETTINGS +350 +19 + 3 +ACAD_PLOTSTYLENAME +350 +E + 3 +ACAD_SCALELIST +350 +85D + 3 +ACAD_TABLESTYLE +350 +46 + 3 +ACAD_VISUALSTYLE +350 +2A + 3 +AcDbVariableDictionary +350 +85B + 0 +DICTIONARY + 5 +D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +1A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Model +350 +22 + 3 +Papier 1 +350 +1E + 0 +DICTIONARY + 5 +85C +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +DICTIONARY + 5 +17 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +18 + 0 +DICTIONARY + 5 +19 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 0 +ACDBDICTIONARYWDFLT + 5 +E +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Normal +350 +F +100 +AcDbDictionaryWithDefault +340 +F + 0 +DICTIONARY + 5 +85D +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +A0 +350 +85E + 3 +A1 +350 +85F + 3 +A2 +350 +860 + 3 +A3 +350 +861 + 3 +A4 +350 +862 + 3 +A5 +350 +863 + 3 +A6 +350 +864 + 3 +A7 +350 +865 + 3 +A8 +350 +866 + 3 +A9 +350 +867 + 3 +B0 +350 +868 + 3 +B1 +350 +869 + 3 +B2 +350 +86A + 3 +B3 +350 +86B + 3 +B4 +350 +86C + 3 +B5 +350 +86D + 3 +B6 +350 +86E + 3 +B7 +350 +86F + 3 +B8 +350 +870 + 3 +B9 +350 +871 + 3 +C0 +350 +872 + 3 +C1 +350 +873 + 3 +C2 +350 +874 + 3 +C3 +350 +875 + 3 +C4 +350 +876 + 3 +C5 +350 +877 + 3 +C6 +350 +878 + 3 +C7 +350 +879 + 3 +C8 +350 +87A + 3 +C9 +350 +87B + 3 +D0 +350 +87C + 3 +D1 +350 +87D + 3 +D2 +350 +87E + 0 +DICTIONARY + 5 +46 +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +Standard +350 +47 + 0 +DICTIONARY + 5 +2A +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +2dWireframe +350 +2F + 3 +3D Hidden +350 +31 + 3 +3dWireframe +350 +30 + 3 +Basic +350 +32 + 3 +Brighten +350 +36 + 3 +ColorChange +350 +3A + 3 +Conceptual +350 +34 + 3 +Dim +350 +35 + 3 +Facepattern +350 +39 + 3 +Flat +350 +2B + 3 +FlatWithEdges +350 +2C + 3 +Gouraud +350 +2D + 3 +GouraudWithEdges +350 +2E + 3 +Linepattern +350 +38 + 3 +Realistic +350 +33 + 3 +Thicken +350 +37 + 0 +DICTIONARY + 5 +85B +102 +{ACAD_REACTORS +330 +C +102 +} +330 +C +100 +AcDbDictionary +281 + 1 + 3 +CANNOSCALE +350 +883 + 0 +LAYOUT + 5 +22 +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +TCAD_Plot + 4 +1200.00 x 420.00 MM + 6 + + 40 +0.0 + 41 +0.0 + 42 +0.0 + 43 +0.0 + 44 +1200.0 + 45 +420.0 + 46 +0.0 + 47 +0.0 + 48 +-600.0 + 49 +-210.0 +140 +600.0 +141 +210.0 +142 +1.0 +143 +1.0 + 70 + 1696 + 72 + 1 + 73 + 0 + 74 + 4 + 7 + + 75 + 0 +147 +0.771179302045728 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +Model + 70 + 1 + 71 + 0 + 10 +-600.0 + 20 +-420.0 + 11 +600.0 + 21 +0.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +-600.0 + 24 +-420.0 + 34 +0.0 + 15 +600.0 + 25 +0.0 + 35 +116.0 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 + 0 +330 +1F +331 +29 + 0 +LAYOUT + 5 +1E +102 +{ACAD_REACTORS +330 +1A +102 +} +330 +1A +100 +AcDbPlotSettings + 1 + + 2 +TCAD_Plot + 4 +279.40 x 215.90 MM + 6 + + 40 +0.0 + 41 +0.0 + 42 +0.0 + 43 +0.0 + 44 +279.4 + 45 +215.9 + 46 +0.0 + 47 +0.0 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +1.0 + 70 + 672 + 72 + 1 + 73 + 0 + 74 + 5 + 7 + + 75 + 16 +147 +1.0 +148 +139.7 +149 +317.95 +100 +AcDbLayout + 1 +Papier 1 + 70 + 1 + 71 + 1 + 10 +-139.7 + 20 +-317.95 + 11 +139.7 + 21 +-102.05 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +-139.7 + 24 +-317.95 + 34 +0.0 + 15 +139.7 + 25 +-102.05 + 35 +0.0 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 + 0 +330 +1B +331 +85A + 0 +MLINESTYLE + 5 +18 +102 +{ACAD_REACTORS +330 +17 +102 +} +330 +17 +100 +AcDbMlineStyle + 2 +Standard + 70 + 0 + 3 + + 62 + 256 + 51 +90.0 + 52 +90.0 + 71 + 5 + 49 +0.5 + 62 + 256 + 6 +BYLAYER + 49 +-0.5 + 62 + 256 + 6 +BYLAYER + 49 +5.0 + 62 + 7 + 6 +BYLAYER + 49 +0.0 + 62 + 7 + 6 +BYLAYER + 49 +-5.0 + 62 + 7 + 6 +BYLAYER + 0 +ACDBPLACEHOLDER + 5 +F +102 +{ACAD_REACTORS +330 +E +102 +} +330 +E + 0 +SCALE + 5 +85E +102 +{ACAD_REACTORS +330 +85D +102 +} +330 +85D +100 +AcDbScale + 70 + 0 +300 +1:1 +140 +1.0 +141 +1.0 +290 + 1 + 0 +SCALE + 5 +85F +102 +{ACAD_REACTORS +330 +85D +102 +} +330 +85D +100 +AcDbScale + 70 + 0 +300 +1:2 +140 +1.0 +141 +2.0 +290 + 0 + 0 +SCALE + 5 +860 +102 +{ACAD_REACTORS +330 +85D +102 +} +330 +85D +100 +AcDbScale + 70 + 0 +300 +1:4 +140 +1.0 +141 +4.0 +290 + 0 + 0 +SCALE + 5 +861 +102 +{ACAD_REACTORS +330 +85D +102 +} +330 +85D +100 +AcDbScale + 70 + 0 +300 +1:5 +140 +1.0 +141 +5.0 +290 + 0 + 0 +SCALE + 5 +862 +102 +{ACAD_REACTORS +330 +85D +102 +} +330 +85D +100 +AcDbScale + 70 + 0 +300 +1:8 +140 +1.0 +141 +8.0 +290 + 0 + 0 +SCALE + 5 +863 +102 +{ACAD_REACTORS +330 +85D +102 +} +330 +85D +100 +AcDbScale + 70 + 0 +300 +1:10 +140 +1.0 +141 +10.0 +290 + 0 + 0 +SCALE + 5 +864 +102 +{ACAD_REACTORS +330 +85D +102 +} +330 +85D +100 +AcDbScale + 70 + 0 +300 +1:16 +140 +1.0 +141 +16.0 +290 + 0 + 0 +SCALE + 5 +865 +102 +{ACAD_REACTORS +330 +85D +102 +} +330 +85D +100 +AcDbScale + 70 + 0 +300 +1:20 +140 +1.0 +141 +20.0 +290 + 0 + 0 +SCALE + 5 +866 +102 +{ACAD_REACTORS +330 +85D +102 +} +330 +85D +100 +AcDbScale + 70 + 0 +300 +1:30 +140 +1.0 +141 +30.0 +290 + 0 + 0 +SCALE + 5 +867 +102 +{ACAD_REACTORS +330 +85D +102 +} +330 +85D +100 +AcDbScale + 70 + 0 +300 +1:40 +140 +1.0 +141 +40.0 +290 + 0 + 0 +SCALE + 5 +868 +102 +{ACAD_REACTORS +330 +85D +102 +} +330 +85D +100 +AcDbScale + 70 + 0 +300 +1:50 +140 +1.0 +141 +50.0 +290 + 0 + 0 +SCALE + 5 +869 +102 +{ACAD_REACTORS +330 +85D +102 +} +330 +85D +100 +AcDbScale + 70 + 0 +300 +1:100 +140 +1.0 +141 +100.0 +290 + 0 + 0 +SCALE + 5 +86A +102 +{ACAD_REACTORS +330 +85D +102 +} +330 +85D +100 +AcDbScale + 70 + 0 +300 +2:1 +140 +2.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +86B +102 +{ACAD_REACTORS +330 +85D +102 +} +330 +85D +100 +AcDbScale + 70 + 0 +300 +4:1 +140 +4.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +86C +102 +{ACAD_REACTORS +330 +85D +102 +} +330 +85D +100 +AcDbScale + 70 + 0 +300 +8:1 +140 +8.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +86D +102 +{ACAD_REACTORS +330 +85D +102 +} +330 +85D +100 +AcDbScale + 70 + 0 +300 +10:1 +140 +10.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +86E +102 +{ACAD_REACTORS +330 +85D +102 +} +330 +85D +100 +AcDbScale + 70 + 0 +300 +100:1 +140 +100.0 +141 +1.0 +290 + 0 + 0 +SCALE + 5 +86F +102 +{ACAD_REACTORS +330 +85D +102 +} +330 +85D +100 +AcDbScale + 70 + 0 +300 +1/128" = 1'-0" +140 +0.0078125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +870 +102 +{ACAD_REACTORS +330 +85D +102 +} +330 +85D +100 +AcDbScale + 70 + 0 +300 +1/64" = 1'-0" +140 +0.015625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +871 +102 +{ACAD_REACTORS +330 +85D +102 +} +330 +85D +100 +AcDbScale + 70 + 0 +300 +1/32" = 1'-0" +140 +0.03125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +872 +102 +{ACAD_REACTORS +330 +85D +102 +} +330 +85D +100 +AcDbScale + 70 + 0 +300 +1/16" = 1'-0" +140 +0.0625 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +873 +102 +{ACAD_REACTORS +330 +85D +102 +} +330 +85D +100 +AcDbScale + 70 + 0 +300 +3/32" = 1'-0" +140 +0.09375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +874 +102 +{ACAD_REACTORS +330 +85D +102 +} +330 +85D +100 +AcDbScale + 70 + 0 +300 +1/8" = 1'-0" +140 +0.125 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +875 +102 +{ACAD_REACTORS +330 +85D +102 +} +330 +85D +100 +AcDbScale + 70 + 0 +300 +3/16" = 1'-0" +140 +0.1875 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +876 +102 +{ACAD_REACTORS +330 +85D +102 +} +330 +85D +100 +AcDbScale + 70 + 0 +300 +1/4" = 1'-0" +140 +0.25 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +877 +102 +{ACAD_REACTORS +330 +85D +102 +} +330 +85D +100 +AcDbScale + 70 + 0 +300 +3/8" = 1'-0" +140 +0.375 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +878 +102 +{ACAD_REACTORS +330 +85D +102 +} +330 +85D +100 +AcDbScale + 70 + 0 +300 +1/2" = 1'-0" +140 +0.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +879 +102 +{ACAD_REACTORS +330 +85D +102 +} +330 +85D +100 +AcDbScale + 70 + 0 +300 +3/4" = 1'-0" +140 +0.75 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +87A +102 +{ACAD_REACTORS +330 +85D +102 +} +330 +85D +100 +AcDbScale + 70 + 0 +300 +1" = 1'-0" +140 +1.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +87B +102 +{ACAD_REACTORS +330 +85D +102 +} +330 +85D +100 +AcDbScale + 70 + 0 +300 +1-1/2" = 1'-0" +140 +1.5 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +87C +102 +{ACAD_REACTORS +330 +85D +102 +} +330 +85D +100 +AcDbScale + 70 + 0 +300 +3" = 1'-0" +140 +3.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +87D +102 +{ACAD_REACTORS +330 +85D +102 +} +330 +85D +100 +AcDbScale + 70 + 0 +300 +6" = 1'-0" +140 +6.0 +141 +12.0 +290 + 0 + 0 +SCALE + 5 +87E +102 +{ACAD_REACTORS +330 +85D +102 +} +330 +85D +100 +AcDbScale + 70 + 0 +300 +1'-0" = 1'-0" +140 +12.0 +141 +12.0 +290 + 0 + 0 +TABLESTYLE + 5 +47 +102 +{ACAD_REACTORS +330 +46 +102 +} +330 +46 +100 +AcDbTableStyle + 3 + + 70 + 0 + 71 + 0 + 40 +1.0 + 41 +1.0 +280 + 0 +281 + 0 + 7 +Standard +140 +3.0 +170 + 5 + 62 + 0 + 63 + 257 +283 + 0 +274 + -2 +284 + 1 + 64 + 0 +275 + -2 +285 + 1 + 65 + 0 +276 + -2 +286 + 1 + 66 + 0 +277 + -2 +287 + 1 + 67 + 0 +278 + -2 +288 + 1 + 68 + 0 +279 + -2 +289 + 1 + 69 + 0 + 7 +Standard +140 +3.0 +170 + 5 + 62 + 0 + 63 + 257 +283 + 0 +274 + -2 +284 + 1 + 64 + 0 +275 + -2 +285 + 1 + 65 + 0 +276 + -2 +286 + 1 + 66 + 0 +277 + -2 +287 + 1 + 67 + 0 +278 + -2 +288 + 1 + 68 + 0 +279 + -2 +289 + 1 + 69 + 0 + 7 +Standard +140 +3.0 +170 + 5 + 62 + 0 + 63 + 257 +283 + 0 +274 + -2 +284 + 1 + 64 + 0 +275 + -2 +285 + 1 + 65 + 0 +276 + -2 +286 + 1 + 66 + 0 +277 + -2 +287 + 1 + 67 + 0 +278 + -2 +288 + 1 + 68 + 0 +279 + -2 +289 + 1 + 69 + 0 + 0 +VISUALSTYLE + 5 +2F +102 +{ACAD_REACTORS +330 +2A +102 +} +330 +2A +100 +AcDbVisualStyle + 2 +2dWireframe + 70 + 4 + 71 + 0 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +VISUALSTYLE + 5 +31 +102 +{ACAD_REACTORS +330 +2A +102 +} +330 +2A +100 +AcDbVisualStyle + 2 +3D Hidden + 70 + 6 + 71 + 1 + 72 + 2 + 73 + 2 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 + 74 + 2 + 91 + 2 + 64 + 7 + 65 + 257 + 75 + 2 +175 + 1 + 42 +40.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 3 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +VISUALSTYLE + 5 +30 +102 +{ACAD_REACTORS +330 +2A +102 +} +330 +2A +100 +AcDbVisualStyle + 2 +3dWireframe + 70 + 5 + 71 + 0 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +VISUALSTYLE + 5 +32 +102 +{ACAD_REACTORS +330 +2A +102 +} +330 +2A +100 +AcDbVisualStyle + 2 +Basic + 70 + 7 + 71 + 1 + 72 + 0 + 73 + 1 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 + 74 + 0 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +VISUALSTYLE + 5 +36 +102 +{ACAD_REACTORS +330 +2A +102 +} +330 +2A +100 +AcDbVisualStyle + 2 +Brighten + 70 + 12 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +50.0 +173 + 0 +291 + 1 + 45 +0.0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +VISUALSTYLE + 5 +3A +102 +{ACAD_REACTORS +330 +2A +102 +} +330 +2A +100 +AcDbVisualStyle + 2 +ColorChange + 70 + 16 + 71 + 2 + 72 + 2 + 73 + 3 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 8 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 8 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +VISUALSTYLE + 5 +34 +102 +{ACAD_REACTORS +330 +2A +102 +} +330 +2A +100 +AcDbVisualStyle + 2 +Conceptual + 70 + 9 + 71 + 3 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 + 74 + 2 + 91 + 2 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +40.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 3 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +VISUALSTYLE + 5 +35 +102 +{ACAD_REACTORS +330 +2A +102 +} +330 +2A +100 +AcDbVisualStyle + 2 +Dim + 70 + 11 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +-50.0 +173 + 0 +291 + 1 + 45 +0.0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +VISUALSTYLE + 5 +39 +102 +{ACAD_REACTORS +330 +2A +102 +} +330 +2A +100 +AcDbVisualStyle + 2 +Facepattern + 70 + 15 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +VISUALSTYLE + 5 +2B +102 +{ACAD_REACTORS +330 +2A +102 +} +330 +2A +100 +AcDbVisualStyle + 2 +Flat + 70 + 0 + 71 + 2 + 72 + 1 + 73 + 1 + 90 + 2 + 40 +-0.6 + 41 +30.0 + 62 + 5 + 63 + 7 + 74 + 0 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +VISUALSTYLE + 5 +2C +102 +{ACAD_REACTORS +330 +2A +102 +} +330 +2A +100 +AcDbVisualStyle + 2 +FlatWithEdges + 70 + 1 + 71 + 2 + 72 + 1 + 73 + 1 + 90 + 2 + 40 +-0.6 + 41 +30.0 + 62 + 5 + 63 + 7 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +VISUALSTYLE + 5 +2D +102 +{ACAD_REACTORS +330 +2A +102 +} +330 +2A +100 +AcDbVisualStyle + 2 +Gouraud + 70 + 2 + 71 + 2 + 72 + 2 + 73 + 1 + 90 + 2 + 40 +-0.6 + 41 +30.0 + 62 + 5 + 63 + 7 + 74 + 0 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +VISUALSTYLE + 5 +2E +102 +{ACAD_REACTORS +330 +2A +102 +} +330 +2A +100 +AcDbVisualStyle + 2 +GouraudWithEdges + 70 + 3 + 71 + 2 + 72 + 2 + 73 + 1 + 90 + 2 + 40 +-0.6 + 41 +30.0 + 62 + 5 + 63 + 7 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 0 + 66 + 257 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +VISUALSTYLE + 5 +38 +102 +{ACAD_REACTORS +330 +2A +102 +} +330 +2A +100 +AcDbVisualStyle + 2 +Linepattern + 70 + 14 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 7 +175 + 7 + 42 +1.0 + 92 + 8 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +VISUALSTYLE + 5 +33 +102 +{ACAD_REACTORS +330 +2A +102 +} +330 +2A +100 +AcDbVisualStyle + 2 +Realistic + 70 + 8 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 + 74 + 1 + 91 + 0 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 8 + 66 + 8 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 13 + 44 +0.0 +173 + 0 +291 + 0 + 45 +0.0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +VISUALSTYLE + 5 +37 +102 +{ACAD_REACTORS +330 +2A +102 +} +330 +2A +100 +AcDbVisualStyle + 2 +Thicken + 70 + 13 + 71 + 2 + 72 + 2 + 73 + 0 + 90 + 0 + 40 +-0.6 + 41 +-30.0 + 62 + 5 + 63 + 7 + 74 + 1 + 91 + 4 + 64 + 7 + 65 + 257 + 75 + 1 +175 + 1 + 42 +1.0 + 92 + 12 + 66 + 7 + 43 +1.0 + 76 + 1 + 77 + 6 + 78 + 2 + 67 + 7 + 79 + 5 +170 + 0 +171 + 0 +290 + 0 +174 + 0 + 93 + 1 + 44 +0.0 +173 + 0 +291 + 1 + 45 +0.0 +1001 +ACAD +1000 +AcDbSavedByObjectVersion +1070 + 0 + 0 +DICTIONARYVAR + 5 +883 +102 +{ACAD_REACTORS +330 +85B +102 +} +330 +85B +100 +DictionaryVariables +280 + 0 + 1 +1:1 + 0 +ENDSEC + 0 +EOF diff --git a/test/models/MDC/spider.mdc b/test/models/MDC/spider.mdc new file mode 100644 index 000000000..dcd4df835 Binary files /dev/null and b/test/models/MDC/spider.mdc differ diff --git a/test/models/OBJ/point_cloud.obj b/test/models/OBJ/point_cloud.obj new file mode 100644 index 000000000..e65f20abc --- /dev/null +++ b/test/models/OBJ/point_cloud.obj @@ -0,0 +1,17 @@ +#### +# +# OBJ File Generated by Meshlab +# +#### +# Object up.obj +# +# Vertices: 3 +# Faces: 0 +# +#### +vn -0.281034 -0.057252 0.957989 +v -0.207717 -0.953997 2.554110 +vn -0.139126 -0.135672 0.980937 +v -0.275607 -0.965401 2.541530 +vn -0.163133 -0.131576 0.977791 +v -0.270155 -0.963170 2.548000 diff --git a/test/models/ParsingFiles/linesplitter_emptyline_test.txt b/test/models/ParsingFiles/linesplitter_emptyline_test.txt new file mode 100644 index 000000000..907178e5d --- /dev/null +++ b/test/models/ParsingFiles/linesplitter_emptyline_test.txt @@ -0,0 +1,3 @@ +TEST + +the rest diff --git a/test/models/ParsingFiles/linesplitter_tokenizetest.txt b/test/models/ParsingFiles/linesplitter_tokenizetest.txt new file mode 100644 index 000000000..fc6d204af --- /dev/null +++ b/test/models/ParsingFiles/linesplitter_tokenizetest.txt @@ -0,0 +1,12 @@ +#1= IFCORGANIZATION('GS','Graphisoft','Graphisoft',$,$); +#5= IFCAPPLICATION(#1,'14.0','ArchiCAD 14.0','ArchiCAD'); +#6= IFCPERSON('','Haefele','Karl-Heinz',$,$,$,$,$); +#8= IFCORGANIZATION('','KIT / IAI','',$,$); +#12= IFCPERSONANDORGANIZATION(#6,#8,$); +#13= IFCOWNERHISTORY(#12,#5,$,.ADDED.,$,$,$,1286451639); +#14= IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.); +#15= IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.); +#16= IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.); +#17= IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.); +#18= IFCMEASUREWITHUNIT(IFCPLANEANGLEMEASURE(0.017453293),#17); + diff --git a/test/unit/Common/utLineSplitter.cpp b/test/unit/Common/utLineSplitter.cpp new file mode 100644 index 000000000..ad050ea73 --- /dev/null +++ b/test/unit/Common/utLineSplitter.cpp @@ -0,0 +1,71 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2018, assimp team + + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ +#include "UnitTestPCH.h" + +#include +#include +#include + +using namespace Assimp; + +class utLineSplitter : public ::testing::Test { + // empty +}; + +TEST_F(utLineSplitter, tokenizetest) { + DefaultIOSystem fs; + IOStream* file = fs.Open(ASSIMP_TEST_MODELS_DIR"/ParsingFiles/linesplitter_tokenizetest.txt", "rb"); + + StreamReaderLE stream(file); + LineSplitter myLineSplitter(stream); +} + +TEST_F( utLineSplitter, issue212Test) { + DefaultIOSystem fs; + IOStream* file = fs.Open(ASSIMP_TEST_MODELS_DIR"/ParsingFiles/linesplitter_emptyline_test.txt", "rb"); + + StreamReaderLE stream(file); + LineSplitter myLineSplitter(stream); + myLineSplitter++; + EXPECT_THROW( myLineSplitter++, std::logic_error ); +} diff --git a/test/unit/ImportExport/utCOBImportExport.cpp b/test/unit/ImportExport/utCOBImportExport.cpp new file mode 100644 index 000000000..854f27cbb --- /dev/null +++ b/test/unit/ImportExport/utCOBImportExport.cpp @@ -0,0 +1,64 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2018, assimp team + + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ + +#include "UnitTestPCH.h" +#include "SceneDiffer.h" +#include "AbstractImportExportBase.h" + +#include +#include + +using namespace Assimp; + +class utCOBImportExport : public AbstractImportExportBase { +public: + virtual bool importerTest() { + Assimp::Importer importer; + const aiScene *scene = importer.ReadFile(ASSIMP_TEST_MODELS_DIR "/COB/molecule.cob", aiProcess_ValidateDataStructure); + return nullptr != scene; + } +}; + +TEST_F(utCOBImportExport, importAMFFromFileTest) { + EXPECT_TRUE(importerTest()); +} diff --git a/test/unit/ImportExport/utExporter.cpp b/test/unit/ImportExport/utExporter.cpp new file mode 100644 index 000000000..9ce4bfdd7 --- /dev/null +++ b/test/unit/ImportExport/utExporter.cpp @@ -0,0 +1,73 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2018, assimp team + + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ +#include "UnitTestPCH.h" + +#include +#include + +using namespace Assimp; + +class TestProgressHandler : public ProgressHandler { +public: + TestProgressHandler() : ProgressHandler() { + // empty + } + + virtual ~TestProgressHandler() { + // empty + } + + bool Update(float percentage = -1.f) override { + return true; + } +}; + +class ExporterTest : public ::testing::Test { + // empty +}; + +TEST_F(ExporterTest, ProgressHandlerTest) { + Exporter exporter; + TestProgressHandler *ph(new TestProgressHandler); + exporter.SetProgressHandler(ph); +} diff --git a/test/unit/ImportExport/utOFFImportExport.cpp b/test/unit/ImportExport/utOFFImportExport.cpp new file mode 100644 index 000000000..a355beab6 --- /dev/null +++ b/test/unit/ImportExport/utOFFImportExport.cpp @@ -0,0 +1,63 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2018, assimp team + + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ + +#include "UnitTestPCH.h" +#include "SceneDiffer.h" +#include "AbstractImportExportBase.h" +#include +#include +#include +#include + +class utOFFImportExport : public AbstractImportExportBase { +protected: + virtual bool importerTest() { + ::Assimp::Importer importer; + const aiScene *scene = importer.ReadFile(ASSIMP_TEST_MODELS_DIR "/OFF/Cube.off", aiProcess_ValidateDataStructure); + return nullptr != scene; + } +}; + +TEST_F(utOFFImportExport, importOFFFromFileTest) { + EXPECT_TRUE(importerTest()); +} diff --git a/test/unit/ImportExport/utOgreImportExport.cpp b/test/unit/ImportExport/utOgreImportExport.cpp new file mode 100644 index 000000000..1950fc90a --- /dev/null +++ b/test/unit/ImportExport/utOgreImportExport.cpp @@ -0,0 +1,64 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2018, assimp team + + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ + +#include "UnitTestPCH.h" +#include "SceneDiffer.h" +#include "AbstractImportExportBase.h" + +#include +#include + +using namespace Assimp; + +class utOgreImportExport : public AbstractImportExportBase { +public: + virtual bool importerTest() { + Assimp::Importer importer; + const aiScene *scene = importer.ReadFile(ASSIMP_TEST_MODELS_DIR "/Ogre/TheThing/Mesh.mesh.xml", aiProcess_ValidateDataStructure); + return nullptr != scene; + } +}; + +TEST_F(utOgreImportExport, importerTest ) { + EXPECT_TRUE(importerTest()); +} diff --git a/test/unit/ImportExport/utQ3BSPFileImportExport.cpp b/test/unit/ImportExport/utQ3BSPFileImportExport.cpp new file mode 100644 index 000000000..ba12652b4 --- /dev/null +++ b/test/unit/ImportExport/utQ3BSPFileImportExport.cpp @@ -0,0 +1,64 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2018, assimp team + + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ + +#include "UnitTestPCH.h" +#include "SceneDiffer.h" +#include "AbstractImportExportBase.h" + +#include +#include + +using namespace Assimp; + +class utQ3BSPImportExport : public AbstractImportExportBase { +public: + virtual bool importerTest() { + Assimp::Importer importer; + const aiScene *scene = importer.ReadFile(ASSIMP_TEST_MODELS_NONBSD_DIR "/PK3/SGDTT3.pk3", 0); + return nullptr != scene; + } +}; + +TEST_F(utQ3BSPImportExport, importerTest) { + EXPECT_TRUE(importerTest()); +} diff --git a/test/unit/utAMFImportExport.cpp b/test/unit/utAMFImportExport.cpp index b045a5fe8..332d5b929 100644 --- a/test/unit/utAMFImportExport.cpp +++ b/test/unit/utAMFImportExport.cpp @@ -59,6 +59,14 @@ public: } }; -TEST_F( utAMFImportExport, importACFromFileTest ) { +TEST_F( utAMFImportExport, importAMFFromFileTest ) { EXPECT_TRUE( importerTest() ); } + + + +TEST_F(utAMFImportExport, importAMFWithMatFromFileTest) { + Assimp::Importer importer; + const aiScene *scene = importer.ReadFile(ASSIMP_TEST_MODELS_DIR "/AMF/test_with_mat.amf", aiProcess_ValidateDataStructure); + EXPECT_NE(nullptr, scene); +} diff --git a/test/unit/utAssbinImportExport.cpp b/test/unit/utAssbinImportExport.cpp new file mode 100644 index 000000000..bbfb9421b --- /dev/null +++ b/test/unit/utAssbinImportExport.cpp @@ -0,0 +1,78 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2018, assimp team + + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ +#include "UnitTestPCH.h" +#include "SceneDiffer.h" +#include "AbstractImportExportBase.h" +#include +#include +#include + +using namespace Assimp; + +#ifndef ASSIMP_BUILD_NO_EXPORT + +class utAssbinImportExport : public AbstractImportExportBase { +public: + virtual bool importerTest() { + Assimp::Importer importer; + const aiScene *scene = importer.ReadFile( ASSIMP_TEST_MODELS_DIR "/OBJ/spider.obj", aiProcess_ValidateDataStructure ); + + Exporter exporter; + EXPECT_EQ( aiReturn_SUCCESS, exporter.Export( scene, "assbin", ASSIMP_TEST_MODELS_DIR "/OBJ/spider_test.assbin" ) ); + const aiScene *newScene = importer.ReadFile( ASSIMP_TEST_MODELS_DIR "/OBJ/spider_test.assbin", aiProcess_ValidateDataStructure ); + + return newScene != nullptr; + } +}; + +TEST_F( utAssbinImportExport, exportAssbin3DFromFileTest ) { + Assimp::Importer importer; + const aiScene *scene = importer.ReadFile( ASSIMP_TEST_MODELS_DIR "/OBJ/spider.obj", aiProcess_ValidateDataStructure ); + EXPECT_NE( nullptr, scene ); +} + +TEST_F( utAssbinImportExport, import3ExportAssbinDFromFileTest ) { + EXPECT_TRUE( importerTest() ); +} + +#endif // #ifndef ASSIMP_BUILD_NO_EXPORT diff --git a/test/unit/utDXFImporterExporter.cpp b/test/unit/utDXFImporterExporter.cpp index ee6f34ecd..e0e764ea6 100644 --- a/test/unit/utDXFImporterExporter.cpp +++ b/test/unit/utDXFImporterExporter.cpp @@ -69,3 +69,8 @@ TEST_F( utDXFImporterExporter, importerWithoutExtensionTest ) { EXPECT_NE( nullptr, scene ); } +TEST_F(utDXFImporterExporter, issue2229) { + Assimp::Importer importer; + const aiScene *scene = importer.ReadFile(ASSIMP_TEST_MODELS_DIR "/DXF/issue_2229.dxf", aiProcess_ValidateDataStructure); + EXPECT_NE(nullptr, scene); +} diff --git a/test/unit/utMDCImportExport.cpp b/test/unit/utMDCImportExport.cpp new file mode 100644 index 000000000..19b8e68d2 --- /dev/null +++ b/test/unit/utMDCImportExport.cpp @@ -0,0 +1,63 @@ +/* +--------------------------------------------------------------------------- +Open Asset Import Library (assimp) +--------------------------------------------------------------------------- + +Copyright (c) 2006-2018, assimp team + + + +All rights reserved. + +Redistribution and use of this software in source and binary forms, +with or without modification, are permitted provided that the following +conditions are met: + +* Redistributions of source code must retain the above +copyright notice, this list of conditions and the +following disclaimer. + +* Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the +following disclaimer in the documentation and/or other +materials provided with the distribution. + +* Neither the name of the assimp team, nor the names of its +contributors may be used to endorse or promote products +derived from this software without specific prior +written permission of the assimp team. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------------- +*/ + +#include "UnitTestPCH.h" +#include "AbstractImportExportBase.h" +#include +#include + +using namespace Assimp; + +class utMDCImportExport : public AbstractImportExportBase { +public: + virtual bool importerTest() { + Assimp::Importer importer; + const aiScene *scene = importer.ReadFile( ASSIMP_TEST_MODELS_DIR "/MDC/spider.mdc", 0); + return true; + return nullptr != scene; + } +}; + +TEST_F( utMDCImportExport, importMDCFromFileTest ) { + EXPECT_TRUE( importerTest() ); +} diff --git a/test/unit/utMaterialSystem.cpp b/test/unit/utMaterialSystem.cpp index 550dc63da..55ee6e2a0 100644 --- a/test/unit/utMaterialSystem.cpp +++ b/test/unit/utMaterialSystem.cpp @@ -129,18 +129,10 @@ TEST_F(MaterialSystemTest, testStringProperty) { EXPECT_STREQ("Hello, this is a small test", s.data); } -// ------------------------------------------------------------------------------------------------ -TEST_F(MaterialSystemTest, testDefaultMaterialAccess) { - aiMaterial *mat = aiCreateAndRegisterDefaultMaterial(); - EXPECT_NE(nullptr, mat); - aiReleaseDefaultMaterial(); - - delete mat; -} // ------------------------------------------------------------------------------------------------ TEST_F(MaterialSystemTest, testMaterialNameAccess) { - aiMaterial *mat = aiCreateAndRegisterDefaultMaterial(); + aiMaterial *mat = new aiMaterial(); EXPECT_NE(nullptr, mat); aiString name = mat->GetName(); diff --git a/test/unit/utObjImportExport.cpp b/test/unit/utObjImportExport.cpp index 5a10ae17b..f0b20fb7f 100644 --- a/test/unit/utObjImportExport.cpp +++ b/test/unit/utObjImportExport.cpp @@ -389,3 +389,10 @@ TEST_F( utObjImportExport, mtllib_after_g ) { ASSERT_EQ(aiReturn_SUCCESS, mat->Get(AI_MATKEY_NAME, name)); EXPECT_STREQ("MyMaterial", name.C_Str()); } + +TEST_F(utObjImportExport, import_point_cloud) { + ::Assimp::Importer importer; + const aiScene *scene = importer.ReadFile(ASSIMP_TEST_MODELS_DIR "/OBJ/point_cloud.obj", 0 ); + ASSERT_NE(nullptr, scene); +} + diff --git a/test/unit/utObjTools.cpp b/test/unit/utObjTools.cpp index 093244eb1..6604dfd59 100644 --- a/test/unit/utObjTools.cpp +++ b/test/unit/utObjTools.cpp @@ -115,4 +115,3 @@ TEST_F( utObjTools, countComponents_TwoLines_Success ) { size_t numComps = test_parser.testGetNumComponentsInDataDefinition(); EXPECT_EQ( 3U, numComps ); } - diff --git a/test/unit/utSTLImportExport.cpp b/test/unit/utSTLImportExport.cpp index 9ebfb0f05..ee62253fd 100644 --- a/test/unit/utSTLImportExport.cpp +++ b/test/unit/utSTLImportExport.cpp @@ -67,6 +67,20 @@ TEST_F( utSTLImporterExporter, importSTLFromFileTest ) { EXPECT_TRUE( importerTest() ); } + +TEST_F(utSTLImporterExporter, test_multiple) { + // import same file twice, each with its own importer + // must work both times and not crash + Assimp::Importer importer1; + const aiScene *scene1 = importer1.ReadFile( ASSIMP_TEST_MODELS_DIR "/STL/Spider_ascii.stl", aiProcess_ValidateDataStructure ); + EXPECT_NE(nullptr, scene1); + + Assimp::Importer importer2; + const aiScene *scene2 = importer2.ReadFile( ASSIMP_TEST_MODELS_DIR "/STL/Spider_ascii.stl", aiProcess_ValidateDataStructure ); + EXPECT_NE(nullptr, scene2); +} + + TEST_F( utSTLImporterExporter, test_with_two_solids ) { Assimp::Importer importer; const aiScene *scene = importer.ReadFile( ASSIMP_TEST_MODELS_DIR "/STL/triangle_with_two_solids.stl", aiProcess_ValidateDataStructure ); diff --git a/test/unit/utSceneCombiner.cpp b/test/unit/utSceneCombiner.cpp index 600d7ba9d..3e7ba0146 100644 --- a/test/unit/utSceneCombiner.cpp +++ b/test/unit/utSceneCombiner.cpp @@ -73,7 +73,7 @@ TEST_F( utSceneCombiner, MergeMeshes_ValidNames_Test ) { EXPECT_EQ( "mesh_1.mesh_2.mesh_3", outName ); } -TEST_F( utSceneCombiner, CopySceneWithNullptr_NoException ) { +TEST_F( utSceneCombiner, CopySceneWithNullptr_AI_NO_EXCEPTion ) { EXPECT_NO_THROW( SceneCombiner::CopyScene( nullptr, nullptr ) ); EXPECT_NO_THROW( SceneCombiner::CopySceneFlat( nullptr, nullptr ) ); } diff --git a/test/unit/utglTF2ImportExport.cpp b/test/unit/utglTF2ImportExport.cpp index 9eb3ef5bd..264580aad 100644 --- a/test/unit/utglTF2ImportExport.cpp +++ b/test/unit/utglTF2ImportExport.cpp @@ -101,6 +101,24 @@ TEST_F( utglTF2ImportExport, importBinaryglTF2FromFileTest ) { EXPECT_TRUE( binaryImporterTest() ); } +#ifndef ASSIMP_BUILD_NO_EXPORT +TEST_F(utglTF2ImportExport, importglTF2AndExportToOBJ) { + Assimp::Importer importer; + Assimp::Exporter exporter; + const aiScene *scene = importer.ReadFile(ASSIMP_TEST_MODELS_DIR "/glTF2/BoxTextured-glTF/BoxTextured.gltf", aiProcess_ValidateDataStructure); + EXPECT_NE(nullptr, scene); + EXPECT_EQ(aiReturn_SUCCESS, exporter.Export(scene, "obj", ASSIMP_TEST_MODELS_DIR "/glTF2/BoxTextured-glTF/BoxTextured_out.obj")); +} + +TEST_F(utglTF2ImportExport, importglTF2EmbeddedAndExportToOBJ) { + Assimp::Importer importer; + Assimp::Exporter exporter; + const aiScene *scene = importer.ReadFile(ASSIMP_TEST_MODELS_DIR "/glTF2/BoxTextured-glTF-Embedded/BoxTextured.gltf", aiProcess_ValidateDataStructure); + EXPECT_NE(nullptr, scene); + EXPECT_EQ(aiReturn_SUCCESS, exporter.Export(scene, "obj", ASSIMP_TEST_MODELS_DIR "/glTF2/BoxTextured-glTF-Embedded/BoxTextured_out.obj")); +} +#endif // ASSIMP_BUILD_NO_EXPORT + TEST_F(utglTF2ImportExport, importglTF2PrimitiveModePointsWithoutIndices) { Assimp::Importer importer; //Points without indices @@ -329,6 +347,34 @@ TEST_F(utglTF2ImportExport, importglTF2PrimitiveModeTrianglesFan) { } } +std::vector ReadFile(const char* name) { + std::vector ret; + + FILE* p = ::fopen(name, "r"); + if (nullptr == p) { + return ret; + } + + ::fseek(p, 0, SEEK_END); + const auto size = ::ftell(p); + ::fseek(p, 0, SEEK_SET); + + ret.resize(size); + ::fread(&ret[0], 1, size, p); + ::fclose(p); + + return ret; +} + +TEST_F(utglTF2ImportExport, importglTF2FromMemory) { + /*const auto flags = aiProcess_CalcTangentSpace | aiProcess_Triangulate | aiProcess_RemoveComponent | + aiProcess_GenSmoothNormals | aiProcess_PreTransformVertices | aiProcess_FixInfacingNormals | + aiProcess_FindDegenerates | aiProcess_GenUVCoords | aiProcess_SortByPType; + const auto& buff = ReadFile("C:\\Users\\kimkulling\\Downloads\\camel\\camel\\scene.gltf");*/ + /*const aiScene* Scene = ::aiImportFileFromMemory(&buff[0], buff.size(), flags, ".gltf"); + EXPECT_EQ( nullptr, Scene );*/ +} + #ifndef ASSIMP_BUILD_NO_EXPORT TEST_F( utglTF2ImportExport, exportglTF2FromFileTest ) { EXPECT_TRUE( exporterTest() ); diff --git a/tools/assimp_cmd/Main.cpp b/tools/assimp_cmd/Main.cpp index 41412b93d..2a18bf33a 100644 --- a/tools/assimp_cmd/Main.cpp +++ b/tools/assimp_cmd/Main.cpp @@ -397,6 +397,9 @@ int ProcessStandardArguments( else if (! strcmp( param, "-gsn") || ! strcmp( param, "--gen-smooth-normals")) { fill.ppFlags |= aiProcess_GenSmoothNormals; } + else if (! strcmp( param, "-dn") || ! strcmp( param, "--drop-normals")) { + fill.ppFlags |= aiProcess_DropNormals; + } else if (! strcmp( param, "-gn") || ! strcmp( param, "--gen-normals")) { fill.ppFlags |= aiProcess_GenNormals; } @@ -466,6 +469,9 @@ int ProcessStandardArguments( else if (! strcmp( param, "-sbc") || ! strcmp( param, "--split-by-bone-count")) { fill.ppFlags |= aiProcess_SplitByBoneCount; } + else if (!strcmp(param, "-embtex") || ! strcmp(param, "--embed-textures")) { + fill.ppFlags |= aiProcess_EmbedTextures; + } else if (! strncmp( param, "-c",2) || ! strncmp( param, "--config=",9)) { const unsigned int ofs = (params[i][1] == '-' ? 9 : 2); diff --git a/tools/assimp_cmd/WriteDumb.cpp b/tools/assimp_cmd/WriteDumb.cpp index 3fbfab824..b05adf249 100644 --- a/tools/assimp_cmd/WriteDumb.cpp +++ b/tools/assimp_cmd/WriteDumb.cpp @@ -82,15 +82,18 @@ void CompressBinaryDump(const char* file, unsigned int head_size) uint8_t* data = new uint8_t[size]; fread(data,1,size,p); - uLongf out_size = (uLongf)((size-head_size) * 1.001 + 12.); + uint32_t uncompressed_size = size-head_size; + uLongf out_size = (uLongf)compressBound(uncompressed_size); uint8_t* out = new uint8_t[out_size]; - compress2(out,&out_size,data+head_size,size-head_size,9); + int res = compress2(out,&out_size,data+head_size,uncompressed_size,9); + if(res != Z_OK) + fprintf(stderr, "compress2: error\n"); fclose(p); p = fopen(file,"w"); fwrite(data,head_size,1,p); - fwrite(&out_size,4,1,p); // write size of uncompressed data + fwrite(&uncompressed_size,4,1,p); // write size of uncompressed data fwrite(out,out_size,1,p); fclose(p);