#include "StdAfx.h" #include "SnapSprinkerJig.h" #include "XDbOsnapPoint.h" extern bool g_bAssisitantSnap; extern int AutoSnapPoint(XPoint &ptWcs, XPoint *ptBase); extern int AsOsnapMask(int nOsShape); TSnapSprinkerJig::TSnapSprinkerJig(CSprinkIsometryDlg *dlg, XPoint pt1, double nXDist, double nYDist):TSprinklerJig(dlg, pt1, nXDist, nYDist) { m_pOsnapPoint = new XDbOsnapPoint; } TSnapSprinkerJig::TSnapSprinkerJig(CSprinklerByLineDlg *dlg, XPoint pt1):TSprinklerJig(dlg, pt1) { m_pOsnapPoint = new XDbOsnapPoint; } TSnapSprinkerJig::TSnapSprinkerJig(CSprinklerByRectDlg *dlg, XPoint pt1):TSprinklerJig(dlg, pt1) { m_pOsnapPoint = new XDbOsnapPoint; } TSnapSprinkerJig::TSnapSprinkerJig(CSprinklerByFreeDlg *dlg, XPoint pt1):TSprinklerJig(dlg, pt1) { m_pOsnapPoint = new XDbOsnapPoint; } TSnapSprinkerJig::TSnapSprinkerJig(CSprinklerBySectionDlg *dlg, XPoint pt1, XPoint pt2, XPoint pt3):TSprinklerJig(dlg, pt1, pt2, pt3) { m_pOsnapPoint = new XDbOsnapPoint; } TSnapSprinkerJig::TSnapSprinkerJig(CSprinklerByArcDlg *dlg, XPoint pt1, XPoint pt2):TSprinklerJig(dlg, pt1, pt2) { m_pOsnapPoint = new XDbOsnapPoint; } AcDbEntity* TSnapSprinkerJig::entity() const { return (AcDbEntity*)m_pOsnapPoint; } //反馈 AcEdJig::DragStatus TSnapSprinkerJig::sampler() { DragStatus stat; setUserInputControls((UserInputControls) (AcEdJig::kAccept3dCoordinates|AcEdJig::kNullResponseAccepted)); if (!!m_sKeyword) setKeywordList(m_sKeyword); else setKeywordList(NULL); XPoint ptTemp; stat = GetPoint(ptTemp); if(stat == AcEdJig::kNormal) { if (g_bAssisitantSnap) { int nShape = AutoSnapPoint(ptTemp, NULL); m_pOsnapPoint->SetSnapShape(AsOsnapMask(nShape)); } m_pOsnapPoint->SetDrawSnap(g_bAssisitantSnap); m_pOsnapPoint->SetLocation(ptTemp); m_pOsnapPoint->SetEntityEx(m_pDrawEnt); if (IsPosChanged(ptTemp)) { m_ptResult=ptTemp; } else return AcEdJig::kNoChange; } return stat; }