#include "StdAfx.h" #include "WellPoleLib/WellMarkNamesList.h" #include "WellPoleLib/WellBaseObj.h" #include "WellPoleLib/WellClassObjGroup.h" #include "WellPoleLib/InTrackDepthSegment.h" #include "WellPoleLib/InTrackTextBase.h" //#include "WellPoleLib\TrackValidThick.h" #include "WellPoleLib\InTrackTextRange.h" #include "WellPoleLib\InTrackSymbol.h" #include "WellPoleLib\InTrackLith.h" #include "WellPoleLib\InTrackResult.h" #include "WellPoleLib\InTrackOilTest.h" #include "WellPoleLib\InTrackSample.h" #include "WellPoleLib\InTrackShot.h" #include "WellPoleLib\InTrackTestExtraction.h" #include "WellPoleLib\InTrackLayerGroup.h" #include "WellPoleLib\InTrackCoring.h" #include "WellPoleLib\InTrackCoreWell.h" #include "WellPoleLib\InTrackPicture.h" #include "WellPoleLib\InTrackFaultPoint.h" #include "WellPoleLib\TrackObj.h" #include "WellPoleLib\InclinedTrack.h" #include "WellPoleLib\TrackStratum.h" #include "WellPoleLib/TrackCurve.h" #include "WellPoleLib\TrackCorePosition.h" #include "WellPoleLib\TrackDepth.h" #include "WellPoleLib\TrackLith.h" #include "WellPoleLib\TrackOilTest.h" #include "WellPoleLib\TrackBury.h" #include "WellPoleLib\TrackShot.h" #include "WellPoleLib\TrackSample.h" #include "WellPoleLib\TrackText.h" #include "WellPoleLib\TrackPicture.h" #include "WellPoleLib\TrackResult.h" #include "WellPoleLib/TrackGroup.h" #include "WellPoleLib\TrackCoreWell.h" #include "WellPoleLib\TrackSymbol.h" #include "WellPoleLib\TrackTestExtraction.h" #include "WellPoleLib/TrackFluidProducingProfile.h" #include "WellPoleLib/TrackWaterInjectionProfile.h" #include "WellPoleLib\TrackPicture.h" #include "WellPoleLib/WellPole.h" #include "WellPoleLib\Data\WellData_SandSet.h" #include "WellPoleLib\Data\WellData_ReservesLayer.h" #include "WellPoleLib/InTrackCycle.h" #include "WellPoleLib/InTrackSandstone.h" #include "WellPoleLib/TrackSandstone.h" #include "WellPoleLib/InTrackInnerLayer.h" #include "WellPoleLib/TrackInnerLayer.h" #include "WellPoleLib/TrackSandLayer.h" #include "WellPoleLib/InTrackFacies.h" #include "WellPoleLib/InTrackWaterInjectionProfile.h" #include "WellPoleLib/InTrackFluidProducingProfile.h" #include "MultiWellSectionLib/BendObj.h" #include "MultiWellSectionLib/WellSection.h" #include "../../SigmaDoc.h" #include "ItemWcsTrackIn.h" #include "ItemWcsTrack.h" namespace NItem { // int GetDrawTypeIndex(DWORD dwDrawType) //{ // int nIndex = 0; //波形方式 // switch(dwDrawType) // { // default: // case CSeismicDrawBase::typeWiggle: nIndex = 0; break;//波形曲线显示 // case CSeismicDrawBase::typeRightVa: nIndex = 1; break;//右变面积 // case CSeismicDrawBase::typeLeftVa: nIndex = 2; break;//左变面积 // case CSeismicDrawBase::typeVarDensity: nIndex = 3; break;//变密度显示 // case CSeismicDrawBase::typeVarDensity|CSeismicDrawBase::typeWiggle: nIndex = 4; break;//变密度+波形曲线 // case CSeismicDrawBase::typeVarDensity|CSeismicDrawBase::typeRightVa:nIndex = 5; break;//变密度+右变面积 // case CSeismicDrawBase::typeVarDensity|CSeismicDrawBase::typeLeftVa: nIndex = 6; break;//变密度+左变面积 // } // return nIndex; //} //DWORD GetDrawType(int nIndex) //{ // DWORD dwType = CSeismicDrawBase::typeWiggle; // switch(nIndex) // { // default: // case 0: dwType = CSeismicDrawBase::typeWiggle; break; // case 1: dwType = CSeismicDrawBase::typeRightVa; break; // case 2: dwType = CSeismicDrawBase::typeLeftVa; break; // case 3: dwType = CSeismicDrawBase::typeVarDensity; break; // case 4: dwType = CSeismicDrawBase::typeVarDensity | CSeismicDrawBase::typeWiggle; break; // case 5: dwType = CSeismicDrawBase::typeVarDensity | CSeismicDrawBase::typeRightVa; break; // case 6: dwType = CSeismicDrawBase::typeVarDensity | CSeismicDrawBase::typeLeftVa; break; // } // return dwType; //} CItemWcsTrack::CItemWcsTrack(CSigmaDoc* pDoc) : CItemWellBase(pDoc) ,m_bAddTrackIn(FALSE) { SetType(ITEM_TRACK); m_pTrack = NULL; m_pItemWell = NULL; m_bWellFrame = TRUE; m_bAddFaultPoint = FALSE; //CMapEditFrame *pParentFrame = (CMapEditFrame*)pWnd->GetMapFrame(); //if(!pParentFrame->IsKindOf(RUNTIME_CLASS(CMapWellFrame))) //{ // m_bWellFrame = FALSE; //} //CMapWellFrame *pFrame = (CMapWellFrame*)pWnd->GetMapFrame(); //for(int ii = 0; ii< pFrame->GetMapFrame2D().m_SplitterWnd.GetSize(); ii++) //{ // m_DcVec.push_back(pFrame->GetMapFrame2D().m_SplitterWnd[ii].pMapWnd2D->GetDC()); // m_WndVec.push_back(pFrame->GetMapFrame2D().m_SplitterWnd[ii].pMapWnd2D); //} } CItemWcsTrack::~CItemWcsTrack(void) { } void CItemWcsTrack::OnDraw(CXyDC* pXyDC, CDC* pDC) { CPen pen(PS_DOT, 0, RGB(0, 0, 0)); CPen *pOldPen = (CPen *)pDC->SelectObject(&pen); int old = pDC->SetROP2(R2_NOTXORPEN); if (m_bLDown) { CRect rect; rect.top = m_firstPoint.y; rect.bottom = m_lastPoint.y; rect.left = GetDC()->GetScreen(m_pTrack->GetPos()).left; rect.right = GetDC()->GetScreen(m_pTrack->GetPos()).right; if(rect.Height() == 0) { pDC->MoveTo(rect.left, rect.top); pDC->LineTo(rect.right, rect.top); } else pDC->Rectangle(rect); } pDC->SelectObject(pOldPen); pen.DeleteObject(); pDC->SetROP2(old); } void CItemWcsTrack::OnLButtonDown(CDC *pDC, UINT nFlags, CPoint point, int vk) { m_bLDown = TRUE; m_bAddTrackIn = FALSE; CPoint2D ptReal = GetDC()->GetReal(point); m_downPoint = m_firstPoint = m_lastPoint = point; //绘制十字线时,需要全图绘制可以去掉因为重复绘制导致的十字线错误,当不要十字线时直线 OnDraw效率高 //if (::GetPreferences().WorkaroundDisplay.m_bViewCrossLine) // GetDoc()->Invalidate(); //else OnDraw(GetDC(),pDC); //GetView()->SetCapture(); //CXTPPropertyGrid &grid = GetPropertyGrid(GetDoc()->GetMainFrame()); //InitPropertyGrid(grid); } void CItemWcsTrack::OnLButtonUp(CDC *pDC, UINT nFlags, CPoint point, int vk) { ReleaseCapture(); m_lastPoint = point; CPoint2D ptDown = GetDC()->GetReal(m_downPoint); CPoint2D ptLast = GetDC()->GetReal(m_lastPoint); double yMax=max(ptDown.y0,ptLast.y0); double yMin=min(ptDown.y0,ptLast.y0); if (abs(m_downPoint.y-m_lastPoint.y)==0 && m_pTrack->GetTrackType() != Track_StandardLayer && m_pTrack->GetTrackType() != Track_FaultPoint && m_pTrack->GetTrackType() != Track_CoreWell) { OnDraw(GetDC(),pDC); m_bLDown = FALSE; return; } CWellPole *pWellObj = m_pTrack->GetWell(); BOOL bSelect = FALSE; CRect8 rect; WELLOBJLIST::iterator it = m_pTrack->GetChildren().begin(); for( ; it != m_pTrack->GetChildren().end(); it++) { CWellBaseObj* pObj = *it; rect = pObj->GetRect(); rect.NormalizeRect(); if (yMinrect.top) { if(m_pItemWell) { if (!m_bAddTrackIn) { m_pItemWell->m_WellObjSelectlist.RemoveAll(); } m_pItemWell->Select(pObj, TRUE); m_pItemWell->SetSelectMode(CItemNestBase::netSelect); m_pItemWell->SetDrawObj(pWellObj); } m_bAddTrackIn = TRUE; bSelect = TRUE; } //else if(yMinrect.bottom||yMax>rect.top&&yMinInvalidate(m_pTrack); // return; //} } if (bSelect) { m_bLDown = FALSE; CSigmaDoc* pDoc = GetDoc(); pDoc->Invalidate();// m_pTrack); CItemWcsTrackIn* pItemTrackIn = new CItemWcsTrackIn(GetDoc()); pItemTrackIn->SetPos(GetPos()); if(m_pItemWell) { if(m_pItemWell->m_WellObjSelectlist.GetCount() == 1) { pItemTrackIn->SetDrawObj(m_pItemWell->m_WellObjSelectlist.GetHead()); //CXTPPropertyGrid &grid = GetPropertyGrid(GetDoc()->GetMainFrame()); //pItemTrackIn->InitPropertyGrid(grid); } m_pItemWell->SetItem(pItemTrackIn); } return; } //CXTPPropertyGrid &grid = GetPropertyGrid(GetDoc()->GetMainFrame()); CInTrackDepthSegment * pTrackIn = NULL; ///////标准层道、断点道、井壁取芯道时弹出提示对话框 if (m_pTrack->GetTrackType() == Track_StandardLayer || m_pTrack->GetTrackType() == Track_FaultPoint || m_pTrack->GetTrackType() == Track_CoreWell) { OnDraw(GetDC(),pDC); if(AfxMessageBox(IDS_STRING_ACTION_ADD,MB_YESNO|MB_ICONQUESTION)!=IDYES) { m_bLDown = FALSE; return; } } m_bLDown = FALSE; pTrackIn = CreatTopEndObj(); if (pTrackIn!=NULL) { //备份 SetReUnDoAction(TRUE, IDS_STRING_ACTION_MOVE, 3, pWellObj); if (pTrackIn->GetType() == KEP_STANDARD || pTrackIn->GetType() == KEP_FAULTPOINT || pTrackIn->GetType() == KEP_COREWELL) { pTrackIn->GetPos().top = ptDown.y0; pTrackIn->GetPos().bottom = ptDown.y0; pTrackIn->GetPos().left = m_pTrack->GetPos().left; pTrackIn->GetPos().right = m_pTrack->GetPos().right; pTrackIn->m_fSdep = pWellObj->ScreenYToDepth(pTrackIn->GetPos().top); pTrackIn->m_fEdep = pWellObj->ScreenYToDepth(pTrackIn->GetPos().bottom); pTrackIn->SetRectInTrack(pTrackIn->GetPos(),LPVOID(pWellObj)); } else if (pTrackIn->GetType() == KEP_RESULT || pTrackIn->GetType() == KEP_LAYERGROUP) { CString strDateTime; CTime mTime; mTime = CTime::GetCurrentTime(); strDateTime = mTime.Format(_T("%H%M%S")); int nID; nID = atoi(strDateTime); pTrackIn->SetId(nID); pTrackIn->GetPos().top = yMax; pTrackIn->GetPos().bottom = yMin; pTrackIn->GetPos().left = m_pTrack->GetPos().left; pTrackIn->GetPos().right = m_pTrack->GetPos().right; pTrackIn->m_fSdep = pWellObj->ScreenYToDepth(pTrackIn->GetPos().top); pTrackIn->m_fEdep = pWellObj->ScreenYToDepth(pTrackIn->GetPos().bottom); pTrackIn->SetRectInTrack(pTrackIn->GetPos(),LPVOID(pWellObj)); } //else if (pTrackIn->GetType() == KEP_DISCRETESEGMENT) //{ // CInTrackDiscreteSegment* pDiscreteSegment = (CInTrackDiscreteSegment*)pTrackIn; // pDiscreteSegment->m_pTrackDiscrete = (CTrackDiscreteObj*)m_pTrack; // pDiscreteSegment->GetPos().top = yMax; // pDiscreteSegment->GetPos().bottom = yMin; // pDiscreteSegment->GetPos().left = m_pTrack->GetPos().left; // pDiscreteSegment->GetPos().right = m_pTrack->GetPos().right; // pDiscreteSegment->m_fSdep = pWellObj->ScreenYToDepth(pTrackIn->GetPos().top); // pDiscreteSegment->m_fEdep = pWellObj->ScreenYToDepth(pTrackIn->GetPos().bottom); // pDiscreteSegment->SetRectInTrack(pTrackIn->GetPos(),LPVOID(pWellObj)); // pDiscreteSegment->SetParentObj(m_pTrack); //} else { pTrackIn->GetPos().top = yMax; pTrackIn->GetPos().bottom = yMin; pTrackIn->GetPos().left = m_pTrack->GetPos().left; pTrackIn->GetPos().right = m_pTrack->GetPos().right; pTrackIn->m_fSdep = pWellObj->ScreenYToDepth(pTrackIn->GetPos().top); pTrackIn->m_fEdep = pWellObj->ScreenYToDepth(pTrackIn->GetPos().bottom); pTrackIn->SetRectInTrack(pTrackIn->GetPos(),LPVOID(pWellObj)); } pTrackIn->NormalText(); m_pTrack->AddChild(pTrackIn); GetDoc()->Invalidate();// m_pTrack); CItemWcsTrackIn* pItemTrackIn = new CItemWcsTrackIn(GetDoc()); if(m_pItemWell) { m_pItemWell->Select(pTrackIn); pItemTrackIn->SetDrawObj(pTrackIn); pItemTrackIn->SetPos(GetPos()); //pItemTrackIn->InitPropertyGrid(grid); m_pItemWell->SetItem(pItemTrackIn); } } } CInTrackDepthSegment* CItemWcsTrack::CreatTopEndObj() { CInTrackDepthSegment * pTrackIn = NULL; if (m_pTrack->GetTrackType() == Track_Text) { CInTrackTextRange *pRange = new CInTrackTextRange(); pTrackIn = pRange; pTrackIn->m_font = m_pTrack->m_fontChild; pTrackIn->m_pen = m_pTrack->m_penChild; pTrackIn->m_brush.m_color = m_pTrack->m_brushChild.m_color; } else if (m_pTrack->GetTrackType() == Track_Symbol) { CInTrackSymbol* pSymbol = new CInTrackSymbol(); pTrackIn = pSymbol; } else if (m_pTrack->GetTrackType() == Track_Lith) { CInTrackLith* pLith = new CInTrackLith(); pTrackIn = pLith; } //else if (m_pTrack->GetTrackType()==Track_Layer) //{ // CInTrackLayer* pLayer = new CInTrackLayer(); // pTrackIn = pLayer; //} else if (m_pTrack->GetTrackType() == Track_Result) { CInTrackResult* pResult = new CInTrackResult(); pTrackIn = pResult; pTrackIn->m_pen = m_pTrack->m_penChild; if (m_pTrack->GetChildren().size() > 0) { WELLOBJLIST::iterator it = m_pTrack->GetChildren().begin(); for (; it != m_pTrack->GetChildren().end(); it++) { if ((*it)->GetType() == KEP_RESULT) { CInTrackResult* pResult1 = (CInTrackResult*)(*it); if (pResult1->IsShowName()) pResult->SetShowName(TRUE); if (pResult1->IsShowPureThickness()) pResult->SetShowPureThickness(TRUE); if (pResult1->IsShowThickness()) pResult->SetShowThickness(TRUE); if (pResult1->IsShowRenderBrief()) pResult->SetShowRenderBrief(TRUE); break; } } } } else if (m_pTrack->GetTrackType() == Track_Picture) { CInTrackPicture* pPicture = new CInTrackPicture(); pTrackIn = pPicture; } else if (m_pTrack->GetTrackType() == Track_OilTest) { CInTrackOilTest* pOilTest = new CInTrackOilTest(); pTrackIn = pOilTest; pTrackIn->m_font = m_pTrack->m_fontChild; } else if (m_pTrack->GetTrackType() == Track_CorePosition) { CInTrackCoring* pCoring = new CInTrackCoring(); pTrackIn = pCoring; pTrackIn->m_font = m_pTrack->m_fontChild; pTrackIn->m_pen = m_pTrack->m_penChild; pTrackIn->m_brush.m_color = m_pTrack->m_brushChild.m_color; } else if (m_pTrack->GetTrackType() == Track_CoreWell) { CInTrackCoreWell* pCoreWell = new CInTrackCoreWell(); pTrackIn = pCoreWell; pTrackIn->m_font = m_pTrack->m_fontChild; pTrackIn->m_pen = m_pTrack->m_penChild; pTrackIn->m_brush.m_color = m_pTrack->m_brushChild.m_color; //TRACKINCOREWELLDATA trackInCoreData; //pCoreWell->AddCoreData(trackInCoreData); } else if (m_pTrack->GetTrackType() == Track_Sample) { CInTrackSample* pSample = new CInTrackSample(); pTrackIn = pSample; pTrackIn->m_font = m_pTrack->m_fontChild; } else if (m_pTrack->GetTrackType() == Track_Shot) { CInTrackShot* pShot = new CInTrackShot(); pTrackIn = pShot; } else if (m_pTrack->GetTrackType() == Track_CementingQuality) { //CInTrackCementing* pTrackInCementing = new CInTrackCementing(); //pTrackIn = pTrackInCementing; } else if (m_pTrack->GetTrackType() == Track_FluidProducingProfile) { CInTrackFluidProducingProfile* pTrackInProducedFluid = new CInTrackFluidProducingProfile(); pTrackIn = pTrackInProducedFluid; pTrackIn->m_font = m_pTrack->m_fontChild; pTrackIn->m_pen = m_pTrack->m_penChild; pTrackIn->m_brush = m_pTrack->m_brushChild; } else if (m_pTrack->GetTrackType() == Track_WaterInjectionProfile) { CTrackWaterInjectionProfile* pTrackWaterAbsorption = (CTrackWaterInjectionProfile*)m_pTrack; CInTrackWaterInjectionProfile* pWaterAbsorption = new CInTrackWaterInjectionProfile(); pWaterAbsorption->SetShowAbsolute(pTrackWaterAbsorption->IsShowAbsolute()); pWaterAbsorption->SetShowRelative(pTrackWaterAbsorption->IsShowRelative()); pTrackIn = pWaterAbsorption; pTrackIn->m_font = m_pTrack->m_fontChild; pTrackIn->m_pen = m_pTrack->m_penChild; pTrackIn->m_brush = m_pTrack->m_brushChild; } else if (m_pTrack->GetTrackType() == Track_TestExtraction) { CInTrackTestExtraction* pTestExtraction = new CInTrackTestExtraction(); pTrackIn = pTestExtraction; pTrackIn->m_font = m_pTrack->m_fontChild; pTrackIn->m_pen = m_pTrack->m_penChild; pTrackIn->m_brush = m_pTrack->m_brushChild; } else if (m_pTrack->GetTrackType() == Track_OilLayerGroup || m_pTrack->GetTrackType() == Track_ProduceLayer || m_pTrack->GetTrackType() == Track_ReserveUnit || m_pTrack->GetTrackType() == Track_Stratum) { CInTrackLayerGroup* pLayerGroup = new CInTrackLayerGroup(); pTrackIn = pLayerGroup; pTrackIn->m_font = m_pTrack->m_fontChild; pTrackIn->m_pen = m_pTrack->m_penChild; pTrackIn->m_brush = m_pTrack->m_brushChild; } else if (m_pTrack->GetTrackType() == Track_SandLayer) { if (m_bAddFaultPoint == FALSE) { CInTrackLayerGroup* pLayerGroup = new CInTrackLayerGroup(); pTrackIn = pLayerGroup; pTrackIn->m_font = m_pTrack->m_fontChild; pTrackIn->m_pen = m_pTrack->m_penChild; pTrackIn->m_brush = m_pTrack->m_brushChild; } else { CInTrackFaultPoint* pFaultPoint = new CInTrackFaultPoint(); pTrackIn = pFaultPoint; pTrackIn->m_font = m_pTrack->m_fontChild; } } else if (m_pTrack->GetTrackType() == Track_Discrete) { //CInTrackDiscreteSegment* pDiscreteSegment = new CInTrackDiscreteSegment(); //pTrackIn = pDiscreteSegment; } else if (m_pTrack->GetTrackType() == Track_FaultPoint) { CInTrackFaultPoint* pFaultPoint = new CInTrackFaultPoint(); pTrackIn = pFaultPoint; pTrackIn->m_font = m_pTrack->m_fontChild; } else if (m_pTrack->GetTrackType() == Track_Sandstone) { CInTrackSandstone* pInSandstone = new CInTrackSandstone(); pTrackIn = pInSandstone; pTrackIn->m_font = m_pTrack->m_fontChild; } else if (m_pTrack->GetTrackType() == Track_Facies) { CInTrackFacies *pRange = new CInTrackFacies(); pTrackIn = pRange; pTrackIn->m_font = m_pTrack->m_fontChild; pTrackIn->m_pen = m_pTrack->m_penChild; pTrackIn->m_brush.m_color = m_pTrack->m_brushChild.m_color; } else if (m_pTrack->GetTrackType() == Track_InnerLayer) { CInTrackInnerLayer *pRange = new CInTrackInnerLayer(); pTrackIn = pRange; pTrackIn->m_font = m_pTrack->m_fontChild; pTrackIn->m_pen = m_pTrack->m_penChild; pTrackIn->m_brush.m_color = m_pTrack->m_brushChild.m_color; } else if (m_pTrack->GetTrackType() == Track_Cycle) { CInTrackCycle *pRange = new CInTrackCycle(); pTrackIn = pRange; pTrackIn->m_font = m_pTrack->m_fontChild; pTrackIn->m_pen = m_pTrack->m_penChild; pTrackIn->m_brush.m_color = m_pTrack->m_brushChild.m_color; } //else if(m_pTrack->GetTrackType() == Track_Curve) //{ //} //else if (m_pTrack->GetTrackType() == Track_CementingQualityCurve) //{ // CInTrackCementingCurve* pCementingCurve = new CInTrackCementingCurve(); // pTrackIn = pCementingCurve; //} return pTrackIn; } void CItemWcsTrack::OnLButtonDblClk(UINT nFlags, CPoint point) { } int CItemWcsTrack::OnMouseMove(CDC *pDC, UINT nFlags, CPoint point) { CPoint2D lastPoint = GetDC()->GetReal(point); if (IsCaptureState() && m_bLDown) { OnDraw(GetDC(), pDC); m_lastPoint = point; OnDraw(GetDC(), pDC); } return 0; } BOOL CItemWcsTrack::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) { ::SetCursor(AfxGetApp()->LoadCursor(IDC_CURSOR_RANGE)); return TRUE; } int CItemWcsTrack::DeleteSelection(void) { if(GetDrawObj() == NULL) return 0; CWellPole* pWellObj = (CWellPole*)m_pTrack->GetWell(); CTrackGroup* pParentTrack = (CTrackGroup*)m_pTrack->GetParent(); CWellBaseObj* pObj = NULL; CTrackObj* pTrack = NULL; int num = 0; num = pWellObj->GetTrackCount(); if (num<=1) { return 0; } if (pWellObj->GetParent()!=NULL) { CWellSection* pSection = (CWellSection*)pWellObj->GetParent(); POSITION posBend = pSection->m_BendList.GetHeadPosition(); while (posBend!=NULL) { CBendObj* pBend = (CBendObj*)pSection->m_BendList.GetNext(posBend); if (pBend->m_pLayerLeft->GetParent() == m_pTrack||(pBend->m_pLayerRight!=NULL&&pBend->m_pLayerRight->GetParent()==m_pTrack)) { POSITION posFind = pSection->m_BendList.Find(pBend); if (posFind!=NULL) { pSection->DeleteBend(pBend); } } } } //pParentTrack->RemoveTrack(m_pTrack); pWellObj->RemoveTrack(m_pTrack); delete m_pTrack; //if (pParentTrack->GetTrackList().size() == 0 && pParentTrack->GetType() != KEP_WELL) //{//如果父道不是井,且没有子道,就删除 // CTrackGroup* pPParentTrack = (CTrackGroup*)pParentTrack->GetParent(); // pPParentTrack->RemoveTrack(pParentTrack); // delete pParentTrack; //} m_pTrack = NULL; CPoint2D point = pWellObj->GetAnchorPoint();//pWellObj->GetPos().TopLeft(); pWellObj->CalculateSize(point); if (pWellObj->IsSectionWell()) { CWellSection* pSection = (CWellSection*)pWellObj->GetParent(); pSection->ReComputeBends(pWellObj); } return 1; } void CItemWcsTrack::ReadCurveData(CTrackObj* pTrack) { CTrackCurveBase* TrackCurve = (CTrackCurveBase*)pTrack; CString strcurvename = TrackCurve->m_strTrackName; vector fields; StringVectorSet *pdatas = NULL; //CDataBinderWellCurve WellCurve; //CDataBinderWellDiscrete WellDis; //Db::CSqlStatementManager *pSqlManager = AfxGetGeo()->GetSqlStatementManager(); //if (pSqlManager->HasDB()) //{ // AfxGetApp()->BeginWaitCursor(); // CString tableng; // CString strWellName ; // if(m_pItemWell) // strWellName= m_pItemWell->GetWellObject()->GetWellName(); // // CTrackCurveObjBase* TrackCurve = (CTrackCurveObjBase*)pTrack; // if (TrackCurve->GetTrackType() == Track_Curve) // { // fields.push_back("depth"); // fields.push_back(strcurvename); // CString strSGXh; // CString strVer; // WellCurve.SetParams(strWellName,strcurvename,strSGXh,strVer,Db::LOG_CURVE); // WellCurve.AttachInput(pSqlManager); // WellCurve.ReadData(); // //pdatas = &WellCurve.GetDataSet(); // TrackCurve->BuidChildObject(WellCurve.GetCurveDepth(),WellCurve.GetCurveData(),WellCurve.GetDataNum(),TRUE); // } // else if (TrackCurve->GetTrackType() == Track_Discrete) // { // fields.push_back("depth"); // fields.push_back(strcurvename); // //CDataBinderWellDiscrete WellDis(strWellName,strcurvename); // WellDis.SetParams(strWellName,strcurvename); // WellDis.AttachInput(pSqlManager); // WellDis.ReadData(); // TrackCurve->BuidChildObject(WellDis.GetCurveDepth(),WellDis.GetCurveData(),WellDis.GetDataNum(),TRUE); // //pdatas = &WellDis.GetDataSet(); // } // AfxGetApp()->EndWaitCursor(); //} //else {//使用井缓冲的曲线数据 CTrackCurve *pTrackCurve = (CTrackCurve*)pTrack; CWellPole *pWell = pTrack->GetWell(); for(int ii = 0; ii< pWell->m_CurveDataVecs.size(); ii++) { if(strcurvename == pWell->m_CurveDataVecs[ii]->m_curve_name) { pTrackCurve->m_dataObj = *pWell->m_CurveDataVecs[ii]; pTrackCurve->m_fRlev = pTrackCurve->m_dataObj.m_rlev; pTrackCurve->CaculateStartAndEnd(pWell); break; } } } } } void CItemWcsTrack::ReadWavetraceData(CTrackObj *pTrack,CString newname) { //Db::CSqlStatementManager *pSqlManager = AfxGetGeo()->GetSqlStatementManager(); //if (pSqlManager->HasDB()) //{ // AfxGetApp()->BeginWaitCursor(); // if(pTrack->GetTrackType() == Track_VdlImage) // { // CTrackVdlImage *pTrackVdl = (CTrackVdlImage*)pTrack; // CWellObj *pWell = (CWellObj*)pTrack->GetParentObj(); // int well_id = pSqlManager->GetWellID(pWell->GetWellName()); // std::vectorfields; // std::vectorfieldsType; // fields.push_back("top"); fieldsType.push_back(DB_DATA_DOUBLE); // fields.push_back("bottom"); fieldsType.push_back(DB_DATA_DOUBLE); // fields.push_back("DepthRelv"); fieldsType.push_back(DB_DATA_DOUBLE); // fields.push_back("startTime"); fieldsType.push_back(DB_DATA_DOUBLE); // fields.push_back("endTime"); fieldsType.push_back(DB_DATA_DOUBLE); // fields.push_back("timeRelv"); fieldsType.push_back(DB_DATA_DOUBLE); // fields.push_back("dataRow"); fieldsType.push_back(DB_DATA_INT); // fields.push_back("datalen"); fieldsType.push_back(DB_DATA_INT); // fields.push_back("SaveOrder"); fieldsType.push_back(DB_DATA_INT); // fields.push_back("datatype");fieldsType.push_back(DB_DATA_STRING); // fields.push_back("depthUnit");fieldsType.push_back(DB_DATA_STRING); // fields.push_back("timeUnit");fieldsType.push_back(DB_DATA_STRING); // fields.push_back("Data"); fieldsType.push_back(DB_DATA_BINARY); // CDataBlobOne bread("well_wavetrace",fields,fieldsType); // bread.AttachInput(pSqlManager); // CString strWhere,str1,str2; // str2.Format("'%s'", pWell->GetWellName() ); // str1 = bread.GetFieldFmtStr("well_id"); // strWhere = str1 + "=" +str2; // str1 = bread.GetFieldFmtStr("name"); // str2.Format("='%s'",newname); // strWhere =strWhere +" and " + str1 + str2; // bread.SetWhereSql(strWhere); // if(bread.GetBlobOneRecord()) // { // pTrackVdl->SetNewDataInTrack(bread.GetBlobRecord()[0].data.m_dVal,bread.GetBlobRecord()[1].data.m_dVal,bread.GetBlobRecord()[2].data.m_dVal // ,bread.GetBlobRecord()[3].data.m_dVal,bread.GetBlobRecord()[4].data.m_dVal,bread.GetBlobRecord()[5].data.m_dVal // ,bread.GetBlobRecord()[6].data.m_iVal,bread.GetBlobRecord()[7].data.m_iVal,bread.GetBlobRecord()[8].data.m_iVal // ,bread.GetBlobRecord()[9].m_str,bread.GetBlobRecord()[10].m_str,bread.GetBlobRecord()[11].m_str // ,bread.GetBlobRecord()[12].GetBlob().pData,bread.GetBlobRecord()[12].GetBlob().cbSize); // pTrack->m_strTrackName = newname; // } // bread.EndBlob(); // } // AfxGetApp()->EndWaitCursor(); //} }