481 lines
11 KiB
C++
481 lines
11 KiB
C++
#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__)
|