Files
envi-code/SourceCode/Code2026/tg_shs/inc/TArch/SolidData.h
T
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

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__)