/////////////////////////////////////////////////////////////////////////////// // 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 #include "OdPlatformSettings.h" #include "OdResult.h" class OdDbDxfFiler; class OdDbDwgFiler; class OdGePoint3d; class OdGeCurve3d; class OdGeSurface; /** * * */ class OdDbAssocSubentGeomCache { public: enum Type { kNone = 0, kSurface = 1, kCurve3d = 2, kPoint3d = 3, }; union TPointer { void* m_pVoid; std::unique_ptr* m_pSurf; std::unique_ptr* m_pCurve; OdGePoint3d* m_pPoint; }; OdDbAssocSubentGeomCache(); ~OdDbAssocSubentGeomCache(); void operator=(const OdDbAssocSubentGeomCache& other); OdResult dwgInFields(OdDbDwgFiler* pFiler); OdResult dwgOutFields(OdDbDwgFiler* pFiler) const; OdResult dxfInFields(OdDbDxfFiler* pFiler); OdResult dxfOutFields(OdDbDxfFiler* pFiler) const; bool getGeometry(Type& type, OdGePoint3d& point, const OdGeCurve3d*& curve,const OdGeSurface*& surface) const; void setGeometry(Type type, const OdGePoint3d& point, OdGeCurve3d* curve = NULL, OdGeSurface* surface = NULL); void invalidate(); private: TPointer m_Ptr; Type m_Type; unsigned int m_iCount; };