/////////////////////////////////////////////////////////////////////////////// // Copyright (C) 2002-2025, 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 Open Design Alliance software pursuant to a license // agreement with Open Design Alliance. // Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance. // All rights reserved. // // By use of this software, its documentation or related materials, you // acknowledge and accept the above terms. /////////////////////////////////////////////////////////////////////////////// #pragma once #include "DbFiler.h" #include "Gi/GiWorldDraw.h" #include "DbEntity.h" #include "Db3dSolid.h" // Custom entity with solid array inside // and requiring an additional class for the operation of // associations related to access to subobjects (OdAssocPowerTowerPersSubentIdPE) class COdPowerTowerEntity : public OdDbEntity { static const int kVersion; public: ODDB_DECLARE_MEMBERS(COdPowerTowerEntity); COdPowerTowerEntity(); virtual ~COdPowerTowerEntity(); virtual OdResult dwgInFields(OdDbDwgFiler* pFiler) override; virtual void dwgOutFields(OdDbDwgFiler* pFiler) const override; virtual bool subWorldDraw(OdGiWorldDraw* pWd) const override; virtual OdResult subTransformBy(const OdGeMatrix3d& xfm) override; virtual void subSetDatabaseDefaults( OdDbDatabase* pDb, bool doSubents) override; virtual OdResult subGetOsnapPoints( OdDb::OsnapMode osnapMode, OdGsMarker gsSelectionMark, const OdGePoint3d& pickPoint, const OdGePoint3d& lastPoint, const OdGeMatrix3d& xWorldToEye, OdGePoint3dArray& snapPoints) const override; //Get and set base point of entity void setBasePnt(OdGePoint3d basePnt) { m_basePnt = basePnt; } OdGePoint3d getBasePnt() const { return m_basePnt; } //Some functions to work with solid inside const OdDb3dSolidPtrArray& getGeom() const { return m_geom; } OdDb3dSolid* getSolid(OdUInt32 n) { return m_geom[n]; } unsigned int geomCount() const { return m_geom.size(); } //Create solid geometry and put in m_geom void createTowerGeometry(); //Get entity last version static int getVersion(); protected: void setEmbedded(); OdGePoint3d m_basePnt; OdDb3dSolidPtrArray m_geom; }; typedef OdSmartPtr COdPowerTowerEntityPtr;