#pragma once #include "EdJigEx.h" #include "AecDbSymbSection.h" #include "AecDbSymbWithText.h" class TVirtualSection; class TSectionEdJig : public TSymbEdJig { public: TSectionEdJig(); TSectionEdJig(AecXDbSymbSection* pSec); virtual ~TSectionEdJig(); public: enum TSectionOper { kNone = 0, kSectPoint = 1, kViewDirection = 2, }; virtual AcEdJig::DragStatus GetPoint(XPoint &pt); virtual Adesk::Boolean update(); virtual AcDbEntity* entity() const; public: void SetOperCode(TSectionEdJig::TSectionOper opCode); int DoIt(int *pKeyIndex=NULL); void SymbSection(); void SymbSectionArg(BOOL bViewLine); void SetBasePoints(const AcGePoint3d& ptFir,const AcGePoint3d& ptSec); void GetCornerPoint(AcGePoint3d& ptCorner); void GetPickset(PickSet& ssEnt); XPoint GetSecPoint(); XPoint GetSecPoint2(); // cet 2010.4.19 add 返回第二个剖切点 CString GetNumber(); // cet 2010.4.23 add 剖切编号 AcGeVector3d GetSecDir(); private: TVirtualSection* m_pVirDrawEnt; TSectionOper m_nOperCode; AecXDbSymbSection* m_pDrawEnt; AcGePoint3d m_ptFir; AcGePoint3d m_ptSec; AcGePoint3d m_ptCur; AcGePoint3d m_ptCorner; AcGeVector3d m_vtDir; CString m_strName; // cet 2010.4.23 add 剖切编号 }; class TVirtualSection : public AecXDbSymbWithText { public: TVirtualSection(); virtual ~TVirtualSection(); virtual Acad::ErrorStatus Draw2d(AcGiDraw& dc) const; void SetSectionPtr(AecXDbSymbSection* pSec); void SetBasePoints(const AcGePoint3d& ptFir,const AcGePoint3d& ptSec); void SetCurPtAndDir(const AcGePoint3d& ptCur,const AcGeVector3d& vtCur); private: Acad::ErrorStatus ExplodeOrDraw2dLineBox(AcGiDraw& dc) const; private: AecXDbSymbSection* m_pDrawEnt; AcGePoint3d m_ptFir; AcGePoint3d m_ptSec; AcGePoint3d m_ptPos; AcGePoint3d m_ptCorner; AcGeVector3d m_vtDir; };