1280 lines
42 KiB
C++
1280 lines
42 KiB
C++
// 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<AcDbObjectId> lstAttachment;
|
|
pPipe->GetAttachments(lstAttachment);
|
|
int len = lstAttachment.Length();
|
|
for (int m = 0; m<len; m++)
|
|
{
|
|
AcDbObjectId idTmp = *lstAttachment[m];
|
|
OPENOBJ_BEGIN(idTmp, AcDb::kForWrite, CDbPipeAttachment, pValve);
|
|
if (pValve) {
|
|
XPoint ptLoc = pValve->GetLocation();
|
|
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;j<num;j++){
|
|
CPipeInterface face;
|
|
pEquip->GetInterface(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;i<len;i++){
|
|
Entity ent = ss[i];
|
|
nRadius = _tstof(GlobalFunc::ReadXdata(ent, _T("HYDRANT_RADIUS")));
|
|
|
|
// 增加接管管径 zxl 2012.06.20 add
|
|
dPipeDn = _tstof(GlobalFunc::ReadXdata(ent, _T("LINKINGPIPE_DN")));
|
|
if (fabs(dPipeDn - 0.0) < 0.001)
|
|
{
|
|
dPipeDn = 25.0;
|
|
}
|
|
|
|
iK = _ttoi(GlobalFunc::ReadXdata(ent, _T("SPRINKLER_K")));
|
|
if(iK < 1)
|
|
iK = 80;
|
|
OPENOBJ_BEGIN(ent, AcDb::kForRead, CDbEquipment, pEquip);
|
|
if(pEquip){
|
|
AcDbObjectId id = pEquip->GetBlock2d();
|
|
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;i<ssPt.Length();i++){
|
|
Entity ent = ssPt[i];
|
|
|
|
// 增加接管管径 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));
|
|
|
|
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));
|
|
|
|
OPENOBJ_BEGIN(ent, AcDb::kForWrite, CDbEquipment, pEquip);
|
|
if(pEquip){
|
|
BOOL bIsSys = FALSE;
|
|
AcDbObjectId id = pEquip->GetBlock2d();
|
|
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;j<num;j++){
|
|
CPipeInterface face;
|
|
pEquip->GetInterface(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);
|
|
}
|
|
|