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

132 lines
3.5 KiB
C++

#pragma once
#include "aecdbentitybase.h"
#include "AecDbObjXDataMap.h"
#ifdef EARTHWORM_EXPORT
#define DLLIMPEXP __declspec(dllexport)
#else
#define DLLIMPEXP __declspec(dllimport)
#endif
typedef struct DormerParam
{
enum DormerType
{
kSLOPE_TRIANGLE=0, //三角坡
kSLOPE_TWO=1, //双坡
kSLOPE_THREE=2, //三坡
kSLOPE_TRAPEZIA=3, //梯形坡
kSLOPE_FLAT=4, //平顶窗
};
//基本数据
DormerType m_dormerType;//老虎窗类型
double m_dWallHeight;
double m_dWallWidth;
double m_dWallThickness;//墙
double m_dWindowHeight;
double m_dWindowWidth; //窗
double m_dSlopeGrade;
double m_dSlopeHeight;
double m_dSlopeThickness;//坡
double m_dExtendEaves;
double m_dExtendHill; //伸出长度
//图层
TCHAR m_sz3DRoof[MAX_PATH];//顶层
TCHAR m_sz3DFloor[MAX_PATH];//底层
TCHAR m_sz3DWall[MAX_PATH];//侧墙层
TCHAR m_sz3DEaves[MAX_PATH];//檐层
TCHAR m_sz3DGlass[MAX_PATH];//玻璃层
TCHAR m_sz3DWindow[MAX_PATH];//眼窗层
}DORMERPARAM;
class DLLIMPEXP AecDbXDormerWindow : public AecDbEntityBase
{
public:
ACRX_DECLARE_MEMBERS(AecDbXDormerWindow);
protected:
static Adesk::UInt32 kCurrentVersionNumber;
public:
AecDbXDormerWindow(void);
~AecDbXDormerWindow(void);
public:
//老虎窗基点
void SetDormerBase(const AcGePoint3d& ptBase);
AcGePoint3d GetDormerBase() const;
//老虎窗方向
void SetDormerDir(const AcGeVector3d& vtDormerDir);
AcGeVector3d GetDormerDir() const;
//老虎窗参数
void SetDormerPar(const DormerParam& dormerPar);
bool GetDormerPar(DormerParam& dormerPar) const;
//显示窗户
void ShowWindow(BOOL bShow=TRUE);
BOOL IsShowWindow() const;
//老虎窗类型
LPCTSTR GetDormerType() const;
public:
virtual void subList() const;
virtual Acad::ErrorStatus copyFrom(const AcRxObject* pSrc);
virtual Acad::ErrorStatus subTransformBy(const AcGeMatrix3d& xform);
virtual Acad::ErrorStatus subGetGripPoints (AcGePoint3dArray& gripPoints,AcDbIntArray& osnapModes,AcDbIntArray& geomIds) const;
virtual Acad::ErrorStatus subGetGripPoints( AcDbGripDataPtrArray& grips,
const double curViewUnitSize,
const int gripSize,
const AcGeVector3d& curViewDir,
const int bitflags) const;
virtual Acad::ErrorStatus subMoveGripPointsAt(const AcDbVoidPtrArray& appData, const AcGeVector3d& offset, const int bitflags);
virtual Acad::ErrorStatus subMoveGripPointsAt(const AcDbIntArray& indices,const AcGeVector3d& offset);
virtual Acad::ErrorStatus subGetStretchPoints(AcGePoint3dArray& stretchPoints) const;
virtual Acad::ErrorStatus subMoveStretchPointsAt(const AcDbIntArray& indices,const AcGeVector3d& offset);
virtual Acad::ErrorStatus dwgInFields(AcDbDwgFiler* pFiler);
virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler* pFiler) const;
virtual Acad::ErrorStatus dxfInFields(AcDbDxfFiler* pFiler);
virtual Acad::ErrorStatus dxfOutFields(AcDbDxfFiler* pFiler) const;
protected:
virtual Acad::ErrorStatus Draw2d(AcGiDraw &dc) const;
virtual Acad::ErrorStatus Draw3d(AcGiDraw &dc) const;
Acad::ErrorStatus DrawLabel(AcGiDraw &dc,LPCTSTR pszLab) const;
CString GetLabel() const;
Acad::ErrorStatus DrawEntsToSolid(AcGiDraw& dc,AcDbVoidPtrArray& arEntPtrs) const;
public:
//专业数据 和绘制设置
virtual AecDbObjXDataMap* GetSpecialtyData(AcDb::OpenMode bMode = AcDb::kForWrite);
virtual const AecDbObjXDataMap* GetSpecialtyData() const;
protected:
BOOL IsValid() const;
protected:
//专业数据
AecDbObjXDataMap m_mapSpecXData;//序列化
private:
//夹点数据
void* m_pXDormerWindowImpl;//实现类
};