diff --git a/Build.md b/Build.md new file mode 100644 index 000000000..b548c1794 --- /dev/null +++ b/Build.md @@ -0,0 +1,7 @@ +# Build instructions + +> cmake CMakeLists.txt +make -j4 + +##UWP +See https://stackoverflow.com/questions/40803170/cmake-uwp-using-cmake-to-build-universal-windows-app diff --git a/CMakeLists.txt b/CMakeLists.txt index 3d6037259..f1482fdfa 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -210,8 +210,8 @@ 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 @@ -224,11 +224,11 @@ ELSEIF(MSVC) 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() diff --git a/code/3DSHelper.h b/code/3DSHelper.h index 7476438bd..a904abb20 100644 --- a/code/3DSHelper.h +++ b/code/3DSHelper.h @@ -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(); } @@ -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/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 a662e011e..d64b5c1de 100644 --- a/code/AssbinExporter.cpp +++ b/code/AssbinExporter.cpp @@ -824,8 +824,7 @@ public: } }; -void ExportSceneAssbin(const char* pFile, IOSystem* pIOSystem, const aiScene* pScene, const ExportProperties* /*pProperties*/) -{ +void ExportSceneAssbin(const char* pFile, IOSystem* pIOSystem, const aiScene* pScene, const ExportProperties* /*pProperties*/) { AssbinExport exporter; exporter.WriteBinaryDump( pFile, pIOSystem, pScene ); } diff --git a/code/AssbinLoader.cpp b/code/AssbinLoader.cpp index 191dc2137..81c77f3fa 100644 --- a/code/AssbinLoader.cpp +++ b/code/AssbinLoader.cpp @@ -547,7 +547,6 @@ void AssbinImporter::ReadBinaryTexture(IOStream * stream, aiTexture* tex) { stream->Read(tex->pcData,1,tex->mWidth*tex->mHeight*4); } } - } // ----------------------------------------------------------------------------------- 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/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/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/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/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/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/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/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/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/MDLFileData.h b/code/MDLFileData.h index ba732add0..1215b2a80 100644 --- a/code/MDLFileData.h +++ b/code/MDLFileData.h @@ -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/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/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/SMDLoader.h b/code/SMDLoader.h index adc596a63..40c08385f 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); } 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/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/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..d1a70ae0a 100644 --- a/code/glTF2Asset.h +++ b/code/glTF2Asset.h @@ -659,7 +659,7 @@ namespace glTF2 int width, height; private: - uint8_t* mData; + std::unique_ptr mData; size_t mDataLength; public: @@ -674,7 +674,7 @@ namespace glTF2 { return mDataLength; } inline const uint8_t* GetData() const - { return mData; } + { return mData.get(); } inline uint8_t* StealData(); diff --git a/code/glTF2Asset.inl b/code/glTF2Asset.inl index b17df3d4e..11e3965e5 100755 --- a/code/glTF2Asset.inl +++ b/code/glTF2Asset.inl @@ -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; } } diff --git a/code/glTF2Exporter.cpp b/code/glTF2Exporter.cpp index 0a7f5c415..564533de4 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 ); } diff --git a/code/glTF2Importer.cpp b/code/glTF2Importer.cpp index 8581d25fe..740935601 100755 --- a/code/glTF2Importer.cpp +++ b/code/glTF2Importer.cpp @@ -818,7 +818,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++; 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/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/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/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/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/ProgressHandler.hpp b/include/assimp/ProgressHandler.hpp index b1d095b7f..0fa1501d4 100644 --- a/include/assimp/ProgressHandler.hpp +++ b/include/assimp/ProgressHandler.hpp @@ -63,7 +63,7 @@ class ASSIMP_API ProgressHandler { protected: /** @brief Default constructor */ - ProgressHandler () { + ProgressHandler () AI_NO_EXCEPT { } public: /** @brief Virtual destructor */ 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..570b8f44c 100644 --- a/include/assimp/color4.h +++ b/include/assimp/color4.h @@ -59,7 +59,7 @@ 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) {} diff --git a/include/assimp/defs.h b/include/assimp/defs.h index b587396bf..e2ce6953d 100644 --- a/include/assimp/defs.h +++ b/include/assimp/defs.h @@ -289,4 +289,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/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 911853b4b..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 ) 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..9920f0059 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) : 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/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/vector3.h b/include/assimp/vector3.h index 292da8248..2c610b3a9 100644 --- a/include/assimp/vector3.h +++ b/include/assimp/vector3.h @@ -66,7 +66,7 @@ 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) {} diff --git a/port/PyAssimp/pyassimp/core.py b/port/PyAssimp/pyassimp/core.py index 50d2f9a1a..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): @@ -352,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)) 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 7cd8e634c..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. """ @@ -296,7 +296,7 @@ Node._fields_ = [ 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 @@ -940,6 +1116,9 @@ class Scene(Structure): # unit-conversions, versions, vendors or other model-specific data. This # can be used to store format-specific metadata as well. ("mMetadata", POINTER(Metadata)), + + # Internal data, do not touch + ("mPrivate", c_char_p), ] assimp_structs_as_tuple = (Matrix4x4, diff --git a/scripts/StepImporter/CppGenerator.py b/scripts/StepImporter/CppGenerator.py index a05716619..b6b692db7 100644 --- a/scripts/StepImporter/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. # @@ -280,8 +280,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/StepImporter/schema_ifc4.exp b/scripts/StepImporter/schema_ifc4.exp deleted file mode 100644 index cf1fe155e..000000000 --- a/scripts/StepImporter/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/test/CMakeLists.txt b/test/CMakeLists.txt index 675812a52..2c1496d65 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -40,8 +40,9 @@ 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 ) @@ -74,6 +75,7 @@ SET( COMMON unit/utProfiler.cpp unit/utSharedPPData.cpp unit/utStringUtils.cpp + unit/Common/utLineSplitter.cpp ) SET( IMPORTERS @@ -115,6 +117,7 @@ SET( IMPORTERS unit/utB3DImportExport.cpp unit/utMDCImportExport.cpp unit/utAssbinImportExport.cpp + unit/ImportExport/utCOBImportExport.cpp ) SET( MATERIAL 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.90.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/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/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/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..ebf97a5eb 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 diff --git a/tools/assimp_cmd/Main.cpp b/tools/assimp_cmd/Main.cpp index 41412b93d..8a39540d1 100644 --- a/tools/assimp_cmd/Main.cpp +++ b/tools/assimp_cmd/Main.cpp @@ -466,6 +466,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);