#if !defined(__SOLIDDATA_H__) #define __SOLIDDATA_H__ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 //#include "AfxTempl.h" #define TCH_SOLID_APPNAME _T("_TCH_SOLID") #define TCH_SOLID_PART _T("_TCH_SOLID_PART") class TARCH_IMPEXP CBaseData { public: CBaseData() {} virtual ~CBaseData() {} virtual BOOL Clone(const CBaseData* pData) = 0; virtual BOOL Copy(const CBaseData* pData) = 0; virtual Acad::ErrorStatus dxfOutFields(AcDbDxfFiler* pFiler) const = 0; virtual Acad::ErrorStatus dxfInFields(AcDbDxfFiler* pFiler) = 0; virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler* pFiler) const = 0; virtual Acad::ErrorStatus dwgInFields(AcDbDwgFiler* pFiler) = 0; }; class TARCH_IMPEXP CSolidData : public CBaseData { public: CSolidData(); CSolidData(CSolidData& data); virtual ~CSolidData(); enum SolidType { eNull = 0, eUnknown = 1, eBox = 2, eFrustum = 3, eSphere = 4, eTorus = 5, eWedge = 6, eExtrude = 7, eRevolve = 8, eBoolean = 9, eSlice = 10, eArcBridge = 11, eArcColumn = 12, eHillWall = 13, ePyramid = 14, eSpherePiece = 15, }; void Clean(); CSolidData& operator=(const CSolidData& data); BOOL SetType(CSolidData::SolidType eType); CSolidData::SolidType GetType() const; void SetColorIndex(UINT nColor); UINT GetColorIndex(); AcDbObjectId GetObjectId(); void SetObjectId(AcDbObjectId idEnt); void SetPosition(AcGePoint3d ptPosition); AcGePoint3d GetPosition(); void SetUcsCoordinateSystem(AcGePoint3d pt, AcGeVector3d vecX, AcGeVector3d vecY, AcGeVector3d vecZ); void GetUcsCoordinateSystem(AcGePoint3d& pt, AcGeVector3d& vecX, AcGeVector3d& vecY, AcGeVector3d& vecZ); void GetUcsScale(double& dXScale, double& dYScale, double& dZScale); const CBaseData* GetData() const; virtual BOOL Clone(const CBaseData* pData); virtual BOOL Copy(const CBaseData* pData); virtual Acad::ErrorStatus dxfOutFields(AcDbDxfFiler* pFiler) const; virtual Acad::ErrorStatus dxfInFields(AcDbDxfFiler* pFiler); virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler* pFiler) const; virtual Acad::ErrorStatus dwgInFields(AcDbDwgFiler* pFiler); protected: BOOL CreateData(); UINT m_nColorIndex; AcDbObjectId m_idSolid; SolidType m_eType; AcGePoint3d m_ptPosition; AcGePoint3d m_ptUcsOrigin; AcGePoint3d m_ptUcsXDir; AcGePoint3d m_ptUcsYDir; AcGePoint3d m_ptUcsZDir; CBaseData* m_pData; }; class TARCH_IMPEXP CUnknownData : public CBaseData { public: CUnknownData(); virtual ~CUnknownData(); virtual BOOL Clone(const CBaseData* pData); virtual BOOL Copy(const CBaseData* pData); virtual Acad::ErrorStatus dxfOutFields(AcDbDxfFiler* pFiler) const; virtual Acad::ErrorStatus dxfInFields(AcDbDxfFiler* pFiler); virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler* pFiler) const; virtual Acad::ErrorStatus dwgInFields(AcDbDwgFiler* pFiler); BOOL Create3dSolid(AcDb3dSolid*& pSolid); BOOL From3dSolid(AcDbObjectId idEnt); static BOOL GetAcisString(AcDbObjectId idEnt, CStringArray& arsAcis); CStringArray m_arsAcis; }; class TARCH_IMPEXP CBoxData : public CBaseData { public: CBoxData(); virtual ~CBoxData(); virtual BOOL Clone(const CBaseData* pData); virtual BOOL Copy(const CBaseData* pData); virtual Acad::ErrorStatus dxfOutFields(AcDbDxfFiler* pFiler) const; virtual Acad::ErrorStatus dxfInFields(AcDbDxfFiler* pFiler); virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler* pFiler) const; virtual Acad::ErrorStatus dwgInFields(AcDbDwgFiler* pFiler); enum BaseType { eCorner = 0, eCenter = 1, eBase = 2, }; BaseType m_eBaseType; double m_dXLen; double m_dYLen; double m_dZLen; }; class TARCH_IMPEXP CBooleanData : public CBaseData { public: CBooleanData(); virtual ~CBooleanData(); void Clean(); virtual BOOL Clone(const CBaseData* pData); virtual BOOL Copy(const CBaseData* pData); virtual Acad::ErrorStatus dxfOutFields(AcDbDxfFiler* pFiler) const; virtual Acad::ErrorStatus dxfInFields(AcDbDxfFiler* pFiler); virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler* pFiler) const; virtual Acad::ErrorStatus dwgInFields(AcDbDwgFiler* pFiler); AcDb::BoolOperType m_eOperateType; CPtrArray m_arpSrcObj; CPtrArray m_arpDesObj; }; class TARCH_IMPEXP CFrustumData : public CBaseData { public: CFrustumData(); virtual ~CFrustumData(); virtual BOOL Clone(const CBaseData* pData); virtual BOOL Copy(const CBaseData* pData); virtual Acad::ErrorStatus dxfOutFields(AcDbDxfFiler* pFiler) const; virtual Acad::ErrorStatus dxfInFields(AcDbDxfFiler* pFiler); virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler* pFiler) const; virtual Acad::ErrorStatus dwgInFields(AcDbDwgFiler* pFiler); enum BaseType { eBase = 0, eCenter = 1, }; BaseType m_eBaseType; double m_dHeight; double m_dXRadius; double m_dYRadius; double m_dTopXRadius; }; class TARCH_IMPEXP CSphereData : public CBaseData { public: CSphereData(); virtual ~CSphereData(); virtual BOOL Clone(const CBaseData* pData); virtual BOOL Copy(const CBaseData* pData); virtual Acad::ErrorStatus dxfOutFields(AcDbDxfFiler* pFiler) const; virtual Acad::ErrorStatus dxfInFields(AcDbDxfFiler* pFiler); virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler* pFiler) const; virtual Acad::ErrorStatus dwgInFields(AcDbDwgFiler* pFiler); double m_dRadius; }; class TARCH_IMPEXP CTorusData : public CBaseData { public: CTorusData(); virtual ~CTorusData(); virtual BOOL Clone(const CBaseData* pData); virtual BOOL Copy(const CBaseData* pData); virtual Acad::ErrorStatus dxfOutFields(AcDbDxfFiler* pFiler) const; virtual Acad::ErrorStatus dxfInFields(AcDbDxfFiler* pFiler); virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler* pFiler) const; virtual Acad::ErrorStatus dwgInFields(AcDbDwgFiler* pFiler); double m_dMajorRadius; double m_dMinorRadius; }; class TARCH_IMPEXP CWedgeData : public CBaseData { public: CWedgeData(); virtual ~CWedgeData(); virtual BOOL Clone(const CBaseData* pData); virtual BOOL Copy(const CBaseData* pData); virtual Acad::ErrorStatus dxfOutFields(AcDbDxfFiler* pFiler) const; virtual Acad::ErrorStatus dxfInFields(AcDbDxfFiler* pFiler); virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler* pFiler) const; virtual Acad::ErrorStatus dwgInFields(AcDbDwgFiler* pFiler); enum BaseType { eCorner = 0, eCenter = 1, eBase = 2, }; BaseType m_eBaseType; BOOL m_bEqualSide; double m_dXLen; double m_dYLen; double m_dZLen; }; class TARCH_IMPEXP CExtrudeData : public CBaseData { public: CExtrudeData(); virtual ~CExtrudeData(); void Clean(); virtual BOOL Clone(const CBaseData* pData); virtual BOOL Copy(const CBaseData* pData); virtual Acad::ErrorStatus dxfOutFields(AcDbDxfFiler* pFiler) const; virtual Acad::ErrorStatus dxfInFields(AcDbDxfFiler* pFiler); virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler* pFiler) const; virtual Acad::ErrorStatus dwgInFields(AcDbDwgFiler* pFiler); enum BaseType { ePath = 0, eBase = 1, eCenter = 2, // sg add 100613,根据日照专业的需求,新增加的“梯形屋顶”类型 eTrapeziRoof = 3, }; BaseType m_eBaseType; AcDbRegion* m_pProfile; AcDbCurve* m_pPath; double m_dHeight; // 高度H double m_dTaper; // 锥度T }; class TARCH_IMPEXP CRevolveData : public CBaseData { public: CRevolveData(); virtual ~CRevolveData(); void Clean(); virtual BOOL Clone(const CBaseData* pData); virtual BOOL Copy(const CBaseData* pData); virtual Acad::ErrorStatus dxfOutFields(AcDbDxfFiler* pFiler) const; virtual Acad::ErrorStatus dxfInFields(AcDbDxfFiler* pFiler); virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler* pFiler) const; virtual Acad::ErrorStatus dwgInFields(AcDbDwgFiler* pFiler); double m_dAngle; AcGePoint3d m_ptAxis; AcGeVector3d m_vecAxis; AcDbRegion* m_pProfile; }; class TARCH_IMPEXP CSliceData : public CBaseData { public: CSliceData(); virtual ~CSliceData(); virtual BOOL Clone(const CBaseData* pData); virtual BOOL Copy(const CBaseData* pData); virtual Acad::ErrorStatus dxfOutFields(AcDbDxfFiler* pFiler) const; virtual Acad::ErrorStatus dxfInFields(AcDbDxfFiler* pFiler); virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler* pFiler) const; virtual Acad::ErrorStatus dwgInFields(AcDbDwgFiler* pFiler); AcGePoint3d m_ptOrigin; AcGeVector3d m_vecNormal; CSolidData m_Solid; }; class TARCH_IMPEXP CArcBridgeData : public CBaseData { public: CArcBridgeData(); virtual ~CArcBridgeData(); virtual BOOL Clone(const CBaseData* pData); virtual BOOL Copy(const CBaseData* pData); virtual Acad::ErrorStatus dxfOutFields(AcDbDxfFiler* pFiler) const; virtual Acad::ErrorStatus dxfInFields(AcDbDxfFiler* pFiler); virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler* pFiler) const; virtual Acad::ErrorStatus dwgInFields(AcDbDwgFiler* pFiler); enum BaseType { eCorner = 0, eCenter = 1, eBase = 2, }; BaseType m_eBaseType; double m_dX; double m_dY; double m_dZ; double m_dW; double m_dH; }; class TARCH_IMPEXP CArcColumnData : public CBaseData { public: CArcColumnData(); virtual ~CArcColumnData(); virtual BOOL Clone(const CBaseData* pData); virtual BOOL Copy(const CBaseData* pData); virtual Acad::ErrorStatus dxfOutFields(AcDbDxfFiler* pFiler) const; virtual Acad::ErrorStatus dxfInFields(AcDbDxfFiler* pFiler); virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler* pFiler) const; virtual Acad::ErrorStatus dwgInFields(AcDbDwgFiler* pFiler); enum BaseType { eCorner = 0, eCenter = 1, eBase = 2, }; BaseType m_eBaseType; double m_dX; double m_dY; double m_dZ; }; class TARCH_IMPEXP CHillWallData : public CBaseData { public: CHillWallData(); virtual ~CHillWallData(); virtual BOOL Clone(const CBaseData* pData); virtual BOOL Copy(const CBaseData* pData); virtual Acad::ErrorStatus dxfOutFields(AcDbDxfFiler* pFiler) const; virtual Acad::ErrorStatus dxfInFields(AcDbDxfFiler* pFiler); virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler* pFiler) const; virtual Acad::ErrorStatus dwgInFields(AcDbDwgFiler* pFiler); enum BaseType { eCorner = 0, eCenter = 1, eBase = 2, }; BaseType m_eBaseType; double m_dX; double m_dY; double m_dZ; double m_dH; }; class TARCH_IMPEXP CPyramidData : public CBaseData { public: CPyramidData(); virtual ~CPyramidData(); virtual BOOL Clone(const CBaseData* pData); virtual BOOL Copy(const CBaseData* pData); virtual Acad::ErrorStatus dxfOutFields(AcDbDxfFiler* pFiler) const; virtual Acad::ErrorStatus dxfInFields(AcDbDxfFiler* pFiler); virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler* pFiler) const; virtual Acad::ErrorStatus dwgInFields(AcDbDwgFiler* pFiler); enum BaseType { eCorner = 0, eBase = 1, }; BaseType m_eBaseType; double m_dX; double m_dY; double m_dZ; }; class TARCH_IMPEXP CSpherePieceData : public CBaseData { public: CSpherePieceData(); virtual ~CSpherePieceData(); virtual BOOL Clone(const CBaseData* pData); virtual BOOL Copy(const CBaseData* pData); virtual Acad::ErrorStatus dxfOutFields(AcDbDxfFiler* pFiler) const; virtual Acad::ErrorStatus dxfInFields(AcDbDxfFiler* pFiler); virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler* pFiler) const; virtual Acad::ErrorStatus dwgInFields(AcDbDwgFiler* pFiler); double m_dW; double m_dH; }; #endif // !defined(__SOLIDDATA_H__)