2020 lines
50 KiB
C++
2020 lines
50 KiB
C++
// PipeEditDlg.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
|
|
#include <dbPipeValve.h>
|
|
#include <DbEquipment.h>
|
|
#include <dbSymbolAnnotate.h>
|
|
#include <DbPump.h>
|
|
#include <TAPI.h>
|
|
|
|
#include "DbVPipeDim.h"
|
|
#include "PipeEditDlg.h"
|
|
#include "DimSettingDlg.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
///////////////////////////////////////////////////////////
|
|
// cet 2013.4.27 add 更新管线上的立管标注
|
|
// void UpdateElevationDim(PickSet &ssPipe);
|
|
// void UpdateElevationDim(Entity &entPipe);
|
|
// void UpdateElevationDim(const AcDbObjectId &idPipe)
|
|
// {
|
|
// ads_name name;
|
|
// acdbGetAdsName(name, idPipe);
|
|
// Entity ent(name);
|
|
// UpdateElevationDim(ent);
|
|
// }
|
|
//
|
|
// void UpdateElevationDim(Entity &entPipe)
|
|
// {
|
|
// PickSet ss(SS_FREE);
|
|
// ss += entPipe;
|
|
// UpdateElevationDim(ss);
|
|
// }
|
|
//
|
|
// void UpdateElevationDim(PickSet &ssPipe)
|
|
// {
|
|
// RBList rbMark(RTDXF0, _T("ATS_ELEVATION"), NULL);
|
|
// PickSet ssDim;
|
|
// ssDim.Get(_T("X"), NULL, NULL, rbMark);
|
|
// int nDimNum = ssDim.Length();
|
|
// if (nDimNum == 0)
|
|
// {
|
|
// return;
|
|
// }
|
|
//
|
|
// std::vector<std::pair<Entity, XPoint> > vecDim;
|
|
// for (long j = 0; j < nDimNum; ++j)
|
|
// {
|
|
// OPENOBJ_BEGIN(ssDim[j], AcDb::kForRead, TDbSymbElevation, pDim);
|
|
// if (pDim != NULL)
|
|
// {
|
|
// vecDim.push_back(std::make_pair(ssDim[j], pDim->GetLocation()));
|
|
// }
|
|
// OPENOBJ_END();
|
|
// }
|
|
//
|
|
// std::vector<std::pair<Entity, XPoint> >::iterator it, itEnd = vecDim.end();
|
|
// long nLen = ssPipe.Length();
|
|
// AcGePoint3d ptS, ptE, ptLoc;
|
|
// AcGeTol tol;
|
|
// tol.setEqualPoint(0.001);
|
|
// double dMeter = 1;
|
|
// if (!DocGetMeterUnitDraw())
|
|
// {
|
|
// tol.setEqualPoint(1);
|
|
// dMeter = 0.001;
|
|
// }
|
|
// AcGeLine3d line1;
|
|
// CString sText;
|
|
// for (long i = 0; i < nLen; ++i)
|
|
// {
|
|
// OPENOBJ_BEGIN(ssPipe[i], AcDb::kForRead, TDbPipe, pPipe);
|
|
// if (pPipe != NULL)
|
|
// {
|
|
// if (pPipe->IsVertical())
|
|
// {
|
|
// continue;
|
|
// }
|
|
// ptS = pPipe->StartPoint();
|
|
// ptE = pPipe->EndPoint();
|
|
// ptS.z = 0.0;
|
|
// ptE.z = 0.0;
|
|
// line1.set(ptS, ptE);
|
|
// for (it = vecDim.begin(); it != itEnd; ++it)
|
|
// {
|
|
// ptLoc = it->second;
|
|
// ptLoc.z = 0.0;
|
|
// if (!line1.isOn(ptLoc, tol))
|
|
// {
|
|
// continue;
|
|
// }
|
|
//
|
|
// double dDist = ptLoc.distanceTo(ptS);
|
|
// double dLen = ptS.distanceTo(ptE);
|
|
// double dEle = (pPipe->EndPoint().z - pPipe->StartPoint().z) * ( dDist / dLen) + pPipe->StartPoint().z;
|
|
//
|
|
// OPENOBJ_BEGIN(it->first, AcDb::kForWrite, TDbSymbElevation, pDim);
|
|
// if (pDim != NULL)
|
|
// {
|
|
// sText.Format(_T("%.3f"), dEle * dMeter);
|
|
// pDim->SetText(sText);
|
|
// }
|
|
// OPENOBJ_END();
|
|
// }
|
|
// }
|
|
// OPENOBJ_END();
|
|
// }
|
|
// }
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CPipeEditDlg dialog
|
|
//***************************************************************************************************
|
|
// 编辑管线
|
|
//***************************************************************************************************
|
|
extern int EditVerticalPipe(AcDbObjectId id);
|
|
//extern void UpdatePipeTextDim(Entity ent, CString csDnType, int nPipeDn);
|
|
|
|
extern BOOL InvokeLineTypeMan();
|
|
extern void ModifyPipeEquimentAttachment(TDbPipe *pPipe); // cet 2010.9.27 add
|
|
//得到管道的水容积
|
|
double GetPipeCuba(Entity ent)
|
|
{
|
|
double dRet(0);
|
|
OPENOBJ_BEGIN(ent, AcDb::kForRead, TDbPipe, pPipe);
|
|
if(pPipe){
|
|
int iMaterial = pPipe->GetMaterial();
|
|
CString csMat = GetPipeMaterialByIdx(iMaterial);
|
|
double nPipeDn = pPipe->GetDnDiameter();
|
|
|
|
double nRetDj = GetPipeDjByDn(csMat, (int)nPipeDn)/2.0;
|
|
double dLen = pPipe->Length();
|
|
// if(!DocGetMeterUnitDraw())
|
|
// dLen = dLen/1000.0;
|
|
dRet = PI*nRetDj*nRetDj*dLen;
|
|
}
|
|
OPENOBJ_END();
|
|
return dRet;
|
|
}
|
|
|
|
//更新坡度标注 sr modify 2007-6-14 根据扩展数据:句柄
|
|
void UpdateGradientDim(Entity ent, double i)
|
|
{
|
|
double nLen(0);
|
|
CString csPipeName;
|
|
double nGradient(0);
|
|
OPENOBJ_BEGIN(ent, AcDb::kForWrite, TDbPipe, pPipe);
|
|
if(pPipe){
|
|
nGradient = pPipe->GetPipeGradient();
|
|
if(nGradient > 1)
|
|
nGradient = 0;
|
|
nLen = pPipe->Length();
|
|
// if(!DocGetMeterUnitDraw())
|
|
// nLen = nLen / 1000;
|
|
AcDbObjectId idPipe = pPipe->objectId();
|
|
AcDbHandle handle = idPipe.handle();
|
|
TCHAR szHandle[17]=_T("");
|
|
handle.getIntoAsciiBuffer(szHandle);
|
|
csPipeName = szHandle;
|
|
|
|
}
|
|
OPENOBJ_END();
|
|
|
|
double nArrowLen = 17*DocGetPScale();
|
|
XPoint ptStart, ptEnd, ptText;
|
|
GetPipePoint(ent, ptStart, ptEnd, ptText);
|
|
|
|
CString csText;
|
|
int iTmp = int(i * 1000) * 10;
|
|
int iTmp2 = int(i * 10000);
|
|
if(iTmp == iTmp2)
|
|
csText.Format(_T("i=%.3f"), i);
|
|
else
|
|
csText.Format(_T("i=%.4f"), i);
|
|
|
|
XPoint ptUcs = Wcs2Ucs(ptText);
|
|
PickSet ss(SS_FREE);
|
|
RBList rbMask = ads_buildlist( -4, _T("<or"),
|
|
-4, _T("<and"), RTDXF0, _T("ATS_ARROW"), 8, LAY_OTHER_DIM, -4, _T("and>"),
|
|
-4, _T("or>"), NULL);
|
|
XPoint ptTemp1, ptTemp2;
|
|
ptTemp1.x = ptUcs.x - nLen*1000;
|
|
ptTemp1.y = ptUcs.y + nLen*1000;
|
|
ptTemp2.x = ptUcs.x + nLen*1000;
|
|
ptTemp2.y = ptUcs.y - nLen*1000;
|
|
ptTemp1.z = 0;
|
|
ptTemp2.z = 0;
|
|
ss.Get(_T("C"), ptTemp1, ptTemp2, rbMask);
|
|
long len1 = ss.Length();
|
|
for(long j=0;j<len1;j++){
|
|
Entity entTmp = ss[j];
|
|
CString csTmp = ReadXdata(entTmp, _T("TG-BINDPIPE"));
|
|
if(csPipeName == csTmp){
|
|
OPENOBJ_BEGIN(entTmp, AcDb::kForWrite, TDbSymbArrow, pDim);
|
|
if(pDim){
|
|
pDim->SetText(csText);
|
|
}
|
|
OPENOBJ_END();
|
|
}
|
|
}
|
|
}
|
|
|
|
void GetNewDimType(TDbPipe *pPipe, int &nDnType, int &nLenType, int &nGradientType, int &nLabelType, int &nDrawType)
|
|
{
|
|
if (pPipe == NULL)
|
|
{
|
|
return;
|
|
}
|
|
|
|
if (pPipe->IsNewDimType())
|
|
{
|
|
nDnType = pPipe->GetPipeDnDimType();
|
|
nLenType = pPipe->GetPipeLenDimType();
|
|
nGradientType = pPipe->GetPipeGradientDimType();
|
|
nLabelType = pPipe->GetPipeDimLableType();
|
|
nDrawType = pPipe->GetPipeLableDrawType();
|
|
return;
|
|
}
|
|
int dSpare = pPipe->GetSpare();
|
|
nDrawType = 0;
|
|
if (dSpare > 100) // 大于100时,十位百位数表示管线长度样式 (8.5及以上版本)
|
|
{
|
|
int iDimType = static_cast<int>(dSpare);
|
|
CString sTemp;
|
|
sTemp.Format(_T("%d"), iDimType);
|
|
nLenType = static_cast<int>(_tstof(sTemp.Right(2)));
|
|
|
|
--iDimType;
|
|
iDimType /= 100;
|
|
|
|
if(iDimType == 1) //DN500 i=0.003 12.3m
|
|
{
|
|
nDnType = 1;
|
|
nGradientType = 1;
|
|
nLabelType = 0;
|
|
}
|
|
else if(iDimType == 2) //DN500-0.003-12.3m
|
|
{
|
|
nDnType = 1;
|
|
nGradientType = 3;
|
|
nLabelType = 1;
|
|
}
|
|
else if(iDimType == 3) //DN500 0.003 12.3m
|
|
{
|
|
nDnType = 1;
|
|
nGradientType = 3;
|
|
nLabelType = 0;
|
|
}
|
|
else if(iDimType == 4) //DN500 i=0.003
|
|
{
|
|
nDnType = 1;
|
|
nLenType = 0;
|
|
nGradientType = 1;
|
|
nLabelType = 0;
|
|
}
|
|
else if(iDimType == 5) //DN500-0.003
|
|
{
|
|
nDnType = 1;
|
|
nLenType = 0;
|
|
nGradientType = 3;
|
|
nLabelType = 1;
|
|
}
|
|
else if(iDimType == 6) //DN500 0.003
|
|
{
|
|
nDnType = 1;
|
|
nLenType = 0;
|
|
nGradientType = 1;
|
|
nLabelType = 0;
|
|
}
|
|
else if(iDimType == 7) //DN500 12.3m
|
|
{
|
|
nDnType = 1;
|
|
nGradientType = 0;
|
|
nLabelType = 0;
|
|
}
|
|
else if(iDimType == 8) //DN500-12.3m
|
|
{
|
|
nDnType = 1;
|
|
nGradientType = 0;
|
|
nLabelType = 1;
|
|
}
|
|
else if(iDimType == 9) //DN500 i0.003 L=12.3m
|
|
{
|
|
nDnType = 1;
|
|
nGradientType = 5;
|
|
nLabelType = 0;
|
|
}
|
|
else if(iDimType == 10) //DN500/12.3
|
|
{
|
|
nDnType = 1;
|
|
nGradientType = 0;
|
|
nLabelType = 2;
|
|
}
|
|
else if (iDimType == 11) // 12.3m
|
|
{
|
|
nDnType = 0;
|
|
nGradientType = 0;
|
|
nLabelType = 0;
|
|
}
|
|
}
|
|
else if (dSpare > 0 && dSpare < 11) // 8.2版本
|
|
{
|
|
if (dSpare == 1)
|
|
{
|
|
nDnType = 1;
|
|
nLenType = 1;
|
|
nGradientType = 1;
|
|
nLabelType = 0;
|
|
}
|
|
else if (dSpare == 2)
|
|
{
|
|
nDnType = 1;
|
|
nLenType = 5;
|
|
nGradientType = 3;
|
|
nLabelType = 1;
|
|
}
|
|
else if (dSpare == 3)
|
|
{
|
|
nDnType = 1;
|
|
nLenType = 5;
|
|
nGradientType = 3;
|
|
nLabelType = 0;
|
|
}
|
|
else if (dSpare == 4)
|
|
{
|
|
nDnType = 1;
|
|
nLenType = 0;
|
|
nGradientType = 1;
|
|
nLabelType = 0;
|
|
}
|
|
else if (dSpare == 5)
|
|
{
|
|
nDnType = 1;
|
|
nLenType = 0;
|
|
nGradientType = 3;
|
|
nLabelType = 1;
|
|
}
|
|
else if (dSpare == 6)
|
|
{
|
|
nDnType = 1;
|
|
nLenType = 0;
|
|
nGradientType = 3;
|
|
nLabelType = 0;
|
|
}
|
|
else if (dSpare == 7)
|
|
{
|
|
nDnType = 1;
|
|
nLenType = 1;
|
|
nGradientType = 0;
|
|
nLabelType = 0;
|
|
}
|
|
else if (dSpare == 8)
|
|
{
|
|
nDnType = 1;
|
|
nLenType = 5;
|
|
nGradientType = 0;
|
|
nLabelType = 1;
|
|
}
|
|
else if (dSpare == 9)
|
|
{
|
|
nDnType = 1;
|
|
nLenType = 5;
|
|
nGradientType = 0;
|
|
nLabelType = 0;
|
|
}
|
|
else if (dSpare == 10)
|
|
{
|
|
nDnType = 1;
|
|
nLenType = 3;
|
|
nGradientType = 5;
|
|
nLabelType = 0;
|
|
}
|
|
}
|
|
else if (dSpare == 0)
|
|
{
|
|
nDnType = 1;
|
|
nLenType = 0;
|
|
nGradientType = 0;
|
|
nLabelType = 0;
|
|
}
|
|
else
|
|
{
|
|
nDnType = 1;
|
|
pPipe->EnableDrawLabel(FALSE);
|
|
}
|
|
}
|
|
|
|
|
|
int EditPipe(AcDbObjectId id)
|
|
{
|
|
if(!id)
|
|
return RTERROR;
|
|
int iColor(0), iMaterial(0), iHideLevel(0), iInsulate(0);;
|
|
double nWidth(0), nPipeDn(0), nEle2(0);
|
|
CString csLayer, csLineType, csDnType, csDimType;
|
|
double nElevation(0), nGradient(0), nSpare(0);
|
|
BOOL bDrawLabel(0);
|
|
|
|
// zxl 2013.1.6 add 调整管线标注样式
|
|
int nDnType = 0;
|
|
int nLenType = 0;
|
|
int nGradientType = 0;
|
|
int nLabelType = 0;
|
|
int nDrawType = 0;
|
|
|
|
CTemporaryResourceOverride vTemp;
|
|
CPipeEditDlg dlg;
|
|
|
|
BOOL IsVertical = FALSE;
|
|
double dSEle = 0.0, dEEle = 0.0; // cet 2011.11.1 add 记录起点终点原始标高
|
|
OPENOBJ_BEGIN(id, AcDb::kForRead, TDbPipe, pPipe);
|
|
if(!pPipe)
|
|
return RTERROR;
|
|
if(pPipe->IsVertical())
|
|
IsVertical = TRUE;
|
|
|
|
TCHAR *layer, *szLineType;
|
|
nElevation = pPipe->StartPoint().z;
|
|
nEle2 = pPipe->EndPoint().z;
|
|
dSEle = nElevation; // cet 2011.11.1 add
|
|
dEEle = nEle2; // cet 2011.11.1 add
|
|
layer = pPipe->layer();
|
|
nPipeDn = pPipe->GetDnDiameter();
|
|
szLineType = pPipe->linetype();
|
|
iMaterial = pPipe->GetMaterial();
|
|
csLayer = layer;
|
|
csLineType = szLineType;
|
|
csDnType = pPipe->GetLabel();
|
|
delete [] layer;
|
|
delete [] szLineType;
|
|
iColor = pPipe->colorIndex();
|
|
nWidth = pPipe->GetPipeWeight();
|
|
iHideLevel = pPipe->GetHideLevel();
|
|
nGradient = pPipe->GetPipeGradient();
|
|
bDrawLabel = pPipe->IsDrawLabel();
|
|
csDimType = pPipe->GetSpareStr();
|
|
// nSpare = pPipe->GetSpare();
|
|
iInsulate = (int)pPipe->GetInsulateThick();
|
|
|
|
// zxl 2013.1.6 add 调整管线标注样式
|
|
GetNewDimType(pPipe, nDnType, nLenType, nGradientType, nLabelType, nDrawType);
|
|
|
|
OPENOBJ_END();
|
|
if(IsVertical)
|
|
return EditVerticalPipe(id);
|
|
double dMeter(1);
|
|
if(!DocGetMeterUnitDraw())
|
|
dMeter = 1000;
|
|
if(csLineType == _T("CONTINUE"))
|
|
csLineType = _T("CONTINUOUS");
|
|
ads_name entTmp;
|
|
acdbGetAdsName(entTmp, id);
|
|
double dCuba = GetPipeCuba(entTmp);
|
|
dlg.m_csCuba.Format(_T("%.3f"), dCuba);
|
|
// zxl 2013.01.06 modify
|
|
// cet 2011.5.20 add 增加了管线长度样式需进行调整
|
|
// if (nSpare > 100)
|
|
// {
|
|
// nSpare /= 100;
|
|
// }
|
|
// dlg.m_iDimType = (int)nSpare;
|
|
dlg.m_nDnType = nDnType;
|
|
dlg.m_nLenType = nLenType;
|
|
dlg.m_nGradientType = nGradientType;
|
|
dlg.m_nLabelType = nLabelType;
|
|
dlg.m_nDrawType = nDrawType;
|
|
|
|
dlg.m_csLineType = csLineType;
|
|
dlg.m_bDimDn = bDrawLabel;
|
|
dlg.m_csDnName = csDnType;
|
|
dlg.m_bColor = TRUE;
|
|
dlg.m_bDn = TRUE;
|
|
dlg.m_bElevation = TRUE;
|
|
dlg.m_bLayer = TRUE;
|
|
dlg.m_bLineType = TRUE;
|
|
dlg.m_bMaterial = TRUE;
|
|
dlg.m_bNeedHide = TRUE;
|
|
dlg.m_bGradient = TRUE;
|
|
dlg.m_bDnHead = TRUE;
|
|
dlg.m_bDrawLabel =TRUE;
|
|
dlg.m_bWidth = TRUE;
|
|
dlg.m_bInsulate = TRUE;
|
|
dlg.m_nElevation = nElevation/dMeter;
|
|
dlg.m_nEle2 = nEle2/dMeter;
|
|
dlg.m_iInsulate = iInsulate;
|
|
if(fabs(nElevation - nEle2) > 0.01)
|
|
dlg.m_bEle2 = TRUE;
|
|
dlg.m_iLayer = GetPipeLayerIdxByName(csLayer);
|
|
dlg.m_iColor = iColor;
|
|
dlg.m_csDn.Format(_T("%.0f"), nPipeDn);
|
|
dlg.m_nWidth = nWidth;
|
|
dlg.m_iMaterial = iMaterial;
|
|
dlg.m_iHide = iHideLevel;
|
|
// if(iHideLevel == -128)
|
|
// dlg.m_bHideOther = TRUE;
|
|
|
|
dlg.m_csGradient.Format(_T("%.4f"), nGradient);
|
|
|
|
if(dlg.DoModal() != IDOK){
|
|
PickSet ss(SS_FREE);
|
|
ss += id;
|
|
UpdateGraphic(ss);
|
|
return RTNORM;
|
|
}
|
|
if(dlg.m_bGradient){
|
|
UpdateGradientDim(entTmp, _tstof(dlg.m_csGradient));
|
|
}
|
|
|
|
|
|
double dCalcEle(0);
|
|
BOOL bChangeEle = FALSE;
|
|
OPENOBJ_BEGIN(id, AcDb::kForWrite, TDbPipe, pPipe);
|
|
if(pPipe){
|
|
if(dlg.m_bMaterial){
|
|
pPipe->SetMaterial(dlg.m_iMaterial);
|
|
}
|
|
if(dlg.m_bGradient){
|
|
pPipe->SetPipeGradient(_tstof(dlg.m_csGradient));
|
|
}
|
|
if(dlg.m_bNeedHide)
|
|
pPipe->SetHideLevel(dlg.m_iHide);
|
|
if(dlg.m_bInsulate)
|
|
pPipe->SetInsulateThick(dlg.m_iInsulate);
|
|
if(dlg.m_bElevation){
|
|
XPoint ptTmp = pPipe->StartPoint();
|
|
XPoint ptTmp2 = pPipe->EndPoint();
|
|
ptTmp.z = dlg.m_nElevation*dMeter;
|
|
if(dlg.m_bEle2)
|
|
ptTmp2.z = dlg.m_nEle2*dMeter;
|
|
else
|
|
ptTmp2.z = dlg.m_nElevation*dMeter;
|
|
|
|
// cet 2011.11.1 add 标高未改变时,不执行下列操作
|
|
CString sTemp;
|
|
sTemp.Format(_T("%.3f"), dSEle / dMeter);
|
|
dSEle = _tstof(sTemp) * dMeter;
|
|
sTemp.Format(_T("%.3f"), dEEle / dMeter);
|
|
dEEle = _tstof(sTemp) * dMeter;
|
|
if (ptTmp.z == dSEle && ptTmp2.z == dEEle) // 标高未变化
|
|
{
|
|
// cet 2013.5.17 add 由于管线标高在对话框初始化时,通过字符串格式化处理
|
|
// 可能进行了四舍五入,造成精度损失,导致对话框标高与实际管线标高有一定的误差
|
|
// 在此进行进一步比较,消除一定误差范围内的造成的影响
|
|
// 误差保持在0.1毫米内
|
|
double dMeter = 0.1;
|
|
if (DocGetMeterUnitDraw())
|
|
{
|
|
dMeter *= 0.001;
|
|
}
|
|
|
|
double dTol1 = fabs(pPipe->StartPoint().z - ptTmp.z );
|
|
if ( dTol1 < dMeter && dTol1 > 0.0)
|
|
{
|
|
pPipe->SetStartPoint(ptTmp);
|
|
}
|
|
|
|
double dTol2 = fabs(pPipe->EndPoint().z - ptTmp2.z );
|
|
if ( dTol2 < dMeter && dTol2 > 0.0)
|
|
{
|
|
pPipe->SetEndPoint(ptTmp2);
|
|
}
|
|
|
|
goto LABEL;
|
|
}
|
|
|
|
pPipe->SetStartPoint(ptTmp);
|
|
pPipe->SetEndPoint(ptTmp2);
|
|
AcDbObjectId nodeId1(NULL), nodeId2(NULL);
|
|
nodeId1 = pPipe->GetNode(0);
|
|
nodeId2 = pPipe->GetNode(1);
|
|
OPENOBJ_BEGIN(nodeId1, AcDb::kForRead, TDbEquipment, pEquip);
|
|
if(pEquip && !pEquip->isKindOf(TDbPump::desc())){
|
|
if(pEquip->upgradeOpen()==Acad::eOk) {
|
|
XPoint ptTmp4 = pEquip->GetInsert();
|
|
// cet 2010.9.27 modify 考虑坡度
|
|
// ptTmp4.z = ptTmp.z;
|
|
if(ptTmp.Distance2d(ptTmp4) < 1e-3)
|
|
{
|
|
ptTmp4.z = ptTmp.z;
|
|
}
|
|
else
|
|
{
|
|
ptTmp4.z = ptTmp2.z;
|
|
}
|
|
pEquip->SetInsert(ptTmp4);
|
|
XPoint ptTmp3 = pEquip->GetLocation();
|
|
// cet 2010.9.27 modify 考虑坡度
|
|
// ptTmp3.z = ptTmp.z;
|
|
if(ptTmp.Distance2d(ptTmp3) < 1e-3)
|
|
{
|
|
ptTmp3.z = ptTmp.z;
|
|
}
|
|
else
|
|
{
|
|
ptTmp3.z = ptTmp2.z;
|
|
}
|
|
pEquip->SetLocation(ptTmp3);
|
|
pEquip->downgradeOpen();
|
|
}
|
|
}
|
|
OPENOBJ_END();
|
|
OPENOBJ_BEGIN(nodeId2, AcDb::kForRead, TDbEquipment, pEquip);
|
|
if(pEquip && !pEquip->isKindOf(TDbPump::desc())){
|
|
if(pEquip->upgradeOpen()==Acad::eOk) {
|
|
XPoint ptTmp4 = pEquip->GetInsert();
|
|
// cet 2010.9.27 modify 考虑坡度
|
|
// ptTmp4.z = ptTmp.z;
|
|
if(ptTmp.Distance2d(ptTmp4) < 1e-3)
|
|
{
|
|
ptTmp4.z = ptTmp.z;
|
|
}
|
|
else
|
|
{
|
|
ptTmp4.z = ptTmp2.z;
|
|
}
|
|
pEquip->SetInsert(ptTmp4);
|
|
XPoint ptTmp3 = pEquip->GetLocation();
|
|
// cet 2010.9.27 modify 考虑坡度
|
|
// ptTmp3.z = ptTmp.z;
|
|
if(ptTmp.Distance2d(ptTmp3) < 1e-3)
|
|
{
|
|
ptTmp3.z = ptTmp.z;
|
|
}
|
|
else
|
|
{
|
|
ptTmp3.z = ptTmp2.z;
|
|
}
|
|
pEquip->SetLocation(ptTmp3);
|
|
pEquip->downgradeOpen();
|
|
}
|
|
}
|
|
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, TDbPipeAttachment, pValve);
|
|
if(pValve){
|
|
XPoint ptLoc = pValve->GetLocation();
|
|
// cet 2010.9.27 modify 考虑坡度
|
|
// ptLoc.z = ptTmp.z;
|
|
AcDbLine line(ptTmp, ptTmp2);
|
|
XPoint pt;
|
|
line.getClosestPointTo(ptLoc, AcGeVector3d::kZAxis, pt);
|
|
ptLoc = pt;
|
|
|
|
pValve->SetLocation(ptLoc);
|
|
}
|
|
OPENOBJ_END();
|
|
}
|
|
}
|
|
|
|
LABEL: // cet 2011.11.1 add
|
|
if(dlg.m_bDn){
|
|
double nDn = _tstof(dlg.m_csDn);
|
|
pPipe->SetDnDiameter(nDn);
|
|
}
|
|
if(dlg.m_bDnHead)
|
|
pPipe->SetLabel(dlg.m_csDnName);
|
|
if(dlg.m_bDrawLabel){
|
|
pPipe->EnableDrawLabel(dlg.m_bDimDn);
|
|
// zxl 2013.01.06 modify 调整管线标注样式
|
|
//pPipe->SetSpare((double)dlg.m_iDimType); cet 2011.5.20 modify 增加了管线长度样式需进行调整
|
|
// int iDimType = dlg.m_iDimType == 0 ? dlg.m_iDimType : dlg.m_iDimType * 100 + g_iDimPipeLen + 1;
|
|
// pPipe->SetSpare(static_cast<double>(iDimType));
|
|
pPipe->SetPipeLableDrawType(dlg.m_nDrawType);
|
|
pPipe->SetPipeDnDimType(dlg.m_nDnType);
|
|
pPipe->SetPipeLenDimType(dlg.m_nLenType);
|
|
pPipe->SetPipeDimLableType(dlg.m_nLabelType);
|
|
pPipe->SetPipeGradientDimType(dlg.m_nGradientType);
|
|
}
|
|
if(dlg.m_bLayer){
|
|
InitPipeLayer((const TCHAR*)GetPipeLayerByIdx(dlg.m_iLayer));
|
|
CString csLay = GetPipeLayerByIdx(dlg.m_iLayer);
|
|
if(csLay == _T(""))
|
|
return RTNORM;
|
|
pPipe->setLayer((const TCHAR*)csLay);
|
|
pPipe->setColorIndex(256);
|
|
pPipe->SetSysType(GetPipeSysByLayer(csLay));
|
|
DList<AcDbObjectId> lstAttachment;
|
|
pPipe->GetAttachments(lstAttachment);
|
|
int len = lstAttachment.Length();
|
|
for(int m=0;m<len;m++){
|
|
AcDbObjectId id = *lstAttachment[m];
|
|
OPENOBJ_BEGIN(id, AcDb::kForWrite, TDbPipeValve, pValve);
|
|
if(pValve){
|
|
pValve->SetSysType(GetPipeSysByLayer(csLay));
|
|
}
|
|
OPENOBJ_END();
|
|
}
|
|
|
|
}
|
|
if(dlg.m_bColor){
|
|
//读取图层的颜色, 如果对话框颜色和图层的颜色一致,则管线颜色是“随层” 2008-4-3 sr
|
|
CString csLay = GetPipeLayerByIdx(dlg.m_iLayer);
|
|
int iColorLay = GetLayerColorIdx(csLay);
|
|
if(iColorLay == dlg.m_iColor)
|
|
pPipe->setColorIndex(256);
|
|
else
|
|
pPipe->setColorIndex(dlg.m_iColor);
|
|
}
|
|
if(dlg.m_bLineType){
|
|
LoadTgLineType(dlg.m_csLineType);
|
|
pPipe->setLinetype(dlg.m_csLineType);
|
|
}
|
|
if(dlg.m_bWidth)
|
|
pPipe->SetPipeWeight(dlg.m_nWidth);
|
|
|
|
//检查坡度和标高的关系
|
|
if(pPipe->GetPipeGradient() > 0.000001)
|
|
{
|
|
double dLen = pPipe->GetPlanLength();
|
|
// XPoint pS = pPipe->StartPoint();
|
|
// pS.z = 0;
|
|
// XPoint pE = pPipe->EndPoint();
|
|
// pE.z = 0;
|
|
// dLen = ads_distance(pS, pE); //这个地方管长必须是投影平面的长度
|
|
// if(!DocGetMeterUnitDraw())
|
|
// dLen = dLen/1000;
|
|
|
|
TPipeSys::FlowDirection dir = pPipe->GetFlowDir();
|
|
if(dir == TPipeSys::kFromStart)
|
|
dCalcEle = pPipe->StartPoint().z / dMeter;
|
|
else
|
|
dCalcEle = pPipe->EndPoint().z / dMeter;
|
|
dCalcEle = dCalcEle - dLen * pPipe->GetPipeGradient();
|
|
if(dir == TPipeSys::kFromStart)
|
|
{
|
|
if(fabs(pPipe->EndPoint().z - dCalcEle * dMeter) > 0.0009 * dMeter) // cet 2011.8.24 modify 将精度调整为1mm
|
|
bChangeEle = TRUE;
|
|
}
|
|
else
|
|
{
|
|
if(fabs(pPipe->StartPoint().z - dCalcEle * dMeter) > 0.0009 * dMeter) // cet 2011.8.24 modify 将精度调整为1mm
|
|
bChangeEle = TRUE;
|
|
}
|
|
}
|
|
}
|
|
OPENOBJ_END();
|
|
if(bChangeEle)
|
|
{
|
|
TCHAR szTmp[64];
|
|
ads_getstring(0, _T("\n标高和坡度不匹配,是否更新标高<Y>:"), szTmp);
|
|
if(_tcsicmp(szTmp, _T("N")) != 0)
|
|
{
|
|
OPENOBJ_BEGIN(id, AcDb::kForWrite, TDbPipe, pPipe);
|
|
if(pPipe){
|
|
if(pPipe->GetFlowDir() == TPipeSys::kFromStart)
|
|
pPipe->EndPoint().z = dCalcEle * dMeter;
|
|
else
|
|
pPipe->StartPoint().z = dCalcEle * dMeter;
|
|
ModifyPipeEquimentAttachment(pPipe); // cet 2010.9.27 add
|
|
}
|
|
OPENOBJ_END();
|
|
}
|
|
}
|
|
|
|
if(dlg.m_bDn){
|
|
UpdateMultDim(entTmp);
|
|
UpdatePipeTextDim(entTmp, csDnType, (int)nPipeDn);
|
|
|
|
//更新管线标注(标注立管命令生成的标注)
|
|
//得到所有的标注 zxl 2012.07.03 add
|
|
bool bIsDim = false;
|
|
PickSet ssAll(SS_FREE);
|
|
RBList rbMaskVPipe(RTDXF0, _T("ATS_VPIPEDIM"),NULL);
|
|
ssAll.Get(_T("A"),NULL,NULL,rbMaskVPipe);
|
|
long lLen = ssAll.Length();
|
|
PickSet ssRenew(SS_FREE);
|
|
CString sText;
|
|
for (long i = 0; i < lLen; ++i)
|
|
{
|
|
OPENOBJ_BEGIN(ssAll[i], AcDb::kForRead, TDbVPipeDim, pDim);
|
|
if (pDim != NULL)
|
|
{
|
|
AcDbObjectId idDim = pDim->GetVPipeId();
|
|
if (idDim == id)
|
|
{
|
|
pDim->upgradeOpen();
|
|
pDim->SaveCurText();
|
|
pDim->downgradeOpen();
|
|
ssRenew += ssAll[i];
|
|
bIsDim = true;
|
|
break;
|
|
}
|
|
}
|
|
OPENOBJ_END();
|
|
}
|
|
UpdateGraphic(ssRenew);
|
|
}
|
|
|
|
// 更新管线上的标高标注 cet 2013.4.27 add
|
|
if (g_bIsElevDimChangeByPipeElev)
|
|
{
|
|
UpdateElevationDim(id);
|
|
}
|
|
|
|
return RTNORM;
|
|
}
|
|
|
|
//***************************************************************************************************
|
|
// 修改管线
|
|
//***************************************************************************************************
|
|
|
|
|
|
void EditPipeCmd()
|
|
{
|
|
RBList rbMask(RTDXF0, _T("ATS_PIPE"), 8, GetLayerNames(_T("管")), NULL);
|
|
PickSet ss(SS_FREE);
|
|
if(SelectEntities(_T("\n请选择要修改的管线<退出>"), ss, rbMask) != RTNORM)
|
|
return;
|
|
long len = ss.Length();
|
|
if(len < 1)
|
|
return;
|
|
double dAllCuba(0);
|
|
for(long j=0;j<len;j++){
|
|
Entity ent = ss[j];
|
|
dAllCuba += GetPipeCuba(ent);
|
|
}
|
|
double dMeter(1);
|
|
if(!DocGetMeterUnitDraw())
|
|
dMeter = 1000;
|
|
|
|
// zxl 2013.1.6 add 调整管线标注样式
|
|
int nDnType = 0;
|
|
int nLenType = 0;
|
|
int nGradientType = 0;
|
|
int nLabelType = 0;
|
|
int nDrawType = 0;
|
|
|
|
double nElevation(0), nElevation2(0);
|
|
Entity ent = ss[0L];
|
|
CString csLayer, csLineType, csDnType, csDimType;
|
|
int iColor(0), iMaterial(0), iHideLevel(0), iInsulate(0);
|
|
double nWidth(0), nPipeDn(0), nGradient(0), nSpare(0);
|
|
BOOL bDrawLabel(0);
|
|
OPENOBJ_BEGIN(ent, AcDb::kForRead, TDbPipe, pPipe);
|
|
if(pPipe){
|
|
TCHAR *layer, *szLineType;
|
|
XPoint ptTmp = pPipe->StartPoint();
|
|
nElevation = ptTmp.z;
|
|
nElevation2 = pPipe->EndPoint().z;
|
|
|
|
layer = pPipe->layer();
|
|
nPipeDn = pPipe->GetDnDiameter();
|
|
szLineType = pPipe->linetype();
|
|
iMaterial = pPipe->GetMaterial();
|
|
csDnType = pPipe->GetLabel();
|
|
csLayer = layer;
|
|
csLineType = szLineType;
|
|
delete [] layer;
|
|
delete [] szLineType;
|
|
iColor = pPipe->colorIndex();
|
|
nWidth = pPipe->GetPipeWeight();
|
|
iHideLevel = pPipe->GetHideLevel();
|
|
nGradient = pPipe->GetPipeGradient();
|
|
bDrawLabel = pPipe->IsDrawLabel();
|
|
csDimType = pPipe->GetSpareStr();
|
|
nSpare = pPipe->GetSpare();
|
|
iInsulate = (int)pPipe->GetInsulateThick();
|
|
|
|
// zxl 2013.1.6 add 调整管线标注样式
|
|
GetNewDimType(pPipe, nDnType, nLenType, nGradientType, nLabelType, nDrawType);
|
|
}
|
|
OPENOBJ_END();
|
|
|
|
CTemporaryResourceOverride vTemp;
|
|
CPipeEditDlg dlg;
|
|
dlg.m_csCuba.Format(_T("%.3f"), dAllCuba);
|
|
dlg.SetPipes(ss); // cet 2011.5.23 add
|
|
|
|
// zxl 2013.01.07 modify
|
|
//cet 2011.5.20 add 增加了管线长度样式需进行调整
|
|
// if (nSpare > 100)
|
|
// {
|
|
// nSpare /= 100;
|
|
// }
|
|
dlg.m_nDnType = nDnType;
|
|
dlg.m_nLenType = nLenType;
|
|
dlg.m_nGradientType = nGradientType;
|
|
dlg.m_nLabelType = nLabelType;
|
|
dlg.m_nDrawType = nDrawType;
|
|
|
|
dlg.m_iDimType = (int)nSpare;
|
|
dlg.m_csLineType = csLineType;
|
|
dlg.m_iInsulate = iInsulate;
|
|
dlg.m_bDimDn = bDrawLabel;
|
|
dlg.m_csDnName = csDnType;
|
|
dlg.m_nElevation = nElevation/dMeter;
|
|
dlg.m_nEle2 = nElevation2/dMeter;
|
|
dlg.m_iLayer = GetPipeLayerIdxByName(csLayer);
|
|
dlg.m_iColor = iColor;
|
|
dlg.m_csDn.Format(_T("%.0f"), nPipeDn);
|
|
dlg.m_csGradient.Format(_T("%.4f"), nGradient);
|
|
dlg.m_nWidth = nWidth;
|
|
dlg.m_iMaterial = iMaterial;
|
|
dlg.m_iHide = iHideLevel;
|
|
if(dlg.DoModal() != IDOK)
|
|
return;
|
|
|
|
for(long i=0;i<len;i++){
|
|
Entity entTmp = ss[i];
|
|
if(dlg.m_bGradient){
|
|
UpdateGradientDim(entTmp, _tstof(dlg.m_csGradient));
|
|
}
|
|
|
|
OPENOBJ_BEGIN(entTmp, AcDb::kForWrite, TDbPipe, pPipe);
|
|
if(pPipe){
|
|
if(dlg.m_bMaterial)
|
|
pPipe->SetMaterial(dlg.m_iMaterial);
|
|
if(dlg.m_bGradient)
|
|
pPipe->SetPipeGradient(_tstof(dlg.m_csGradient));
|
|
if(dlg.m_bNeedHide)
|
|
pPipe->SetHideLevel(dlg.m_iHide);
|
|
if(dlg.m_bInsulate)
|
|
pPipe->SetInsulateThick(dlg.m_iInsulate);
|
|
|
|
//if(dlg.m_bElevation){ cet 2011.5.23 add
|
|
//if (dlg.m_bElevation && !pPipe->IsVertical()) cet 2011.6.15 modify 添加对所选管线均为立管,且起始点标高都设置时,立管标高的修改
|
|
if ((dlg.m_bElevation && !pPipe->IsVertical())
|
|
|| dlg.IsModifyVerPipe())
|
|
{
|
|
XPoint ptTmp = pPipe->StartPoint();
|
|
XPoint ptTmp2 = pPipe->EndPoint();
|
|
ptTmp.z = dlg.m_nElevation*dMeter;
|
|
|
|
if(dlg.m_bEle2)
|
|
ptTmp2.z = dlg.m_nEle2*dMeter;
|
|
else
|
|
ptTmp2.z = dlg.m_nElevation*dMeter;
|
|
|
|
pPipe->SetStartPoint(ptTmp);
|
|
pPipe->SetEndPoint(ptTmp2);
|
|
// cet 2010.9.27 modify 修改管线附件和设备
|
|
// AcDbObjectId nodeId1(NULL), nodeId2(NULL);
|
|
// nodeId1 = pPipe->GetNode(0);
|
|
// nodeId2 = pPipe->GetNode(1);
|
|
// OPENOBJ_BEGIN(nodeId1, AcDb::kForWrite, TDbEquipment, pEquip);
|
|
// if(pEquip && !pEquip->isKindOf(TDbPump::desc())){
|
|
// XPoint ptTmp4 = pEquip->GetInsert();
|
|
// ptTmp4.z = ptTmp.z;
|
|
// pEquip->SetInsert(ptTmp4);
|
|
// XPoint ptTmp3 = pEquip->GetLocation();
|
|
// ptTmp3.z = ptTmp.z;
|
|
// pEquip->SetLocation(ptTmp3);
|
|
// }
|
|
// OPENOBJ_END();
|
|
// OPENOBJ_BEGIN(nodeId2, AcDb::kForWrite, TDbEquipment, pEquip);
|
|
// if(pEquip && !pEquip->isKindOf(TDbPump::desc())){
|
|
// XPoint ptTmp4 = pEquip->GetInsert();
|
|
// ptTmp4.z = ptTmp.z;
|
|
// pEquip->SetInsert(ptTmp4);
|
|
// XPoint ptTmp3 = pEquip->GetLocation();
|
|
// ptTmp3.z = ptTmp.z;
|
|
// pEquip->SetLocation(ptTmp3);
|
|
// }
|
|
// 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, TDbPipeAttachment, pValve);
|
|
// if(pValve){
|
|
// XPoint ptLoc = pValve->GetLocation();
|
|
// ptLoc.z = ptTmp.z;
|
|
// pValve->SetLocation(ptLoc);
|
|
// }
|
|
// OPENOBJ_END();
|
|
// }
|
|
ModifyPipeEquimentAttachment(pPipe);
|
|
}
|
|
if(dlg.m_bDn){
|
|
// pPipe->SetLabel(dlg.m_csDnName);
|
|
double nDn = _tstof(dlg.m_csDn);
|
|
pPipe->SetDnDiameter(nDn);
|
|
}
|
|
if(dlg.m_bDnHead)
|
|
pPipe->SetLabel(dlg.m_csDnName);
|
|
if(dlg.m_bDrawLabel){
|
|
pPipe->EnableDrawLabel(dlg.m_bDimDn);
|
|
// zxl 2013.01.06 modify 调整管线标注样式
|
|
//pPipe->SetSpare((double)dlg.m_iDimType); cet 2011.5.20 modify 增加了管线长度样式需进行调整
|
|
// int iDimType = dlg.m_iDimType == 0 ? dlg.m_iDimType : dlg.m_iDimType * 100 + g_iDimPipeLen + 1;
|
|
// pPipe->SetSpare(static_cast<double>(iDimType));
|
|
pPipe->SetPipeLableDrawType(dlg.m_nDrawType);
|
|
pPipe->SetPipeDnDimType(dlg.m_nDnType);
|
|
pPipe->SetPipeLenDimType(dlg.m_nLenType);
|
|
pPipe->SetPipeDimLableType(dlg.m_nLabelType);
|
|
pPipe->SetPipeGradientDimType(dlg.m_nGradientType);
|
|
}
|
|
if(dlg.m_bLayer){
|
|
InitPipeLayer((const TCHAR*)GetPipeLayerByIdx(dlg.m_iLayer));
|
|
CString csLay = GetPipeLayerByIdx(dlg.m_iLayer);
|
|
if(csLay == _T(""))
|
|
return;
|
|
pPipe->setLayer((const TCHAR*)csLay);
|
|
pPipe->setColorIndex(256);
|
|
pPipe->SetSysType(GetPipeSysByLayer(csLay));
|
|
DList<AcDbObjectId> lstAttachment;
|
|
pPipe->GetAttachments(lstAttachment);
|
|
int len = lstAttachment.Length();
|
|
for(int m=0;m<len;m++){
|
|
AcDbObjectId id = *lstAttachment[m];
|
|
OPENOBJ_BEGIN(id, AcDb::kForWrite, TDbPipeValve, pValve);
|
|
if(pValve){
|
|
pValve->SetSysType(GetPipeSysByLayer(csLay));
|
|
}
|
|
OPENOBJ_END();
|
|
}
|
|
|
|
}
|
|
if(dlg.m_bColor && !dlg.m_bLayer)
|
|
pPipe->setColorIndex(dlg.m_iColor);
|
|
if(dlg.m_bLineType)
|
|
pPipe->setLinetype(dlg.m_csLineType);
|
|
if(dlg.m_bWidth)
|
|
pPipe->SetPipeWeight(dlg.m_nWidth);
|
|
}
|
|
OPENOBJ_END();
|
|
if(dlg.m_bDn)
|
|
UpdateMultDim(entTmp);
|
|
|
|
// zxl 2012.07.03 add
|
|
if (dlg.m_bDn)
|
|
{
|
|
//更新管线标注(标注立管命令生成的标注)
|
|
//得到所有的标注
|
|
AcDbObjectId id;
|
|
acdbGetObjectId(id, entTmp);
|
|
PickSet ssAll(SS_FREE);
|
|
RBList rbMaskVPipe(RTDXF0, _T("ATS_VPIPEDIM"),NULL);
|
|
ssAll.Get(_T("A"),NULL,NULL,rbMaskVPipe);
|
|
long lLen = ssAll.Length();
|
|
PickSet ssRenew(SS_FREE);
|
|
CString sText;
|
|
for (long i = 0; i < lLen; ++i)
|
|
{
|
|
OPENOBJ_BEGIN(ssAll[i], AcDb::kForRead, TDbVPipeDim, pDim);
|
|
if (pDim != NULL)
|
|
{
|
|
AcDbObjectId idDim = pDim->GetVPipeId();
|
|
if (idDim == id)
|
|
{
|
|
pDim->upgradeOpen();
|
|
pDim->SaveCurText();
|
|
pDim->downgradeOpen();
|
|
ssRenew += ssAll[i];
|
|
break;
|
|
}
|
|
}
|
|
OPENOBJ_END();
|
|
}
|
|
UpdateGraphic(ssRenew);
|
|
}
|
|
}
|
|
|
|
// cet 2013.4.27 add 更新管线上的标高标注
|
|
if (g_bIsElevDimChangeByPipeElev)
|
|
{
|
|
UpdateElevationDim(ss);
|
|
}
|
|
|
|
}
|
|
|
|
CPipeEditDlg::CPipeEditDlg(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CPipeEditDlg::IDD, pParent), m_spinWidth(0.05)
|
|
{
|
|
//{{AFX_DATA_INIT(CPipeEditDlg)
|
|
m_bElevation = FALSE;
|
|
m_bColor = FALSE;
|
|
m_bLayer = FALSE;
|
|
m_bLineType = FALSE;
|
|
m_bWidth = FALSE;
|
|
m_iLayer = 0;
|
|
m_iLineType = 0;
|
|
m_nWidth = 0.35;
|
|
m_iMaterial = 0;
|
|
m_bMaterial = FALSE;
|
|
m_bNeedHide = FALSE;
|
|
m_iHide = 0;
|
|
m_bDn = FALSE;
|
|
m_bGradient = FALSE;
|
|
m_csDnName = _T("");
|
|
m_bEle2 = FALSE;
|
|
m_bDimDn = FALSE;
|
|
m_bDrawLabel = FALSE;
|
|
// m_iDimType = 0; zxl 2013.01.07 del
|
|
m_bDnHead = FALSE;
|
|
m_csCuba = _T("");
|
|
m_csGradient = _T("");
|
|
m_bInsulate = FALSE;
|
|
m_iInsulate = 0;
|
|
//}}AFX_DATA_INIT
|
|
m_spinHide.SetBase(1);
|
|
m_nElevation = 0.0; // cet 2011.5.23 add
|
|
m_nEle2 = 0.0; // cet 2011.5.23 add
|
|
m_bAllVerPipe = FALSE; // cet 2011.6.15 add
|
|
|
|
// zxl 2013.01.06 add
|
|
m_nDnType = 0;
|
|
m_nLenType = 0;
|
|
m_nGradientType = 0;
|
|
m_nLabelType = 0;
|
|
m_nDrawType = 0;
|
|
}
|
|
|
|
|
|
void CPipeEditDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CPipeEditDlg)
|
|
DDX_Control(pDX, IDC_COMBO_LAYER, m_comboLay);
|
|
DDX_Control(pDX, IDC_COMBO_LINETYPE, m_comboLineType);
|
|
DDX_Control(pDX, IDC_SPIN_HIDE, m_spinHide);
|
|
DDX_Control(pDX, IDC_COMBO_MATERIAL, m_comboMat);
|
|
DDX_Control(pDX, IDC_SPIN_WIDTH, m_spinWidth);
|
|
DDX_Check(pDX, IDC_CHECK_ELEVATION, m_bElevation);
|
|
DDX_Check(pDX, IDC_CHECK_COLOR, m_bColor);
|
|
DDX_Check(pDX, IDC_CHECK_LAYER, m_bLayer);
|
|
DDX_Check(pDX, IDC_CHECK_LINETYPE, m_bLineType);
|
|
DDX_Check(pDX, IDC_CHECK_WIDTH, m_bWidth);
|
|
DDX_CBIndex(pDX, IDC_COMBO_LAYER, m_iLayer);
|
|
DDX_CBIndex(pDX, IDC_COMBO_LINETYPE, m_iLineType);
|
|
DDX_Text(pDX, IDC_EDIT_WIDTH, m_nWidth);
|
|
DDX_CBIndex(pDX, IDC_COMBO_MATERIAL, m_iMaterial);
|
|
DDX_Check(pDX, IDC_CHECK_MATERIAL, m_bMaterial);
|
|
DDX_Check(pDX, IDC_CHECK_HIDE, m_bNeedHide);
|
|
DDX_Text(pDX, IDC_EDIT_HIDE, m_iHide);
|
|
DDX_Check(pDX, IDC_CHECK_DN, m_bDn);
|
|
DDX_Check(pDX, IDC_CHECK_GRADIENT, m_bGradient);
|
|
// DDX_CBString(pDX, IDC_COMBO_DN2, m_csDnName); cet 2011.6.20 del
|
|
DDX_Check(pDX, IDC_CHECK_ELE2, m_bEle2);
|
|
DDX_Check(pDX, IDC_CHECK_DIMDN, m_bDimDn);
|
|
DDX_Check(pDX, IDC_CHECK_DRAWLABEL, m_bDrawLabel);
|
|
//DDX_CBIndex(pDX, IDC_COMBO_DIM, m_iDimType);zxl 2013.01.07 del
|
|
DDX_Check(pDX, IDC_CHECK_DN2, m_bDnHead);
|
|
DDX_Text(pDX, IDC_EDIT_CUBA, m_csCuba);
|
|
DDX_CBString(pDX, IDC_COMBO_GRADIENT, m_csGradient);
|
|
DDX_Check(pDX, IDC_CHECK_INSULATE, m_bInsulate);
|
|
DDX_Text(pDX, IDC_EDIT_INSULATE, m_iInsulate);
|
|
DDV_MinMaxInt(pDX, m_iInsulate, 0, 9999);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CPipeEditDlg, CDialog)
|
|
//{{AFX_MSG_MAP(CPipeEditDlg)
|
|
ON_BN_CLICKED(IDC_CHECK_LINETYPE, OnCheckLinetype)
|
|
ON_BN_CLICKED(IDC_CHECK_LAYER, OnCheckLayer)
|
|
ON_BN_CLICKED(IDC_CHECK_COLOR, OnCheckColor)
|
|
ON_BN_CLICKED(IDC_CHECK_WIDTH, OnCheckWidth)
|
|
ON_BN_CLICKED(IDC_CHECK_ELEVATION, OnCheckElevation)
|
|
ON_BN_CLICKED(IDC_STATIC_COLOR, OnStaticColor)
|
|
ON_CBN_SELCHANGE(IDC_COMBO_LAYER, OnSelchangeComboLayer)
|
|
ON_WM_PAINT()
|
|
ON_BN_CLICKED(IDC_CHECK_MATERIAL, OnCheckMaterial)
|
|
ON_BN_CLICKED(IDC_CHECK_HIDE, OnCheckHide)
|
|
ON_BN_CLICKED(IDC_CHECK_DN, OnCheckDn)
|
|
ON_BN_CLICKED(IDC_CHECK_GRADIENT, OnCheckGradient)
|
|
ON_BN_CLICKED(IDC_BUTTON_NEW, OnButtonNew)
|
|
ON_BN_CLICKED(IDC_CHECK_ELE2, OnCheckEle2)
|
|
ON_BN_CLICKED(IDC_CHECK_DRAWLABEL, OnCheckDrawlabel)
|
|
ON_BN_CLICKED(IDC_CHECK_DN2, OnCheckDn2)
|
|
ON_BN_CLICKED(IDC_CHECK_INSULATE, OnCheckInsulate)
|
|
ON_EN_CHANGE(IDC_EDIT_ELEVATION2, OnChangeEditElevation2)
|
|
ON_EN_CHANGE(IDC_EDIT_ELEVATION, OnChangeEditElevation)
|
|
ON_CBN_SELCHANGE(IDC_COMBO_MATERIAL, OnSelchangeComboMaterial)
|
|
ON_CBN_SELCHANGE(IDC_COMBO_DN, OnSelchangeComboDn)
|
|
ON_CBN_EDITCHANGE(IDC_COMBO_DN, OnEditchangeComboDn)
|
|
ON_BN_CLICKED(IDC_BTN_OUTDIM, OnBtnOutdim)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CPipeEditDlg message handlers
|
|
|
|
BOOL CPipeEditDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
m_lstWireLay.Append(tstrnew(LAY_PIPE_FEED));
|
|
m_lstWireLay.Append(tstrnew(LAY_PIPE_HEADFEED));
|
|
m_lstWireLay.Append(tstrnew(LAY_PIPE_HEADBACK));
|
|
m_lstWireLay.Append(tstrnew(LAY_PIPE_DIRT));
|
|
m_lstWireLay.Append(tstrnew(LAY_PIPE_USELESS));
|
|
m_lstWireLay.Append(tstrnew(LAY_PIPE_RAIN));
|
|
m_lstWireLay.Append(tstrnew(LAY_PIPE_USED));
|
|
m_lstWireLay.Append(tstrnew(LAY_PIPE_FIRE));
|
|
m_lstWireLay.Append(tstrnew(LAY_PIPE_SPRINKLE));
|
|
m_lstWireLay.Append(tstrnew(LAY_PIPE_COAGULATE));
|
|
m_lstWireLay.Append(tstrnew(LAY_PIPE_DRINK));
|
|
m_lstWireLay.Append(tstrnew(LAY_PIPE_PRESSDIRT));
|
|
m_lstWireLay.Append(tstrnew(LAY_PIPE_PRESSUSELESS));
|
|
m_lstWireLay.Append(tstrnew(LAY_PIPE_PRESSRAIN));
|
|
m_lstWireLay.Append(tstrnew(LAY_PIPE_OTHER));
|
|
m_lstWireLay.Append(tstrnew(LAY_PIPE_USER1));
|
|
m_lstWireLay.Append(tstrnew(LAY_PIPE_USER2));
|
|
|
|
m_lstWireLay.Append(tstrnew(LAY_PIPE_FEED2));
|
|
m_lstWireLay.Append(tstrnew(LAY_PIPE_FEED3));
|
|
m_lstWireLay.Append(tstrnew(LAY_PIPE_HEADFEED2));
|
|
m_lstWireLay.Append(tstrnew(LAY_PIPE_HEADFEED3));
|
|
m_lstWireLay.Append(tstrnew(LAY_PIPE_HEADBACK2));
|
|
m_lstWireLay.Append(tstrnew(LAY_PIPE_HEADBACK3));
|
|
m_lstWireLay.Append(tstrnew(LAY_PIPE_FIRE2));
|
|
m_lstWireLay.Append(tstrnew(LAY_PIPE_FIRE3));
|
|
m_lstWireLay.Append(tstrnew(LAY_PIPE_SPRINKLE2));
|
|
m_lstWireLay.Append(tstrnew(LAY_PIPE_SPRINKLE3));
|
|
m_lstWireLay.Append(tstrnew(LAY_PIPE_USED2));
|
|
m_lstWireLay.Append(tstrnew(LAY_PIPE_USED3));
|
|
|
|
// cet 2011.12.6 add
|
|
m_lstWireLay.Append(tstrnew(LAY_PIPE_USER3));
|
|
m_lstWireLay.Append(tstrnew(LAY_PIPE_USER4));
|
|
m_lstWireLay.Append(tstrnew(LAY_PIPE_USER5));
|
|
m_lstWireLay.Append(tstrnew(LAY_PIPE_USER6));
|
|
m_lstWireLay.Append(tstrnew(LAY_PIPE_USER7));
|
|
m_lstWireLay.Append(tstrnew(LAY_PIPE_USER8));
|
|
|
|
for(int i=0;i<m_lstWireLay.Length();i++){
|
|
m_comboLay.AddString(m_lstWireLay[i]);
|
|
}
|
|
UpdateData(FALSE);
|
|
|
|
m_spinWidth.SetRange(0, 10);
|
|
m_spinHide.SetRange(-255, 255);
|
|
int iold = m_iMaterial;
|
|
|
|
// cet 2011.6.20 add
|
|
CWnd *pWnd = GetDlgItem(IDC_COMBO_DN2);
|
|
if (pWnd != NULL)
|
|
{
|
|
pWnd->SetWindowText(m_csDnName);
|
|
}
|
|
|
|
if(m_iColor == 256)
|
|
m_iColor = GetLayerColorIdx(GetLayer());
|
|
DrawStatic();
|
|
ResetLineCombox();
|
|
XStringList lstMat;
|
|
GetPipeMaterialList(lstMat);
|
|
for(i=0;i<lstMat.Length();i++){
|
|
m_comboMat.AddString(lstMat[i]);
|
|
}
|
|
m_iMaterial = iold;
|
|
UpdateData(FALSE);
|
|
SetEnable();
|
|
SetBtnText(); // zxl 2013.01.06 add
|
|
|
|
// if(m_bHideOther)
|
|
// {
|
|
// CWnd *pWnd1 = GetDlgItem(IDC_EDIT_HIDE);
|
|
// CWnd *pWnd2 = GetDlgItem(IDC_SPIN_HIDE);
|
|
// pWnd1->EnableWindow(FALSE);
|
|
// pWnd2->EnableWindow(FALSE);
|
|
// }
|
|
|
|
// if(m_csDimType == "")
|
|
// m_iDimType = 0;
|
|
// else if(m_csDimType == "i=0.003L=12.3m")
|
|
// m_iDimType = 1;
|
|
// else if(m_csDimType == "-0.003-12.3m")
|
|
// m_iDimType = 2;
|
|
// else if(m_csDimType == "0.00312.3m")
|
|
// m_iDimType = 3;
|
|
// else if(m_csDimType == "i=0.003")
|
|
// m_iDimType = 4;
|
|
// else if(m_csDimType == "-0.003")
|
|
// m_iDimType = 5;
|
|
// else if(m_csDimType == "0.003")
|
|
// m_iDimType = 6;
|
|
// else if(m_csDimType == "L=12.3m")
|
|
// m_iDimType = 7;
|
|
// else if(m_csDimType == "-12.3m")
|
|
// m_iDimType = 8;
|
|
// else if(m_csDimType == "12.3m")
|
|
// m_iDimType = 9;
|
|
|
|
// cet 2011.6.13 add
|
|
CWnd *pWnd3 = GetDlgItem(IDC_COMBO_DN);
|
|
if (pWnd3 != NULL)
|
|
{
|
|
pWnd3->SetWindowText(m_csDn);
|
|
}
|
|
|
|
// cet 2011.5.23 add
|
|
CWnd *pWnd1 = GetDlgItem(IDC_EDIT_ELEVATION);
|
|
CWnd *pWnd2 = GetDlgItem(IDC_EDIT_ELEVATION2);
|
|
CString sEle;
|
|
if (pWnd1 != NULL)
|
|
{
|
|
sEle.Format(_T("%.3f"), m_nElevation);
|
|
pWnd1->SetWindowText(sEle);
|
|
}
|
|
|
|
if (pWnd2 != NULL)
|
|
{
|
|
sEle.Format(_T("%.3f"), m_nEle2);
|
|
pWnd2->SetWindowText(sEle);
|
|
}
|
|
|
|
UpdatePipeBottomEle(FALSE); // cet 2011.5.12 add 设置管内底标高
|
|
m_bAllVerPipe = IsSamePipe(TRUE); // cet 2011.6.15 add
|
|
return TRUE;
|
|
}
|
|
|
|
// 获取管线管径标注字符 zxl 2012.12.17 add
|
|
CString GetPipeDnDimStr(int nDnDimType)
|
|
{
|
|
CString sText;
|
|
if (nDnDimType == 0)
|
|
{
|
|
return sText;
|
|
}
|
|
else if (nDnDimType == 1)
|
|
{
|
|
sText = _T("DN500");
|
|
}
|
|
else if (nDnDimType == 2)
|
|
{
|
|
sText = _T("500");
|
|
}
|
|
return sText;
|
|
}
|
|
|
|
// 获取管线长度标注字符 zxl 2012.12.17 add
|
|
CString GetPipeLenDimStr(int iDimType)
|
|
{
|
|
CString sDimPipeLen;
|
|
if (iDimType == 0)
|
|
{
|
|
return sDimPipeLen;
|
|
}
|
|
|
|
switch(iDimType)
|
|
{
|
|
case 1: // L=12.3m
|
|
{
|
|
sDimPipeLen = _T("L=12.3m");
|
|
break;
|
|
}
|
|
case 2: // L=12.3
|
|
{
|
|
sDimPipeLen = _T("L=12.3");
|
|
break;
|
|
}
|
|
case 3: // L12.3m
|
|
{
|
|
sDimPipeLen = _T("L12.3m");
|
|
break;
|
|
}
|
|
case 4: // L12.3
|
|
{
|
|
sDimPipeLen = _T("L12.3");
|
|
break;
|
|
}
|
|
case 5: // 12.3m
|
|
{
|
|
sDimPipeLen = _T("12.3m");
|
|
break;
|
|
}
|
|
case 6: // 12.3
|
|
{
|
|
sDimPipeLen = _T("12.3");
|
|
break;
|
|
}
|
|
}
|
|
|
|
return sDimPipeLen;
|
|
}
|
|
|
|
// 获取管线坡度标注字符 zxl 2012.12.17 add
|
|
CString GetPipeGradienDimtStr(int nDimType)
|
|
{
|
|
CString csTmp;
|
|
if (nDimType == 0)
|
|
{
|
|
return csTmp;
|
|
}
|
|
else if(nDimType == 1) //i=0.003
|
|
{
|
|
csTmp = _T("i=0.003");
|
|
}
|
|
else if (nDimType == 2)
|
|
{
|
|
csTmp = _T("i=3‰");
|
|
}
|
|
else if (nDimType == 3)
|
|
{
|
|
csTmp = _T("0.003");
|
|
}
|
|
else if (nDimType == 4)
|
|
{
|
|
csTmp = _T("3‰");
|
|
}
|
|
else if(nDimType == 5) //i0.003
|
|
{
|
|
csTmp = _T("i0.003");
|
|
}
|
|
else if (nDimType == 6)
|
|
{
|
|
csTmp = _T("i3‰");
|
|
}
|
|
return csTmp;
|
|
}
|
|
|
|
void CPipeEditDlg::SetBtnText()
|
|
{
|
|
CString sDimDn = GetPipeDnDimStr(m_nDnType);
|
|
CString sDimLen = GetPipeLenDimStr(m_nLenType);
|
|
CString sDimGradient = GetPipeGradienDimtStr(m_nGradientType);
|
|
|
|
CString sLabel;
|
|
if (m_nLabelType == 0)
|
|
{
|
|
sLabel = _T(" ");
|
|
}
|
|
else if (m_nLabelType == 1)
|
|
{
|
|
sLabel = _T("-");
|
|
}
|
|
else
|
|
{
|
|
sLabel = _T("/");
|
|
}
|
|
|
|
CString sText;
|
|
if (m_nDrawType == 1)
|
|
{
|
|
sLabel = _T(" ");
|
|
}
|
|
|
|
sText += sDimDn;
|
|
if (!sDimDn.IsEmpty() && (!sDimLen.IsEmpty() || !sDimGradient.IsEmpty()))
|
|
{
|
|
sText += sLabel;
|
|
}
|
|
|
|
sText += sDimGradient;
|
|
if (!sDimLen.IsEmpty() && !sDimGradient.IsEmpty())
|
|
{
|
|
sText += sLabel;
|
|
sText += sDimLen;
|
|
}
|
|
else if (sDimGradient.IsEmpty())
|
|
{
|
|
sText += sDimLen;
|
|
}
|
|
|
|
if (m_nDrawType == 1)
|
|
{
|
|
sText += _T("竖排");
|
|
}
|
|
|
|
CWnd *pWnd = GetDlgItem(IDC_BTN_OUTDIM);
|
|
CButton *pBtn = (CButton *)pWnd;
|
|
if (pBtn != NULL)
|
|
{
|
|
pBtn->SetWindowText(sText);
|
|
}
|
|
|
|
}
|
|
|
|
void CPipeEditDlg::ResetLineCombox()
|
|
{
|
|
UpdateData(TRUE);
|
|
m_lstLineTypeName.Reset();
|
|
m_lstLineTypeComment.Reset();
|
|
|
|
m_comboLineType.ResetContent();
|
|
m_lstLineTypeName.Append(tstrnew(_T("BYLAYER")));
|
|
m_lstLineTypeComment.Append(tstrnew(_T("随层")));
|
|
GetAllTgLineType(m_lstLineTypeName, m_lstLineTypeComment);
|
|
for(int i=0;i<m_lstLineTypeComment.Length();i++){
|
|
m_comboLineType.AddString(CString(m_lstLineTypeName[i]) + _T(" ") +m_lstLineTypeComment[i]);
|
|
}
|
|
m_iLineType = m_lstLineTypeName.Index(m_csLineType, 0);
|
|
|
|
UpdateData(FALSE);
|
|
}
|
|
|
|
|
|
void CPipeEditDlg::OnOK()
|
|
{
|
|
UpdateData(TRUE);
|
|
if(m_iLineType < 0)
|
|
m_iLineType = 0;
|
|
m_csLineType=m_lstLineTypeName[m_iLineType];
|
|
// if(m_bDrawLabel)
|
|
// {
|
|
// if(m_iDimType == 0)
|
|
// m_csDimType = _T("");
|
|
// else if(m_iDimType == 1)
|
|
// m_csDimType = _T("i=0.003L=12.3m");
|
|
// else if(m_iDimType == 2)
|
|
// m_csDimType = _T("-0.003-12.3m");
|
|
// else if(m_iDimType == 3)
|
|
// m_csDimType = _T("0.00312.3m");
|
|
// else if(m_iDimType == 4)
|
|
// m_csDimType = _T("i=0.003");
|
|
// else if(m_iDimType == 5)
|
|
// m_csDimType = _T("-0.003");
|
|
// else if(m_iDimType == 6)
|
|
// m_csDimType = _T("0.003");
|
|
// else if(m_iDimType == 7)
|
|
// m_csDimType = _T("L=12.3m");
|
|
// else if(m_iDimType == 8)
|
|
// m_csDimType = _T("-12.3m");
|
|
// else if(m_iDimType == 9)
|
|
// m_csDimType = _T("12.3m");
|
|
// }
|
|
// cet 2011.5.23 add 设置标高值
|
|
CWnd *pWnd1 = GetDlgItem(IDC_EDIT_ELEVATION);
|
|
CWnd *pWnd2 = GetDlgItem(IDC_EDIT_ELEVATION2);
|
|
CString sEle;
|
|
if (pWnd1 != NULL)
|
|
{
|
|
|
|
pWnd1->GetWindowText(sEle);
|
|
m_nElevation = _tstof(sEle);
|
|
}
|
|
|
|
if (pWnd2 != NULL)
|
|
{
|
|
pWnd2->GetWindowText(sEle);
|
|
m_nEle2 = _tstof(sEle);
|
|
}
|
|
|
|
// cet 2011.6.13 add
|
|
CWnd *pWnd3 = GetDlgItem(IDC_COMBO_DN);
|
|
if (pWnd3 != NULL)
|
|
{
|
|
pWnd3->GetWindowText(m_csDn);
|
|
}
|
|
|
|
// cet 2011.6.13 add
|
|
CWnd *pWnd4 = GetDlgItem(IDC_COMBO_DN2);
|
|
if (pWnd4 != NULL)
|
|
{
|
|
pWnd4->GetWindowText(m_csDnName);
|
|
}
|
|
|
|
CDialog::OnOK();
|
|
}
|
|
|
|
void CPipeEditDlg::SetEnable()
|
|
{
|
|
UpdateData(TRUE);
|
|
CWnd *pWnd1 = GetDlgItem(IDC_EDIT_ELEVATION);
|
|
CWnd *pWnd2 = GetDlgItem(IDC_STATIC_COLOR);
|
|
CWnd *pWnd3 = GetDlgItem(IDC_COMBO_LAYER);
|
|
CWnd *pWnd4 = GetDlgItem(IDC_COMBO_LINETYPE);
|
|
CWnd *pWnd5 = GetDlgItem(IDC_EDIT_WIDTH);
|
|
CWnd *pWnd6 = GetDlgItem(IDC_SPIN_WIDTH);
|
|
CWnd *pWnd7 = GetDlgItem(IDC_COMBO_MATERIAL);
|
|
CWnd *pWnd8 = GetDlgItem(IDC_SPIN_HIDE);
|
|
CWnd *pWnd9 = GetDlgItem(IDC_EDIT_HIDE);
|
|
CWnd *pWnd10 = GetDlgItem(IDC_COMBO_DN);
|
|
CWnd *pWnd11 = GetDlgItem(IDC_COMBO_GRADIENT);
|
|
CWnd *pWnd12 = GetDlgItem(IDC_BUTTON_NEW);
|
|
CWnd *pWnd13 = GetDlgItem(IDC_COMBO_DN2);
|
|
CWnd *pWnd14 = GetDlgItem(IDC_EDIT_ELEVATION2);
|
|
CWnd *pWnd15 = GetDlgItem(IDC_STATIC_ELE);
|
|
CWnd *pWnd16 = GetDlgItem(IDC_CHECK_DIMDN);
|
|
//CWnd *pWnd17 = GetDlgItem(IDC_COMBO_DIM);zxl 2013.01.07 del
|
|
CWnd *pWnd17 = GetDlgItem(IDC_BTN_OUTDIM);
|
|
CWnd *pWnd18 = GetDlgItem(IDC_EDIT_INSULATE);
|
|
|
|
if(m_bDrawLabel){
|
|
pWnd16->EnableWindow(TRUE);
|
|
pWnd17->EnableWindow(TRUE);
|
|
}
|
|
else{
|
|
pWnd16->EnableWindow(FALSE);
|
|
pWnd17->EnableWindow(FALSE);
|
|
}
|
|
|
|
if(m_bDnHead)
|
|
pWnd13->EnableWindow(TRUE);
|
|
else
|
|
pWnd13->EnableWindow(FALSE);
|
|
|
|
if(m_bMaterial)
|
|
pWnd7->EnableWindow(TRUE);
|
|
else
|
|
pWnd7->EnableWindow(FALSE);
|
|
|
|
if(m_bGradient)
|
|
pWnd11->EnableWindow(TRUE);
|
|
else
|
|
pWnd11->EnableWindow(FALSE);
|
|
|
|
if(m_bEle2){
|
|
pWnd14->EnableWindow(TRUE);
|
|
pWnd15->SetWindowText(_T("起点标高"));
|
|
}
|
|
else{
|
|
pWnd14->EnableWindow(FALSE);
|
|
pWnd15->SetWindowText(_T("管线标高"));
|
|
}
|
|
if(m_bElevation){
|
|
pWnd1->EnableWindow(TRUE);
|
|
}
|
|
else{
|
|
pWnd1->EnableWindow(FALSE);
|
|
}
|
|
|
|
if(m_bColor)
|
|
pWnd2->EnableWindow(TRUE);
|
|
else
|
|
pWnd2->EnableWindow(FALSE);
|
|
|
|
if(m_bLayer)
|
|
pWnd3->EnableWindow(TRUE);
|
|
else
|
|
pWnd3->EnableWindow(FALSE);
|
|
|
|
if(m_bLineType){
|
|
pWnd4->EnableWindow(TRUE);
|
|
pWnd12->EnableWindow(TRUE);
|
|
}
|
|
else{
|
|
pWnd4->EnableWindow(FALSE);
|
|
pWnd12->EnableWindow(FALSE);
|
|
}
|
|
|
|
if(m_bDn){
|
|
pWnd10->EnableWindow(TRUE);
|
|
//pWnd13->EnableWindow(TRUE);
|
|
}
|
|
else{
|
|
pWnd10->EnableWindow(FALSE);
|
|
// pWnd13->EnableWindow(FALSE);
|
|
}
|
|
if(m_bWidth){
|
|
pWnd5->EnableWindow(TRUE);
|
|
pWnd6->EnableWindow(TRUE);
|
|
}
|
|
else{
|
|
pWnd5->EnableWindow(FALSE);
|
|
pWnd6->EnableWindow(FALSE);
|
|
}
|
|
|
|
if(m_bNeedHide){
|
|
pWnd8->EnableWindow(TRUE);
|
|
pWnd9->EnableWindow(TRUE);
|
|
}
|
|
else{
|
|
pWnd8->EnableWindow(FALSE);
|
|
pWnd9->EnableWindow(FALSE);
|
|
}
|
|
|
|
if(m_bInsulate){
|
|
pWnd18->EnableWindow(TRUE);
|
|
|
|
}
|
|
else{
|
|
pWnd18->EnableWindow(FALSE);
|
|
}
|
|
}
|
|
|
|
void CPipeEditDlg::OnCheckLinetype()
|
|
{
|
|
SetEnable();
|
|
}
|
|
|
|
void CPipeEditDlg::OnCheckLayer()
|
|
{
|
|
SetEnable();
|
|
}
|
|
|
|
void CPipeEditDlg::OnCheckColor()
|
|
{
|
|
SetEnable();
|
|
}
|
|
|
|
void CPipeEditDlg::OnCheckWidth()
|
|
{
|
|
SetEnable();
|
|
}
|
|
|
|
void CPipeEditDlg::OnCheckDn()
|
|
{
|
|
SetEnable();
|
|
}
|
|
|
|
void CPipeEditDlg::OnCheckDn2()
|
|
{
|
|
SetEnable();
|
|
}
|
|
|
|
void CPipeEditDlg::OnCheckElevation()
|
|
{
|
|
SetEnable();
|
|
// cet 2011.5.23 add
|
|
UpdateData(TRUE);
|
|
if (!m_bElevation)
|
|
{
|
|
return;
|
|
}
|
|
|
|
// cet 2011.6.15 add 都是立管
|
|
if (IsSamePipe(TRUE))
|
|
{
|
|
return;
|
|
}
|
|
|
|
// 是否存在立管
|
|
bool bVer = false;
|
|
for (long i = 0; i < m_ssPipe.Length(); i++)
|
|
{
|
|
OPENOBJ_BEGIN(m_ssPipe[i], AcDb::kForRead, TDbPipe, pPipe);
|
|
if (pPipe != NULL)
|
|
{
|
|
if (pPipe->IsVertical())
|
|
{
|
|
bVer = true;
|
|
}
|
|
}
|
|
OPENOBJ_END();
|
|
|
|
if (bVer)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (bVer)
|
|
{
|
|
adsout << _T("\n存在立管,将过滤掉立管修改标高!");
|
|
}
|
|
}
|
|
|
|
void CPipeEditDlg::OnCheckMaterial()
|
|
{
|
|
SetEnable();
|
|
}
|
|
|
|
void CPipeEditDlg::OnCheckHide()
|
|
{
|
|
SetEnable();
|
|
}
|
|
|
|
void CPipeEditDlg::OnCheckInsulate()
|
|
{
|
|
SetEnable();
|
|
}
|
|
|
|
void CPipeEditDlg::OnCheckGradient()
|
|
{
|
|
SetEnable();
|
|
}
|
|
|
|
void CPipeEditDlg::OnCheckEle2()
|
|
{
|
|
SetEnable();
|
|
UpdatePipeBottomEle();
|
|
}
|
|
|
|
void CPipeEditDlg::OnCheckDrawlabel()
|
|
{
|
|
SetEnable();
|
|
}
|
|
|
|
void CPipeEditDlg::DrawStatic()
|
|
{
|
|
CWnd* pWnd = GetDlgItem(IDC_STATIC_COLOR);
|
|
CRect rect;
|
|
pWnd->GetClientRect(rect);
|
|
CDC* pDC = pWnd->GetDC();
|
|
CBrush* pNewBrush = new CBrush;
|
|
pNewBrush->CreateSolidBrush(acedGetRGB(m_iColor));
|
|
CBrush* pOldBrush = pDC->SelectObject(pNewBrush);
|
|
pDC->Rectangle(rect);
|
|
pDC->SelectObject(pOldBrush);
|
|
pWnd->ReleaseDC(pDC);
|
|
delete pNewBrush;
|
|
}
|
|
|
|
void CPipeEditDlg::OnStaticColor()
|
|
{
|
|
if(!m_bColor)
|
|
return;
|
|
acedSetColorDialog(m_iColor, Adesk::kFalse, m_iColor);
|
|
UpdateData(FALSE);
|
|
DrawStatic();
|
|
}
|
|
|
|
void CPipeEditDlg::OnSelchangeComboLayer()
|
|
{
|
|
m_iColor = GetLayerColorIdx(GetLayer());
|
|
DrawStatic();
|
|
}
|
|
|
|
|
|
CString CPipeEditDlg::GetLayer()
|
|
{
|
|
UpdateData(TRUE);
|
|
if(m_iLayer < 0)
|
|
return CString();
|
|
CString csLayer[] = {LAY_PIPE_FEED, LAY_PIPE_HEADFEED, LAY_PIPE_HEADBACK, LAY_PIPE_DIRT,
|
|
LAY_PIPE_USELESS, LAY_PIPE_RAIN, LAY_PIPE_USED, LAY_PIPE_FIRE, LAY_PIPE_SPRINKLE,
|
|
LAY_PIPE_COAGULATE, LAY_PIPE_DRINK, LAY_PIPE_PRESSDIRT, LAY_PIPE_PRESSUSELESS, LAY_PIPE_PRESSRAIN,
|
|
LAY_PIPE_OTHER, LAY_PIPE_USER1, LAY_PIPE_USER2, LAY_PIPE_FEED2, LAY_PIPE_FEED3,
|
|
LAY_PIPE_HEADFEED2, LAY_PIPE_HEADFEED3, LAY_PIPE_HEADBACK2, LAY_PIPE_HEADBACK3,
|
|
LAY_PIPE_FIRE2, LAY_PIPE_FIRE3, LAY_PIPE_SPRINKLE2, LAY_PIPE_SPRINKLE3,LAY_PIPE_USED2,LAY_PIPE_USED3,
|
|
LAY_PIPE_USER3, LAY_PIPE_USER4, LAY_PIPE_USER5, LAY_PIPE_USER6, LAY_PIPE_USER7, LAY_PIPE_USER8 // cet 2011.12.6 add user3-user8
|
|
};
|
|
return csLayer[m_iLayer];
|
|
}
|
|
|
|
|
|
|
|
void CPipeEditDlg::OnPaint()
|
|
{
|
|
CPaintDC dc(this); // device context for painting
|
|
DrawStatic();
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CPipeEditDlg::OnButtonNew()
|
|
{
|
|
InvokeLineTypeMan();
|
|
ResetLineCombox();
|
|
}
|
|
|
|
|
|
|
|
|
|
//void CPipeEditDlg::OnCheckHidepipe()
|
|
//{
|
|
// UpdateData();
|
|
// CWnd *pWnd1 = GetDlgItem(IDC_EDIT_HIDE);
|
|
// CWnd *pWnd2 = GetDlgItem(IDC_SPIN_HIDE);
|
|
// if(m_bHideOther)
|
|
// {
|
|
// pWnd1->EnableWindow(FALSE);
|
|
// pWnd2->EnableWindow(FALSE);
|
|
// m_iHide = -128;
|
|
// }
|
|
// else
|
|
// {
|
|
// pWnd1->EnableWindow(TRUE);
|
|
// pWnd2->EnableWindow(TRUE);
|
|
// m_iHide = 0;
|
|
// }
|
|
// UpdateData(FALSE);
|
|
//}
|
|
|
|
void CPipeEditDlg::UpdatePipeBottomEle(BOOL bVal)
|
|
{
|
|
UpdateData(TRUE);
|
|
XStringList lstMat;
|
|
GetPipeMaterialList(lstMat);
|
|
CComboBox *pBox = (CComboBox*)GetDlgItem(IDC_COMBO_DN);
|
|
if (pBox != NULL)
|
|
{
|
|
if (!bVal)
|
|
{
|
|
pBox->GetWindowText(m_csDn);
|
|
}
|
|
else
|
|
{
|
|
int nIndex = pBox->GetCurSel();
|
|
if (nIndex == -1)
|
|
{
|
|
pBox->GetLBText(0, m_csDn);
|
|
}
|
|
else
|
|
{
|
|
pBox->GetLBText(nIndex, m_csDn);
|
|
}
|
|
}
|
|
}
|
|
|
|
double dPipeRadius = GetPipeDjByDn(lstMat.GetAt(m_iMaterial), (int)_tstof(m_csDn)) * 0.5; // 内管半径
|
|
|
|
double dEle1 = 0.0, dEle2 = 0.0;
|
|
CWnd *pWnd1 = GetDlgItem(IDC_EDIT_ELEVATION);
|
|
CWnd *pWnd2 = GetDlgItem(IDC_EDIT_ELEVATION2);
|
|
CString sEle;
|
|
if (pWnd1 != NULL)
|
|
{
|
|
pWnd1->GetWindowText(sEle);
|
|
dEle1 = _tstof(sEle);
|
|
}
|
|
|
|
if (pWnd2 != NULL)
|
|
{
|
|
pWnd2->GetWindowText(sEle);
|
|
dEle2 = _tstof(sEle);
|
|
}
|
|
|
|
CString strEleS, strEleE;
|
|
if (!m_bEle2) // 管线标高一起设置
|
|
{
|
|
strEleS.Format(_T("%.4f米"), dEle1 - dPipeRadius);
|
|
strEleE.Format(_T("%.4f米"), dEle1 - dPipeRadius);
|
|
}
|
|
else
|
|
{
|
|
strEleS.Format(_T("%.4f米"), dEle1 - dPipeRadius);
|
|
strEleE.Format(_T("%.4f米"), dEle2 - dPipeRadius);
|
|
}
|
|
|
|
pWnd1 = GetDlgItem(IDC_STATIC_BOTTOMELES);
|
|
pWnd2 = GetDlgItem(IDC_STATIC_BOTTOMELEE);
|
|
if (pWnd1 != NULL)
|
|
{
|
|
pWnd1->SetWindowText(strEleS);
|
|
}
|
|
|
|
if (pWnd2 != NULL)
|
|
{
|
|
pWnd2->SetWindowText(strEleE);
|
|
}
|
|
UpdateData(FALSE);
|
|
}
|
|
|
|
void CPipeEditDlg::OnChangeEditElevation2()
|
|
{
|
|
UpdatePipeBottomEle();
|
|
}
|
|
|
|
void CPipeEditDlg::OnChangeEditElevation()
|
|
{
|
|
UpdatePipeBottomEle();
|
|
}
|
|
|
|
void CPipeEditDlg::OnSelchangeComboMaterial()
|
|
{
|
|
UpdatePipeBottomEle();
|
|
}
|
|
|
|
void CPipeEditDlg::OnSelchangeComboDn()
|
|
{
|
|
UpdatePipeBottomEle();
|
|
}
|
|
|
|
void CPipeEditDlg::SetPipes(PickSet &ss)
|
|
{
|
|
m_ssPipe.Free();
|
|
m_ssPipe += ss;
|
|
}
|
|
|
|
void CPipeEditDlg::OnEditchangeComboDn()
|
|
{
|
|
UpdatePipeBottomEle(FALSE);
|
|
}
|
|
|
|
BOOL CPipeEditDlg::IsModifyVerPipe()
|
|
{
|
|
if (!m_bEle2 || !m_bElevation)
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
return m_bAllVerPipe;
|
|
}
|
|
|
|
BOOL CPipeEditDlg::IsSamePipe(BOOL bVer)
|
|
{
|
|
if (m_ssPipe.Length() == 0)
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
BOOL bVal = FALSE;
|
|
for (long i = 0; i < m_ssPipe.Length(); i++)
|
|
{
|
|
OPENOBJ_BEGIN(m_ssPipe[i], AcDb::kForRead, TDbPipe, pPipe);
|
|
if (pPipe != NULL)
|
|
{
|
|
if (!pPipe->IsVertical() && bVer || pPipe->IsVertical() && !bVer)
|
|
{
|
|
bVal = TRUE;
|
|
}
|
|
}
|
|
OPENOBJ_END();
|
|
|
|
if (bVal)
|
|
{
|
|
return FALSE;
|
|
}
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void CPipeEditDlg::OnBtnOutdim()
|
|
{
|
|
CDimSettingDlg dlg;
|
|
dlg.m_nDrawType = m_nDrawType;
|
|
dlg.m_nGradientType = m_nGradientType;
|
|
dlg.m_nLabelType = m_nLabelType;
|
|
dlg.m_nLenType = m_nLenType;
|
|
dlg.m_nDnType = m_nDnType;
|
|
|
|
if (dlg.DoModal() == IDOK)
|
|
{
|
|
m_nDrawType = dlg.m_nDrawType;
|
|
m_nGradientType = dlg.m_nGradientType;
|
|
m_nLabelType = dlg.m_nLabelType;
|
|
m_nLenType = dlg.m_nLenType;
|
|
m_nDnType = dlg.m_nDnType;
|
|
|
|
SetBtnText();
|
|
}
|
|
}
|