// TDoubleLineJig.cpp: implementation of the TDoubleLineJig class. // ////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "TDoubleLineJig.h" #include "Twt_pump.h" #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]=__FILE__; #define new DEBUG_NEW #endif ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// CDoubleLinePreview::CDoubleLinePreview(XPoint ptStart, XPoint ptEnd, double nRoadWidth) { m_ptStart = ptStart; m_ptEnd = ptEnd; m_nRoadWidth = nRoadWidth; } CDoubleLinePreview::~CDoubleLinePreview() { } Adesk::Boolean CDoubleLinePreview::subWorldDraw(AcGiWorldDraw *pWd) { double nAng = ads_angle(m_ptStart, m_ptEnd); XPoint ptS1, ptS2, ptE1, ptE2; ads_polar(m_ptStart, nAng + PI/2, m_nRoadWidth/2, ptS1); ads_polar(m_ptStart, nAng - PI/2, m_nRoadWidth/2, ptS2); ads_polar(m_ptEnd, nAng + PI/2, m_nRoadWidth/2, ptE1); ads_polar(m_ptEnd, nAng - PI/2, m_nRoadWidth/2, ptE2); AcDbLine line1(m_ptStart, m_ptEnd); line1.worldDraw(pWd); AcDbLine line2(ptS1, ptE1); line2.worldDraw(pWd); AcDbLine line3(ptS2, ptE2); line3.worldDraw(pWd); double nDist = ads_distance(m_ptStart, m_ptEnd); XPoint ptText; if (nAng > PI/2 && nAng <= PI+PI/2) ads_polar(m_ptStart, nAng, nDist/2+300, ptText); else ads_polar(m_ptStart, nAng, nDist/2-300, ptText); ads_polar(ptText, nAng+PI/2, 100, ptText); if (nAng > PI/2 && nAng <= PI+PI/2) { ads_polar(ptText, nAng-PI/2, 100*2, ptText); nAng += PI; } CString csDist; csDist.Format(_T("%.0f"), nDist); AcDbText text; text.setRotation(nAng); text.setHeight(m_nRoadWidth/2); text.setTextString(csDist); text.setTextStyle(GetTextStyleId(_T("STANDARD"))); text.setPosition(ptText); text.setAlignmentPoint(ptText); text.worldDraw(pWd); return Adesk::kTrue; } TDoubleLineJig::TDoubleLineJig(XPoint pt1, double nRoadWidth) { m_ptStart = pt1; m_ptEnd = pt1; m_nDist = 0; m_nRoadWidth = nRoadWidth; m_pDrawEnt = new CDoubleLinePreview(m_ptStart, m_ptEnd, m_nRoadWidth); } TDoubleLineJig::~TDoubleLineJig() { if(m_pDrawEnt) delete m_pDrawEnt; } void TDoubleLineJig::SetStartPoint(XPoint pt) { m_ptStart = pt; m_pDrawEnt->m_ptStart = m_ptStart; } AcEdJig::DragStatus TDoubleLineJig::GetPoint(XPoint &pt) { return acquirePoint(pt, m_ptStart.AsAcGePoint3d()); } int TDoubleLineJig::DoIt(int *keyIndex) { int nRet = TSymbEdJig::DoIt(keyIndex); return nRet; } // 更新实体数据 Adesk::Boolean TDoubleLineJig::update() { Adesk::Boolean bRet=Adesk::kTrue; // if(m_nDist > g_nSprinklerRadius){ // double nAng = ads_angle(m_ptStart, m_ptResult); // ads_polar(m_ptStart, nAng, m_nDist, m_ptResult); // } // if(g_nDoubleDist > 0) // m_nRoadWidth = g_nDoubleDist; m_pDrawEnt->m_nRoadWidth = m_nRoadWidth; m_pDrawEnt->m_ptEnd = m_ptResult; return bRet; } AcDbEntity* TDoubleLineJig::entity() const { return (AcDbEntity *)m_pDrawEnt; } //地热盘管 /////////////////////////////////////////////////////////////////////////////////// TFloorPipeJig::TFloorPipeJig(CPipeFloorDlg *pDlg, XPoint ptStart, XPoint ptEnd, int nLeftDist, int nRightDist, int nTopDist, int nBottomDist, double dbPGAngle,int nEntryType,int nPipeType) { m_pDlg = pDlg; m_ptStart = ptStart; m_ptEnd = ptEnd; m_dbPGAngle = dbPGAngle; m_nEntryType = nEntryType; m_nLeftDist = nLeftDist; m_nRightDist = nRightDist; m_nTopDist = nTopDist; m_nBottomDist = nBottomDist; m_nPipeType = nPipeType; m_pDrawEnt = new TDbFloorPipe(); m_pDrawEnt->SetParam(ptStart, ptEnd, m_nLeftDist, m_nRightDist, m_nTopDist, m_nBottomDist, dbPGAngle, nEntryType, nPipeType); } TFloorPipeJig::~TFloorPipeJig() { if(m_pDrawEnt) delete m_pDrawEnt; } AcEdJig::DragStatus TFloorPipeJig::GetPoint(XPoint &pt) { return acquirePoint(pt, m_ptStart.AsAcGePoint3d()); } int TFloorPipeJig::DoIt(int *keyIndex) { int nRet = TSymbEdJig::DoIt(keyIndex); return nRet; } // 更新实体数据 Adesk::Boolean TFloorPipeJig::update() { Adesk::Boolean bRet=Adesk::kTrue; m_pDlg->UpdateData(TRUE); m_pDrawEnt->SetEntryType(m_pDlg->m_iDirection+1); m_pDrawEnt->SetAngle(A2R(m_pDlg->m_nAngle)); m_pDrawEnt->SetPipeLeftDist(m_pDlg->m_iLeftDist); m_pDrawEnt->SetPipeRightDist(m_pDlg->m_iRightDist); m_pDrawEnt->SetPipeTopDist(m_pDlg->m_iTopDist); m_pDrawEnt->SetPipeBottomDist(m_pDlg->m_iBottomDist); m_pDrawEnt->m_ptEnd = m_ptResult; return bRet; } AcDbEntity* TFloorPipeJig::entity() const { return (AcDbEntity *)m_pDrawEnt; }