/////////////////////////////////////////////////////////////////////////////// // 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_SECTIONSYMBOL_H #define OD_SECTIONSYMBOL_H #include "DbViewSymbol.h" #include "TD_PackPush.h" /** \details This class represents Section Symbol entities. Library: AcModelDocObj */ class MODELDOCOBJ_EXPORT OdDbSectionSymbol : public OdDbViewSymbol { public: ODDB_DECLARE_MEMBERS(OdDbSectionSymbol); /** \details Default constructor. Creates an OdDbDetailSymbol instance. */ OdDbSectionSymbol(); ~OdDbSectionSymbol(); /** \details Returns the number of points in the section line of this Section Symbol entity. */ int sectionPointsCount() const; /** \details Gets all points in the section line of this Section Symbol entity. \param pts [out] Receives section line points. */ void getSectionPoints(OdGePoint3dArray& pts) const; /** \details Gets values of label offset from all vertices. \param offsets [out] Receives offset vectors. */ void getLabelOffsets(OdGeVector3dArray& offsets) const; /** \details Gets the section line point at the specified index. \param idx [in] Index of the section line vertex. \param pt [out] Receives the point at the index idx. \note eOk value if successful, eOutOfRange if idx is out of range (idx > sectionPointsCount()). */ OdResult getSectionPointAt(int idx, OdGePoint3d& pt) const; /** \details Gets the section vertex bulge parameter at the specified index. \param idx [in] Index of the section symbol vertex. \param bulge [out] Receives the bulge at the index idx. \note eOk value if successful, eOutOfRange if idx is out of range (idx > sectionPointsCount()). */ OdResult getBulgeAt(int idx, double& bulge) const; /** \details Gets the label at the specified vertex index. \param idx [in] Index of the section symbol vertex. \param sName [out] Receives the string that represents label. \note eOk value if successful, eOutOfRange if idx is out of range (idx > sectionPointsCount()). */ OdResult getLabelNameAt(int idx, OdString& sName) const; /** \details Gets the label offset value from the specified vertex. \param idx [in] Index of the section symbol vertex. \param offset [out] Receives the offset value. \note eOk value if successful, eOutOfRange if idx is out of range (idx > sectionPointsCount()). */ OdResult getLabelOffsetAt(int idx, OdGeVector3d& offset) const; /** \details Checks whether the view direction of the section symbol is left. \note Returns true only if the view direction is left, and false otherwise. */ bool isViewDirectionLeft() const; void setViewDirectionLeft(bool bLeft); /** \details Checks whether the section symbol defines a half or full section. \note Returns true only if the section symbol defines a half section cut, false for full sections. */ bool isHalfSection() const; void setIsHalfSection(bool bHalf); // Methods to use internal only : /** \details Appends new point of section line. \param pt [in] Point of the section line. \param bulge [in] Value of bulge. \note eOk value if successful. */ OdResult addSectionPoint(const OdGePoint3d& pt, double bulge = 0); /** \details Modifies point by index. \param idx [in] Index of the section symbol vertex. \param pt [in] New value of point. \param bulge [in] Value of bulge. \note eOk value if successful, eOutOfRange if idx is out of range (idx > sectionPointsCount()). */ OdResult setSectionPointAt(int idx, const OdGePoint3d& pt, double bulge = 0); /** \details Modifies label name by index. \param idx [in] Index of the section symbol vertex. \param name [in] Name of label. \note eOk value if successful, eOutOfRange if idx is out of range (idx > sectionPointsCount()). */ OdResult setLabelNameAt(int idx, const OdString & name); /** \details Modifies label offset by index. \param idx [in] Index of the section symbol vertex. \param offset [in] Value of label's offset. \note eOk value if successful, eOutOfRange if idx is out of range (idx > sectionPointsCount()). */ OdResult setLabelOffsetAt(int idx, const OdGeVector3d& offset); protected: // OdDbObject methods : virtual OdResult dwgInFields(OdDbDwgFiler* pFiler); virtual void dwgOutFields(OdDbDwgFiler* pFiler) const; virtual OdResult dxfInFields(OdDbDxfFiler* pFiler); virtual void dxfOutFields(OdDbDxfFiler* pFiler) const; // OdGiDrawable methods : virtual bool subWorldDraw(OdGiWorldDraw* pWorldDraw) const; // Methods to use internal only : //OdResult setSectionPoints(const OdGePoint3dArray& pts); //OdResult setSectionPoints(const OdGePoint3dArray& pts, const OdGeDoubleArray& bulges); //OdResult removeSectionPointAt(int idx); //void clearSectionPoints(); //OdResult setLabelNames(const OdArray& names); //OdResult setLabelOffsets(const OdGeVector3dArray& offsets); //void resetLabelOffsets(bool allOffsets = true); //bool flipDirection(); }; /** \details This template class is a specialization of the OdSmartPtr class for OdDbSectionSymbol object pointers. */ typedef OdSmartPtr OdDbSectionSymbolPtr; #include "TD_PackPop.h" #endif // OD_SECTIONSYMBOL_H