#pragma once #include "EarThwormDef.h" class AecDbRoadLine; class AECStatusRecord; class AecDbRoadJig : public AcEdJig { public: AecDbRoadJig(void); AecDbRoadJig(WPipe::RoadParam* pParam); virtual~AecDbRoadJig(void); BOOL DoIt(WPipe::EApp app, BOOL bParamDlg = TRUE,BOOL bCalRefPoint = TRUE); BOOL DoIt(AecInterface* pIntf,WPipe::RoadParam* pParam); void InitStatusRecs(); public: virtual AcEdJig::DragStatus sampler(); virtual AcDbEntity* entity() const; virtual Adesk::Boolean update(); public: int AfterDrag(); void EndDragRecord(); AcEdJig::DragStatus SetPickPoint(const AcGePoint3d& ptGe); public: void PushBackStatusRec(AECStatusRecord* pRec); void PopUpStatusRec(); int GetUndoGroupID(); void SetAngleWath(AcGePoint3d& ptCen,const AcGePoint3d& ptGeTo,const AcGeVector3d& vtDir); AECStatusRecord* GetTailStatusRec() const; AECStatusRecord* GetCurStatusRec() const; protected: void FreeStatusRecs(); BOOL GetLastStatusAquire(AcGePoint3d& ptGeBase); void SetUndoGroupBegin(); void SetUndoGroupEnd(); void SetDispPromptWithEleTip(CString& sPrompt); double PickWPipehereEl(AcGePoint3d& ptGe); void CalReferencePoint(); BOOL AddRoadNode(double dAngle,double dR,AcGePoint3d& ptS,AcGePoint3d& ptE); protected: AecDbRoadLine* m_pPipeLine; // AecInterface m_tStartIntf; //默认开始接口 CPtrArray m_arStaPtrs; //状态集 CPtrList m_lstStaPtrsBack; //上次状态 AcGeVector3d m_vtStaDir; //默认开始向量 int m_nUndoGoupid; //undo标记id public: AECStatusRecord* m_pCurStaRec; //当前请求状态 };