// SprinklerModifyDlg.cpp : implementation file // #include "stdafx.h" #include "SprinklerModifyDlg.h" #include "DbEquipment.h" #include "DbPipe.h" #include "globalFunc.h" #include "AcDbObjectPtr.h" #include "PickEntSet.h" #include "layerdef.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif namespace { void ModifyPipeEquimentAttachment(CDbPipe *pPipe) { if (pPipe != NULL) { XPoint ptTmp = pPipe->StartPoint(); XPoint ptTmp2 = pPipe->EndPoint(); AcDbObjectId nodeId1(NULL), nodeId2(NULL); nodeId1 = pPipe->GetNode(0); nodeId2 = pPipe->GetNode(1); OPENOBJ_BEGIN(nodeId1, AcDb::kForRead, CDbEquipment, pEquip); OPENOBJ_END(); OPENOBJ_BEGIN(nodeId2, AcDb::kForRead, CDbEquipment, pEquip); OPENOBJ_END(); DList lstAttachment; pPipe->GetAttachments(lstAttachment); int len = lstAttachment.Length(); for (int m = 0; mGetLocation(); AcDbLine line(ptTmp, ptTmp2); XPoint pt; line.getClosestPointTo(ptLoc, AcGeVector3d::kZAxis, pt); ptLoc = pt; pValve->SetLocation(ptLoc); // 设置方向 XCurveSegment seg(ptTmp, ptTmp2, 0); XVector3D vectBase(seg.EndPoint().x - seg.StartPoint().x, seg.EndPoint().y - seg.StartPoint().y, seg.EndPoint().z - seg.StartPoint().z); vectBase.Normalize(); if (vectBase.y < -0.000001 ||(vectBase.y<0.000001&&vectBase.y>=-0.000001&&vectBase.x<0)) //管线逆向绘制 { vectBase.x = -vectBase.x; vectBase.y = -vectBase.y; } pValve->SetDirection(vectBase); } OPENOBJ_END(); } } } void ModifyPipeEquimentAttachment(AcDbObjectId idPipe) { CDbPipe *pPipe = NULL; acdbOpenObject(pPipe, idPipe, AcDb::kForRead); if (pPipe != NULL) { ModifyPipeEquimentAttachment(pPipe); pPipe->close(); } } } //*************************************************************************************************** // 编辑喷头 //*************************************************************************************************** int EditSprinkler(AcDbObjectId id) { if(!id) return RTERROR; int iStyle(-1), iPos(-1), iK(80); ads_name ent; acdbGetAdsName(ent, id); double nPipeLen(0), nAngle(0), nScale(1), nEle(0), nRadius(0); double dPipeDn = 0.0; // 增加接管管径 zxl 2012.06.20 add dPipeDn = _tstof(GlobalFunc::ReadXdata(ent, _T("LINKINGPIPE_DN"))); if (fabs(dPipeDn - 0.0) < 0.001) { dPipeDn = 25.0; } nRadius = _tstof(GlobalFunc::ReadXdata(ent, _T("HYDRANT_RADIUS"))); iK = _ttoi(GlobalFunc::ReadXdata(ent, _T("SPRINKLER_K"))); const TCHAR *szBlkName = NULL; CString csDwb = g_csDwbPath + _T("TwtSys"); XString xsTmp, xsTmp2, xsTmp3, xsTmp4, xsTmp5, xsTmp6, xsTmp7, xsTmp13, xsTmp14, xsTmp15, xsTmp8; XString xsTmp16, xsTmp17; // cet 2013.1.5 add CString m_csSysBlk1 = _T("TWTSYS(00000283)"); //闭 系统 CString m_csSysBlk2 = _T("TWTSYS(00000126)"); //开 系统 CString m_csSysBlk3 = _T("TWTSYS(00000130)"); //侧喷、墙 系统 CString m_csSysBlk4 = _T("TWTSYS(00000530)"); //水喷雾 系统 zxl 2011.12.19 add if(GlobalFunc::LoadDwbBlock(csDwb, _T("00000125"), xsTmp) != RTNORM) //开 闭 return 1; if(GlobalFunc::LoadDwbBlock(csDwb, _T("00000128"), xsTmp2) != RTNORM) //上下喷 return 1; if(GlobalFunc::LoadDwbBlock(csDwb, _T("00000129"), xsTmp3) != RTNORM) //侧墙 return 1; if(GlobalFunc::LoadDwbBlock(csDwb, _T("00000131"), xsTmp4) != RTNORM) //侧喷 return 1; if (GlobalFunc::LoadDwbBlock(csDwb, _T("00000529"), xsTmp8) != RTNORM)//水喷雾 { return 1; } if (GlobalFunc::LoadDwbBlock(csDwb, _T("00000540"), xsTmp16) != RTNORM) // cet 2013.1.5 add 直立型水幕 { return 1; } if (GlobalFunc::LoadDwbBlock(csDwb, _T("00000541"), xsTmp17) != RTNORM) // cet 2013.1.5 add 下垂型水幕 { return 1; } if(g_Option::instance().g_bBlk3D){ if(GlobalFunc::LoadDwbBlock(csDwb, _T("00000365"), xsTmp13) != RTNORM) return 1; if(GlobalFunc::LoadDwbBlock(csDwb, _T("00000366"), xsTmp14) != RTNORM) return 1; if(GlobalFunc::LoadDwbBlock(csDwb, _T("00000367"), xsTmp15) != RTNORM) return 1; } //系统 if(GlobalFunc::LoadDwbBlock(csDwb, _T("00000283"), xsTmp5) != RTNORM) //闭式 return 1; if(GlobalFunc::LoadDwbBlock(csDwb, _T("00000126"), xsTmp6) != RTNORM) //开式 return 1; if(GlobalFunc::LoadDwbBlock(csDwb, _T("00000130"), xsTmp7) != RTNORM) //侧墙 return 1; OPENOBJ_BEGIN(id, AcDb::kForRead, CDbEquipment, pEquip); if(pEquip){ AcDbObjectId id2 = pEquip->GetBlock2d(); OPENOBJ_BEGIN(id2, AcDb::kForRead, AcDbBlockTableRecord, pRecord); if(pRecord){ pRecord->getName(szBlkName); } OPENOBJ_END(); nEle = pEquip->GetLocation().z / 1000; if(_tcsicmp(szBlkName, xsTmp2) == 0 || _tcsicmp(szBlkName, xsTmp) == 0 || _tcsicmp(szBlkName, xsTmp4) == 0 || _tcsicmp(szBlkName, xsTmp3) == 0 || _tcsicmp(szBlkName, xsTmp8) == 0 || _tcsicmp(szBlkName, xsTmp16) == 0 || _tcsicmp(szBlkName, xsTmp17) == 0 ) // cet 2013.1.5 modify 增加直立型水幕,下垂型水幕 { //是喷头 if(_tcsicmp(szBlkName, xsTmp) == 0){ if(_tcsicmp((const TCHAR*)m_csSysBlk1, pEquip->GetSysBlock()) == 0) iStyle = 1; //闭 else if(_tcsicmp((const TCHAR*)m_csSysBlk2, pEquip->GetSysBlock()) == 0) iStyle = 0; //开 if(pEquip->IsHidePipe()) iPos = 0; else iPos = 1; } else if(_tcsicmp(szBlkName, xsTmp2) == 0){ iStyle = 1; //闭 iPos = 2; //上下喷 } else if(_tcsicmp(szBlkName, xsTmp3) == 0){ iStyle = 2; //侧墙 iPos = 1; //下喷 } else if(_tcsicmp(szBlkName, xsTmp4) == 0){ iStyle = 3; //侧喷 iPos = 1; //下喷 } else if (_tcsicmp(szBlkName, xsTmp8) == 0)//zxl 2011.12.20 add { iStyle = 1; iPos = 3; } else if (_tcsicmp(szBlkName, xsTmp16) == 0) // cet 2013.1.5 add { iStyle = 1; // 闭 iPos = 4; // 直立型水幕 } else if (_tcsicmp(szBlkName, xsTmp17) == 0) // cet 2013.1.5 add { iStyle = 1; // 闭 iPos = 5; // 下垂型水幕 } nPipeLen = pEquip->GetPipeLength(); nAngle = GlobalFunc::Radian2Angle(pEquip->GetAngle()); nScale = pEquip->GetScale(); } else if(_tcsicmp(szBlkName, xsTmp5) == 0 || _tcsicmp(szBlkName, xsTmp6) == 0 || _tcsicmp(szBlkName, xsTmp7) == 0){//系统喷头 闭 if(_tcsicmp(szBlkName, xsTmp5) == 0) iStyle = 1; else if(_tcsicmp(szBlkName, xsTmp6) == 0) iStyle = 0; else iStyle = 2; nScale = pEquip->GetScale(); nAngle = GlobalFunc::Radian2Angle(pEquip->GetAngle()); if(fabs(nAngle) < 0.001) iPos = 1; //下喷 else if(fabs(nAngle - 180) < 0.001) iPos = 0; //上喷 int num = pEquip->GetInterfaceNum(); if(num == 1){ CPipeInterface face; pEquip->GetInterface(0, face); AcDbObjectId nextPipeId = face.m_idPipe; OPENOBJ_BEGIN(nextPipeId, AcDb::kForRead, CDbPipe, pPipe); if(pPipe){ nPipeLen = pPipe->Length(); } OPENOBJ_END(); } } } OPENOBJ_END(); CTemporaryResourceOverride vTemp; CSprinklerModifyDlg dlg; dlg.m_bEle = TRUE; dlg.m_bPipeLen = TRUE; dlg.m_bRadius = TRUE; dlg.m_bRotate = TRUE; dlg.m_bScale = TRUE; dlg.m_bStyle = TRUE; dlg.m_bK = TRUE; dlg.m_iPos1 = iPos; dlg.m_nScale = nScale; dlg.m_iStyle = iStyle; dlg.m_nEle = nEle; dlg.m_nPipeLen = fabs(nPipeLen); dlg.m_nRotate = nAngle; dlg.m_nRadius = nRadius; dlg.m_iK = iK; dlg.m_dPipeDn = dPipeDn;// 增加接管管径 zxl 2012.06.20 add if(dlg.DoModal() != IDOK) return 1; if(dlg.m_bRadius) GlobalFunc::WriteXdata(ent, _T("HYDRANT_RADIUS"), XString(_T("%.2f"), dlg.m_nRadius)); if(dlg.m_bK) GlobalFunc::WriteXdata(ent, _T("SPRINKLER_K"), XString(_T("%d"), dlg.m_iK)); // 增加接管管径 zxl 2012.06.20 add if (fabs(dlg.m_dPipeDn - 0.0) < 0.001) { dlg.m_dPipeDn = 25.0; } GlobalFunc::WriteXdata(ent, _T("LINKINGPIPE_DN"), XString(_T("%.2f"), dlg.m_dPipeDn)); OPENOBJ_BEGIN(ent, AcDb::kForWrite, CDbEquipment, pEquip); if(pEquip){ BOOL bIsSys = FALSE; AcDbObjectId id2 = pEquip->GetBlock2d(); OPENOBJ_BEGIN(id2, AcDb::kForRead, AcDbBlockTableRecord, pRecord); if(pRecord){ pRecord->getName(szBlkName); } OPENOBJ_END(); if(_tcsicmp(szBlkName, xsTmp5) == 0 || _tcsicmp(szBlkName, xsTmp6) == 0){ bIsSys = TRUE; } if(dlg.m_bScale) pEquip->SetScale(dlg.m_nScale); if(dlg.m_bRotate) pEquip->SetAngle(dlg.m_nRotate*PI/180); if(dlg.m_bPipeLen){ if(bIsSys){ if(fabs(dlg.m_nPipeLen) < 1)//还是留一个尾巴,为下次修改接管做准备 dlg.m_nPipeLen = 5; XPoint ptLoc = pEquip->GetLocation(); int num = pEquip->GetInterfaceNum(); if(num == 1){ CPipeInterface face; pEquip->GetInterface(0, face); AcDbObjectId nextPipeId = face.m_idPipe; OPENOBJ_BEGIN(nextPipeId, AcDb::kForWrite, CDbPipe, pPipe); if(pPipe){ XPoint ptStart, ptEnd, ptTmp; ptStart = pPipe->StartPoint(); ptEnd = pPipe->EndPoint(); if(ptEnd == ptLoc){ ads_polar(ptStart, ads_angle(ptStart, ptEnd), dlg.m_nPipeLen, ptTmp); pPipe->SetPoints(ptStart, ptTmp); pEquip->SetLocation(ptTmp); pEquip->SetInsert(ptTmp); } else if(ptStart == ptLoc){ ads_polar(ptEnd, ads_angle(ptEnd, ptStart), dlg.m_nPipeLen, ptTmp); pPipe->SetPoints(ptTmp, ptEnd); pEquip->SetLocation(ptTmp); pEquip->SetInsert(ptTmp); } } OPENOBJ_END(); } } else{ if(nPipeLen > 0) pEquip->SetPipeLength(dlg.m_nPipeLen); else if(nPipeLen < 0) pEquip->SetPipeLength(-dlg.m_nPipeLen); } } if(dlg.m_bEle){ XPoint ptTmp = pEquip->GetLocation(); ptTmp.z = dlg.m_nEle * 1000; pEquip->SetLocation(ptTmp); pEquip->SetInsert(ptTmp); int num = pEquip->GetInterfaceNum(); for(int j=0;jGetInterface(j, face); AcDbObjectId nextPipeId = face.m_idPipe; OPENOBJ_BEGIN(nextPipeId, AcDb::kForWrite, CDbPipe, pPipe); if(pPipe && !pPipe->IsVertical()){ XPoint ptStart, ptEnd; ptStart = pPipe->StartPoint(); ptEnd = pPipe->EndPoint(); // cet 2010.9.27 modify 只修改与喷头相连的一端 // ptStart.z = dlg.m_nEle * 1000; // ptEnd.z = dlg.m_nEle * 1000; // pPipe->SetStartPoint(ptStart); // pPipe->SetEndPoint(ptEnd); XPoint ptLoc = pEquip->GetLocation(); if (ptStart.Distance2d(ptLoc) < 1e-3) { ptStart.z = dlg.m_nEle * 1000; pPipe->SetStartPoint(ptStart); } else if (ptEnd.Distance2d(ptLoc) < 1e-3) { ptEnd.z = dlg.m_nEle * 1000; pPipe->SetEndPoint(ptEnd); } ModifyPipeEquimentAttachment(pPipe); } OPENOBJ_END(); } } if(dlg.m_bStyle){ if(bIsSys){ if(dlg.m_iStyle == 0) //开式 pEquip->SetBlock2d(GlobalFunc::GetBlkIdByName(xsTmp6)); else if(dlg.m_iStyle == 1) //闭式 pEquip->SetBlock2d(GlobalFunc::GetBlkIdByName(xsTmp5)); else if(dlg.m_iStyle == 2 || dlg.m_iStyle == 3) //侧墙 pEquip->SetBlock2d(GlobalFunc::GetBlkIdByName(xsTmp7)); nAngle = GlobalFunc::Radian2Angle(pEquip->GetAngle()); if(!((iPos == 1 && dlg.m_iPos1 == 0) || (iPos == 0 && dlg.m_iPos1 == 1))) { if(fabs(nAngle) < 0.001) iPos = 1; //下喷 else if(fabs(nAngle - PI) < 0.001) iPos = 0; //上喷 CPipeInterface face; pEquip->GetInterface(0, face); AcDbObjectId nextPipeId = face.m_idPipe; XPoint ptLoc = pEquip->GetLocation(); OPENOBJ_BEGIN(nextPipeId, AcDb::kForWrite, CDbPipe, pPipe); if(pPipe){ XPoint ptStart, ptEnd, ptTmp; ptStart = pPipe->StartPoint(); ptEnd = pPipe->EndPoint(); if(iPos == 1 && dlg.m_iPos1 == 0) //将下喷改为上喷 pEquip->SetAngle(PI); else if(iPos == 0 && dlg.m_iPos1 == 1)//将上喷改为下喷 pEquip->SetAngle(0); //将管线镜像过来 if(ptEnd == ptLoc){ ads_polar(ptStart, ads_angle(ptEnd, ptStart), pPipe->Length(), ptTmp); pPipe->SetPoints(ptStart, ptTmp); pEquip->SetLocation(ptTmp); pEquip->SetInsert(ptTmp); } else if(ptStart == ptLoc){ ads_polar(ptEnd, ads_angle(ptStart, ptEnd), pPipe->Length(), ptTmp); pPipe->SetPoints(ptTmp, ptEnd); pEquip->SetLocation(ptTmp); pEquip->SetInsert(ptTmp); } } OPENOBJ_END(); } } if(dlg.m_iPos1 == 2){//上下喷 pEquip->SetBlock2d(GlobalFunc::GetBlkIdByName(xsTmp2)); pEquip->SetHidePipe(TRUE); pEquip->SetSysBlock(m_csSysBlk1); pEquip->SetBlock3d(GlobalFunc::GetBlkIdByName(xsTmp15)); if(!dlg.m_bPipeLen) pEquip->SetPipeLength(fabs(pEquip->GetPipeLength())); } if (dlg.m_iPos1 == 3)//水喷雾 { pEquip->SetBlock2d(GlobalFunc::GetBlkIdByName(xsTmp8)); pEquip->SetHidePipe(TRUE); pEquip->SetSysBlock(m_csSysBlk4); pEquip->SetBlock3d(GlobalFunc::GetBlkIdByName(xsTmp13)); if(!dlg.m_bPipeLen) pEquip->SetPipeLength(fabs(pEquip->GetPipeLength())); } if(dlg.m_iStyle == 2){//侧墙 pEquip->SetBlock2d(GlobalFunc::GetBlkIdByName(xsTmp3)); pEquip->SetSysBlock(m_csSysBlk3); pEquip->SetHidePipe(TRUE); if(!dlg.m_bPipeLen) pEquip->SetPipeLength(-fabs(pEquip->GetPipeLength())); } if(dlg.m_iStyle == 3){//侧喷 pEquip->SetBlock2d(GlobalFunc::GetBlkIdByName(xsTmp4)); pEquip->SetSysBlock(m_csSysBlk3); pEquip->SetHidePipe(FALSE); if(!dlg.m_bPipeLen) pEquip->SetPipeLength(-fabs(pEquip->GetPipeLength())); } if (dlg.m_iPos1 == 4) // cet 2013.1.5 add 直立型水幕 { pEquip->SetBlock2d(GlobalFunc::GetBlkIdByName(xsTmp16)); pEquip->SetHidePipe(TRUE); pEquip->SetSysBlock(_T("TWTSYS(00000542)")); pEquip->SetBlock3d(GlobalFunc::GetBlkIdByName(xsTmp14)); if(!dlg.m_bPipeLen) pEquip->SetPipeLength(fabs(pEquip->GetPipeLength())); } if (dlg.m_iPos1 == 5) // cet 2013.1.5 add 下垂型水幕 { pEquip->SetBlock2d(GlobalFunc::GetBlkIdByName(xsTmp17)); pEquip->SetHidePipe(TRUE); pEquip->SetSysBlock(_T("TWTSYS(00000542)")); pEquip->SetBlock3d(GlobalFunc::GetBlkIdByName(xsTmp13)); if(!dlg.m_bPipeLen) pEquip->SetPipeLength(-fabs(pEquip->GetPipeLength())); } if(dlg.m_iPos1 != 2 && dlg.m_iStyle != 2 && dlg.m_iStyle != 3 && dlg.m_iPos1 != 3 && dlg.m_iPos1 != 4 && dlg.m_iPos1 != 5){ // cet 2013.1.5 modify 排出直立型水幕和下垂型水幕 (判断条件咋写的不大清楚暂时这样更改) pEquip->SetBlock2d(GlobalFunc::GetBlkIdByName(xsTmp)); if(dlg.m_iStyle == 0) pEquip->SetSysBlock(m_csSysBlk2); else if(dlg.m_iStyle == 1) pEquip->SetSysBlock(m_csSysBlk1); if(dlg.m_iPos1 == 0){ //上喷 pEquip->SetBlock3d(GlobalFunc::GetBlkIdByName(xsTmp14)); nPipeLen = fabs(dlg.m_nPipeLen); pEquip->SetHidePipe(TRUE); pEquip->SetPipeLength(nPipeLen); } else if(dlg.m_iPos1 == 1){ //下喷 nPipeLen = -fabs(dlg.m_nPipeLen); pEquip->SetBlock3d(GlobalFunc::GetBlkIdByName(xsTmp13)); pEquip->SetHidePipe(FALSE); pEquip->SetPipeLength(nPipeLen); } } } } OPENOBJ_END(); return 1; } //*************************************************************************************************** // 修改喷头 //*************************************************************************************************** void ModifySprinkler() { PickSet ss(SS_FREE), ssPt(SS_FREE); RBList rbMask(RTDXF0, _T("AEC_ZT_EQUIPMENT"), 8, LAY_EQUIP_SPRINKLE, NULL); const TCHAR *szBlkName = NULL; CString m_csSysBlk1 = _T("TWTSYS(00000283)"); //闭 系统 CString m_csSysBlk2 = _T("TWTSYS(00000126)"); //开 系统 CString m_csSysBlk3 = _T("TWTSYS(00000130)"); //侧喷、墙 系统 CString m_csSysBlk4 = _T("TWTSYS(00000530)");//水喷雾 系统 zxl 2011.12.19 add CString csDwb = g_csDwbPath + _T("TwtSys"); XString xsTmp, xsTmp2, xsTmp3, xsTmp4, xsTmp5, xsTmp6, xsTmp7, xsTmp13, xsTmp14, xsTmp15, xsTmp8; XString xsTmp16, xsTmp17; // cet 2013.1.5 add if(GlobalFunc::LoadDwbBlock(csDwb, _T("00000125"), xsTmp) != RTNORM) //开 闭 return; if(GlobalFunc::LoadDwbBlock(csDwb, _T("00000128"), xsTmp2) != RTNORM) //上下喷 return; if(GlobalFunc::LoadDwbBlock(csDwb, _T("00000129"), xsTmp3) != RTNORM) //侧墙 return; if(GlobalFunc::LoadDwbBlock(csDwb, _T("00000131"), xsTmp4) != RTNORM) //侧喷 return; if (GlobalFunc::LoadDwbBlock(csDwb, _T("00000529"), xsTmp8) != RTNORM)//水喷雾 { return; } if (GlobalFunc::LoadDwbBlock(csDwb, _T("00000540"), xsTmp16) != RTNORM) // cet 2013.1.5 add 直立型水幕 { return; } if (GlobalFunc::LoadDwbBlock(csDwb, _T("00000541"), xsTmp17) != RTNORM) // cet 2013.1.5 add 下垂型水幕 { return; } if(g_Option::instance().g_bBlk3D){ if(GlobalFunc::LoadDwbBlock(csDwb, _T("00000365"), xsTmp13) != RTNORM) return; if(GlobalFunc::LoadDwbBlock(csDwb, _T("00000366"), xsTmp14) != RTNORM) return; if(GlobalFunc::LoadDwbBlock(csDwb, _T("00000367"), xsTmp15) != RTNORM) return; } //系统 if(GlobalFunc::LoadDwbBlock(csDwb, _T("00000283"), xsTmp5) != RTNORM) //闭式 return; if(GlobalFunc::LoadDwbBlock(csDwb, _T("00000126"), xsTmp6) != RTNORM) //开式 return; if(GlobalFunc::LoadDwbBlock(csDwb, _T("00000130"), xsTmp7) != RTNORM) //侧墙 return; if(GlobalFunc::SelectEntities(_T("\n请选择要修改的喷头<退出>"), ss, rbMask) != RTNORM) return; long len = ss.Length(); int iStyle(-1), iPos(-1), iK(80); double nPipeLen(0), nAngle(0), nScale(1), nEle(0), nRadius(0); double dPipeDn = 0.0;// 增加接管管径 zxl 2012.06.20 add for(long i=0;iGetBlock2d(); OPENOBJ_BEGIN(id, AcDb::kForRead, AcDbBlockTableRecord, pRecord); if(pRecord){ pRecord->getName(szBlkName); } OPENOBJ_END(); nEle = pEquip->GetLocation().z / 1000; if(_tcsicmp(szBlkName, xsTmp2) == 0 || _tcsicmp(szBlkName, xsTmp) == 0 || _tcsicmp(szBlkName, xsTmp4) == 0 || _tcsicmp(szBlkName, xsTmp3) == 0 || _tcsicmp(szBlkName, xsTmp8) == 0 || _tcsicmp(szBlkName, xsTmp16) == 0 || _tcsicmp(szBlkName, xsTmp17) == 0 ) // cet 2013.1.5 modify 增加直立型水幕,下垂型水幕 { //是喷头 if(_tcsicmp(szBlkName, xsTmp) == 0){ if(_tcsicmp((const TCHAR*)m_csSysBlk1, pEquip->GetSysBlock()) == 0) iStyle = 1; //闭 else if(_tcsicmp((const TCHAR*)m_csSysBlk2, pEquip->GetSysBlock()) == 0) iStyle = 0; //开 if(pEquip->IsHidePipe()) iPos = 0; else iPos = 1; } else if(_tcsicmp(szBlkName, xsTmp2) == 0){ iStyle = 1; //闭 iPos = 2; //上下喷 } else if(_tcsicmp(szBlkName, xsTmp3) == 0){ iStyle = 2; //侧墙 iPos = 1; //下喷 } else if(_tcsicmp(szBlkName, xsTmp4) == 0){ iStyle = 3; //侧喷 iPos = 1; //下喷 } else if (_tcsicmp(szBlkName, xsTmp8) == 0) { iStyle = 1;//闭 iPos = 3;//水喷雾 } else if (_tcsicmp(szBlkName, xsTmp16) == 0) // cet 2013.1.5 add { iStyle = 1; // 闭 iPos = 4; // 直立型水幕 } else if (_tcsicmp(szBlkName, xsTmp17) == 0) // cet 2013.1.5 add { iStyle = 1; // 闭 iPos = 5; // 下垂型水幕 } nPipeLen = pEquip->GetPipeLength(); ssPt += ent; nAngle = GlobalFunc::Radian2Angle(pEquip->GetAngle()); nScale = pEquip->GetScale(); } else if(_tcsicmp(szBlkName, xsTmp5) == 0 || _tcsicmp(szBlkName, xsTmp6) == 0 || _tcsicmp(szBlkName, xsTmp7) == 0){//系统喷头 闭 if(_tcsicmp(szBlkName, xsTmp5) == 0) iStyle = 1; else if(_tcsicmp(szBlkName, xsTmp6) == 0) iStyle = 0; else iStyle = 2; nScale = pEquip->GetScale(); nAngle = GlobalFunc::Radian2Angle(pEquip->GetAngle()); if(fabs(nAngle) < 0.001) iPos = 1; //下喷 else if(fabs(nAngle - 180) < 0.001) iPos = 0; //上喷 else continue; int num = pEquip->GetInterfaceNum(); if(num != 1) continue; CPipeInterface face; pEquip->GetInterface(0, face); AcDbObjectId nextPipeId = face.m_idPipe; OPENOBJ_BEGIN(nextPipeId, AcDb::kForRead, CDbPipe, pPipe); if(pPipe){ nPipeLen = pPipe->Length(); } OPENOBJ_END(); ssPt += ent; } } OPENOBJ_END(); } if(ssPt.Length() < 1) return; CTemporaryResourceOverride vTemp; CSprinklerModifyDlg dlg; dlg.m_iPos1 = iPos; dlg.m_nScale = nScale; dlg.m_iStyle = iStyle; dlg.m_nEle = nEle; dlg.m_nPipeLen = fabs(nPipeLen); dlg.m_nRotate = nAngle; dlg.m_nRadius = nRadius; dlg.m_iK = iK; dlg.m_dPipeDn = dPipeDn;// 增加接管管径 zxl 2012.06.20 add if(dlg.DoModal() != IDOK) return; for(i=0;iGetBlock2d(); OPENOBJ_BEGIN(id, AcDb::kForRead, AcDbBlockTableRecord, pRecord); if(pRecord){ pRecord->getName(szBlkName); } OPENOBJ_END(); if(_tcsicmp(szBlkName, xsTmp5) == 0 || _tcsicmp(szBlkName, xsTmp6) == 0){ bIsSys = TRUE; } if(dlg.m_bScale) pEquip->SetScale(dlg.m_nScale); if(dlg.m_bRotate) pEquip->SetAngle(dlg.m_nRotate*PI/180); if(dlg.m_bPipeLen){ if(bIsSys){ if(fabs(dlg.m_nPipeLen) < 1)//还是留一个尾巴,为下次修改接管做准备 dlg.m_nPipeLen = 5; XPoint ptLoc = pEquip->GetLocation(); int num = pEquip->GetInterfaceNum(); if(num != 1) continue; CPipeInterface face; pEquip->GetInterface(0, face); AcDbObjectId nextPipeId = face.m_idPipe; OPENOBJ_BEGIN(nextPipeId, AcDb::kForWrite, CDbPipe, pPipe); if(pPipe){ XPoint ptStart, ptEnd, ptTmp; ptStart = pPipe->StartPoint(); ptEnd = pPipe->EndPoint(); if(ptEnd == ptLoc){ ads_polar(ptStart, ads_angle(ptStart, ptEnd), dlg.m_nPipeLen, ptTmp); pPipe->SetPoints(ptStart, ptTmp); pEquip->SetLocation(ptTmp); pEquip->SetInsert(ptTmp); } else if(ptStart == ptLoc){ ads_polar(ptEnd, ads_angle(ptEnd, ptStart), dlg.m_nPipeLen, ptTmp); pPipe->SetPoints(ptTmp, ptEnd); pEquip->SetLocation(ptTmp); pEquip->SetInsert(ptTmp); } } OPENOBJ_END(); } else{ if(nPipeLen > 0) pEquip->SetPipeLength(dlg.m_nPipeLen); else if(nPipeLen < 0) pEquip->SetPipeLength(-dlg.m_nPipeLen); } } if(dlg.m_bEle){ XPoint ptTmp = pEquip->GetLocation(); ptTmp.z = dlg.m_nEle * 1000; pEquip->SetLocation(ptTmp); pEquip->SetInsert(ptTmp); int num = pEquip->GetInterfaceNum(); for(int j=0;jGetInterface(j, face); AcDbObjectId nextPipeId = face.m_idPipe; OPENOBJ_BEGIN(nextPipeId, AcDb::kForWrite, CDbPipe, pPipe); if(pPipe && !pPipe->IsVertical()){ XPoint ptStart, ptEnd; ptStart = pPipe->StartPoint(); ptEnd = pPipe->EndPoint(); ptStart.z = dlg.m_nEle * 1000; ptEnd.z = dlg.m_nEle * 1000; pPipe->SetStartPoint(ptStart); pPipe->SetEndPoint(ptEnd); } OPENOBJ_END(); } } if(dlg.m_bStyle){ if(bIsSys){ if(dlg.m_iStyle == 0) //开式 pEquip->SetBlock2d(GlobalFunc::GetBlkIdByName(xsTmp6)); else if(dlg.m_iStyle == 1) //闭式 pEquip->SetBlock2d(GlobalFunc::GetBlkIdByName(xsTmp5)); else if(dlg.m_iStyle == 2 || dlg.m_iStyle == 3) //侧墙 pEquip->SetBlock2d(GlobalFunc::GetBlkIdByName(xsTmp7)); nAngle = GlobalFunc::Radian2Angle(pEquip->GetAngle()); if(!((iPos == 1 && dlg.m_iPos1 == 0) || (iPos == 0 && dlg.m_iPos1 == 1))) continue; if(fabs(nAngle) < 0.001) iPos = 1; //下喷 else if(fabs(nAngle - PI) < 0.001) iPos = 0; //上喷 CPipeInterface face; pEquip->GetInterface(0, face); AcDbObjectId nextPipeId = face.m_idPipe; XPoint ptLoc = pEquip->GetLocation(); OPENOBJ_BEGIN(nextPipeId, AcDb::kForWrite, CDbPipe, pPipe); if(pPipe){ XPoint ptStart, ptEnd, ptTmp; ptStart = pPipe->StartPoint(); ptEnd = pPipe->EndPoint(); if(iPos == 1 && dlg.m_iPos1 == 0) //将下喷改为上喷 pEquip->SetAngle(PI); else if(iPos == 0 && dlg.m_iPos1 == 1)//将上喷改为下喷 pEquip->SetAngle(0); //将管线镜像过来 if(ptEnd == ptLoc){ ads_polar(ptStart, ads_angle(ptEnd, ptStart), pPipe->Length(), ptTmp); pPipe->SetPoints(ptStart, ptTmp); pEquip->SetLocation(ptTmp); pEquip->SetInsert(ptTmp); } else if(ptStart == ptLoc){ ads_polar(ptEnd, ads_angle(ptStart, ptEnd), pPipe->Length(), ptTmp); pPipe->SetPoints(ptTmp, ptEnd); pEquip->SetLocation(ptTmp); pEquip->SetInsert(ptTmp); } } OPENOBJ_END(); continue; } if(dlg.m_iPos1 == 2){//上下喷 pEquip->SetBlock2d(GlobalFunc::GetBlkIdByName(xsTmp2)); pEquip->SetHidePipe(TRUE); pEquip->SetSysBlock(m_csSysBlk1); pEquip->SetBlock3d(GlobalFunc::GetBlkIdByName(xsTmp15)); if(!dlg.m_bPipeLen) pEquip->SetPipeLength(fabs(pEquip->GetPipeLength())); } if (dlg.m_iPos1 == 3)//水喷雾 { pEquip->SetBlock2d(GlobalFunc::GetBlkIdByName(xsTmp8)); pEquip->SetHidePipe(TRUE); pEquip->SetSysBlock(m_csSysBlk4); pEquip->SetBlock3d(GlobalFunc::GetBlkIdByName(xsTmp13)); if(!dlg.m_bPipeLen) pEquip->SetPipeLength(fabs(pEquip->GetPipeLength())); } if (dlg.m_iPos1 == 4) // cet 2013.1.5 add 直立型水幕 { pEquip->SetBlock2d(GlobalFunc::GetBlkIdByName(xsTmp16)); pEquip->SetHidePipe(TRUE); pEquip->SetSysBlock(_T("TWTSYS(00000542)")); pEquip->SetBlock3d(GlobalFunc::GetBlkIdByName(xsTmp14)); if(!dlg.m_bPipeLen) pEquip->SetPipeLength(fabs(pEquip->GetPipeLength())); } if (dlg.m_iPos1 == 5) // cet 2013.1.5 add 下垂型水幕 { pEquip->SetBlock2d(GlobalFunc::GetBlkIdByName(xsTmp17)); pEquip->SetHidePipe(TRUE); pEquip->SetSysBlock(_T("TWTSYS(00000542)")); pEquip->SetBlock3d(GlobalFunc::GetBlkIdByName(xsTmp13)); if(!dlg.m_bPipeLen) pEquip->SetPipeLength(-fabs(pEquip->GetPipeLength())); } if(dlg.m_iStyle == 2){//侧墙 pEquip->SetBlock2d(GlobalFunc::GetBlkIdByName(xsTmp3)); pEquip->SetSysBlock(m_csSysBlk3); pEquip->SetHidePipe(TRUE); if(!dlg.m_bPipeLen) pEquip->SetPipeLength(-fabs(pEquip->GetPipeLength())); } if(dlg.m_iStyle == 3){//侧喷 pEquip->SetBlock2d(GlobalFunc::GetBlkIdByName(xsTmp4)); pEquip->SetSysBlock(m_csSysBlk3); pEquip->SetHidePipe(FALSE); if(!dlg.m_bPipeLen) pEquip->SetPipeLength(-fabs(pEquip->GetPipeLength())); } if(dlg.m_iPos1 != 2 && dlg.m_iStyle != 2 && dlg.m_iStyle != 3 && dlg.m_iPos1 != 3 && dlg.m_iPos1 != 4 && dlg.m_iPos1 != 5){ // cet 2013.1.5 modify 排出直立型水幕和下垂型水幕 (判断条件咋写的不大清楚暂时这样更改) pEquip->SetBlock2d(GlobalFunc::GetBlkIdByName(xsTmp)); if(dlg.m_iStyle == 0) pEquip->SetSysBlock(m_csSysBlk2); else if(dlg.m_iStyle == 1) pEquip->SetSysBlock(m_csSysBlk1); if(dlg.m_iPos1 == 0){ //上喷 pEquip->SetBlock3d(GlobalFunc::GetBlkIdByName(xsTmp14)); nPipeLen = fabs(dlg.m_nPipeLen); pEquip->SetHidePipe(TRUE); pEquip->SetPipeLength(nPipeLen); } else if(dlg.m_iPos1 == 1){ //下喷 nPipeLen = -fabs(dlg.m_nPipeLen); pEquip->SetBlock3d(GlobalFunc::GetBlkIdByName(xsTmp13)); pEquip->SetHidePipe(FALSE); pEquip->SetPipeLength(nPipeLen); } } } } OPENOBJ_END(); } } ///////////////////////////////////////////////////////////////////////////// // CSprinklerModifyDlg dialog CSprinklerModifyDlg::CSprinklerModifyDlg(CWnd* pParent /*=NULL*/) : CDialog(CSprinklerModifyDlg::IDD, pParent), m_spinPipeLen(50) { //{{AFX_DATA_INIT(CSprinklerModifyDlg) m_bPipeLen = FALSE; m_bStyle = FALSE; m_iPos1 = 0; m_nPipeLen = 250; m_iStyle = 0; m_nScale = g_Option::instance().g_nSprinklerRadius; m_bScale = FALSE; m_bRotate = FALSE; m_nRotate = 0.0; m_bEle = FALSE; m_nEle = 0.0; m_bRadius = FALSE; m_nRadius = 0.0; m_bK = FALSE; m_iK = 0; m_dPipeDn = 0.0; //}}AFX_DATA_INIT } void CSprinklerModifyDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CSprinklerModifyDlg) DDX_Control(pDX, IDC_SPIN_PIPELEN, m_spinPipeLen); DDX_Check(pDX, IDC_CHECK_PIPELEN, m_bPipeLen); DDX_Check(pDX, IDC_CHECK_STYLE, m_bStyle); DDX_Radio(pDX, IDC_RADIO_POS1, m_iPos1); DDX_Text(pDX, IDC_EDIT_PIPELEN, m_nPipeLen); DDX_Radio(pDX, IDC_RADIO_TYPE1, m_iStyle); DDX_Text(pDX, IDC_EDIT_SCALE, m_nScale); DDX_Check(pDX, IDC_CHECK_SCALE, m_bScale); DDX_Check(pDX, IDC_CHECK_ROTATE, m_bRotate); DDX_Text(pDX, IDC_EDIT_ROTATE, m_nRotate); DDX_Check(pDX, IDC_CHECK_ELE, m_bEle); DDX_Text(pDX, IDC_EDIT_ELE, m_nEle); DDX_Check(pDX, IDC_CHECK_RADIUS, m_bRadius); DDX_Text(pDX, IDC_EDIT_RADIUS, m_nRadius); DDX_Check(pDX, IDC_CHECK_K, m_bK); DDX_Text(pDX, IDC_EDIT_K, m_iK); DDX_Text(pDX, IDC_EDIT_PIPEDN, m_dPipeDn); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CSprinklerModifyDlg, CDialog) //{{AFX_MSG_MAP(CSprinklerModifyDlg) ON_WM_PAINT() ON_BN_CLICKED(IDC_CHECK_STYLE, OnCheckStyle) ON_BN_CLICKED(IDC_CHECK_PIPELEN, OnCheckPipelen) ON_BN_CLICKED(IDC_RADIO_TYPE1, OnRadioType1) ON_BN_CLICKED(IDC_RADIO_TYPE2, OnRadioType2) ON_BN_CLICKED(IDC_RADIO_TYPE3, OnRadioType3) ON_BN_CLICKED(IDC_RADIO_POS1, OnRadioPos1) ON_BN_CLICKED(IDC_RADIO_POS2, OnRadioPos2) ON_BN_CLICKED(IDC_RADIO_POS3, OnRadioPos3) ON_BN_CLICKED(IDC_CHECK_SCALE, OnCheckScale) ON_BN_CLICKED(IDC_RADIO_TYPE4, OnRadioType4) ON_BN_CLICKED(IDC_CHECK_ROTATE, OnCheckRotate) ON_BN_CLICKED(IDC_CHECK_ELE, OnCheckEle) ON_BN_CLICKED(IDC_CHECK_RADIUS, OnCheckRadius) ON_BN_CLICKED(IDC_CHECK_K, OnCheckK) ON_BN_CLICKED(IDC_RADIO_POS6, OnRadioPos6) ON_BN_CLICKED(IDC_RADIO_ERECT, OnRadioErect) ON_BN_CLICKED(IDC_RADIO_DROOP, OnRadioDroop) ON_MESSAGE(WM_ACAD_KEEPFOCUS, onAcadKeepFocus) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CSprinklerModifyDlg message handlers BOOL CSprinklerModifyDlg::OnInitDialog() { CDialog::OnInitDialog(); m_spinPipeLen.SetRange(0, 900); OnCheckStyle(); OnCheckPipelen(); OnCheckScale(); OnCheckRotate(); OnCheckEle(); OnCheckK(); OnCheckRadius(); OpenSlide(); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CSprinklerModifyDlg::OnOK() { CDialog::OnOK(); } void CSprinklerModifyDlg::OnPaint() { CPaintDC dc(this); // device context for painting OpenSlide(); } void CSprinklerModifyDlg::OpenSlide() { CString csSldName; UpdateData(); if(m_iStyle == 0 && m_iPos1 == 0) //开 上喷 csSldName = _T("TWT(PT3)"); else if(m_iStyle == 0 && m_iPos1 == 1)//开 下喷 csSldName = _T("TWT(PT4)"); else if(m_iStyle == 1 && m_iPos1 == 0)//闭 上喷 csSldName = _T("TWT(PT2)"); else if(m_iStyle == 1 && m_iPos1 == 1)//闭 下喷 csSldName = _T("TWT(PT1)"); else if(m_iStyle == 1 && m_iPos1 == 2)//闭 上下喷 csSldName = _T("TWT(PT5) && m_iPos1 == 1"); else if(m_iStyle == 2) //侧墙 下喷 csSldName = _T("TWT(PT6)"); else if(m_iStyle == 3) //侧墙 下喷 csSldName = _T("TWT(PT7)"); else if (m_iStyle == 1 && m_iPos1 == 3)//闭 水喷雾 { csSldName = _T("TWT(PT8)"); } else if (m_iStyle == 1 && m_iPos1 == 4) // cet 2013.1.5 add 闭 直立型水幕 { csSldName = _T("TWT(PT9)"); } else if (m_iStyle == 1 && m_iPos1 == 5) // cet 2013.1.5 add 闭 下垂型水幕 { csSldName = _T("TWT(PT10)"); } else{ csSldName = _T(""); } CWnd *pWnd = GetDlgItem(IDC_STATIC_PREVIEW); GlobalFunc::DrawSlide((const TCHAR*)csSldName, pWnd); } void CSprinklerModifyDlg::OnCheckStyle() { UpdateData(); CWnd *pWnd1 = GetDlgItem(IDC_RADIO_TYPE1); CWnd *pWnd2 = GetDlgItem(IDC_RADIO_TYPE2); CWnd *pWnd3 = GetDlgItem(IDC_RADIO_TYPE3); CWnd *pWnd4 = GetDlgItem(IDC_RADIO_POS1); CWnd *pWnd5 = GetDlgItem(IDC_RADIO_POS2); CWnd *pWnd6 = GetDlgItem(IDC_RADIO_POS3); CWnd *pWnd7 = GetDlgItem(IDC_RADIO_TYPE4); CWnd *pWnd8 = GetDlgItem(IDC_RADIO_POS6); CWnd *pWnd9 = GetDlgItem(IDC_RADIO_ERECT); // cet 2013.1.5 add CWnd *pWnd10 = GetDlgItem(IDC_RADIO_DROOP); // cet 2013.1.5 add if(m_bStyle){ if (pWnd1) pWnd1->EnableWindow(TRUE); if (pWnd2) pWnd2->EnableWindow(TRUE); if (pWnd3) pWnd3->EnableWindow(TRUE); if (pWnd4) pWnd4->EnableWindow(TRUE); if (pWnd5) pWnd5->EnableWindow(TRUE); if (pWnd6) pWnd6->EnableWindow(TRUE); if (pWnd7) pWnd7->EnableWindow(TRUE); if (pWnd8) pWnd8->EnableWindow(TRUE); if (pWnd9) pWnd9->EnableWindow(TRUE); // cet 2013.1.5 add if (pWnd10) pWnd10->EnableWindow(TRUE); // cet 2013.1.5 add } else { if (pWnd1) pWnd1->EnableWindow(FALSE); if (pWnd2) pWnd2->EnableWindow(FALSE); if (pWnd3) pWnd3->EnableWindow(FALSE); if (pWnd4) pWnd4->EnableWindow(FALSE); if (pWnd5) pWnd5->EnableWindow(FALSE); if (pWnd6) pWnd6->EnableWindow(FALSE); if (pWnd7) pWnd7->EnableWindow(FALSE); if (pWnd8) pWnd8->EnableWindow(FALSE); if (pWnd9) pWnd9->EnableWindow(FALSE); // cet 2013.1.5 add if (pWnd10) pWnd10->EnableWindow(FALSE); // cet 2013.1.5 add } } void CSprinklerModifyDlg::OnCheckPipelen() { UpdateData(); CWnd *pWnd1 = GetDlgItem(IDC_EDIT_PIPELEN); CWnd *pWnd2 = GetDlgItem(IDC_SPIN_PIPELEN); CWnd *pWnd3 = GetDlgItem(IDC_EDIT_PIPEDN); if(m_bPipeLen){ pWnd1->EnableWindow(TRUE); pWnd2->EnableWindow(TRUE); pWnd3->EnableWindow(TRUE); } else{ pWnd1->EnableWindow(FALSE); pWnd2->EnableWindow(FALSE); pWnd3->EnableWindow(FALSE); } } void CSprinklerModifyDlg::OnCheckK() { UpdateData(); CWnd *pWnd1 = GetDlgItem(IDC_EDIT_K); if(m_bK) pWnd1->EnableWindow(TRUE); else pWnd1->EnableWindow(FALSE); } void CSprinklerModifyDlg::OnCheckScale() { UpdateData(); CWnd *pWnd1 = GetDlgItem(IDC_EDIT_SCALE); if(m_bScale) pWnd1->EnableWindow(TRUE); else pWnd1->EnableWindow(FALSE); } void CSprinklerModifyDlg::OnCheckRotate() { UpdateData(); CWnd *pWnd1 = GetDlgItem(IDC_EDIT_ROTATE); if(m_bRotate) pWnd1->EnableWindow(TRUE); else pWnd1->EnableWindow(FALSE); } void CSprinklerModifyDlg::OnCheckEle() { UpdateData(); CWnd *pWnd1 = GetDlgItem(IDC_EDIT_ELE); if(m_bEle) pWnd1->EnableWindow(TRUE); else pWnd1->EnableWindow(FALSE); } void CSprinklerModifyDlg::OnRadioType1() { UpdateData(); if(m_iPos1 == 2){ m_iPos1 = 1; UpdateData(FALSE); } OpenSlide(); } void CSprinklerModifyDlg::OnRadioType2() { OpenSlide(); } void CSprinklerModifyDlg::OnRadioType3() { UpdateData(); m_iPos1 = 1; UpdateData(FALSE); OpenSlide(); } void CSprinklerModifyDlg::OnRadioType4() { UpdateData(); m_iPos1 = 1; UpdateData(FALSE); OpenSlide(); } void CSprinklerModifyDlg::OnRadioPos1() { UpdateData(); if(m_iStyle == 2 || m_iStyle == 3){ m_iPos1 = 1; UpdateData(FALSE); return; } OpenSlide(); } void CSprinklerModifyDlg::OnRadioPos2() { OpenSlide(); } void CSprinklerModifyDlg::OnRadioPos3() { UpdateData(); if(m_iStyle == 2 || m_iStyle == 3){ m_iPos1 = 1; UpdateData(FALSE); return; } else if(m_iStyle == 0){ m_iPos1 = 1; UpdateData(FALSE); return; } OpenSlide(); } void CSprinklerModifyDlg::OnRadioPos6() { UpdateData(); if(m_iStyle == 2 || m_iStyle == 3){ m_iPos1 = 1; UpdateData(FALSE); return; } else if(m_iStyle == 0){ m_iPos1 = 1; UpdateData(FALSE); return; } OpenSlide(); } void CSprinklerModifyDlg::OnRadioErect() { UpdateData(); if(m_iStyle == 2 || m_iStyle == 3){ m_iPos1 = 1; UpdateData(FALSE); return; } else if(m_iStyle == 0){ m_iPos1 = 1; UpdateData(FALSE); return; } OpenSlide(); } void CSprinklerModifyDlg::OnRadioDroop() { UpdateData(); if(m_iStyle == 2 || m_iStyle == 3){ m_iPos1 = 1; UpdateData(FALSE); return; } else if(m_iStyle == 0){ m_iPos1 = 1; UpdateData(FALSE); return; } OpenSlide(); } LONG_PTR CSprinklerModifyDlg::onAcadKeepFocus(UINT_PTR, LONG_PTR) { POINT pt; ::GetCursorPos(&pt); CRect rect; GetWindowRect(&rect); if (!(rect.PtInRect(pt))) { return FALSE; } return TRUE; } void CSprinklerModifyDlg::OnCheckRadius() { UpdateData(); CWnd *pWnd1 = GetDlgItem(IDC_EDIT_RADIUS); if(m_bRadius) pWnd1->EnableWindow(TRUE); else pWnd1->EnableWindow(FALSE); }