/////////////////////////////////////////////////////////////////////////////// // Copyright (C) 2002-2016, Open Design Alliance (the "Alliance"). // All rights reserved. // // This software and its documentation and related materials are owned by // the Alliance. The software may only be incorporated into application // programs owned by members of the Alliance, subject to a signed // Membership Agreement and Supplemental Software License Agreement with the // Alliance. The structure and organization of this software are the valuable // trade secrets of the Alliance and its suppliers. The software is also // protected by copyright law and international treaty provisions. Application // programs incorporating this software must include the following statement // with their copyright notices: // // This application incorporates Teigha(R) software pursuant to a license // agreement with Open Design Alliance. // Teigha(R) Copyright (C) 2002-2016 by Open Design Alliance. // All rights reserved. // // By use of this software, its documentation or related materials, you // acknowledge and accept the above terms. /////////////////////////////////////////////////////////////////////////////// #ifndef _OD_DB_SUBDMESH #define _OD_DB_SUBDMESH #include "TD_PackPush.h" #include "DbEntity.h" #include "DoubleArray.h" #include "DbSurface.h" #include "Db3dSolid.h" #include "CmEntityColorArray.h" #include "Int32Array.h" #include "Gi/GiGeometry.h" class OdDbSurface; class OdDb3dSolid; /** \details This class represents SubDMesh entities in an OdDbDatabase instance. \sa TD_Db */ class TOOLKIT_EXPORT OdDbSubDMesh : public OdDbEntity { public: ODDB_DECLARE_MEMBERS(OdDbSubDMesh); OdDbSubDMesh(); virtual bool subWorldDraw( OdGiWorldDraw* pWd) const; virtual OdUInt32 subSetAttributes(OdGiDrawableTraits* pTraits) const; virtual OdDbObjectPtr decomposeForSave(OdDb::DwgVersion ver, OdDbObjectId& replaceId, bool& exchangeXData); virtual OdResult dwgInFields( OdDbDwgFiler* pFiler); virtual void dwgOutFields( OdDbDwgFiler* pFiler) const; virtual OdResult dxfInFields( OdDbDxfFiler* pFiler); virtual void dxfOutFields( OdDbDxfFiler* pFiler) const; virtual OdResult subTransformBy( const OdGeMatrix3d& xfm); OdResult subGetGeomExtents( OdGeExtents3d& extents) const; virtual OdResult subExplode( OdRxObjectPtrArray& entitySet) const; OdResult setSubDMesh (const OdGePoint3dArray& vertexArray, const OdInt32Array& faceArray, OdInt32 subDLevel); OdResult setSphere (double radius, OdInt32 divAxis, OdInt32 divHeight, OdInt32 subDLevel); OdResult setCylinder (double majorRadius, double minorRadius, double height, OdInt32 divAxis, OdInt32 divHeight, OdInt32 divCap, OdInt32 subDLevel); OdResult setCone (double majorRadius, double minorRadius, double height, OdInt32 divAxis, OdInt32 divHeight, OdInt32 divCap, double radiusRatio, OdInt32 subDLevel); OdResult setTorus (double majorRadius, OdInt32 divSection, OdInt32 divSweepPath, double sectionRadiusRatio, double sectionRotate, OdInt32 subDLevel); OdResult setBox (double xLen, double yLen, double zLen, OdInt32 divX, OdInt32 divY, OdInt32 divZ, OdInt32 subDLevel); OdResult setWedge (double xLen, double yLen, double zLen, OdInt32 divLength, OdInt32 divWidth, OdInt32 divHeight, OdInt32 divSlope, OdInt32 divCap, OdInt32 subDLevel); OdResult setPyramid (double radius, double height, OdInt32 divLength, OdInt32 divHeight, OdInt32 divCap, OdInt32 nSides, double radiusRatio, OdInt32 subDLevel); OdResult subdDivideUp (); OdResult subdDivideDown (); OdResult subdRefine (); OdResult subdRefine (const OdDbFullSubentPathArray& subentPaths); OdResult subdLevel (OdInt32& result) const; OdResult splitFace (const OdDbSubentId& subentFaceId, const OdDbSubentId& subent0, const OdGePoint3d& point0, const OdDbSubentId& subent1, const OdGePoint3d& point1); OdResult extrudeFaces (const OdDbFullSubentPathArray& subentPaths, double length, const OdGeVector3d& dir, double taper); OdResult extrudeFaces (const OdDbFullSubentPathArray& subentPaths, const OdGePoint3dArray& alongPath, double taper); OdResult isWatertight (bool& result) const; OdResult numOfFaces (OdInt32& result) const; OdResult numOfSubDividedFaces (OdInt32& result) const; OdResult numOfSubDividedFacesAt (const OdDbFullSubentPathArray& subentPaths, OdInt32& result) const; OdResult numOfVertices (OdInt32& result) const; OdResult numOfSubDividedVertices (OdInt32& result) const; OdResult numOfEdges (OdInt32& result) const; OdResult getVertices (OdGePoint3dArray& vertexArray) const; OdResult getEdgeArray (OdInt32Array& edgeArray) const; OdResult getFaceArray (OdInt32Array& faceArray) const; OdResult getNormalArray (OdGeVector3dArray& normalArray) const; OdResult getSubDividedVertices (OdGePoint3dArray& vertexArray) const; OdResult getSubDividedFaceArray (OdInt32Array& faceArray) const; OdResult getSubDividedNormalArray(OdGeVector3dArray& normalArray) const; OdResult getVertexAt (OdInt32 nIndex, OdGePoint3d& vertex) const; OdResult setVertexAt (OdInt32 nIndex, const OdGePoint3d& vertex); OdResult getVertexAt (const OdDbSubentId& id, OdGePoint3d& vertex) const; OdResult setVertexAt (const OdDbSubentId& id, const OdGePoint3d& vertex); OdResult getSubDividedVertexAt (OdInt32 nIndex, OdGePoint3d& vertex) const; OdResult getSubDividedVertexAt (const OdDbSubentId& id, OdGePoint3d& vertex) const; OdResult setCrease (double creaseVal); OdResult setCrease (const OdDbFullSubentPathArray& subentPaths, double creaseVal); OdResult getCrease (const OdDbFullSubentPathArray& subentPaths, OdDoubleArray& result) const; OdResult getCrease (const OdDbSubentId& id, double& result) const; OdResult getAdjacentSubentPath (const OdDbFullSubentPath& path, OdDb::SubentType type, OdDbFullSubentPathArray& subentPaths) const; OdResult getSubentPath (OdInt32 nIndex, OdDb::SubentType type, OdDbFullSubentPathArray& subentPaths) const; OdResult convertToSurface (bool bConvertAsSmooth, const OdDbSubentId& id, OdDbSurfacePtr& pSurface) const; OdResult convertToSurface (bool bConvertAsSmooth, bool optimize, OdDbSurfacePtr& pSurface) const; OdResult convertToSolid (bool bConvertAsSmooth, bool optimize, OdDb3dSolidPtr& pSolid) const; OdResult getSubentColor (const OdDbSubentId& id, OdCmColor& color) const; OdResult setSubentColor (const OdDbSubentId& id, const OdCmColor& color); OdResult getSubentMaterial (const OdDbSubentId& id, OdDbObjectId& material) const; OdResult setSubentMaterial (const OdDbSubentId& id, const OdDbObjectId& material); OdResult getSubentMaterialMapper (const OdDbSubentId& id, OdGiMapper& mapper) const; OdResult setSubentMaterialMapper (const OdDbSubentId& id, const OdGiMapper& mapper); OdResult getFacePlane (const OdDbSubentId& id, OdGePlane& facePlane) const; OdResult computeVolume (double &retVolume) const; OdResult computeSurfaceArea (double &retSurfArea) const; OdResult getVertexNormalArray(OdGeVector3dArray& arrNorm); OdResult getVertexTextureArray(OdGePoint3dArray& arrPts); OdResult getVertexColorArray(OdCmEntityColorArray& arrColor); OdResult setVertexNormalArray(OdGeVector3dArray& arrNorm); OdResult setVertexTextureArray(OdGePoint3dArray& arrPts); OdResult setVertexColorArray(OdCmEntityColorArray& arrColor); OdResult subGetSubentPathsAtGsMarker( OdDb::SubentType type, OdGsMarker gsMark, const OdGePoint3d& , const OdGeMatrix3d& , OdDbFullSubentPathArray& subentPaths, const OdDbObjectIdArray* pEntAndInsertStack ) const; OdResult subGetGsMarkersAtSubentPath( const OdDbFullSubentPath& subPath, OdGsMarkerArray& gsMarkers) const; }; /** \details This template class is a specialization of the OdSmartPtr class for OdDbSubDMesh object pointers. */ typedef OdSmartPtr OdDbSubDMeshPtr; /** \details Library: TD_Db */ struct MeshFaceterSettings { double faceterDevSurface; double faceterDevNormal; double faceterGridRatio; double faceterMaxEdgeLength; OdUInt16 faceterMaxGrid; OdUInt16 faceterMinUGrid; OdUInt16 faceterMinVGrid; OdInt16 faceterMeshType; MeshFaceterSettings() : faceterDevSurface(0.) , faceterDevNormal(0.) , faceterGridRatio(0.) , faceterMaxEdgeLength(0) , faceterMaxGrid(0) , faceterMinUGrid(0) , faceterMinVGrid(0) , faceterMeshType(0) {} }; typedef struct MeshFaceterSettings OdDbFaceterSettings; TOOLKIT_EXPORT OdResult oddbGetObjectMesh(OdDbObject *pObj, const OdDbFaceterSettings *faceter, OdGePoint3dArray& vertexArray, OdInt32Array& faceArray, OdGiFaceData*& faceData); #include "TD_PackPop.h" #endif