/////////////////////////////////////////////////////////////////////////////// // 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 _INC_DDBRFACE_3F82D5A203C8_INCLUDED #define _INC_DDBRFACE_3F82D5A203C8_INCLUDED #include "Br/BrEntity.h" #include "Br/BrEnums.h" #include "Ge/GeSurface.h" #include "Ge/GeNurbSurface.h" #include "TD_PackPush.h" class OdCmEntityColor; class OdGeExternalBoundedSurface; /** \details This class is the interface class for BREP faces. \remarks Faces are primary BREP elements with associated geometries: surfaces. \sa TD_Br */ class ODBR_TOOLKIT_EXPORT OdBrFace : public OdBrEntity { public: /** \details Returns the underlying surface of this Face entity as an external OdGeNurbSurface. \param nurb [out] Receives the NURBS surface. */ OdBrErrorStatus getSurfaceAsNurb(OdGeNurbSurface& nurb) const; /** \details Returns the underlying surface of this Face entity as an OdGeSurface. */ OdGeSurface* getSurface() const; /** \details Returns the best match of the underlying surface of this Face entity to surfaces supported by OdGe. \param surfaceType [out] Receives the surface type. */ OdBrErrorStatus getSurfaceType(OdGe::EntityId& surfaceType) const; /** \details Returns true if and only if the outside of the face is in the direction of the surface normal. */ bool getOrientToSurface() const; /** \details Returns the color of this Face entity. \remarks Returns true if and only if this Face entity has a color associated with it. \param color [out] Receives the color. */ bool getColor(OdCmEntityColor &color) const; /** \details Returns the *material handle* of this Face entity. \remarks Returns true if and only if this Face entity has a material associated with it. \param id [out] Receives the id. */ bool getMaterialID(OdUInt64 &id) const; /** \details Returns the *material name* of this Face entity. \remarks Returns true if and only if this Face entity has a material associated with it. \param strMatName [out] Receives the *material name*. */ bool getMaterialString(OdString& strMatName) const; /** \details Returns the *material mapper* of this Face entity. \remarks Returns true if and only if this Face entity has a *material mapper* associated with it. \param mx [out] Receives the *transformation matrix*. \param projection [out] Receives the projection flag. \param tiling [out] Receives the tiling flag. \param autoTransform [out] Receives the *auto transform* flag. */ enum Projection { kInheritProjection = 0, // Inherits *projection* from the current material's mapper. kPlanar = 1, // Maps directly to XY coordinates. kBox = 2, // Maps to planes perpendicular to major axes. kCylinder = 3, // Maps to cylinder aligned with Z-axis. kSphere = 4 // Maps to sphere aligned with Z-axis }; enum Tiling { kInheritTiling = 0, // Inherits *tiling* from the current material's mapper. kTile = 1, // Repeats map along image axes. kCrop = 2, // Crops map < 0.0 or > 1.0 on image axes. kClamp = 3, // Clamps (stretches) map between 0.0 and 1.0 on image axes. kMirror = 4 // Mirror the material map at every integer boundary. }; enum AutoTransform { kInheritAutoTransform = 0x0, // Inherits automatic *transform* from the current material/s mapper. kNone = 0x1, // No automatic *transform*. kObject = 0x2, // Adjusts the mapper *transform* to align with and fit the current object. kModel = 0x4 // Multiples the mapper *transform* by the current block *transform*. }; bool getMaterialMapper(OdGeMatrix3d &mx, Projection &projection, Tiling& tiling, AutoTransform &autoTransform) const; OdBrErrorStatus getSurfaceAsTrimmedNurbs(OdUInt32& numNurbs, OdGeExternalBoundedSurface**& ppNurbs) const; OdBrFace(); ~OdBrFace(); }; #include "TD_PackPop.h" #endif /* _INC_DDBRFACE_3F82D5A203C8_INCLUDED */