#pragma once #include "dbjig.h" #include "earthwormdef.h" class AECStatusRecord; class TDbPipeLine; class TDbPipeJig : public AcEdJig { public: TDbPipeJig(void); virtual ~TDbPipeJig(void); void SetAdoDb(CUIISQLiteServer* pDb); CUIISQLiteServer* GetAdoDb(); BOOL DoIt(WPipe::EApp app, BOOL bParamDlg = TRUE,BOOL bCalRefPoint = TRUE); BOOL DoIt(WPipe::EApp app, const AcGePoint3d& ptRef,BOOL bParamDlg = TRUE); BOOL DoIt(AecInterface* pIntf,WPipe::PipeParam* pParam); BOOL DoItSpec(WPipe::EApp app, BOOL bParamDlg = TRUE,BOOL bCalRefPoint = TRUE); BOOL DoItNotPipe(WPipe::EApp app, BOOL bParamDlg = TRUE); BOOL DoItOnPath(WPipe::EApp app, const AcGePoint3dArray &arPts, WPipe::PipeParam *pParam = NULL); //拉命令点前继承夹点的初始化信息,PL_wpipeaddd调用 void SetInitDataMapPartFrom(AecDbObjXDataMap* pXDataMap); //是否有上下弯头产生遮挡处理 bool HasWipeClip(); public: void PushBackStatusRec(AECStatusRecord* pRec); void PopUpStatusRec(); int GetUndoGroupID(); void SetAngleWath(AcGePoint3d& ptCen,const AcGePoint3d& ptGeTo,const AcGeVector3d& vtDir); AECStatusRecord* GetTailStatusRec(); public: virtual AcEdJig::DragStatus sampler(); virtual AcDbEntity* entity() const; virtual Adesk::Boolean update(); protected: BOOL AfterDrag(); void InitStatusRecs(); void FreeStatusRecs(); BOOL GetLastStatusAquire(AcGePoint3d& ptGeBase); void SetUndoGroupBegin(); void SetUndoGroupEnd(); void SetDispPromptWithEleTip(CString& sPrompt); double PickWPipehereEl(const AcGePoint3d& ptGe); void CalReferencePoint(); void SetReferencePoint(const AcGePoint3d& ptRef); BOOL DoDrag(); protected: TDbPipeLine* m_pPipeLine; //预演实体 AecInterface m_tStartIntf; //默认开始接口 CUIISQLiteServer* m_pDb; //数据库服务 CPtrArray m_arStaPtrs; //状态集 CPtrList m_lstStaPtrsBack; //上次状态 AcGeVector3d m_vtStaDir; //默认开始向量 int m_nUndoGoupid; //undo标记id public: AECStatusRecord* m_pCurStaRec; //当前请求状态 CString m_sSystem; };