Files
geomative/GeomativeStudio/cpp/ProblemZone/TdChannel.cpp
T
coco df489d5640 a
2026-07-03 16:05:30 +08:00

919 lines
31 KiB
C++

// TdChannel.cpp: implementation of the CTdChannel class.
//
//////////////////////////////////////////////////////////////////////
#include "geomative.h"
#include "TdChannel.h"
#include "MediumQ.h"
#include "Rsp2DTdRecord.h"
#include "RspCETdRecord.h"
#include "Rsp3DTdRecord.h"
#include "Ipsp3DTdRecord.h"
#include "Ipsp2DTdRecord.h"
#include "IpspCETdRecord.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CTdChannel::CTdChannel(DWORD dwScID, int iChNum, _ConnectionPtr& pConnection)
{
this->m_dwScID = dwScID;
this->m_iChNum = iChNum;
m_dwID = (int)VAL_ZERO;
m_iEAmount = (int)VAL_ZERO;
m_iMaxLevel = (int)VAL_ZERO;
m_pConnection = pConnection;
m_pMedium = NULL;
m_tdRecArray.RemoveAll();
// m_tdRecArray.SetSize(20480);
m_fMaxR0 = (float)VAL_ZERO;
m_fMinR0 = (float)VAL_ZERO;
m_fScaleR0 = (float)VAL_ZERO;
m_fMaxDepth = (float)VAL_ZERO;
}
CTdChannel::~CTdChannel()
{
}
BOOL CTdChannel::Load3DScriptFromDB()
{
_RecordsetPtr pRecCh = NULL;
_RecordsetPtr pRecSpt3D = NULL;
CString szSql = _T("");
CRsp3DTdRecord* pRsp3DTdRecord = NULL;
DWORD dwChID = (DWORD)VAL_ZERO;
pRecCh.CreateInstance(_uuidof(Recordset));
szSql.Empty();
szSql.Format(_T("select ID from channel where SCID = %u and CHnumber = %d"), m_dwScID, m_iChNum);
pRecCh->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCh->GetRecordCount())
{
dwChID = (DWORD)pRecCh->GetCollect(_T("ID")).ulVal;
}
pRecCh->Close();
pRecSpt3D.CreateInstance(_uuidof(Recordset));
szSql.Empty();
szSql.Format(_T("select TSN,C1,C2,P1,P2,K,N from Script3d where CHID = %u order by TSN"), dwChID);
pRecSpt3D->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
this->m_tdRecArray.RemoveAll();
while ((short)VAL_ZERO == pRecSpt3D->adoEOF)
{
pRsp3DTdRecord = new CRsp3DTdRecord(this->m_dwID, this->m_pConnection);
pRsp3DTdRecord->m_iTsn = (int)pRecSpt3D->GetCollect(_T("TSN")).lVal;
pRsp3DTdRecord->m_iC1 = (int)pRecSpt3D->GetCollect(_T("C1")).iVal;
pRsp3DTdRecord->m_iC2 = (int)pRecSpt3D->GetCollect(_T("C2")).iVal;
pRsp3DTdRecord->m_iP1 = (int)pRecSpt3D->GetCollect(_T("P1")).iVal;
pRsp3DTdRecord->m_iP2 = (int)pRecSpt3D->GetCollect(_T("P2")).iVal;
pRsp3DTdRecord->m_fK = (float)pRecSpt3D->GetCollect(_T("K")).fltVal;
pRsp3DTdRecord->m_iN = (int)pRecSpt3D->GetCollect(_T("N")).iVal;
pRsp3DTdRecord->m_fR0 = (float)VAL_ZERO;
pRsp3DTdRecord->m_fI = (float)VAL_ZERO;
pRsp3DTdRecord->m_fV = (float)VAL_ZERO;
pRsp3DTdRecord->m_colorREF = RGB(0xFF,0xFF,0xFF);
pRsp3DTdRecord->m_recPtArea.SetRectEmpty();
pRsp3DTdRecord->m_iLevel = this->m_pMedium->GenSptRecLevel(pRsp3DTdRecord->m_iC1, pRsp3DTdRecord->m_iC2, pRsp3DTdRecord->m_iP1, pRsp3DTdRecord->m_iP2);
pRsp3DTdRecord->m_iPosInLevel = this->m_pMedium->GenSptRecPosInLevel(pRsp3DTdRecord->m_iC1, pRsp3DTdRecord->m_iC2, pRsp3DTdRecord->m_iP1, pRsp3DTdRecord->m_iP2);
this->m_tdRecArray.Add((void*)pRsp3DTdRecord);
pRecSpt3D->MoveNext();
}
pRecSpt3D->Close();
return TRUE;
}
BOOL CTdChannel::Load2DScriptFromDB()
{
_RecordsetPtr pRecCh = NULL;
_RecordsetPtr pRecSpt2D = NULL;
CString szSql = _T("");
CRsp2DTdRecord* pRsp2DTdRecord = NULL;
DWORD dwChID = (DWORD)VAL_ZERO;
pRecCh.CreateInstance(_uuidof(Recordset));
szSql.Empty();
szSql.Format(_T("select ID from channel where SCID = %u and CHnumber = %d"), m_dwScID, m_iChNum);
pRecCh->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCh->GetRecordCount())
{
dwChID = (DWORD)pRecCh->GetCollect(_T("ID")).ulVal;
}
pRecCh->Close();
pRecSpt2D.CreateInstance(_uuidof(Recordset));
szSql.Empty();
szSql.Format(_T("select TSN,C1,C2,P1,P2,K,N from Script2d where CHID = %u order by TSN"), dwChID);
pRecSpt2D->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
this->m_tdRecArray.RemoveAll();
while ((short)VAL_ZERO == pRecSpt2D->adoEOF)
{
pRsp2DTdRecord = new CRsp2DTdRecord(this->m_dwID, this->m_pConnection);
pRsp2DTdRecord->m_iTsn = (int)pRecSpt2D->GetCollect(_T("TSN")).lVal;
pRsp2DTdRecord->m_iC1 = (int)pRecSpt2D->GetCollect(_T("C1")).iVal;
pRsp2DTdRecord->m_iC2 = (int)pRecSpt2D->GetCollect(_T("C2")).iVal;
pRsp2DTdRecord->m_iP1 = (int)pRecSpt2D->GetCollect(_T("P1")).iVal;
pRsp2DTdRecord->m_iP2 = (int)pRecSpt2D->GetCollect(_T("P2")).iVal;
pRsp2DTdRecord->m_fK = (float)pRecSpt2D->GetCollect(_T("K")).fltVal;
pRsp2DTdRecord->m_iN = (int)pRecSpt2D->GetCollect(_T("N")).iVal;
pRsp2DTdRecord->m_fR0 = (float)VAL_ZERO;
pRsp2DTdRecord->m_fI = (float)VAL_ZERO;
pRsp2DTdRecord->m_fV = (float)VAL_ZERO;
pRsp2DTdRecord->m_colorREF = RGB(0xFF,0xFF,0xFF);
pRsp2DTdRecord->m_recPtArea.SetRectEmpty();
pRsp2DTdRecord->m_iLevel = this->m_pMedium->GenSptRecLevel(pRsp2DTdRecord->m_iC1, pRsp2DTdRecord->m_iC2, pRsp2DTdRecord->m_iP1, pRsp2DTdRecord->m_iP2);
pRsp2DTdRecord->m_iPosInLevel = this->m_pMedium->GenSptRecPosInLevel(pRsp2DTdRecord->m_iC1, pRsp2DTdRecord->m_iC2, pRsp2DTdRecord->m_iP1, pRsp2DTdRecord->m_iP2);
this->m_tdRecArray.Add((void*)pRsp2DTdRecord);
pRecSpt2D->MoveNext();
}
pRecSpt2D->Close();
return TRUE;
}
void CTdChannel::SetColorToTdRec(CRsp2DTdRecord* pRsp2DTdRecord)
{
int iIndex = (int)VAL_ZERO;
int iColorIndex = (int)VAL_ZERO;
COLORREF aColor[15]={RGB(0,0,0xFF),RGB(0,0x33,0xFF),RGB(0,0x66,0xFF),RGB(0,0x88,0xFF),RGB(0,0xCF,0xFE),RGB(0,0xFE,0xFF),RGB(0,0xFE,0x99),RGB(0,0xFE,0x33),RGB(0x99,0xFE,0),RGB(0xFF,0xFE,0),RGB(0xFE,0xCC,0),RGB(0xFE,0x98,0),RGB(0xFE,0x66,0),RGB(0xFE,0x33,0),RGB(0xFF,0,0)};
pRsp2DTdRecord->m_colorREF = RGB(0xFF,0xFF,0xFF);
if (0 == pRsp2DTdRecord->m_fR0)
{
return;
}
//在这里SetMaxR0AndMinR0的函数已经添加到LoadRsp2DTdData中去了,也就是在加载2D数据的时候就已经获取到
//这个任务的R0的最大值和最小值,所以此时再数据在去比较的时候就不会跳转到SetMaxR0AndMinR0为真的函数结构中去了
//实际就全部走下面的else的分支,如果其它的数据需要显示剖面图的话,那么也需要在加载数据的时候调用etMaxR0AndMinR0
//来预先获得RO的最大值和最小值
if (SetMaxR0AndMinR0(pRsp2DTdRecord->m_fR0) == TRUE)
{
//这里完全属于冗余切会导致运算N*N次,N为测点数,所以这里不应该跳转到
if (m_fMaxR0 == m_fMinR0)
{
((CRsp2DTdRecord*)this->m_tdRecArray.GetAt(iIndex))->m_colorREF = aColor[8];
}
else
{
m_fScaleR0 = (m_fMaxR0-m_fMinR0)/15;
}
iIndex = (int)VAL_ZERO;
while ((iIndex < this->m_tdRecArray.GetSize()) && ((int)VAL_ZERO != m_fScaleR0))
{
if (0 != ((CRsp2DTdRecord*)this->m_tdRecArray.GetAt(iIndex))->m_fR0)
{
iColorIndex = (int)floor((((CRsp2DTdRecord*)this->m_tdRecArray.GetAt(iIndex))->m_fR0-m_fMinR0)/m_fScaleR0);
if (iColorIndex > 14)
{
iColorIndex = 14;
}
((CRsp2DTdRecord*)this->m_tdRecArray.GetAt(iIndex))->m_colorREF = aColor[iColorIndex];
}
else
{
((CRsp2DTdRecord*)this->m_tdRecArray.GetAt(iIndex))->m_colorREF = RGB(0xFF,0xFF,0xFF);
}
iIndex++;
}
}
else
{
if (m_fMaxR0 == m_fMinR0)
{
((CRsp2DTdRecord*)this->m_tdRecArray.GetAt(iIndex))->m_colorREF = aColor[8];
}
else
{
m_fScaleR0 = (m_fMaxR0-m_fMinR0)/15;
}
iColorIndex = (int)floor((pRsp2DTdRecord->m_fR0-m_fMinR0)/m_fScaleR0);
if (iColorIndex > 14)
{
iColorIndex = 14;
}
pRsp2DTdRecord->m_colorREF = aColor[iColorIndex];
}
}
BOOL CTdChannel::SetMaxR0AndMinR0(float fR0)
{
if ((0 == m_fMaxR0) && (0 == m_fMinR0))
{
m_fMaxR0 = fR0;
m_fMinR0 = fR0;
}
else if (fR0 > m_fMaxR0)
{
m_fMaxR0 = fR0;
}
else if (fR0 < m_fMinR0)
{
m_fMinR0 = fR0;
}
else
{
return FALSE;
}
return TRUE;
}
void CTdChannel::Clear3DSptRecList()
{
int iListIndex = (int)VAL_ZERO;
iListIndex = (int)VAL_ZERO;
while (iListIndex < this->m_tdRecArray.GetSize())
{
if (this->m_tdRecArray.GetAt(iListIndex) != NULL)
{
delete (CRsp3DTdRecord*)m_tdRecArray.GetAt(iListIndex);
}
iListIndex++;
}
this->m_tdRecArray.RemoveAll();
m_fMaxR0 = (float)VAL_ZERO;
m_fMinR0 = (float)VAL_ZERO;
m_fScaleR0 = (float)VAL_ZERO;
m_iMaxLevel = (int)VAL_ZERO;
}
void CTdChannel::Clear2DSptRecList()
{
int iListIndex = (int)VAL_ZERO;
iListIndex = (int)VAL_ZERO;
while (iListIndex < this->m_tdRecArray.GetSize())
{
if (this->m_tdRecArray.GetAt(iListIndex) != NULL)
{
delete (CRsp2DTdRecord*)m_tdRecArray.GetAt(iListIndex);
}
iListIndex++;
}
this->m_tdRecArray.RemoveAll();
m_fMaxR0 = (float)VAL_ZERO;
m_fMinR0 = (float)VAL_ZERO;
m_fScaleR0 = (float)VAL_ZERO;
m_iMaxLevel = (int)VAL_ZERO;
}
void CTdChannel::ClearCESptRecList()
{
int iListIndex = (int)VAL_ZERO;
iListIndex = (int)VAL_ZERO;
while (iListIndex < this->m_tdRecArray.GetSize())
{
if (this->m_tdRecArray.GetAt(iListIndex) != NULL)
{
delete (CRspCETdRecord*)(m_tdRecArray.GetAt(iListIndex));
}
iListIndex++;
}
m_fMaxR0 = (float)VAL_ZERO;
m_fMinR0 = (float)VAL_ZERO;
this->m_tdRecArray.RemoveAll();
}
BOOL CTdChannel::SaveRsp3DTdData(DWORD dwScID)
{
CRsp3DTdRecord* pRsp3DTdRecord = NULL;
_RecordsetPtr pRecTdCha;
_CommandPtr pCmdIns;
CString szSql = _T("");
int iTdRecIndex = (int)VAL_ZERO;
pRecTdCha.CreateInstance(_uuidof(Recordset));
pCmdIns.CreateInstance(_uuidof(Command));
pCmdIns->ActiveConnection = m_pConnection;
try
{
szSql.Empty();
szSql.Format(_T("insert into tdchannel(TDID,CHnumber,AR) values(%u,%d,%d)"),
dwScID,
this->m_iChNum,
this->m_pMedium->m_iAR);
pCmdIns->CommandText = szSql.AllocSysString();
pCmdIns->Execute(NULL, NULL, adCmdText);
pRecTdCha->Open(_T("select max(ID) as ID from tdchannel"), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecTdCha->GetRecordCount())
{
this->m_dwID = (int)pRecTdCha->GetCollect(_T("ID")).ulVal;
}
pRecTdCha->Close();
iTdRecIndex = (int)VAL_ZERO;
while (iTdRecIndex < m_tdRecArray.GetSize())
{
pRsp3DTdRecord = NULL;
pRsp3DTdRecord = (CRsp3DTdRecord*)m_tdRecArray.GetAt(iTdRecIndex);
pRsp3DTdRecord->SaveData(m_dwID);
iTdRecIndex++;
}
}
catch(_com_error e)
{
throw e;
return FALSE;
}
return TRUE;
}
BOOL CTdChannel::SaveRsp2DTdData(DWORD dwScID)
{
CRsp2DTdRecord* pRsp2DTdRecord = NULL;
_RecordsetPtr pRecTdCha;
_CommandPtr pCmdIns;
CString szSql = _T("");
int iTdRecIndex = (int)VAL_ZERO;
pRecTdCha.CreateInstance(_uuidof(Recordset));
pCmdIns.CreateInstance(_uuidof(Command));
pCmdIns->ActiveConnection = m_pConnection;
try
{
szSql.Empty();
szSql.Format(_T("insert into tdchannel(TDID,CHnumber,AR) values(%u,%d,%d)"),
dwScID,
this->m_iChNum,
this->m_pMedium->m_iAR);
pCmdIns->CommandText = szSql.AllocSysString();
pCmdIns->Execute(NULL, NULL, adCmdText);
pRecTdCha->Open(_T("select max(ID) as ID from tdchannel"), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecTdCha->GetRecordCount())
{
this->m_dwID = (int)pRecTdCha->GetCollect(_T("ID")).ulVal;
}
pRecTdCha->Close();
iTdRecIndex = (int)VAL_ZERO;
while (iTdRecIndex < m_tdRecArray.GetSize())
{
pRsp2DTdRecord = NULL;
pRsp2DTdRecord = (CRsp2DTdRecord*)m_tdRecArray.GetAt(iTdRecIndex);
pRsp2DTdRecord->SaveData(m_dwID);
iTdRecIndex++;
}
}
catch(_com_error e)
{
throw e;
return FALSE;
}
return TRUE;
}
BOOL CTdChannel::SaveRspCETdData(DWORD dwScID)
{
CRspCETdRecord* pRspCETdRecord = NULL;
_RecordsetPtr pRecTdCha;
_CommandPtr pCmdIns;
CString szSql = _T("");
int iTdRecIndex = (int)VAL_ZERO;
pRecTdCha.CreateInstance(_uuidof(Recordset));
pCmdIns.CreateInstance(_uuidof(Command));
pCmdIns->ActiveConnection = m_pConnection;
try
{
szSql.Empty();
szSql.Format(_T("insert into tdchannel(TDID,CHnumber,AR) values(%u,%d,%d)"),
dwScID,
this->m_iChNum,
this->m_pMedium->m_iAR);
pCmdIns->CommandText = szSql.AllocSysString();
pCmdIns->Execute(NULL, NULL, adCmdText);
pRecTdCha->Open(_T("select max(ID) as ID from tdchannel"), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecTdCha->GetRecordCount())
{
this->m_dwID = (int)pRecTdCha->GetCollect(_T("ID")).ulVal;
}
pRecTdCha->Close();
iTdRecIndex = (int)VAL_ZERO;
while (iTdRecIndex < m_tdRecArray.GetSize())
{
pRspCETdRecord = NULL;
pRspCETdRecord = (CRspCETdRecord*)m_tdRecArray.GetAt(iTdRecIndex);
pRspCETdRecord->SaveData(m_dwID);
iTdRecIndex++;
}
}
catch(_com_error e)
{
throw e;
return FALSE;
}
return TRUE;
}
BOOL CTdChannel::LoadRsp3DTdData()
{
CRsp3DTdRecord* pRsp3DTdRecord = NULL;
_RecordsetPtr pRecTdCon;
CString szSql = _T("");
int iTdRecIndex = (int)VAL_ZERO;
if ((int)VAL_ZERO == this->m_tdRecArray.GetSize())
{
pRecTdCon.CreateInstance(_uuidof(Recordset));
szSql.Empty();
szSql.Format(_T("select TSN,C1,C2,P1,P2,N,K,I,V,R0,SP,bUse from td3dcon where TCHID = %u"), this->m_dwID);
pRecTdCon->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
this->m_tdRecArray.RemoveAll();
while ((short)VAL_ZERO == pRecTdCon->adoEOF)
{
if (pRecTdCon->GetCollect(_T("bUse")).boolVal != 0)//0为access数据库中的false
{
pRsp3DTdRecord = new CRsp3DTdRecord(this->m_dwID, this->m_pConnection);
pRsp3DTdRecord->m_iTsn = (int)pRecTdCon->GetCollect(_T("TSN")).lVal;
pRsp3DTdRecord->m_iC1 = (int)pRecTdCon->GetCollect(_T("C1")).iVal;
pRsp3DTdRecord->m_iC2 = (int)pRecTdCon->GetCollect(_T("C2")).iVal;
pRsp3DTdRecord->m_iP1 = (int)pRecTdCon->GetCollect(_T("P1")).iVal;
pRsp3DTdRecord->m_iP2 = (int)pRecTdCon->GetCollect(_T("P2")).iVal;
pRsp3DTdRecord->m_fK = (float)pRecTdCon->GetCollect(_T("K")).fltVal;
pRsp3DTdRecord->m_iN = (int)pRecTdCon->GetCollect(_T("N")).iVal;
pRsp3DTdRecord->m_fR0 = (float)pRecTdCon->GetCollect(_T("R0")).fltVal;
pRsp3DTdRecord->m_fI = (float)pRecTdCon->GetCollect(_T("I")).fltVal;
pRsp3DTdRecord->m_fV = (float)pRecTdCon->GetCollect(_T("V")).fltVal;
pRsp3DTdRecord->m_fSP = (float)pRecTdCon->GetCollect(_T("SP")).fltVal;
pRsp3DTdRecord->m_colorREF = RGB(0xFF,0xFF,0xFF);
pRsp3DTdRecord->m_recPtArea.SetRectEmpty();
pRsp3DTdRecord->m_iLevel = this->m_pMedium->GenSptRecLevel(pRsp3DTdRecord->m_iC1, pRsp3DTdRecord->m_iC2, pRsp3DTdRecord->m_iP1, pRsp3DTdRecord->m_iP2);
pRsp3DTdRecord->m_iPosInLevel = this->m_pMedium->GenSptRecPosInLevel(pRsp3DTdRecord->m_iC1, pRsp3DTdRecord->m_iC2, pRsp3DTdRecord->m_iP1, pRsp3DTdRecord->m_iP2);
this->m_tdRecArray.Add((void*)pRsp3DTdRecord);
}
pRecTdCon->MoveNext();
}
pRecTdCon->Close();
}
return TRUE;
}
BOOL CTdChannel::LoadRsp2DTdData()
{
CRsp2DTdRecord* pRsp2DTdRecord = NULL;
_RecordsetPtr pRecTdCon;
CString szSql = _T("");
int iTdRecIndex = (int)VAL_ZERO;
//added by lsq 20160506
//初始化最大和最小的RO值
m_fMaxR0 = m_fMinR0 = (float)VAL_ZERO;
//////////////////////////end////////////////////////////////////////////////
if ((int)VAL_ZERO == this->m_tdRecArray.GetSize())
{
pRecTdCon.CreateInstance(_uuidof(Recordset));
szSql.Empty();
szSql.Format(_T("select TSN,C1,C2,P1,P2,N,K,I,V,R0,SP,bUse from td2dcon where TCHID = %u"), this->m_dwID);
pRecTdCon->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
this->m_tdRecArray.RemoveAll();
while ((short)VAL_ZERO == pRecTdCon->adoEOF)
{
if (pRecTdCon->GetCollect(_T("bUse")).boolVal != 0)//0为access数据库中的false
{
pRsp2DTdRecord = new CRsp2DTdRecord(this->m_dwID, this->m_pConnection);
if (pRsp2DTdRecord == NULL)
{
ASSERT(pRsp2DTdRecord != NULL);
continue;
}
pRsp2DTdRecord->m_iTsn = (int)pRecTdCon->GetCollect(_T("TSN")).lVal;
pRsp2DTdRecord->m_iC1 = (int)pRecTdCon->GetCollect(_T("C1")).iVal;
pRsp2DTdRecord->m_iC2 = (int)pRecTdCon->GetCollect(_T("C2")).iVal;
pRsp2DTdRecord->m_iP1 = (int)pRecTdCon->GetCollect(_T("P1")).iVal;
pRsp2DTdRecord->m_iP2 = (int)pRecTdCon->GetCollect(_T("P2")).iVal;
pRsp2DTdRecord->m_fK = (float)pRecTdCon->GetCollect(_T("K")).fltVal;
pRsp2DTdRecord->m_iN = (int)pRecTdCon->GetCollect(_T("N")).iVal;
pRsp2DTdRecord->m_fR0 = (float)pRecTdCon->GetCollect(_T("R0")).fltVal;
pRsp2DTdRecord->m_fI = (float)pRecTdCon->GetCollect(_T("I")).fltVal;
pRsp2DTdRecord->m_fV = (float)pRecTdCon->GetCollect(_T("V")).fltVal;
pRsp2DTdRecord->m_fSP = (float)pRecTdCon->GetCollect(_T("SP")).fltVal;
////////////////////////////////added by lsq 20160506//////////////////////////////////////////
//在这里是为了在取数据库的过程中就直接得到RO的最大值和最小值
SetMaxR0AndMinR0(pRsp2DTdRecord->m_fR0);
//////////////////////////////////////////////////////////////////////////
pRsp2DTdRecord->m_colorREF = RGB(0xFF,0xFF,0xFF);
pRsp2DTdRecord->m_recPtArea.SetRectEmpty();
if (m_pMedium == NULL)
{
ASSERT(m_pMedium != NULL);
if (pRsp2DTdRecord)
{
delete pRsp2DTdRecord;
pRsp2DTdRecord = NULL;
}
continue;
}
pRsp2DTdRecord->m_iLevel = this->m_pMedium->GenSptRecLevel(pRsp2DTdRecord->m_iC1, pRsp2DTdRecord->m_iC2, pRsp2DTdRecord->m_iP1, pRsp2DTdRecord->m_iP2);
pRsp2DTdRecord->m_iPosInLevel = this->m_pMedium->GenSptRecPosInLevel(pRsp2DTdRecord->m_iC1, pRsp2DTdRecord->m_iC2, pRsp2DTdRecord->m_iP1, pRsp2DTdRecord->m_iP2);
this->m_tdRecArray.Add((void*)pRsp2DTdRecord);
}
pRecTdCon->MoveNext();
}
pRecTdCon->Close();
}
return TRUE;
}
BOOL CTdChannel::LoadRspCETdData()
{
CRspCETdRecord* pRspCETdRecord = NULL;
_RecordsetPtr pRecTdCon;
CString szSql = _T("");
int iTdRecIndex = (int)VAL_ZERO;
if ((int)VAL_ZERO == this->m_tdRecArray.GetSize())
{
pRecTdCon.CreateInstance(_uuidof(Recordset));
szSql.Empty();
szSql.Format(_T("select TSN,a,b,x,y,N,K,I,V,R0,SP,bUse,dt from td1dcon where TCHID = %u"), this->m_dwID);
pRecTdCon->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
this->m_tdRecArray.RemoveAll();
while ((short)VAL_ZERO == pRecTdCon->adoEOF)
{
if (pRecTdCon->GetCollect(_T("bUse")).boolVal != 0)//0为access数据库中的false
{
pRspCETdRecord = new CRspCETdRecord(this->m_dwID, this->m_pConnection);
pRspCETdRecord->m_iTsn = (int)pRecTdCon->GetCollect(_T("TSN")).lVal;
pRspCETdRecord->m_fA = (float)pRecTdCon->GetCollect(_T("a")).fltVal;
pRspCETdRecord->m_fB = (float)pRecTdCon->GetCollect(_T("b")).fltVal;
pRspCETdRecord->m_fX = (float)pRecTdCon->GetCollect(_T("x")).fltVal;
pRspCETdRecord->m_fY = (float)pRecTdCon->GetCollect(_T("y")).fltVal;
pRspCETdRecord->m_fK = (float)pRecTdCon->GetCollect(_T("K")).fltVal;
pRspCETdRecord->m_iN = (int)pRecTdCon->GetCollect(_T("N")).iVal;
pRspCETdRecord->m_fR0 = (float)pRecTdCon->GetCollect(_T("R0")).fltVal;
pRspCETdRecord->m_fI = (float)pRecTdCon->GetCollect(_T("I")).fltVal;
pRspCETdRecord->m_fV = (float)pRecTdCon->GetCollect(_T("V")).fltVal;
pRspCETdRecord->m_fSP = (float)pRecTdCon->GetCollect(_T("SP")).fltVal;
pRspCETdRecord->m_Datetime = (VT_NULL == pRecTdCon->GetCollect(_T("dt")).vt) ? _T("") : (LPCTSTR)(_bstr_t)pRecTdCon->GetCollect(_T("dt"));
pRspCETdRecord->m_colorREF = RGB(0xFF,0xFF,0xFF);
pRspCETdRecord->m_recPtArea.SetRectEmpty();
pRspCETdRecord->m_fDepth = this->m_pMedium->CalculateDepth(pRspCETdRecord->m_fA);
if ((((float)VAL_ZERO == this->m_fMaxR0) || (pRspCETdRecord->m_fR0 > this->m_fMaxR0)) && ((float)VAL_ZERO != pRspCETdRecord->m_fR0))
{
this->m_fMaxR0 = pRspCETdRecord->m_fR0;
}
if ((((float)VAL_ZERO == this->m_fMinR0) || (pRspCETdRecord->m_fR0 < this->m_fMinR0)) && ((float)VAL_ZERO != pRspCETdRecord->m_fR0))
{
this->m_fMinR0 = pRspCETdRecord->m_fR0;
}
if ((((float)VAL_ZERO == this->m_fMaxDepth) || (pRspCETdRecord->m_fDepth > this->m_fMaxDepth)) && ((float)VAL_ZERO != pRspCETdRecord->m_fDepth))
{
this->m_fMaxDepth = pRspCETdRecord->m_fDepth;
}
// pRspCETdRecord->m_iLevel = this->m_pMedium->GenSptRecLevel(pRsp2DTdRecord->m_iC1, pRsp2DTdRecord->m_iC2, pRsp2DTdRecord->m_iP1, pRsp2DTdRecord->m_iP2);
// pRspCETdRecord->m_iPosInLevel = this->m_pMedium->GenSptRecPosInLevel(pRsp2DTdRecord->m_iC1, pRsp2DTdRecord->m_iC2, pRsp2DTdRecord->m_iP1, pRsp2DTdRecord->m_iP2);
this->m_tdRecArray.Add((void*)pRspCETdRecord);
}
pRecTdCon->MoveNext();
}
pRecTdCon->Close();
}
return TRUE;
}
BOOL CTdChannel::LoadIpsp3DTdData()
{
CIpsp3DTdRecord* pIpsp3DTdRecord = NULL;
_RecordsetPtr pRecTdCon;
CString szSql = _T("");
int iTdRecIndex = (int)VAL_ZERO;
if ((int)VAL_ZERO == this->m_tdRecArray.GetSize())
{
pRecTdCon.CreateInstance(_uuidof(Recordset));
szSql.Empty();
szSql.Format(_T("select TSN,C1,C2,P1,P2,N,K,I,V,R0,SP,bUse from td3dcon where TCHID = %u"), this->m_dwID);
pRecTdCon->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
this->m_tdRecArray.RemoveAll();
while ((short)VAL_ZERO == pRecTdCon->adoEOF)
{
if (pRecTdCon->GetCollect(_T("bUse")).boolVal != 0)//0为access数据库中的false
{
pIpsp3DTdRecord = new CIpsp3DTdRecord(this->m_dwID, this->m_pConnection);
pIpsp3DTdRecord->m_iTsn = (int)pRecTdCon->GetCollect(_T("TSN")).lVal;
pIpsp3DTdRecord->m_iC1 = (int)pRecTdCon->GetCollect(_T("C1")).iVal;
pIpsp3DTdRecord->m_iC2 = (int)pRecTdCon->GetCollect(_T("C2")).iVal;
pIpsp3DTdRecord->m_iP1 = (int)pRecTdCon->GetCollect(_T("P1")).iVal;
pIpsp3DTdRecord->m_iP2 = (int)pRecTdCon->GetCollect(_T("P2")).iVal;
pIpsp3DTdRecord->m_fK = (float)pRecTdCon->GetCollect(_T("K")).fltVal;
pIpsp3DTdRecord->m_iN = (int)pRecTdCon->GetCollect(_T("N")).iVal;
pIpsp3DTdRecord->m_fR0 = (float)pRecTdCon->GetCollect(_T("R0")).fltVal;
pIpsp3DTdRecord->m_fI = (float)pRecTdCon->GetCollect(_T("I")).fltVal;
pIpsp3DTdRecord->m_fV = (float)pRecTdCon->GetCollect(_T("V")).fltVal;
pIpsp3DTdRecord->m_fSP = (float)pRecTdCon->GetCollect(_T("SP")).fltVal;
pIpsp3DTdRecord->m_colorREF = RGB(0xFF,0xFF,0xFF);
pIpsp3DTdRecord->m_recPtArea.SetRectEmpty();
pIpsp3DTdRecord->m_iLevel = this->m_pMedium->GenSptRecLevel(pIpsp3DTdRecord->m_iC1, pIpsp3DTdRecord->m_iC2, pIpsp3DTdRecord->m_iP1, pIpsp3DTdRecord->m_iP2);
pIpsp3DTdRecord->m_iPosInLevel = this->m_pMedium->GenSptRecPosInLevel(pIpsp3DTdRecord->m_iC1, pIpsp3DTdRecord->m_iC2, pIpsp3DTdRecord->m_iP1, pIpsp3DTdRecord->m_iP2);
this->m_tdRecArray.Add((void*)pIpsp3DTdRecord);
}
pRecTdCon->MoveNext();
}
pRecTdCon->Close();
}
return TRUE;
}
BOOL CTdChannel::LoadIpsp2DTdData()
{
CIpsp2DTdRecord* pIpsp2DTdRecord = NULL;
_RecordsetPtr pRecTdCon;
CString szSql = _T("");
int iTdRecIndex = (int)VAL_ZERO;
if ((int)VAL_ZERO == this->m_tdRecArray.GetSize())
{
pRecTdCon.CreateInstance(_uuidof(Recordset));
szSql.Empty();
szSql.Format(_T("select TSN,C1,C2,P1,P2,N,K,I,V,R0,SP,bUse from td2dcon where TCHID = %u"), this->m_dwID);
pRecTdCon->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
this->m_tdRecArray.RemoveAll();
while ((short)VAL_ZERO == pRecTdCon->adoEOF)
{
if (pRecTdCon->GetCollect(_T("bUse")).boolVal != 0)//0为access数据库中的false
{
pIpsp2DTdRecord = new CIpsp2DTdRecord(this->m_dwID, this->m_pConnection);
pIpsp2DTdRecord->m_iTsn = (int)pRecTdCon->GetCollect(_T("TSN")).lVal;
pIpsp2DTdRecord->m_iC1 = (int)pRecTdCon->GetCollect(_T("C1")).iVal;
pIpsp2DTdRecord->m_iC2 = (int)pRecTdCon->GetCollect(_T("C2")).iVal;
pIpsp2DTdRecord->m_iP1 = (int)pRecTdCon->GetCollect(_T("P1")).iVal;
pIpsp2DTdRecord->m_iP2 = (int)pRecTdCon->GetCollect(_T("P2")).iVal;
pIpsp2DTdRecord->m_fK = (float)pRecTdCon->GetCollect(_T("K")).fltVal;
pIpsp2DTdRecord->m_iN = (int)pRecTdCon->GetCollect(_T("N")).iVal;
pIpsp2DTdRecord->m_fR0 = (float)pRecTdCon->GetCollect(_T("R0")).fltVal;
pIpsp2DTdRecord->m_fI = (float)pRecTdCon->GetCollect(_T("I")).fltVal;
pIpsp2DTdRecord->m_fV = (float)pRecTdCon->GetCollect(_T("V")).fltVal;
pIpsp2DTdRecord->m_fSP = (float)pRecTdCon->GetCollect(_T("SP")).fltVal;
pIpsp2DTdRecord->m_colorREF = RGB(0xFF,0xFF,0xFF);
pIpsp2DTdRecord->m_recPtArea.SetRectEmpty();
pIpsp2DTdRecord->m_iLevel = this->m_pMedium->GenSptRecLevel(pIpsp2DTdRecord->m_iC1, pIpsp2DTdRecord->m_iC2, pIpsp2DTdRecord->m_iP1, pIpsp2DTdRecord->m_iP2);
pIpsp2DTdRecord->m_iPosInLevel = this->m_pMedium->GenSptRecPosInLevel(pIpsp2DTdRecord->m_iC1, pIpsp2DTdRecord->m_iC2, pIpsp2DTdRecord->m_iP1, pIpsp2DTdRecord->m_iP2);
this->m_tdRecArray.Add((void*)pIpsp2DTdRecord);
}
pRecTdCon->MoveNext();
}
pRecTdCon->Close();
}
return TRUE;
}
BOOL CTdChannel::LoadIpspCETdData()
{
CIpspCETdRecord* pIpspCETdRecord = NULL;
_RecordsetPtr pRecTdCon;
CString szSql = _T("");
int iTdRecIndex = (int)VAL_ZERO;
if ((int)VAL_ZERO == this->m_tdRecArray.GetSize())
{
pRecTdCon.CreateInstance(_uuidof(Recordset));
szSql.Empty();
szSql.Format(_T("select TSN,a,b,x,y,N,K,I,V,R0,SP,bUse from td1dcon where TCHID = %u"), this->m_dwID);
pRecTdCon->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
this->m_tdRecArray.RemoveAll();
while ((short)VAL_ZERO == pRecTdCon->adoEOF)
{
if (pRecTdCon->GetCollect(_T("bUse")).boolVal != 0)//0为access数据库中的false
{
pIpspCETdRecord = new CIpspCETdRecord(this->m_dwID, this->m_pConnection);
pIpspCETdRecord->m_iTsn = (int)pRecTdCon->GetCollect(_T("TSN")).lVal;
pIpspCETdRecord->m_fA = (float)pRecTdCon->GetCollect(_T("a")).fltVal;
pIpspCETdRecord->m_fB = (float)pRecTdCon->GetCollect(_T("b")).fltVal;
pIpspCETdRecord->m_fX = (float)pRecTdCon->GetCollect(_T("x")).fltVal;
pIpspCETdRecord->m_fY = (float)pRecTdCon->GetCollect(_T("y")).fltVal;
pIpspCETdRecord->m_fK = (float)pRecTdCon->GetCollect(_T("K")).fltVal;
pIpspCETdRecord->m_iN = (int)pRecTdCon->GetCollect(_T("N")).iVal;
pIpspCETdRecord->m_fR0 = (float)pRecTdCon->GetCollect(_T("R0")).fltVal;
pIpspCETdRecord->m_fI = (float)pRecTdCon->GetCollect(_T("I")).fltVal;
pIpspCETdRecord->m_fV = (float)pRecTdCon->GetCollect(_T("V")).fltVal;
pIpspCETdRecord->m_fSP = (float)pRecTdCon->GetCollect(_T("SP")).fltVal;
pIpspCETdRecord->m_colorREF = RGB(0xFF,0xFF,0xFF);
pIpspCETdRecord->m_recPtArea.SetRectEmpty();
pIpspCETdRecord->m_fDepth = this->m_pMedium->CalculateDepth(pIpspCETdRecord->m_fA);
if ((((float)VAL_ZERO == this->m_fMaxR0) || (pIpspCETdRecord->m_fR0 > this->m_fMaxR0)) && ((float)VAL_ZERO != pIpspCETdRecord->m_fR0))
{
this->m_fMaxR0 = pIpspCETdRecord->m_fR0;
}
if ((((float)VAL_ZERO == this->m_fMinR0) || (pIpspCETdRecord->m_fR0 < this->m_fMinR0)) && ((float)VAL_ZERO != pIpspCETdRecord->m_fR0))
{
this->m_fMinR0 = pIpspCETdRecord->m_fR0;
}
if ((((float)VAL_ZERO == this->m_fMaxDepth) || (pIpspCETdRecord->m_fDepth > this->m_fMaxDepth)) && ((float)VAL_ZERO != pIpspCETdRecord->m_fDepth))
{
this->m_fMaxDepth = pIpspCETdRecord->m_fDepth;
}
// pRspCETdRecord->m_iLevel = this->m_pMedium->GenSptRecLevel(pRsp2DTdRecord->m_iC1, pRsp2DTdRecord->m_iC2, pRsp2DTdRecord->m_iP1, pRsp2DTdRecord->m_iP2);
// pRspCETdRecord->m_iPosInLevel = this->m_pMedium->GenSptRecPosInLevel(pRsp2DTdRecord->m_iC1, pRsp2DTdRecord->m_iC2, pRsp2DTdRecord->m_iP1, pRsp2DTdRecord->m_iP2);
this->m_tdRecArray.Add((void*)pIpspCETdRecord);
}
pRecTdCon->MoveNext();
}
pRecTdCon->Close();
}
return TRUE;
}
BOOL CTdChannel::LoadCEScriptFromDB()
{
_RecordsetPtr pRecCh = NULL;
_RecordsetPtr pRecSptCE = NULL;
CString szSql = _T("");
CRspCETdRecord* pRspCETdRecord = NULL;
DWORD dwChID = (DWORD)VAL_ZERO;
pRecCh.CreateInstance(_uuidof(Recordset));
szSql.Empty();
szSql.Format(_T("select ID from channel where SCID = %u and CHnumber = %d"), m_dwScID, m_iChNum);
pRecCh->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCh->GetRecordCount())
{
dwChID = (DWORD)pRecCh->GetCollect(_T("ID")).ulVal;
}
pRecCh->Close();
pRecSptCE.CreateInstance(_uuidof(Recordset));
szSql.Empty();
szSql.Format(_T("select TSN,a,b,x,y,K,N from Script1d where CHID = %u order by TSN"), dwChID);
pRecSptCE->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
this->m_tdRecArray.RemoveAll();
while ((short)VAL_ZERO == pRecSptCE->adoEOF)
{
pRspCETdRecord = new CRspCETdRecord(this->m_dwID, this->m_pConnection);
pRspCETdRecord->m_iTsn = (int)pRecSptCE->GetCollect(_T("TSN")).lVal;
pRspCETdRecord->m_fA = (float)pRecSptCE->GetCollect(_T("a")).fltVal;
pRspCETdRecord->m_fB = (float)pRecSptCE->GetCollect(_T("b")).fltVal;
pRspCETdRecord->m_fX = (float)pRecSptCE->GetCollect(_T("x")).fltVal;
pRspCETdRecord->m_fY = (float)pRecSptCE->GetCollect(_T("y")).fltVal;
pRspCETdRecord->m_fK = (float)pRecSptCE->GetCollect(_T("K")).fltVal;
pRspCETdRecord->m_iN = (int)pRecSptCE->GetCollect(_T("N")).iVal;
pRspCETdRecord->m_fR0 = (float)VAL_ZERO;
pRspCETdRecord->m_fI = (float)VAL_ZERO;
pRspCETdRecord->m_fV = (float)VAL_ZERO;
pRspCETdRecord->m_colorREF = RGB(0xFF, 0xFF, 0xFF);
pRspCETdRecord->m_recPtArea.SetRectEmpty();
pRspCETdRecord->m_fDepth = ((CMediumQ*)this->m_pMedium)->CalculateDepth(pRspCETdRecord->m_fA, this->m_fDepthFactor);
// pRspCETdRecord->m_fLevel
// pRspCETdRecord->m_iLevel = this->m_pMedium->GenSptRecLevel(pRspCETdRecord->m_iC1, pRspCETdRecord->m_iC2, pRspCETdRecord->m_iP1, pRspCETdRecord->m_iP2);
// pRspCETdRecord->m_iPosInLevel = this->m_pMedium->GenSptRecPosInLevel(pRspCETdRecord->m_iC1, pRsp2DTdRecord->m_iC2, pRsp2DTdRecord->m_iP1, pRsp2DTdRecord->m_iP2);
this->m_tdRecArray.Add((void*)pRspCETdRecord);
pRecSptCE->MoveNext();
}
pRecSptCE->Close();
return TRUE;
}
void CTdChannel::SetColorToTd()
{
int iIndex = (int)VAL_ZERO;
CRsp2DTdRecord* pRsp2DTdRecord = NULL;
// this->m_fMaxR0 = 0.0;
// this->m_fMinR0 = 0.0;
while (iIndex < m_tdRecArray.GetSize())
{
pRsp2DTdRecord = NULL;
pRsp2DTdRecord = (CRsp2DTdRecord*)m_tdRecArray.GetAt(iIndex);
SetColorToTdRec(pRsp2DTdRecord);
iIndex++;
}
}
CTdRecord* CTdChannel::GetTdRecord(int iTSN)
{
CTdRecord* pTdRecord = NULL;
int iIndex = (int)VAL_ZERO;
if ((int)VAL_ZERO != this->m_tdRecArray.GetSize())
{
do
{
pTdRecord = (CTdRecord*)this->m_tdRecArray.GetAt(iIndex);
if ((this->m_dwID == pTdRecord->m_dwChID) && (pTdRecord->m_iTsn == iTSN))
{
return pTdRecord;
}
iIndex++;
} while (iIndex <= this->m_tdRecArray.GetUpperBound());
}
return NULL;
}