#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 &polys); const std::vector& GetPolys() const { return m_polys; } public: // 此变量独立出来而没有存入 vector 内是有原因的。 // 当 GeHatch 被用于房间实体时,在填充中可能会为文字而挖出几个洞口。 // 当上述情况出现时,m_polys 就会发挥作用。 // m_poly 保存的就是最外面的曲线,m_polys则保存洞口的曲线。 // 要保证 m_polys 全部都在 m_poly 曲线内部。 GePoly2D m_poly; std::vector m_polys; CString m_sHatchName; double m_dScale; double m_dRotation; };