#pragma once #include "dbjig.h" #include "AECAngleWatch.h" class AECStatusRecord; class AcLineSegs : public AecDbEntityBase { public: AcLineSegs( ); virtual ~AcLineSegs(void); void SetLastPoint(const AcGePoint3d& pt); void RemoveLast(); void AddLastPoint(const AcGePoint3d& pt); virtual Acad::ErrorStatus Draw2d(AcGiDraw &mode) const; virtual const AecDbObjXDataMap* GetSpecialtyData() const { assertReadEnabled(); return NULL; } virtual AecDbObjXDataMap* GetSpecialtyData(AcDb::OpenMode bMode = AcDb::kForWrite) { assertWriteEnabled(); return NULL; } public: AcGePoint3d m_ptLast; AcGePoint3dArray m_arPoints; }; class AcLandFormJig : public AcEdJig { public: AcLandFormJig(void); ~AcLandFormJig(void); bool DoIt( ); void InitStatusRecsForLineSegs(); bool GetPoints(AcGePoint3dArray& arPts); void SetElDlg(CWnd* pElDlg){m_pElDlg = pElDlg;} protected: virtual AcEdJig::DragStatus sampler(); virtual AcDbEntity* entity() const; virtual Adesk::Boolean update(); protected: void FreeBuffer(); void PopUpStatusRec(); void PushBackStatusRec(AECStatusRecord* pRec); bool GetLastStatusAquire(AcGePoint3d& ptGe); CPtrArray m_arStaPtrs; //状态集 CPtrList m_lstStaPtrsBack; //上次状态 AECStatusRecord* m_pCurStaRec; //当前请求状态 int m_nUndoGoupid; //undo标记id CWnd* m_pElDlg; protected: AcLineSegs* m_pLineSegs; //绘制代理 };