#ifndef __dom150Brep_h__ #define __dom150Brep_h__ #include #include <1.5/dom/domTypes.h> #include <1.5/dom/domElements.h> #include <1.5/dom/domCurves.h> #include <1.5/dom/domSurface_curves.h> #include <1.5/dom/domSurfaces.h> #include <1.5/dom/domSource.h> #include <1.5/dom/domVertices.h> #include <1.5/dom/domEdges.h> #include <1.5/dom/domWires.h> #include <1.5/dom/domFaces.h> #include <1.5/dom/domPcurves.h> #include <1.5/dom/domShells.h> #include <1.5/dom/domSolids.h> #include <1.5/dom/domExtra.h> class DAE; namespace ColladaDOM150 { /** * The brep element contains the complete topological description of a * static structure. There are also the corresponding geometrical descriptions * of the vertices, edges and faces. */ class domBrep : public daeElement { public: virtual COLLADA_TYPE::TypeEnum getElementType() const { return COLLADA_TYPE::BREP; } static daeInt ID() { return 363; } virtual daeInt typeID() const { return ID(); } protected: // Elements /** * The curves element holds all the curves that are needed for the brep structure. * Here are the curves that describes the kind of an edge, but here are also * the curves that are needed to create a extrusion for a surface. This element * is needed, if the edges element is present. @see domCurves */ domCurvesRef elemCurves; domSurface_curvesRef elemSurface_curves; /** * The surfaces element holds all the surfaces that are needed for the brep * structure. Here are the surfaces that describes the kind of a face. This * element is needed, if the faces element is present. @see domSurfaces */ domSurfacesRef elemSurfaces; /** * The source elements define the access of the elements vertices, edges and * faces to their geometric entities. At least one source element is needed * for the vertices. If there are edges a second source element is needed * for accessing the curves in the curve element by an IDREF_array. If there * are faces the third source element is needed for accessing the surfaces * in the surface element by an IDREF_array. @see domSource */ domSource_Array elemSource_array; /** * This element defines all the vertices of an brep structure. Vertices are * the base topological entity for all brep structures, so this element is * ever needed. @see domVertices */ domVerticesRef elemVertices; /** * This element defines all the edges of the brep structure. @see domEdges */ domEdgesRef elemEdges; /** * This element defines all the wires of the brep structure. @see domWires */ domWiresRef elemWires; /** * This element defines all the faces of the brep structure. @see domFaces */ domFacesRef elemFaces; domPcurvesRef elemPcurves; /** * This element defines all the shells of the brep structure. @see domShells */ domShellsRef elemShells; /** * This element defines all the solids of the brep structure. @see domSolids */ domSolidsRef elemSolids; domExtra_Array elemExtra_array; public: //Accessors and Mutators /** * Gets the curves element. * @return a daeSmartRef to the curves element. */ const domCurvesRef getCurves() const { return elemCurves; } /** * Gets the surface_curves element. * @return a daeSmartRef to the surface_curves element. */ const domSurface_curvesRef getSurface_curves() const { return elemSurface_curves; } /** * Gets the surfaces element. * @return a daeSmartRef to the surfaces element. */ const domSurfacesRef getSurfaces() const { return elemSurfaces; } /** * Gets the source element array. * @return Returns a reference to the array of source elements. */ domSource_Array &getSource_array() { return elemSource_array; } /** * Gets the source element array. * @return Returns a constant reference to the array of source elements. */ const domSource_Array &getSource_array() const { return elemSource_array; } /** * Gets the vertices element. * @return a daeSmartRef to the vertices element. */ const domVerticesRef getVertices() const { return elemVertices; } /** * Gets the edges element. * @return a daeSmartRef to the edges element. */ const domEdgesRef getEdges() const { return elemEdges; } /** * Gets the wires element. * @return a daeSmartRef to the wires element. */ const domWiresRef getWires() const { return elemWires; } /** * Gets the faces element. * @return a daeSmartRef to the faces element. */ const domFacesRef getFaces() const { return elemFaces; } /** * Gets the pcurves element. * @return a daeSmartRef to the pcurves element. */ const domPcurvesRef getPcurves() const { return elemPcurves; } /** * Gets the shells element. * @return a daeSmartRef to the shells element. */ const domShellsRef getShells() const { return elemShells; } /** * Gets the solids element. * @return a daeSmartRef to the solids element. */ const domSolidsRef getSolids() const { return elemSolids; } /** * Gets the extra element array. * @return Returns a reference to the array of extra elements. */ domExtra_Array &getExtra_array() { return elemExtra_array; } /** * Gets the extra element array. * @return Returns a constant reference to the array of extra elements. */ const domExtra_Array &getExtra_array() const { return elemExtra_array; } protected: /** * Constructor */ domBrep(DAE& dae) : daeElement(dae), elemCurves(), elemSurface_curves(), elemSurfaces(), elemSource_array(), elemVertices(), elemEdges(), elemWires(), elemFaces(), elemPcurves(), elemShells(), elemSolids(), elemExtra_array() {} /** * Destructor */ virtual ~domBrep() {} /** * Overloaded assignment operator */ virtual domBrep &operator=( const domBrep &cpy ) { (void)cpy; return *this; } public: // STATIC METHODS /** * Creates an instance of this class and returns a daeElementRef referencing it. * @return a daeElementRef referencing an instance of this object. */ static DLLSPEC daeElementRef create(DAE& dae); /** * Creates a daeMetaElement object that describes this element in the meta object reflection framework. * If a daeMetaElement already exists it will return that instead of creating a new one. * @return A daeMetaElement describing this COLLADA element. */ static DLLSPEC daeMetaElement* registerElement(DAE& dae); }; } // ColladaDOM150 #endif