53 lines
1.4 KiB
C++
53 lines
1.4 KiB
C++
#pragma once
|
|
#include "GePoly2D.h"
|
|
|
|
class GeHatch : public GeEntity
|
|
{
|
|
public:
|
|
|
|
GeHatch(GePoly2D poly,const TCHAR* sName,double nScale = 1.0);
|
|
GeHatch(GePoly2D poly,const TCHAR* sName,double nScale,double nAngle);
|
|
virtual ~GeHatch();
|
|
|
|
virtual bool IsKindOf(TEntityId entType) const;
|
|
virtual TEntityId Type() const;
|
|
virtual void CopyFrom(const GeEntity* pImpSrc);
|
|
|
|
virtual bool IsSolid()const;
|
|
|
|
virtual GePoly2D GetHatchPoly()const;
|
|
virtual void SetHatchPoly(GePoly2D poly);
|
|
|
|
virtual CString GetHatchName()const;
|
|
virtual void SetHatchName(CString sHatchName);
|
|
|
|
virtual double GetHatchScale()const;
|
|
virtual void SetHatchScale(double dScale);
|
|
|
|
virtual double GetHatchRotation()const;
|
|
virtual void SetHatchRotation(double dRotation);
|
|
|
|
void AppendPoly(const GePoly2D &poly);
|
|
|
|
void AppendPoly(const std::vector<GePoly2D> &polys);
|
|
|
|
const std::vector<GePoly2D>& GetPolys() const { return m_polys; }
|
|
|
|
public:
|
|
|
|
// 此变量独立出来而没有存入 vector 内是有原因的。
|
|
// 当 GeHatch 被用于房间实体时,在填充中可能会为文字而挖出几个洞口。
|
|
// 当上述情况出现时,m_polys 就会发挥作用。
|
|
// m_poly 保存的就是最外面的曲线,m_polys则保存洞口的曲线。
|
|
// 要保证 m_polys 全部都在 m_poly 曲线内部。
|
|
GePoly2D m_poly;
|
|
|
|
std::vector<GePoly2D> m_polys;
|
|
|
|
CString m_sHatchName;
|
|
|
|
double m_dScale;
|
|
|
|
double m_dRotation;
|
|
};
|