|
|
|
|
|
// WellPoleView.cpp: 实现文件
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
|
|
#include "stdafx.h"
|
|
|
|
|
|
|
|
|
|
|
|
#include "../../ItemBkGrid.h"
|
|
|
|
|
|
#include "../../PublicParam.h"
|
|
|
|
|
|
|
|
|
|
|
|
#include <list>
|
|
|
|
|
|
#include <algorithm>
|
|
|
|
|
|
#include "WellPoleLib/WellBaseObj.h"
|
|
|
|
|
|
#include "WellPoleLib/InTrackDepthSegment.h"
|
|
|
|
|
|
#include "WellPoleLib/TrackObj.h"
|
|
|
|
|
|
|
|
|
|
|
|
#include "WellPoleLib/InclinedTrack.h"
|
|
|
|
|
|
#include "WellPoleLib/InTrackLith.h"
|
|
|
|
|
|
#include "WellPoleLib/InTrackSymbol.h"
|
|
|
|
|
|
#include "WellPoleLib/InTrackResult.h"
|
|
|
|
|
|
#include "WellPoleLib/InTrackTextRange.h"
|
|
|
|
|
|
|
|
|
|
|
|
#include "WellPoleLib/TrackGroup.h"
|
|
|
|
|
|
#include "WellPoleLib/WellPole.h"
|
|
|
|
|
|
|
|
|
|
|
|
#include "WellPoleLib/TrackDepth.h"
|
|
|
|
|
|
#include "WellPoleLib/TrackCurve.h"
|
|
|
|
|
|
#include "WellPoleLib/TrackSymbol.h"
|
|
|
|
|
|
#include "WellPoleLib/TrackResult.h"
|
|
|
|
|
|
#include "WellPoleLib/TrackLith.h"
|
|
|
|
|
|
#include "WellPoleLib/TrackText.h"
|
|
|
|
|
|
|
|
|
|
|
|
#include "MultiWellSectionLib/SectionWellObj.h"
|
|
|
|
|
|
#include "MultiWellSectionLib/BendObj.h"
|
|
|
|
|
|
#include "MultiWellSectionLib/FaultObj.h"
|
|
|
|
|
|
#include "MultiWellSectionLib/WellSection.h"
|
|
|
|
|
|
#include "ItemWcsTrackIn.h"
|
|
|
|
|
|
#include "ItemWcsSingleWell.h"
|
|
|
|
|
|
#include "ItemSectionWell.h"
|
|
|
|
|
|
#include "ItemAddBend.h"
|
|
|
|
|
|
#include "ItemAddFault.h"
|
|
|
|
|
|
#include "ItemBend.h"
|
|
|
|
|
|
#include "ItemFault.h"
|
|
|
|
|
|
#include "ItemWcsTrack.h"
|
|
|
|
|
|
#include "ItemWcsTrackIn.h"
|
|
|
|
|
|
#include "MultiWellSectionDoc.h"
|
|
|
|
|
|
#include "MultiWellSectionlView.h"
|
|
|
|
|
|
#include "DrawOperator/LibraryManager.h"
|
|
|
|
|
|
//定时ID号(OnTimer)
|
|
|
|
|
|
|
|
|
|
|
|
// WellPoleView
|
|
|
|
|
|
//CLIPFORMAT CMultiWellSectionView::m_clipboardDraw = (CLIPFORMAT)::RegisterClipboardFormat(_T("SSDrawerClipboard"));
|
|
|
|
|
|
//CLIPFORMAT CMultiWellSectionView::m_cfObjectDescriptor = NULL;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CMultiWellSectionView::CMultiWellSectionView()
|
|
|
|
|
|
{
|
|
|
|
|
|
Initialize();
|
|
|
|
|
|
InitSelectBmpDC();
|
|
|
|
|
|
m_bTracking = false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CMultiWellSectionView::CMultiWellSectionView(CXy* pXy)
|
|
|
|
|
|
:CMultiWellSectionView()
|
|
|
|
|
|
{
|
|
|
|
|
|
InitSelectBmpDC();
|
|
|
|
|
|
m_bTracking = false;
|
|
|
|
|
|
m_pDoc->m_pXy = pXy;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
CMultiWellSectionView::~CMultiWellSectionView()
|
|
|
|
|
|
{
|
|
|
|
|
|
DeleteSelectBmpDC();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::Initialize()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (m_pDoc)
|
|
|
|
|
|
delete m_pDoc;
|
|
|
|
|
|
|
|
|
|
|
|
m_pDoc = new CMultiWellSectionDoc();
|
|
|
|
|
|
m_pDoc->SetView(this);
|
|
|
|
|
|
m_pItemBkGrid->SetDoc(m_pDoc);
|
|
|
|
|
|
|
|
|
|
|
|
m_bFirstSize = TRUE;
|
|
|
|
|
|
m_pWndCallBack = NULL;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// WellPoleView 绘图
|
|
|
|
|
|
void CMultiWellSectionView::SetLastRightButtonPoint(const CPoint& point)
|
|
|
|
|
|
{
|
|
|
|
|
|
CSigmaView::SetLastRightButtonPoint(point);
|
|
|
|
|
|
m_PrevPointXY = point;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::OnDrawAllAfter(CXyDC& dc)
|
|
|
|
|
|
{
|
|
|
|
|
|
CSigmaView::OnDrawAllAfter(dc);
|
|
|
|
|
|
}
|
|
|
|
|
|
// WellPoleView 诊断
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::OnSize(UINT nType, int cx, int cy)
|
|
|
|
|
|
{;
|
|
|
|
|
|
if (cx < 1 || cy < 1)
|
|
|
|
|
|
return;
|
|
|
|
|
|
//CreateSelectBmpDC(cx, cy);
|
|
|
|
|
|
if (m_bFirstSize)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_bFirstSize = FALSE;
|
|
|
|
|
|
}
|
|
|
|
|
|
m_pDoc->Invalidate();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
CMultiWellSectionDoc* CMultiWellSectionView::GetDocument() const
|
|
|
|
|
|
{
|
|
|
|
|
|
return (CMultiWellSectionDoc*)m_pDoc;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
BOOL CMultiWellSectionView::IsViewState()
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc *pDoc = (CMultiWellSectionDoc*)m_pDoc;
|
|
|
|
|
|
if (pDoc->GetItemView()->GetType() != 0 /*|| ::IsKeyDown(GetPanKey())*/)
|
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::OnLButtonDown(int mouseX, int mouseY, HDC hdc, int vk)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (IsViewState())
|
|
|
|
|
|
{
|
|
|
|
|
|
//int typeBak = pDoc->GetItemView().GetType();
|
|
|
|
|
|
//if (::IsKeyDown(GetPanKey())) pDoc->GetItemView().SetType(ID_VIEW_PAN);
|
|
|
|
|
|
CMultiWellSectionDoc *pWDoc = (CMultiWellSectionDoc *)m_pDoc;
|
|
|
|
|
|
|
|
|
|
|
|
CDC *pDC = CDC::FromHandle(hdc);
|
|
|
|
|
|
SetScreenDC(pDC);
|
|
|
|
|
|
CPoint pt;
|
|
|
|
|
|
pt.x = mouseX;
|
|
|
|
|
|
pt.y = mouseY;
|
|
|
|
|
|
int nFlags = 0;
|
|
|
|
|
|
pWDoc->GetItemView()->OnLButtonDown(pDC, 0, pt, vk);
|
|
|
|
|
|
//if (::IsKeyDown(GetPanKey())) pDoc->GetItemView().SetType(typeBak);
|
|
|
|
|
|
m_PrevPointXY.x = mouseX;
|
|
|
|
|
|
m_PrevPointXY.y = mouseY;
|
|
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
CSigmaView::OnLButtonDown(mouseX, mouseY, hdc, vk);
|
|
|
|
|
|
|
|
|
|
|
|
m_PrevPointXY.x = mouseX;
|
|
|
|
|
|
m_PrevPointXY.y = mouseY;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::OnLButtonDownOther(int mouseX, int mouseY, HDC hdc, int vk)
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
|
|
|
|
|
|
if (pDoc->GetItem())
|
|
|
|
|
|
{
|
|
|
|
|
|
CItem* pItem = pDoc->GetItem();
|
|
|
|
|
|
|
|
|
|
|
|
pItem->m_client = m_client;
|
|
|
|
|
|
CPoint pt;
|
|
|
|
|
|
pt.x = mouseX;
|
|
|
|
|
|
pt.y = mouseY;
|
|
|
|
|
|
|
|
|
|
|
|
CItem* pOldItem = pDoc->GetItem();
|
|
|
|
|
|
|
|
|
|
|
|
CDC *pDC = NULL;
|
|
|
|
|
|
if (hdc != NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
pDC = CDC::FromHandle(hdc);
|
|
|
|
|
|
pItem->SetScreenDC(pDC);
|
|
|
|
|
|
pItem->SetBackGroundDC(m_pImgDC);
|
|
|
|
|
|
}
|
|
|
|
|
|
if (pDC == NULL)
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
CPoint2D ptReal = pDoc->GetDC().GetReal(pt);
|
|
|
|
|
|
CRect8 rectReal = pDoc->GetSelectedRect(ptReal);
|
|
|
|
|
|
BOOL bIn = FALSE;
|
|
|
|
|
|
CPtrList* pList = pDoc->GetDraw()->GetValueList();
|
|
|
|
|
|
////对象链表
|
|
|
|
|
|
pList = pDoc->GetDraw()->GetValueList();
|
|
|
|
|
|
POSITION pos = pList->GetHeadPosition();
|
|
|
|
|
|
while (NULL != pos)
|
|
|
|
|
|
{
|
|
|
|
|
|
COne* pOne = (COne*)pList->GetAt(pos);
|
|
|
|
|
|
|
|
|
|
|
|
if (pOne->GetType() != KEP_WELLSECTION)
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
bIn = pOne->IsInRange(rectReal);
|
|
|
|
|
|
if (bIn)
|
|
|
|
|
|
{
|
|
|
|
|
|
if ((pItem->GetType() != ITEM_SELECT && !pItem->IsNestItem()) || (pItem->GetType() == KEP_WELLSECTION && pItem->IsNestItem()))
|
|
|
|
|
|
{
|
|
|
|
|
|
m_pWndCallBack(tSetItemForElement, vSetSelectItem);
|
|
|
|
|
|
}
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
pList->GetNext(pos);
|
|
|
|
|
|
}
|
|
|
|
|
|
BOOL bInSection = FALSE;
|
|
|
|
|
|
if (!bIn)
|
|
|
|
|
|
{
|
|
|
|
|
|
pos = pList->GetHeadPosition();
|
|
|
|
|
|
while (NULL != pos)
|
|
|
|
|
|
{
|
|
|
|
|
|
COne* pOne = (COne*)pList->GetAt(pos);
|
|
|
|
|
|
if (pOne->GetType() == KEP_WELLSECTION)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (pOne->IsInRange(rectReal))
|
|
|
|
|
|
{
|
|
|
|
|
|
bInSection = TRUE;
|
|
|
|
|
|
|
|
|
|
|
|
if (pItem->GetType() != ITEM_WELLSECTION)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection* pItemWellSection = new CItemWellSection(GetDocument());
|
|
|
|
|
|
pItemWellSection->SetPos(pos);
|
|
|
|
|
|
//pItemWellSection->SetDrawObj((CWellBaseObj*)pOne->GetValue());
|
|
|
|
|
|
pDoc->SetItem(pItemWellSection);
|
|
|
|
|
|
}
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
pList->GetNext(pos);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (!bInSection)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (pItem->GetType() == ITEM_WELLSECTION /*&& pItem->IsInEdit()*/)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection *pItemSection = (CItemWellSection *)pItem;
|
|
|
|
|
|
BOOL bSet = TRUE;
|
|
|
|
|
|
if (pItemSection->GetItem() != NULL && pItemSection->GetItem()->GetType() == ITEM_ADDFAULT)
|
|
|
|
|
|
bSet = FALSE;
|
|
|
|
|
|
if (bSet)
|
|
|
|
|
|
pDoc->SetItem(pDoc->FindItem(ITEM_SELECT));
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (pDoc->GetItem() != pOldItem && pDoc->GetItem()->GetType() != ITEM_WELLSECTION)
|
|
|
|
|
|
pDoc->Invalidate();
|
|
|
|
|
|
}
|
|
|
|
|
|
//else if (pDoc->GetOtherItem())
|
|
|
|
|
|
// pDoc->GetOtherItem()->OnLButtonDown(nFlags, point);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int CMultiWellSectionView::OnMouseMove(HDC hMemDC, int mouseX, int mouseY, int buttonStatus)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!m_bTracking)
|
|
|
|
|
|
{
|
|
|
|
|
|
TRACKMOUSEEVENT tme;
|
|
|
|
|
|
tme.cbSize = sizeof(tme);
|
|
|
|
|
|
tme.hwndTrack = GetHWND();
|
|
|
|
|
|
tme.dwFlags = TME_LEAVE | TME_HOVER;
|
|
|
|
|
|
tme.dwHoverTime = 1;
|
|
|
|
|
|
m_bTracking = _TrackMouseEvent(&tme);
|
|
|
|
|
|
}
|
|
|
|
|
|
if (IsViewState())
|
|
|
|
|
|
{
|
|
|
|
|
|
//int typeBak = pDoc->GetItemView().GetType();
|
|
|
|
|
|
//if (::IsKeyDown(GetPanKey())) pDoc->GetItemView().SetType(ID_VIEW_PAN);
|
|
|
|
|
|
CMultiWellSectionDoc *pWDoc = (CMultiWellSectionDoc *)m_pDoc;
|
|
|
|
|
|
|
|
|
|
|
|
CDC *pDC = CDC::FromHandle(hMemDC);
|
|
|
|
|
|
SetScreenDC(pDC);
|
|
|
|
|
|
CPoint pt;
|
|
|
|
|
|
pt.x = mouseX;
|
|
|
|
|
|
pt.y = mouseY;
|
|
|
|
|
|
int nFlags = 0;
|
|
|
|
|
|
pWDoc->GetItemView()->OnMouseMove(pDC, nFlags, pt);
|
|
|
|
|
|
|
|
|
|
|
|
//if (::IsKeyDown(GetPanKey())) pDoc->GetItemView().SetType(typeBak);
|
|
|
|
|
|
return 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return CSigmaView::OnMouseMove(hMemDC, mouseX, mouseY, buttonStatus);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::OnMouseWheelOther(UINT nFlags, short zDelta, CPoint pt)
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
if (pDoc->GetSelectItem())
|
|
|
|
|
|
pDoc->GetSelectItem()->ReloadTrackerPath();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CMenu* CMultiWellSectionView::ExtendPopupMenu(CItem* pItem, CMenu* pMenu)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (pMenu == NULL) return NULL;
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
|
|
|
|
|
|
CMenu* pPopup = pMenu->GetSubMenu(3);
|
|
|
|
|
|
if (pItem == NULL) return pPopup;
|
|
|
|
|
|
|
|
|
|
|
|
int sub = pItem->GetSubMenu();
|
|
|
|
|
|
if (sub >= 0)
|
|
|
|
|
|
pPopup = pMenu->GetSubMenu(sub);
|
|
|
|
|
|
else if (pItem->GetType() == ITEM_SELECT &&
|
|
|
|
|
|
GetSelection()->GetCount() == 1 &&
|
|
|
|
|
|
pPopup != NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
//在缺省菜单[编辑]项之前增加扩展菜单
|
|
|
|
|
|
int index = FindMenuItem(pPopup, ID_EDIT_TOOL);
|
|
|
|
|
|
CPositionList *plist = GetSelection();
|
|
|
|
|
|
POSITION pos = plist->GetHead();
|
|
|
|
|
|
if (pos && index >= 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
COne* pOne = (COne*)pDoc->GetDraw()->GetAt(pos);
|
|
|
|
|
|
CMenu* psub = NULL;
|
|
|
|
|
|
CString strTitle;
|
|
|
|
|
|
switch (pOne->GetType())
|
|
|
|
|
|
{
|
|
|
|
|
|
case DOUBLEFOX_WMF:
|
|
|
|
|
|
psub = pMenu->GetSubMenu(17);
|
|
|
|
|
|
strTitle.LoadString(IDS_STRING_META_FILE);
|
|
|
|
|
|
break;
|
|
|
|
|
|
case DOUBLEFOX_IMAGE: //图像自动矢量化
|
|
|
|
|
|
psub = pMenu->GetSubMenu(1);
|
|
|
|
|
|
strTitle.LoadString(IDS_STRING_IMAGE_TRACE);
|
|
|
|
|
|
break;
|
|
|
|
|
|
case DOUBLEFOX_NET: //根据经纬网生成直角网及边框
|
|
|
|
|
|
psub = pMenu->GetSubMenu(7);
|
|
|
|
|
|
strTitle.LoadString(IDS_STRING_CREATE_WITH_NET);
|
|
|
|
|
|
break;
|
|
|
|
|
|
case DOUBLEFOX_SCALERULER:
|
|
|
|
|
|
psub = pMenu->GetSubMenu(20);
|
|
|
|
|
|
strTitle.LoadString(IDS_STRING_DISSOLUTION_ELEMENT);
|
|
|
|
|
|
break;
|
|
|
|
|
|
case DOUBLEFOX_GRID: //根据直角网生成经纬网及边框
|
|
|
|
|
|
psub = pMenu->GetSubMenu(8);
|
|
|
|
|
|
strTitle.LoadString(IDS_STRING_CREATE_WITH_GRID);
|
|
|
|
|
|
break;
|
|
|
|
|
|
case DOUBLEFOX_OLE:
|
|
|
|
|
|
psub = pMenu->GetSubMenu(9);
|
|
|
|
|
|
strTitle.LoadString(IDS_STRING_OLE_LINK);
|
|
|
|
|
|
strTitle += _T("(&L)"); //加上快捷键
|
|
|
|
|
|
break;
|
|
|
|
|
|
case DOUBLEFOX_INSERT:
|
|
|
|
|
|
case DOUBLEFOX_DRAW:
|
|
|
|
|
|
psub = pMenu->GetSubMenu(10);
|
|
|
|
|
|
strTitle.LoadString(IDS_SELECT_ELEMENT);
|
|
|
|
|
|
strTitle += _T("(&L)"); //加上快捷键
|
|
|
|
|
|
break;
|
|
|
|
|
|
case DOUBLEFOX_MESH:
|
|
|
|
|
|
psub = pMenu->GetSubMenu(11);
|
|
|
|
|
|
strTitle.LoadString(IDS_STRING_MESH_TITLE);
|
|
|
|
|
|
break;
|
|
|
|
|
|
case DOUBLEFOX_SECTION:
|
|
|
|
|
|
psub = pMenu->GetSubMenu(15);
|
|
|
|
|
|
strTitle.LoadString(IDS_GI_SECTION);
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (psub)
|
|
|
|
|
|
{
|
|
|
|
|
|
pPopup->InsertMenu(index, MF_BYPOSITION | MF_SEPARATOR);
|
|
|
|
|
|
pPopup->InsertMenu(index, MF_BYPOSITION | MF_POPUP, (UINT_PTR)psub->GetSafeHmenu(), strTitle);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (pItem->GetType() == ITEM_SELECT &&
|
|
|
|
|
|
GetSelection()->GetCount() == 2 &&
|
|
|
|
|
|
pPopup != NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
int index = FindMenuItem(pPopup, ID_EDIT_TOOL);
|
|
|
|
|
|
CPositionList *plist = GetSelection();
|
|
|
|
|
|
int n = plist->GetCount();
|
|
|
|
|
|
POSITION pos = plist->GetHead();
|
|
|
|
|
|
COne* pOne1 = (COne*)pDoc->GetDraw()->GetAt(pos);
|
|
|
|
|
|
plist->GetNext(pos);
|
|
|
|
|
|
COne* pOne2 = (COne*)pDoc->GetDraw()->GetAt(pos);
|
|
|
|
|
|
//if (pOne1->GetType() == DOUBLEFOX_WELL && pOne2->GetType() == DOUBLEFOX_WELL)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// MENUITEMINFO item;
|
|
|
|
|
|
// item.fMask = MIIM_ID | MIIM_STRING;
|
|
|
|
|
|
// item.fType = MFT_STRING;
|
|
|
|
|
|
// item.fState = MFS_ENABLED;
|
|
|
|
|
|
// item.wID = ID_WELL_STRATUM_CONNECTION;
|
|
|
|
|
|
// item.hSubMenu = NULL;
|
|
|
|
|
|
// item.hbmpChecked = NULL;
|
|
|
|
|
|
// item.hbmpUnchecked = NULL;
|
|
|
|
|
|
// item.dwTypeData = _T("生成地层连线");
|
|
|
|
|
|
// item.cch = strlen(_T("生成地层连线"));
|
|
|
|
|
|
// item.cbSize = sizeof(item);
|
|
|
|
|
|
// pPopup->InsertMenuItem(0, &item, TRUE);
|
|
|
|
|
|
//}
|
|
|
|
|
|
}
|
|
|
|
|
|
return pPopup;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
CPositionList* CMultiWellSectionView::GetSelection(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
if (pDoc->GetItem() == NULL) return NULL;
|
|
|
|
|
|
if (pDoc->GetItem()->GetType() != ITEM_SELECT) return NULL;
|
|
|
|
|
|
return &(((CItemSelect*)pDoc->GetItem())->m_selection);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int CMultiWellSectionView::FindMenuItem(CMenu* Menu, LPCTSTR MenuString)
|
|
|
|
|
|
{
|
|
|
|
|
|
ASSERT(Menu);
|
|
|
|
|
|
ASSERT(::IsMenu(Menu->GetSafeHmenu()));
|
|
|
|
|
|
|
|
|
|
|
|
int count = Menu->GetMenuItemCount();
|
|
|
|
|
|
for (int i = 0; i < count; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
CString str;
|
|
|
|
|
|
if (Menu->GetMenuString(i, str, MF_BYPOSITION) &&
|
|
|
|
|
|
(strcmp(str, MenuString) == 0))
|
|
|
|
|
|
return i;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return -1;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// FindMenuItem() will find a menu item ID from the specified
|
|
|
|
|
|
// popup menu and returns its position (0-based) in the specified
|
|
|
|
|
|
// popup menu. It returns -1 if no such menu item ID is found.
|
|
|
|
|
|
int CMultiWellSectionView::FindMenuItem(CMenu* Menu, UINT nID)
|
|
|
|
|
|
{
|
|
|
|
|
|
ASSERT(Menu);
|
|
|
|
|
|
ASSERT(::IsMenu(Menu->GetSafeHmenu()));
|
|
|
|
|
|
|
|
|
|
|
|
int count = Menu->GetMenuItemCount();
|
|
|
|
|
|
for (int i = 0; i < count; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (Menu->GetMenuItemID(i) == nID)
|
|
|
|
|
|
return i;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return -1;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::ExtendViewForNewWell(CWellPole* pWell)
|
|
|
|
|
|
{
|
|
|
|
|
|
CRect8 rect;
|
|
|
|
|
|
GetDocument()->GetDrawRange(rect);
|
|
|
|
|
|
|
|
|
|
|
|
CRect window;
|
|
|
|
|
|
window = GetClientRect();
|
|
|
|
|
|
if (window.Width() < 100)
|
|
|
|
|
|
window.SetRect(0, 0, 640, 480);
|
|
|
|
|
|
GetDocument()->GetDC().Extend(rect, window, EXTEND_MODE_WIDTH);
|
|
|
|
|
|
GetDocument()->Invalidate();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::OnAddWellTrack()
|
|
|
|
|
|
{
|
|
|
|
|
|
CItem *pItem = GetDocument()->GetItem();
|
|
|
|
|
|
if (NULL == pItem)
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
CItemWcsSingleWell *pItemWell = NULL;
|
|
|
|
|
|
if (pItem->GetType() == ITEM_WELLSECTION || pItem->GetType() == ITEM_WELLFENCE)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection* pItemWellSection = (CItemWellSection*)pItem;
|
|
|
|
|
|
if (pItemWellSection->GetItem() != NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
pItemWell = (CItemSectionWell *)(pItemWellSection->GetItem());
|
|
|
|
|
|
pItemWell->AddTrack();
|
|
|
|
|
|
|
|
|
|
|
|
CWellPole* pWell = (CWellPole*)pItemWell->GetWellObject();
|
|
|
|
|
|
CWellSection* pSection = (CWellSection*)pItemWellSection->GetWellSection();
|
|
|
|
|
|
pSection->ReComputeBends(pWell);
|
|
|
|
|
|
pSection->ReSetPosition();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::InitSelectBmpDC()
|
|
|
|
|
|
{
|
|
|
|
|
|
m_bSelectCreateDC = FALSE;
|
|
|
|
|
|
m_pSelectBmp = NULL;
|
|
|
|
|
|
m_ViewSelW = 8;
|
|
|
|
|
|
m_ViewSelH = 8;
|
|
|
|
|
|
}
|
|
|
|
|
|
void CMultiWellSectionView::CreateSelectBmpDC(int ww, int hh)
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
CDC *pDC = this->m_pImgDC; //GetDC()->GetDC(); //CWnd::GetDC();
|
|
|
|
|
|
if (pDC == NULL)
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
m_ViewSelH = hh;
|
|
|
|
|
|
m_ViewSelW = ww;
|
|
|
|
|
|
|
|
|
|
|
|
if (m_ViewSelW < 8)
|
|
|
|
|
|
m_ViewSelW = 8;
|
|
|
|
|
|
if (m_ViewSelH < 8)
|
|
|
|
|
|
m_ViewSelH = 8;
|
|
|
|
|
|
|
|
|
|
|
|
if (m_bSelectCreateDC)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_SelectDC.SelectObject(m_pSelectBmp);
|
|
|
|
|
|
m_SelectBmp.DeleteObject();
|
|
|
|
|
|
m_SelectBmp.CreateCompatibleBitmap(pDC, m_ViewSelW, m_ViewSelH);
|
|
|
|
|
|
m_pSelectBmp = m_SelectDC.SelectObject(&m_SelectBmp);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
m_SelectDC.CreateCompatibleDC(pDC);
|
|
|
|
|
|
m_SelectBmp.CreateCompatibleBitmap(pDC, m_ViewSelW, m_ViewSelH);
|
|
|
|
|
|
m_pSelectBmp = m_SelectDC.SelectObject(&m_SelectBmp);
|
|
|
|
|
|
|
|
|
|
|
|
m_bSelectCreateDC = TRUE;
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
void CMultiWellSectionView::DeleteSelectBmpDC()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (m_pSelectBmp)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_SelectDC.SelectObject(m_pSelectBmp);
|
|
|
|
|
|
m_SelectBmp.DeleteObject();
|
|
|
|
|
|
m_SelectDC.DeleteDC();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::BeginSelectBmpDC()
|
|
|
|
|
|
{
|
|
|
|
|
|
CBrush bru;
|
|
|
|
|
|
bru.CreateSolidBrush(RGB(255, 255, 255));
|
|
|
|
|
|
m_SelectDC.SetMapMode(MM_TEXT);
|
|
|
|
|
|
m_SelectDC.SetWindowOrg(0, 0);
|
|
|
|
|
|
m_SelectDC.SetViewportOrg(0, 0);
|
|
|
|
|
|
m_SelectDC.SetBrushOrg(0, 0);
|
|
|
|
|
|
m_SelectDC.FillRect(CRect(0, 0, m_ViewSelW, m_ViewSelH), &bru);
|
|
|
|
|
|
|
|
|
|
|
|
bru.DeleteObject();
|
|
|
|
|
|
|
|
|
|
|
|
//CMapWnd2D::PrepareDC(&m_SelectDC);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::EndItemSelectBmpDC(CDC *pDC)
|
|
|
|
|
|
{
|
|
|
|
|
|
CDC* tdc = this->m_pImgDC;
|
|
|
|
|
|
if (pDC == NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
pDC = tdc; // &dc;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//GetMemDC()->SetMapMode(MM_TEXT);
|
|
|
|
|
|
//GetMemDC()->SetViewportOrg(0, 0);
|
|
|
|
|
|
//GetMemDC()->SetWindowOrg(0, 0);
|
|
|
|
|
|
//CRect client;
|
|
|
|
|
|
////pDC->GetClipBox(client);
|
|
|
|
|
|
//client = this->GetClientRect();
|
|
|
|
|
|
//pDC->BitBlt(client.left, client.top, client.Width(), client.Height(), GetMemDC(), 0, 0, SRCCOPY);
|
|
|
|
|
|
|
|
|
|
|
|
EndSelectBmpDC(pDC);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::EndSelectBmpDC(CDC *pDC)
|
|
|
|
|
|
{
|
|
|
|
|
|
pDC->SetMapMode(MM_TEXT);
|
|
|
|
|
|
pDC->SetWindowOrg(0, 0);
|
|
|
|
|
|
pDC->SetViewportOrg(0, 0);
|
|
|
|
|
|
pDC->SetBrushOrg(0, 0);
|
|
|
|
|
|
|
|
|
|
|
|
m_SelectDC.SetMapMode(MM_TEXT);
|
|
|
|
|
|
m_SelectDC.SetWindowOrg(0, 0);
|
|
|
|
|
|
m_SelectDC.SetViewportOrg(0, 0);
|
|
|
|
|
|
m_SelectDC.SetBrushOrg(0, 0);
|
|
|
|
|
|
|
|
|
|
|
|
pDC->BitBlt(0, 0, m_ViewSelW, m_ViewSelH, &m_SelectDC, 0, 0, SRCAND);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::OnEditDelete()
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
if (pDoc->GetSelectItem())
|
|
|
|
|
|
pDoc->GetSelectItem()->DeleteSelection();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::OnTrackLeftGroup()
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
|
|
|
|
|
|
CItem *pItem = pDoc->GetItem();
|
|
|
|
|
|
if (NULL == pItem)
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
CItemWcsSingleWell *pItemWell = NULL;
|
|
|
|
|
|
if (pItem->GetType() == ITEM_WELLSECTION || pItem->GetType() == ITEM_WELLFENCE)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection* pItemWellSection = (CItemWellSection*)pItem;
|
|
|
|
|
|
if (pItemWellSection->GetItem() != NULL)
|
|
|
|
|
|
pItemWell = (CItemSectionWell *)(pItemWellSection->GetItem());
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (pItemWell == NULL)
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
pItemWell->TrackLeftGroup();
|
|
|
|
|
|
m_pDoc->Invalidate();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::OnTrackRightGroup()
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
|
|
|
|
|
|
CItem *pItem = pDoc->GetItem();
|
|
|
|
|
|
if (NULL == pItem)
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
CItemWcsSingleWell *pItemWell = NULL;
|
|
|
|
|
|
if (pItem->GetType() == ITEM_WELLSECTION || pItem->GetType() == ITEM_WELLFENCE)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection* pItemWellSection = (CItemWellSection*)pItem;
|
|
|
|
|
|
if (pItemWellSection->GetItem() != NULL)
|
|
|
|
|
|
pItemWell = (CItemSectionWell *)(pItemWellSection->GetItem());
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (pItemWell == NULL)
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
pItemWell->TrackRightGroup();
|
|
|
|
|
|
m_pDoc->Invalidate();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::OnAddTrackAfterSelected()
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
CItem *pItem = pDoc->GetItem();
|
|
|
|
|
|
if (NULL == pItem)
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
CItemWcsSingleWell *pItemWell = NULL;
|
|
|
|
|
|
if (pItem->GetType() == ITEM_WELLSECTION || pItem->GetType() == ITEM_WELLFENCE)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection* pItemWellSection = (CItemWellSection*)pItem;
|
|
|
|
|
|
if (pItemWellSection->GetItem() != NULL)
|
|
|
|
|
|
pItemWell = (CItemSectionWell *)(pItemWellSection->GetItem());
|
|
|
|
|
|
|
|
|
|
|
|
if (pItemWell->AddTrackAfterSelected())
|
|
|
|
|
|
{
|
|
|
|
|
|
CWellPole* pWell = (CWellPole*)pItemWell->GetWellObject();
|
|
|
|
|
|
CWellSection* pSection = (CWellSection*)pItemWellSection->GetWellSection();
|
|
|
|
|
|
pSection->ReComputeBends(pWell);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::OnViewTrackData()
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = (CMultiWellSectionDoc*)(GetDocument());
|
|
|
|
|
|
CItem *pItem = pDoc->GetItem();
|
|
|
|
|
|
if (NULL == pItem)
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
CItemWcsSingleWell *pItemWell = NULL;
|
|
|
|
|
|
if (pItem->GetType() == ITEM_WELLSECTION || pItem->GetType() == ITEM_WELLFENCE)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection* pItemWellSection = (CItemWellSection*)pItem;
|
|
|
|
|
|
if (pItemWellSection->GetItem() != NULL)
|
|
|
|
|
|
pItemWell = (CItemSectionWell *)(pItemWellSection->GetItem());
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (pItemWell != NULL)
|
|
|
|
|
|
pItemWell->AddTrackInObjData();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::OnViewExtend()
|
|
|
|
|
|
{
|
|
|
|
|
|
//CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
//pDoc->GetItemView().Extend(EXTEND_MODE_DEFAULT);
|
|
|
|
|
|
//pDoc->InvalidateAttachView(); //是否进行绑定更新其它视图
|
|
|
|
|
|
OnViewExtendCenter();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::OnViewExtendCenter()
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
pDoc->GetItemView()->Extend(EXTEND_MODE_CENTER);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::OnViewExtendHeight()
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
pDoc->GetItemView()->Extend(EXTEND_MODE_HEIGHT);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::OnViewExtendWidth()
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
pDoc->GetItemView()->Extend(EXTEND_MODE_WIDTH);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::SetScrollBarRange(void)
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
BOOL CMultiWellSectionView::MouseWheel(UINT nFlags, short zDelta, CPoint pt)
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
|
|
|
|
|
|
CPoint offsetpt = CPoint(0, 0);
|
|
|
|
|
|
switch (nFlags)
|
|
|
|
|
|
{
|
|
|
|
|
|
case 0:
|
|
|
|
|
|
//上下移动图件
|
|
|
|
|
|
MouseWheelV(nFlags, zDelta, pt);
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 1:
|
|
|
|
|
|
//左右移动图件
|
|
|
|
|
|
{
|
|
|
|
|
|
if (fabs(zDelta) > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
int pp = 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
MouseWheelH(nFlags, zDelta, pt);
|
|
|
|
|
|
}
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
BOOL CMultiWellSectionView::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (pDoc->GetDraw() == NULL || pDoc->GetDraw()->GetCount() == 0)
|
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
|
|
|
|
|
|
return MouseWheel(nFlags, zDelta, pt);
|
|
|
|
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BOOL CMultiWellSectionView::MouseWheelH(UINT nFlags, short zDelta, CPoint pt)
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
CXyDC* pdc = &pDoc->GetDC();
|
|
|
|
|
|
CRect crt;
|
|
|
|
|
|
crt = GetClientRect();
|
|
|
|
|
|
CRect8 rcScreenReal = pdc->GetReal(crt);
|
|
|
|
|
|
rcScreenReal.NormalizeRect();
|
|
|
|
|
|
|
|
|
|
|
|
CRect8 range;
|
|
|
|
|
|
pDoc->GetDrawRange(range);
|
|
|
|
|
|
|
|
|
|
|
|
double OneLine = pdc->GetRealWidth((long)zDelta); //一行的实际单位数
|
|
|
|
|
|
|
|
|
|
|
|
if (range.Width() < rcScreenReal.Width())
|
|
|
|
|
|
{//当图的范围小于屏幕范围时,(这时图的左侧或右侧,移动时不要超过屏幕的左右侧范围)
|
|
|
|
|
|
|
|
|
|
|
|
if (OneLine < 0)
|
|
|
|
|
|
{//往左滚动
|
|
|
|
|
|
if ((range.left + OneLine) < rcScreenReal.left)
|
|
|
|
|
|
{
|
|
|
|
|
|
OneLine = range.left - rcScreenReal.left;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (OneLine >= 0)
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
pdc->OffsetRect(-OneLine, 0);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
if ((range.right + OneLine) > rcScreenReal.right)
|
|
|
|
|
|
{
|
|
|
|
|
|
OneLine = rcScreenReal.right - range.right;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (OneLine <= 0)
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
|
|
|
|
|
|
pdc->OffsetRect(-OneLine, 0);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{/*当图的范围大于屏幕范围时,(这时如果向右侧移动时,当图的左侧进入屏幕的左侧范围,就可以停止移动,
|
|
|
|
|
|
如果向左侧移动,图的右侧范围进入屏幕的右侧,就可以停止移动)*/
|
|
|
|
|
|
if (OneLine < 0)
|
|
|
|
|
|
{//往左滚动
|
|
|
|
|
|
if ((range.right + OneLine) < rcScreenReal.right)
|
|
|
|
|
|
{
|
|
|
|
|
|
OneLine = 0;// range.left - rcScreenReal.left;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (OneLine >= 0)
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
pdc->OffsetRect(-OneLine, 0);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
if ((range.left + OneLine) > rcScreenReal.left)
|
|
|
|
|
|
{
|
|
|
|
|
|
OneLine = 0;// rcScreenReal.right - range.right;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (OneLine <= 0)
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
|
|
|
|
|
|
pdc->OffsetRect(-OneLine, 0);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int offset = pdc->GetScreenWidth(OneLine);
|
|
|
|
|
|
|
|
|
|
|
|
if (offset != 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
//ScrollWindow(offset, 0);
|
|
|
|
|
|
m_pDoc->Invalidate();
|
|
|
|
|
|
OnMouseWheelOther(nFlags, zDelta, pt);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
BOOL CMultiWellSectionView::MouseWheelV(UINT nFlags, short zDelta, CPoint pt)
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
CXyDC* pdc = &pDoc->GetDC();
|
|
|
|
|
|
CRect crt;
|
|
|
|
|
|
crt = GetClientRect();
|
|
|
|
|
|
CRect8 rcScreenReal = pdc->GetReal(crt);
|
|
|
|
|
|
rcScreenReal.NormalizeRect();
|
|
|
|
|
|
|
|
|
|
|
|
double OneLine = pdc->GetRealHeight((long)zDelta/*ol*/); //一行的实际单位数
|
|
|
|
|
|
|
|
|
|
|
|
CRect8 range;
|
|
|
|
|
|
pDoc->GetDrawRange(range);
|
|
|
|
|
|
|
|
|
|
|
|
if (range.Height() > rcScreenReal.Height())
|
|
|
|
|
|
{//图的显示范围大于屏幕
|
|
|
|
|
|
if (OneLine < 0)
|
|
|
|
|
|
{//显示井柱往上部分
|
|
|
|
|
|
if (rcScreenReal.top - OneLine >= range.top)
|
|
|
|
|
|
OneLine = rcScreenReal.top - range.top;
|
|
|
|
|
|
|
|
|
|
|
|
if (OneLine >= 0)
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
|
|
|
|
|
|
pdc->OffsetRect(0, -OneLine);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
if (rcScreenReal.bottom - OneLine <= range.bottom)
|
|
|
|
|
|
OneLine = rcScreenReal.bottom - range.bottom;
|
|
|
|
|
|
|
|
|
|
|
|
if (OneLine <= 0)
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
|
|
|
|
|
|
pdc->OffsetRect(0, -OneLine);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{ //图形小于屏幕
|
|
|
|
|
|
if (OneLine < 0)
|
|
|
|
|
|
{//显示井柱往上部分 ,图的底部不低于屏幕的底部
|
|
|
|
|
|
if ((range.bottom + OneLine) < rcScreenReal.bottom)
|
|
|
|
|
|
OneLine = rcScreenReal.bottom - range.bottom;
|
|
|
|
|
|
if (OneLine >= 0)
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
pdc->OffsetRect(0, -OneLine);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{//图的顶部不高于屏幕的顶部
|
|
|
|
|
|
if ((range.top + OneLine) > rcScreenReal.top)
|
|
|
|
|
|
OneLine = rcScreenReal.top - range.top;
|
|
|
|
|
|
if (OneLine <= 0)
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
pdc->OffsetRect(0, -OneLine);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
int offset = pdc->GetScreenHeight(OneLine);
|
|
|
|
|
|
|
|
|
|
|
|
if (offset != 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
pDoc->Invalidate();
|
|
|
|
|
|
OnMouseWheelOther(nFlags, zDelta, pt);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::OnViewPan()
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
CItemView* pItem = pDoc->GetItemView();
|
|
|
|
|
|
if (pItem == NULL)
|
|
|
|
|
|
return;
|
|
|
|
|
|
if (pItem->GetType() == ID_VIEW_PAN_WELL || pItem->GetType() == ID_VIEW_PAN)
|
|
|
|
|
|
{
|
|
|
|
|
|
pItem->SetType(0);
|
|
|
|
|
|
pDoc->SetDefaultCursor();
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
pItem->SetType(ID_VIEW_PAN);
|
|
|
|
|
|
|
|
|
|
|
|
pDoc->SetDefaultCursor();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::OnViewEnlarge()
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
CRect srect;
|
|
|
|
|
|
srect = GetClientRect();
|
|
|
|
|
|
CRect8 oldRect = pDoc->GetDC().GetReal(srect);
|
|
|
|
|
|
|
|
|
|
|
|
pDoc->GetItemView()->Enlarge();
|
|
|
|
|
|
|
|
|
|
|
|
CRect8 newRect = pDoc->GetDC().GetReal(srect);
|
|
|
|
|
|
CPoint2D deltPt;
|
|
|
|
|
|
deltPt.x0 = newRect.CenterPoint().x0 - oldRect.CenterPoint().x0;
|
|
|
|
|
|
deltPt.y0 = newRect.CenterPoint().y0 - oldRect.CenterPoint().y0;
|
|
|
|
|
|
|
|
|
|
|
|
pDoc->GetDC().OffsetRect(-deltPt.x0, -deltPt.y0);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::OnViewReduce()
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
CRect srect;
|
|
|
|
|
|
srect = GetClientRect();
|
|
|
|
|
|
CRect8 oldRect = pDoc->GetDC().GetReal(srect);
|
|
|
|
|
|
|
|
|
|
|
|
pDoc->GetItemView()->Reduce();
|
|
|
|
|
|
|
|
|
|
|
|
CRect8 newRect = pDoc->GetDC().GetReal(srect);
|
|
|
|
|
|
CPoint2D deltPt;
|
|
|
|
|
|
deltPt.x0 = newRect.CenterPoint().x0 - oldRect.CenterPoint().x0;
|
|
|
|
|
|
deltPt.y0 = newRect.CenterPoint().y0 - oldRect.CenterPoint().y0;
|
|
|
|
|
|
|
|
|
|
|
|
pDoc->GetDC().OffsetRect(-deltPt.x0, -deltPt.y0);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::DrawCrossLine(CDC* pDC, CPoint point)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!m_bTracking)
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
//CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
//CWellPole* pWell = pDoc->GetWellPole();
|
|
|
|
|
|
//if (pDoc->GetWellPole() != NULL)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// CRect8 wRect = pWell->GetRect();
|
|
|
|
|
|
// wRect.top = wRect.top - pWell->m_dHeightTrackHead - pWell->m_dHeightWellHead;
|
|
|
|
|
|
// CRect sWRect = pDoc->GetDC().GetScreen(wRect);
|
|
|
|
|
|
// sWRect.NormalizeRect();
|
|
|
|
|
|
// if (point.y >= sWRect.bottom || point.y <= sWRect.top)
|
|
|
|
|
|
// return;
|
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
|
|
//CRect rt; this->GetClientRect(rt);
|
|
|
|
|
|
//int nOldRop = pDC->SetROP2(R2_NOTXORPEN);
|
|
|
|
|
|
////pDC->MoveTo(point.x, rt.top);
|
|
|
|
|
|
////pDC->LineTo(point.x, rt.bottom);
|
|
|
|
|
|
//pDC->MoveTo(rt.left, point.y);
|
|
|
|
|
|
//pDC->LineTo(rt.right, point.y);
|
|
|
|
|
|
//pDC->SetROP2(nOldRop);
|
|
|
|
|
|
|
|
|
|
|
|
//if (GetItemToolTip() != NULL)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// CPoint2D ptDown = pDoc->GetDC().GetReal(point);
|
|
|
|
|
|
|
|
|
|
|
|
// double depth = pWell->ScreenYToDepth(ptDown.y0);
|
|
|
|
|
|
// CString str;
|
|
|
|
|
|
// str.Format("%.2f", depth);
|
|
|
|
|
|
// GetItemToolTip()->CItemToolTip::SetTooltipText(str);
|
|
|
|
|
|
//}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::OnMouseLeave()
|
|
|
|
|
|
{
|
|
|
|
|
|
m_PrevPointXY.SetPoint(-100, -100);
|
|
|
|
|
|
m_bTracking = FALSE;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::DrawOneCrossLine(CPoint currentPoint)
|
|
|
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
BOOL CMultiWellSectionView::OnBreakLeftBend()
|
|
|
|
|
|
{
|
|
|
|
|
|
BOOL b = FALSE;
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
CItem *pItem = pDoc->GetItem();
|
|
|
|
|
|
if (NULL == pItem)
|
|
|
|
|
|
return b;
|
|
|
|
|
|
CItemWcsTrackIn *pItemTrackIn = NULL;
|
|
|
|
|
|
if (pItem->GetType() == ITEM_WELLSECTION)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection* pItemSection = (CItemWellSection*)pItem;
|
|
|
|
|
|
if (NULL != pItemSection)
|
|
|
|
|
|
pItemSection->SetReUnDoAction();
|
|
|
|
|
|
if (pItemSection->GetItem() != NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellBase* pItemWell = (CItemWellBase*)pItemSection->GetItem();
|
|
|
|
|
|
POSITION pos = pItemWell->m_WellObjSelectlist.GetHeadPosition();
|
|
|
|
|
|
while (pos != NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
CWellBaseObj* pObj = pItemWell->m_WellObjSelectlist.GetNext(pos);
|
|
|
|
|
|
CWellSection* pSection = (CWellSection*)pItemSection->GetWellSection();
|
|
|
|
|
|
|
|
|
|
|
|
POSITION posBend = pSection->m_BendList.GetHeadPosition();
|
|
|
|
|
|
while (posBend != NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
CBendObj * pBend = (CBendObj *)pSection->m_BendList.GetNext(posBend);
|
|
|
|
|
|
if (pBend->m_pLayerLeft == pObj)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (pBend->m_ptArrControls[0].X < pBend->m_pLayerLeft->GetPos().left)
|
|
|
|
|
|
{
|
|
|
|
|
|
pSection->DeleteBend(pBend);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
if ((pBend->m_pLayerRight != NULL && pBend->m_pLayerRight == pObj))
|
|
|
|
|
|
{
|
|
|
|
|
|
if (pBend->m_ptArrControls[0].X < pBend->m_pLayerRight->GetPos().left)
|
|
|
|
|
|
pSection->DeleteBend(pBend);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
m_pDoc->Invalidate();
|
|
|
|
|
|
|
|
|
|
|
|
b = TRUE;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return b;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
BOOL CMultiWellSectionView::OnBreakRightBend()
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
CItem *pItem = pDoc->GetItem();
|
|
|
|
|
|
if (NULL == pItem)
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
BOOL b = FALSE;
|
|
|
|
|
|
CItemWcsTrackIn *pItemTrackIn = NULL;
|
|
|
|
|
|
if (pItem->GetType() == ITEM_WELLSECTION)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection* pItemSection = (CItemWellSection*)pItem;
|
|
|
|
|
|
if (NULL != pItemSection)
|
|
|
|
|
|
pItemSection->SetReUnDoAction();
|
|
|
|
|
|
if (pItemSection->GetItem() != NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellBase* pItemWell = (CItemWellBase*)pItemSection->GetItem();
|
|
|
|
|
|
POSITION pos = pItemWell->m_WellObjSelectlist.GetHeadPosition();
|
|
|
|
|
|
while (pos != NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
CWellBaseObj* pObj = pItemWell->m_WellObjSelectlist.GetNext(pos);
|
|
|
|
|
|
CWellSection* pSection = (CWellSection*)pItemSection->GetWellSection();
|
|
|
|
|
|
POSITION posBend = pSection->m_BendList.GetHeadPosition();
|
|
|
|
|
|
while (posBend != NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
CBendObj * pBend = (CBendObj *)pSection->m_BendList.GetNext(posBend);
|
|
|
|
|
|
if (pBend->m_pLayerLeft == pObj)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (pBend->m_ptArrControls[0].X > pBend->m_pLayerLeft->GetPos().left)
|
|
|
|
|
|
{
|
|
|
|
|
|
pSection->DeleteBend(pBend);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
if ((pBend->m_pLayerRight != NULL && pBend->m_pLayerRight == pObj))
|
|
|
|
|
|
{
|
|
|
|
|
|
if (pBend->m_ptArrControls[0].X > pBend->m_pLayerRight->GetPos().left)
|
|
|
|
|
|
pSection->DeleteBend(pBend);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
m_pDoc->Invalidate();
|
|
|
|
|
|
b = TRUE;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return b;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
BOOL CMultiWellSectionView::OnNameConnectLeft()
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();;
|
|
|
|
|
|
CItem *pItem = pDoc->GetItem();
|
|
|
|
|
|
if (NULL == pItem)
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
BOOL b = FALSE;
|
|
|
|
|
|
if (pItem->GetType() == ITEM_WELLSECTION)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection* pItemSection = (CItemWellSection*)pItem;
|
|
|
|
|
|
if (NULL != pItemSection)
|
|
|
|
|
|
pItemSection->SetReUnDoAction();
|
|
|
|
|
|
if (pItemSection->GetItem() != NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellBase* pItemWell = (CItemWellBase*)pItemSection->GetItem();
|
|
|
|
|
|
POSITION posSelect = pItemWell->m_WellObjSelectlist.GetHeadPosition();
|
|
|
|
|
|
while (posSelect != NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
CWellBaseObj* pObj = (CWellBaseObj*)pItemWell->m_WellObjSelectlist.GetNext(posSelect);
|
|
|
|
|
|
CTrackObj* pTrackObj = (CTrackObj*)pObj->GetParent();
|
|
|
|
|
|
if (pTrackObj->GetTrackType() == Track_Stratum || pTrackObj->GetTrackType() == Track_Result
|
|
|
|
|
|
|| pTrackObj->GetTrackType() == Track_StandardLayer || pTrackObj->GetTrackType() == Track_SandLayer)
|
|
|
|
|
|
{
|
|
|
|
|
|
CWellSection* pSection = (CWellSection*)pItemSection->GetWellSection();
|
|
|
|
|
|
POSITION posBend = pSection->m_BendList.GetHeadPosition();
|
|
|
|
|
|
|
|
|
|
|
|
std::vector<CWellBaseObj*> linkBends;
|
|
|
|
|
|
pItemSection->ConnectOnName(pObj, 1,linkBends);
|
|
|
|
|
|
if (pSection->m_bResForm)
|
|
|
|
|
|
{
|
|
|
|
|
|
for (int i = 0; i < linkBends.size(); i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
CBendObj* pBend = (CBendObj*)linkBends[i];
|
|
|
|
|
|
pBend->ComputeBend();
|
|
|
|
|
|
|
|
|
|
|
|
WELLOBJLIST::iterator it = pBend->m_pLayerLeft->m_BendRightList.begin();
|
|
|
|
|
|
for (; it != pBend->m_pLayerLeft->m_BendRightList.end(); it++)//左连层中其它右侧层位受到影响
|
|
|
|
|
|
{
|
|
|
|
|
|
CBendObj *pBend1 = (CBendObj*)(*it);
|
|
|
|
|
|
if (pBend1 != pBend)
|
|
|
|
|
|
{
|
|
|
|
|
|
pBend1->ComputeBend();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
b = TRUE;
|
|
|
|
|
|
m_pDoc->Invalidate();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return b;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
BOOL CMultiWellSectionView::OnNameConnectRight()
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
CItem *pItem = pDoc->GetItem();
|
|
|
|
|
|
if (NULL == pItem)
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
BOOL b = FALSE;
|
|
|
|
|
|
if (pItem->GetType() == ITEM_WELLSECTION)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection* pItemSection = (CItemWellSection*)pItem;
|
|
|
|
|
|
if (NULL != pItemSection)
|
|
|
|
|
|
pItemSection->SetReUnDoAction();
|
|
|
|
|
|
if (pItemSection->GetItem() != NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellBase* pItemWell = (CItemWellBase*)pItemSection->GetItem();
|
|
|
|
|
|
POSITION posSelect = pItemWell->m_WellObjSelectlist.GetHeadPosition();
|
|
|
|
|
|
while (posSelect != NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
CWellBaseObj* pObj = (CWellBaseObj*)pItemWell->m_WellObjSelectlist.GetNext(posSelect);
|
|
|
|
|
|
CTrackObj* pTrackObj = (CTrackObj*)pObj->GetParent();
|
|
|
|
|
|
if (pTrackObj->GetTrackType() == Track_Stratum || pTrackObj->GetTrackType() == Track_Result
|
|
|
|
|
|
|| pTrackObj->GetTrackType() == Track_StandardLayer || pTrackObj->GetTrackType() == Track_SandLayer)
|
|
|
|
|
|
{
|
|
|
|
|
|
CWellSection* pSection = (CWellSection*)pItemSection->GetWellSection();
|
|
|
|
|
|
POSITION posBend = pSection->m_BendList.GetHeadPosition();
|
|
|
|
|
|
std::vector<CWellBaseObj*> linkBends;
|
|
|
|
|
|
pItemSection->ConnectOnName(pObj, 2,linkBends);
|
|
|
|
|
|
|
|
|
|
|
|
if (pSection->m_bResForm)
|
|
|
|
|
|
{
|
|
|
|
|
|
for (int i = 0; i < linkBends.size(); i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
CBendObj* pBend = (CBendObj*)linkBends[i];
|
|
|
|
|
|
pBend->ComputeBend();
|
|
|
|
|
|
|
|
|
|
|
|
WELLOBJLIST::iterator it = pBend->m_pLayerRight->m_BendLeftList.begin();
|
|
|
|
|
|
for (; it != pBend->m_pLayerRight->m_BendLeftList.end(); it++)//右连层中其它左侧层位受到影响
|
|
|
|
|
|
{
|
|
|
|
|
|
CBendObj *pBend1 = (CBendObj*)(*it);
|
|
|
|
|
|
if (pBend1 != pBend)
|
|
|
|
|
|
{
|
|
|
|
|
|
pBend1->ComputeBend();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
m_pDoc->Invalidate();
|
|
|
|
|
|
b = TRUE;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return b;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
BOOL CMultiWellSectionView::OnNameConnectAll()
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
CItem *pItem = pDoc->GetItem();
|
|
|
|
|
|
if (NULL == pItem)
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
BOOL b = FALSE;
|
|
|
|
|
|
if (pItem->GetType() == ITEM_WELLSECTION)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection* pItemSection = (CItemWellSection*)pItem;
|
|
|
|
|
|
if (NULL != pItemSection)
|
|
|
|
|
|
pItemSection->SetReUnDoAction();
|
|
|
|
|
|
if (pItemSection->GetItem() != NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellBase* pItemWell = (CItemWellBase*)pItemSection->GetItem();
|
|
|
|
|
|
POSITION posSelect = pItemWell->m_WellObjSelectlist.GetHeadPosition();
|
|
|
|
|
|
while (posSelect != NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
CWellBaseObj* pObj = (CWellBaseObj*)pItemWell->m_WellObjSelectlist.GetNext(posSelect);
|
|
|
|
|
|
CTrackObj* pTrackObj = (CTrackObj*)pObj->GetParent();
|
|
|
|
|
|
if (pTrackObj->GetTrackType() == Track_Stratum || pTrackObj->GetTrackType() == Track_Result
|
|
|
|
|
|
|| pTrackObj->GetTrackType() == Track_SandLayer)
|
|
|
|
|
|
{
|
|
|
|
|
|
CWellSection* pSection = (CWellSection*)pItemSection->GetWellSection();
|
|
|
|
|
|
POSITION posBend = pSection->m_BendList.GetHeadPosition();
|
|
|
|
|
|
std::vector<CWellBaseObj*> linkBends;
|
|
|
|
|
|
pItemSection->ConnectOnName(pObj, 1,linkBends);
|
|
|
|
|
|
if (pSection->m_bResForm)
|
|
|
|
|
|
{
|
|
|
|
|
|
for (int i = 0; i < linkBends.size(); i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
CBendObj* pBend = (CBendObj*)linkBends[i];
|
|
|
|
|
|
pBend->ComputeBend();
|
|
|
|
|
|
|
|
|
|
|
|
WELLOBJLIST::iterator it = pBend->m_pLayerLeft->m_BendRightList.begin();
|
|
|
|
|
|
for (; it != pBend->m_pLayerLeft->m_BendRightList.end(); it++)//左连层中其它右侧层位受到影响
|
|
|
|
|
|
{
|
|
|
|
|
|
CBendObj *pBend1 = (CBendObj*)(*it);
|
|
|
|
|
|
if (pBend1 != pBend)
|
|
|
|
|
|
{
|
|
|
|
|
|
pBend1->ComputeBend();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
pItemSection->ConnectOnName(pObj, 2,linkBends);
|
|
|
|
|
|
if (pSection->m_bResForm)
|
|
|
|
|
|
{
|
|
|
|
|
|
for (int i = 0; i < linkBends.size(); i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
CBendObj* pBend = (CBendObj*)linkBends[i];
|
|
|
|
|
|
pBend->ComputeBend();
|
|
|
|
|
|
|
|
|
|
|
|
WELLOBJLIST::iterator it = pBend->m_pLayerRight->m_BendLeftList.begin();
|
|
|
|
|
|
for (; it != pBend->m_pLayerRight->m_BendLeftList.end(); it++)//右连层中其它左侧层位受到影响
|
|
|
|
|
|
{
|
|
|
|
|
|
CBendObj *pBend1 = (CBendObj*)(*it);
|
|
|
|
|
|
if (pBend1 != pBend)
|
|
|
|
|
|
{
|
|
|
|
|
|
pBend1->ComputeBend();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
m_pDoc->Invalidate();
|
|
|
|
|
|
b = TRUE;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return b;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BOOL CMultiWellSectionView::OnSetBendSmooth()
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
|
|
|
|
|
|
CItem *pItem = pDoc->GetItem();
|
|
|
|
|
|
if (NULL == pItem)
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
|
|
|
|
|
|
BOOL b = FALSE;
|
|
|
|
|
|
if (pItem->GetType() == ITEM_WELLSECTION)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection* pItemWellSection = (CItemWellSection*)pItem;
|
|
|
|
|
|
if (NULL != pItemWellSection)
|
|
|
|
|
|
pItemWellSection->SetReUnDoAction();
|
|
|
|
|
|
CWellSection* pSection = (CWellSection*)pItemWellSection->GetWellSection();
|
|
|
|
|
|
pSection->SetStratumSmooth(!pSection->IsStratumSmooth());
|
|
|
|
|
|
POSITION pos = pSection->m_BendList.GetHeadPosition();
|
|
|
|
|
|
while (pos != NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
CWellBaseObj* pObj = pSection->m_BendList.GetNext(pos);
|
|
|
|
|
|
if (pObj->GetType() == KEP_SECTIONBEND)
|
|
|
|
|
|
{
|
|
|
|
|
|
CBendObj* pBend = (CBendObj*)pObj;
|
|
|
|
|
|
pBend->SmoothBendLines();
|
|
|
|
|
|
//pBend->CreateBendLithoBreak();
|
|
|
|
|
|
//pBend->CreateBendFills();
|
|
|
|
|
|
|
|
|
|
|
|
b = TRUE; break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
pDoc->Invalidate();
|
|
|
|
|
|
}
|
|
|
|
|
|
return b;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::OnAddFault()
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
CItem *pItem = pDoc->GetItem();
|
|
|
|
|
|
|
|
|
|
|
|
if (NULL == pItem)
|
|
|
|
|
|
return;
|
|
|
|
|
|
if (pItem->GetType() == ITEM_WELLSECTION)
|
|
|
|
|
|
{
|
|
|
|
|
|
BOOL bFind = FALSE;
|
|
|
|
|
|
CItemWellSection* pItemWellSection = (CItemWellSection*)pItem;
|
|
|
|
|
|
if (pItemWellSection->GetItem() != NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (pItemWellSection->GetItem()->GetType() == ITEM_ADDFAULT)
|
|
|
|
|
|
{
|
|
|
|
|
|
bFind = TRUE;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
if (!bFind)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemAddFault* pItemFault = new CItemAddFault(pDoc);
|
|
|
|
|
|
if (NULL != pItemWellSection)
|
|
|
|
|
|
{
|
|
|
|
|
|
pItemWellSection->SetReUnDoAction(FALSE, IDS_STRING_ACTION_MOVE,2);
|
|
|
|
|
|
}
|
|
|
|
|
|
pItemFault->SetItemSection(pItem);
|
|
|
|
|
|
pItemWellSection->SetItem(pItemFault);
|
|
|
|
|
|
pItemWellSection->SetState(TRUE);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
pDoc->Invalidate();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::OnLayerFlatten()
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
|
|
|
|
|
|
CItem *pItem = pDoc->GetItem();
|
|
|
|
|
|
if (NULL == pItem)
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::OnLayerFlatten1()
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
|
|
|
|
|
|
CItem *pItem = pDoc->GetItem();
|
|
|
|
|
|
if (NULL == pItem)
|
|
|
|
|
|
return;
|
|
|
|
|
|
if (pItem->GetType() == ITEM_WELLSECTION)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection* pItemWellSection = (CItemWellSection*)pItem;
|
|
|
|
|
|
|
|
|
|
|
|
if (NULL != pItemWellSection)
|
|
|
|
|
|
pItemWellSection->SetReUnDoAction();
|
|
|
|
|
|
|
|
|
|
|
|
CWellSection* pSection = (CWellSection*)pItemWellSection->GetWellSection();
|
|
|
|
|
|
pSection->m_nLayerFlatten = 1;
|
|
|
|
|
|
double topValue = 0.0;
|
|
|
|
|
|
POSITION pos = pItemWellSection->m_WellObjSelectlist.GetHeadPosition();
|
|
|
|
|
|
while (pos != NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
CWellBaseObj* pObj = pItemWellSection->m_WellObjSelectlist.GetNext(pos);
|
|
|
|
|
|
if (pObj->GetType() == KEP_SECTIONBEND)
|
|
|
|
|
|
{
|
|
|
|
|
|
CBendObj* pBend = (CBendObj*)pObj;
|
|
|
|
|
|
pSection->FlatLayer(pBend, FALSE);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
pSection->SetRealLevel(TRUE);
|
|
|
|
|
|
pDoc->Invalidate();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::OnLayerFlatten2()
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
|
|
|
|
|
|
CItem *pItem = pDoc->GetItem();
|
|
|
|
|
|
if (NULL == pItem)
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
if (pItem->GetType() == ITEM_WELLSECTION)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection* pItemWellSection = (CItemWellSection*)pItem;
|
|
|
|
|
|
|
|
|
|
|
|
if (NULL != pItemWellSection)
|
|
|
|
|
|
pItemWellSection->SetReUnDoAction();
|
|
|
|
|
|
|
|
|
|
|
|
CWellSection* pSection = (CWellSection*)pItemWellSection->GetWellSection();
|
|
|
|
|
|
pSection->m_nLayerFlatten = 2;
|
|
|
|
|
|
|
|
|
|
|
|
POSITION pos = pItemWellSection->m_WellObjSelectlist.GetHeadPosition();
|
|
|
|
|
|
while (pos != NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
CWellBaseObj* pObj = pItemWellSection->m_WellObjSelectlist.GetNext(pos);
|
|
|
|
|
|
if (pObj->GetType() == KEP_SECTIONBEND)
|
|
|
|
|
|
{
|
|
|
|
|
|
CBendObj* pBend = (CBendObj*)pObj;
|
|
|
|
|
|
pSection->FlatLayer(pBend, TRUE);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
pSection->SetRealLevel(TRUE);
|
|
|
|
|
|
pDoc->Invalidate();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::OnLayerFlatten3()
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
|
|
|
|
|
|
CItem *pItem = pDoc->GetItem();
|
|
|
|
|
|
if (NULL == pItem)
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
if (pItem->GetType() == ITEM_WELLSECTION)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection* pItemWellSection = (CItemWellSection*)pItem;
|
|
|
|
|
|
|
|
|
|
|
|
if (NULL != pItemWellSection)
|
|
|
|
|
|
pItemWellSection->SetReUnDoAction();
|
|
|
|
|
|
|
|
|
|
|
|
CWellSection* pSection = (CWellSection*)pItemWellSection->GetWellSection();
|
|
|
|
|
|
pSection->m_nLayerFlatten = 3;
|
|
|
|
|
|
pSection->FlatWell(TRUE);
|
|
|
|
|
|
pSection->SetRealLevel(TRUE);
|
|
|
|
|
|
pDoc->Invalidate();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::OnLayerFlatten4()
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
|
|
|
|
|
|
CItem *pItem = pDoc->GetItem();
|
|
|
|
|
|
if (NULL == pItem)
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
if (pItem->GetType() == ITEM_WELLSECTION)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection* pItemWellSection = (CItemWellSection*)pItem;
|
|
|
|
|
|
|
|
|
|
|
|
if (NULL != pItemWellSection)
|
|
|
|
|
|
pItemWellSection->SetReUnDoAction();
|
|
|
|
|
|
|
|
|
|
|
|
CWellSection* pSection = (CWellSection*)pItemWellSection->GetWellSection();
|
|
|
|
|
|
pSection->m_nLayerFlatten = 4;
|
|
|
|
|
|
pSection->FlatWell(FALSE);
|
|
|
|
|
|
pSection->SetRealLevel(TRUE);
|
|
|
|
|
|
pDoc->Invalidate();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::OnLayerFlatten5()
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
|
|
|
|
|
|
CItem *pItem = pDoc->GetItem();
|
|
|
|
|
|
if (NULL == pItem)
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
if (pItem->GetType() == ITEM_WELLSECTION)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection* pItemWellSection = (CItemWellSection*)pItem;
|
|
|
|
|
|
|
|
|
|
|
|
if (NULL != pItemWellSection)
|
|
|
|
|
|
pItemWellSection->SetReUnDoAction();
|
|
|
|
|
|
|
|
|
|
|
|
CWellSection* pSection = (CWellSection*)pItemWellSection->GetWellSection();
|
|
|
|
|
|
pSection->m_nLayerFlatten = 0;
|
|
|
|
|
|
|
|
|
|
|
|
pSection->FlatRealPosition();
|
|
|
|
|
|
pSection->SetRealLevel(FALSE);
|
|
|
|
|
|
pDoc->Invalidate();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::OnWellStyleComplete()
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
|
|
|
|
|
|
CItem *pItem = pDoc->GetItem();
|
|
|
|
|
|
if (NULL == pItem)
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
if (pItem->GetType() == ITEM_WELLSECTION || pItem->GetType() == ITEM_WELLFENCE)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection* pItemWellSection = (CItemWellSection*)pItem;
|
|
|
|
|
|
if (NULL != pItemWellSection)
|
|
|
|
|
|
pItemWellSection->SetReUnDoAction();
|
|
|
|
|
|
|
|
|
|
|
|
CWellSection* pSection = (CWellSection*)pItemWellSection->GetWellSection();
|
|
|
|
|
|
pSection->GetFeature()->SetWellStyleComplete(TRUE);
|
|
|
|
|
|
pDoc->Invalidate();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::OnWellStyleDividline()
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
|
|
|
|
|
|
CItem *pItem = pDoc->GetItem();
|
|
|
|
|
|
if (NULL == pItem)
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
if (pItem->GetType() == ITEM_WELLSECTION || pItem->GetType() == ITEM_WELLFENCE)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection* pItemWellSection = (CItemWellSection*)pItem;
|
|
|
|
|
|
if (NULL != pItemWellSection)
|
|
|
|
|
|
pItemWellSection->SetReUnDoAction();
|
|
|
|
|
|
|
|
|
|
|
|
CWellSection* pSection = (CWellSection*)pItemWellSection->GetWellSection();
|
|
|
|
|
|
pSection->GetFeature()->SetWellStyleDividLine(TRUE);
|
|
|
|
|
|
pDoc->Invalidate();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::OnWellStyleSimple()
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
|
|
|
|
|
|
CItem *pItem = pDoc->GetItem();
|
|
|
|
|
|
if (NULL == pItem)
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
if (pItem->GetType() == ITEM_WELLSECTION || pItem->GetType() == ITEM_WELLFENCE)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection* pItemWellSection = (CItemWellSection*)pItem;
|
|
|
|
|
|
if (NULL != pItemWellSection)
|
|
|
|
|
|
pItemWellSection->SetReUnDoAction();
|
|
|
|
|
|
|
|
|
|
|
|
CWellSection* pSection = (CWellSection*)pItemWellSection->GetWellSection();
|
|
|
|
|
|
pSection->GetFeature()->SetWellStyleSimple(TRUE);
|
|
|
|
|
|
pDoc->Invalidate();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::OnBendLinkAll()
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
CItem *pItem = pDoc->GetItem();
|
|
|
|
|
|
if (NULL == pItem)
|
|
|
|
|
|
return;
|
|
|
|
|
|
if (pItem->GetType() == ITEM_WELLSECTION)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection* pItemWellSection = (CItemWellSection*)pItem;
|
|
|
|
|
|
|
|
|
|
|
|
if (NULL != pItemWellSection)
|
|
|
|
|
|
pItemWellSection->SetReUnDoAction();
|
|
|
|
|
|
pItemWellSection->CreateLayers();
|
|
|
|
|
|
pDoc->Invalidate();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::OnBendBreakAll()
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
CItem *pItem = pDoc->GetItem();
|
|
|
|
|
|
if (NULL == pItem)
|
|
|
|
|
|
return;
|
|
|
|
|
|
if (pItem->GetType() == ITEM_WELLSECTION)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection* pItemWellSection = (CItemWellSection*)pItem;
|
|
|
|
|
|
|
|
|
|
|
|
if (NULL != pItemWellSection)
|
|
|
|
|
|
pItemWellSection->SetReUnDoAction();
|
|
|
|
|
|
pItemWellSection->BreakLayers();
|
|
|
|
|
|
pDoc->Invalidate();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::OnLinkStyleOut()
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
|
|
|
|
|
|
CItem *pItem = pDoc->GetItem();
|
|
|
|
|
|
if (NULL == pItem)
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
if (pItem->GetType() == ITEM_WELLSECTION || pItem->GetType() == ITEM_WELLFENCE)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection* pItemWellSection = (CItemWellSection*)pItem;
|
|
|
|
|
|
if (NULL != pItemWellSection)
|
|
|
|
|
|
pItemWellSection->SetReUnDoAction();
|
|
|
|
|
|
|
|
|
|
|
|
CWellSection* pSection = (CWellSection*)pItemWellSection->GetWellSection();
|
|
|
|
|
|
pSection->GetFeature()->SetWellLinkOut(TRUE);
|
|
|
|
|
|
pSection->ComputeExTendLengthOfX();
|
|
|
|
|
|
|
|
|
|
|
|
if (pSection->m_bResForm)
|
|
|
|
|
|
{
|
|
|
|
|
|
POSITION pos = pSection->m_BendList.GetHeadPosition();
|
|
|
|
|
|
while (pos != NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
CBendObj* pBend = (CBendObj*)pSection->m_BendList.GetNext(pos);
|
|
|
|
|
|
pBend->ComputeBend();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
POSITION pos = pSection->m_WellList.GetHeadPosition();
|
|
|
|
|
|
while (pos != NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
CWellPole *pWell = (CWellPole*)pSection->m_WellList.GetNext(pos);
|
|
|
|
|
|
pSection->ReComputeBends(pWell);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
pDoc->Invalidate();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::OnLinkStyleCurveIn()
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
|
|
|
|
|
|
CItem *pItem = pDoc->GetItem();
|
|
|
|
|
|
if (NULL == pItem)
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
if (pItem->GetType() == ITEM_WELLSECTION || pItem->GetType() == ITEM_WELLFENCE)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection* pItemWellSection = (CItemWellSection*)pItem;
|
|
|
|
|
|
|
|
|
|
|
|
if (NULL != pItemWellSection)
|
|
|
|
|
|
pItemWellSection->SetReUnDoAction();
|
|
|
|
|
|
|
|
|
|
|
|
CWellSection* pSection = (CWellSection*)pItemWellSection->GetWellSection();
|
|
|
|
|
|
pSection->GetFeature()->SetWellLinkCurveIn(TRUE);
|
|
|
|
|
|
pSection->ComputeExTendLengthOfX();
|
|
|
|
|
|
POSITION pos = pSection->m_WellList.GetHeadPosition();
|
|
|
|
|
|
while (pos != NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
CWellPole *pWell = (CWellPole*)pSection->m_WellList.GetNext(pos);
|
|
|
|
|
|
pSection->ReComputeBends(pWell);
|
|
|
|
|
|
}
|
|
|
|
|
|
pDoc->Invalidate();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::OnLinkStyleResultBound()
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
|
|
|
|
|
|
CItem *pItem = pDoc->GetItem();
|
|
|
|
|
|
if (NULL == pItem)
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
if (pItem->GetType() == ITEM_WELLSECTION || pItem->GetType() == ITEM_WELLFENCE)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection* pItemWellSection = (CItemWellSection*)pItem;
|
|
|
|
|
|
if (NULL != pItemWellSection)
|
|
|
|
|
|
pItemWellSection->SetReUnDoAction();
|
|
|
|
|
|
CWellSection* pSection = (CWellSection*)pItemWellSection->GetWellSection();
|
|
|
|
|
|
pSection->GetFeature()->SetWellLinkLayerBounds(TRUE);
|
|
|
|
|
|
pSection->ComputeExTendLengthOfX();
|
|
|
|
|
|
if (pSection->m_bResForm)
|
|
|
|
|
|
{
|
|
|
|
|
|
POSITION pos = pSection->m_BendList.GetHeadPosition();
|
|
|
|
|
|
while (pos != NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
CBendObj* pBend = (CBendObj*)pSection->m_BendList.GetNext(pos);
|
|
|
|
|
|
pBend->ComputeBend();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
POSITION pos = pSection->m_WellList.GetHeadPosition();
|
|
|
|
|
|
while (pos != NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
CWellPole *pWell = (CWellPole*)pSection->m_WellList.GetNext(pos);
|
|
|
|
|
|
pSection->ReComputeBends(pWell);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
pDoc->Invalidate();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::OnLinkStyleStratumBound()
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
|
|
|
|
|
|
CItem *pItem = pDoc->GetItem();
|
|
|
|
|
|
if (NULL == pItem)
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
if (pItem->GetType() == ITEM_WELLSECTION || pItem->GetType() == ITEM_WELLFENCE)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection* pItemWellSection = (CItemWellSection*)pItem;
|
|
|
|
|
|
if (NULL != pItemWellSection)
|
|
|
|
|
|
pItemWellSection->SetReUnDoAction();
|
|
|
|
|
|
CWellSection* pSection = (CWellSection*)pItemWellSection->GetWellSection();
|
|
|
|
|
|
pSection->GetFeature()->SetWellLinkStratiBounds(TRUE);
|
|
|
|
|
|
pSection->ComputeExTendLengthOfX();
|
|
|
|
|
|
if (pSection->m_bResForm)
|
|
|
|
|
|
{
|
|
|
|
|
|
POSITION pos = pSection->m_BendList.GetHeadPosition();
|
|
|
|
|
|
while (pos != NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
CBendObj* pBend = (CBendObj*)pSection->m_BendList.GetNext(pos);
|
|
|
|
|
|
pBend->ComputeBend();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
POSITION pos = pSection->m_WellList.GetHeadPosition();
|
|
|
|
|
|
while (pos != NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
CWellPole *pWell = (CWellPole*)pSection->m_WellList.GetNext(pos);
|
|
|
|
|
|
pSection->ReComputeBends(pWell);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
pDoc->Invalidate();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::OnLinkStyleCenter()
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
|
|
|
|
|
|
CItem *pItem = pDoc->GetItem();
|
|
|
|
|
|
if (NULL == pItem)
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
if (pItem->GetType() == ITEM_WELLSECTION || pItem->GetType() == ITEM_WELLFENCE)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection* pItemWellSection = (CItemWellSection*)pItem;
|
|
|
|
|
|
if (NULL != pItemWellSection)
|
|
|
|
|
|
pItemWellSection->SetReUnDoAction();
|
|
|
|
|
|
|
|
|
|
|
|
CWellSection* pSection = (CWellSection*)pItemWellSection->GetWellSection();
|
|
|
|
|
|
pSection->GetFeature()->SetWellLinkCenter(TRUE);
|
|
|
|
|
|
pSection->ComputeExTendLengthOfX();
|
|
|
|
|
|
if (pSection->m_bResForm)
|
|
|
|
|
|
{
|
|
|
|
|
|
POSITION pos = pSection->m_BendList.GetHeadPosition();
|
|
|
|
|
|
while (pos != NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
CBendObj* pBend = (CBendObj*)pSection->m_BendList.GetNext(pos);
|
|
|
|
|
|
pBend->ComputeBend();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
POSITION pos = pSection->m_WellList.GetHeadPosition();
|
|
|
|
|
|
while (pos != NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
CWellPole *pWell = (CWellPole*)pSection->m_WellList.GetNext(pos);
|
|
|
|
|
|
pSection->ReComputeBends(pWell);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
pDoc->Invalidate();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BOOL CMultiWellSectionView::OnAddRuler()
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
CItem *pItem = pDoc->GetItem();
|
|
|
|
|
|
|
|
|
|
|
|
if (pDoc->GetItemType() != ITEM_SCALE_RULER)
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
CXy* pXy = pDoc->GetDraw();
|
|
|
|
|
|
|
|
|
|
|
|
CPtrList* pList = pXy->GetValueList();
|
|
|
|
|
|
CWellSection* pSection = NULL;
|
|
|
|
|
|
POSITION pos = pList->GetHeadPosition();
|
|
|
|
|
|
while (pos)
|
|
|
|
|
|
{
|
|
|
|
|
|
COne* pObj = (COne*)pList->GetNext(pos);
|
|
|
|
|
|
if (pObj->GetType() == KEP_WELLSECTION)
|
|
|
|
|
|
{
|
|
|
|
|
|
pSection = (CWellSection*)pObj->GetValue();
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
if (NULL == pSection)
|
|
|
|
|
|
{
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/////计算标尺的初始范围以及起始顶深和底深
|
|
|
|
|
|
double sDep, eDep;
|
|
|
|
|
|
double NewRight;
|
|
|
|
|
|
double NewTop, NewBottom;
|
|
|
|
|
|
double firstWellTrackStart;
|
|
|
|
|
|
double firstWellLevelDepth;
|
|
|
|
|
|
BOOL bInit = FALSE;
|
|
|
|
|
|
BOOL bPosition = FALSE;
|
|
|
|
|
|
pos = pSection->m_WellList.GetHeadPosition();
|
|
|
|
|
|
while (pos)
|
|
|
|
|
|
{
|
|
|
|
|
|
CSectionWellObj* pWell = (CSectionWellObj*)pSection->m_WellList.GetNext(pos);
|
|
|
|
|
|
if (!bInit)
|
|
|
|
|
|
{
|
|
|
|
|
|
NewBottom = pWell->GetPos().bottom;
|
|
|
|
|
|
NewTop = pWell->GetPos().top;
|
|
|
|
|
|
sDep = pWell->m_fLevel - pWell->m_dSdep;
|
|
|
|
|
|
eDep = pWell->m_fLevel - pWell->m_dEdep;
|
|
|
|
|
|
|
|
|
|
|
|
firstWellLevelDepth = pWell->m_fLevel - pWell->m_dSdep;
|
|
|
|
|
|
firstWellTrackStart = pWell->GetPos().top - pWell->m_dHeightWellHead - pWell->m_dHeightTrackHead;
|
|
|
|
|
|
bInit = TRUE;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
//if ((pWell->GetPos().top - pWell->m_dHeightWellHead - pWell->m_dHeightTrackHead) > NewTrackStart)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// NewTrackStart = pWell->GetPos().top - pWell->m_dHeightWellHead - pWell->m_dHeightTrackHead;
|
|
|
|
|
|
//}
|
|
|
|
|
|
if (pWell->GetPos().bottom < NewBottom)
|
|
|
|
|
|
{
|
|
|
|
|
|
NewBottom = pWell->GetPos().bottom;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (pWell->GetPos().top > NewTop)
|
|
|
|
|
|
NewTop = pWell->GetPos().top;
|
|
|
|
|
|
|
|
|
|
|
|
if ((pWell->m_fLevel - pWell->m_dSdep) > sDep)
|
|
|
|
|
|
{
|
|
|
|
|
|
sDep = pWell->m_fLevel - pWell->m_dSdep;
|
|
|
|
|
|
}
|
|
|
|
|
|
if ((pWell->m_fLevel - pWell->m_dEdep) < eDep)
|
|
|
|
|
|
{
|
|
|
|
|
|
eDep = pWell->m_fLevel - pWell->m_dEdep;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
NewRight = pSection->GetPos().left;
|
|
|
|
|
|
|
|
|
|
|
|
CRect8 rect;
|
|
|
|
|
|
rect.top = NewTop;
|
|
|
|
|
|
rect.bottom = NewBottom;
|
|
|
|
|
|
sDep = firstWellLevelDepth - pSection->ScreenCYToHeight(NewTop - firstWellTrackStart);// / pSection->m_fLevelScale;
|
|
|
|
|
|
eDep = firstWellLevelDepth - pSection->ScreenCYToHeight(NewBottom - firstWellTrackStart);// / pSection->m_fLevelScale;
|
|
|
|
|
|
|
|
|
|
|
|
rect.right = NewRight - 100;
|
|
|
|
|
|
rect.left = NewRight - 350;
|
|
|
|
|
|
//pAxis->SetRect(rect, true);
|
|
|
|
|
|
//pAxisObj->UpdateRect(rect, true);
|
|
|
|
|
|
CScaleRuler* pSr = new CScaleRuler();
|
|
|
|
|
|
pSr->EnableTextLeft(FALSE);
|
|
|
|
|
|
pSr->EnableAutoUpdate(FALSE);
|
|
|
|
|
|
pSr->SetRect(rect);
|
|
|
|
|
|
rect = pSr->GetRect();
|
|
|
|
|
|
pSr->EnableDirectionV(TRUE);
|
|
|
|
|
|
pSr->m_dScaleStep = 10;
|
|
|
|
|
|
pSr->m_dScaleMin = eDep;
|
|
|
|
|
|
pSr->m_dScaleMax = sDep;
|
|
|
|
|
|
pSr->m_SGradSegment = 2;
|
|
|
|
|
|
pSr->m_dTextHeight = 80;
|
|
|
|
|
|
pSr->EnableAbsoulteScale(TRUE);
|
|
|
|
|
|
pSr->m_strTitle = "海拔";
|
|
|
|
|
|
pSr->m_TitleFont.m_dHeight = 160;
|
|
|
|
|
|
pSr->m_TitleFont.m_dWidth = pSr->m_TitleFont.m_dHeight * 0.4;
|
|
|
|
|
|
pSr->EnableTitleOnTop(TRUE);
|
|
|
|
|
|
|
|
|
|
|
|
pDoc->GetDraw()->AddElement(pSr, DOUBLEFOX_SCALERULER);
|
|
|
|
|
|
|
|
|
|
|
|
CRect8 sectionRect = pSection->GetRect();
|
|
|
|
|
|
CProportion* pNewScale = new CProportion();
|
|
|
|
|
|
|
|
|
|
|
|
double widthM = pSection->ScreenCXToWidth(sectionRect.Width()); //图宽度,以米计算
|
|
|
|
|
|
pNewScale->num = 5;
|
|
|
|
|
|
pNewScale->m_dScaleLength = pSection->m_fHorzScale / 100 * 2;
|
|
|
|
|
|
pNewScale->m_dScaleHeight = 200;
|
|
|
|
|
|
pNewScale->x0 = sectionRect.CenterPoint().x0 - pNewScale->num * pNewScale->m_dScaleLength / 2;
|
|
|
|
|
|
pNewScale->y0 = sectionRect.top + 400;
|
|
|
|
|
|
pNewScale->m_size.cy = 100;
|
|
|
|
|
|
pNewScale->m_size.cx = pNewScale->m_size.cy * 0.4;
|
|
|
|
|
|
|
|
|
|
|
|
pDoc->GetDraw()->AddElement(pNewScale, DOUBLEFOX_PROPORTION);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
//pDoc->EnableDefaultTool();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
pDoc->Invalidate();
|
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BOOL CMultiWellSectionView::OnWellsMap(CString sybmlPath)
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
|
|
|
|
|
|
CItem* pItem = pDoc->GetItem();
|
|
|
|
|
|
if (NULL == pItem)
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
|
|
|
|
|
|
if (pItem->GetType() == ITEM_WELLSECTION)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection* pItemSection = (CItemWellSection*)pItem;
|
|
|
|
|
|
|
|
|
|
|
|
CWellSection* pSection = pItemSection->GetWellSection();
|
|
|
|
|
|
|
|
|
|
|
|
CRect8 sectionRect = pSection->GetRect();
|
|
|
|
|
|
CSize8 fontSize;
|
|
|
|
|
|
fontSize.cy = sectionRect.Height() / 20;
|
|
|
|
|
|
fontSize.cx = fontSize.cy * 0.4;
|
|
|
|
|
|
std::vector<CPointNameEx*> wellPtArr;
|
|
|
|
|
|
|
|
|
|
|
|
BOOL bFirst = TRUE;
|
|
|
|
|
|
POSITION pos = pSection->m_WellList.GetHeadPosition();
|
|
|
|
|
|
double maxx, maxy, minx, miny;
|
|
|
|
|
|
maxx = maxy = DBL_MIN;
|
|
|
|
|
|
minx = miny = DBL_MAX;
|
|
|
|
|
|
while (pos != NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
CSectionWellObj* pWell = (CSectionWellObj*)pSection->m_WellList.GetNext(pos);
|
|
|
|
|
|
|
|
|
|
|
|
CPointNameEx* pPoint = new CPointNameEx;
|
|
|
|
|
|
pPoint->x0 = pWell->m_fX;
|
|
|
|
|
|
pPoint->y0 = pWell->m_fY;
|
|
|
|
|
|
pPoint->SetName(pWell->GetWellName());
|
|
|
|
|
|
|
|
|
|
|
|
maxx = pWell->m_fX > maxx ? pWell->m_fX : maxx;
|
|
|
|
|
|
maxy = pWell->m_fY > maxy ? pWell->m_fY : maxy;
|
|
|
|
|
|
minx = pWell->m_fX < minx ? pWell->m_fX : minx;
|
|
|
|
|
|
miny = pWell->m_fY < miny ? pWell->m_fY : miny;
|
|
|
|
|
|
|
|
|
|
|
|
wellPtArr.push_back(pPoint);
|
|
|
|
|
|
if (bFirst)
|
|
|
|
|
|
{
|
|
|
|
|
|
fontSize.cy = pWell->m_font.m_dHeight * 2 / 3;
|
|
|
|
|
|
fontSize.cx = fontSize.cy * 0.4;
|
|
|
|
|
|
bFirst = FALSE;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
double xlen = maxx - minx;
|
|
|
|
|
|
double ylen = maxy - miny;
|
|
|
|
|
|
double twlen = xlen > ylen ? xlen : ylen; //井范围x,y向的长边。
|
|
|
|
|
|
|
|
|
|
|
|
double maxlen = sectionRect.Height() / 4; //以当前剖面范围高度的1/4与井范围矩形的长边对应。
|
|
|
|
|
|
|
|
|
|
|
|
CPoint2D minpt;
|
|
|
|
|
|
minpt.x0 = sectionRect.left - maxlen / 2; //剖面图左下角附近做为井位图左下角点。
|
|
|
|
|
|
minpt.y0 = sectionRect.bottom - maxlen / 2;
|
|
|
|
|
|
|
|
|
|
|
|
double ratio = maxlen / twlen;
|
|
|
|
|
|
|
|
|
|
|
|
CString strLibPath = sybmlPath + "\\";// ::GetPreferences().DocumentMark.GetLibraryPath();
|
|
|
|
|
|
CString markFile = strLibPath + "A2-勘探样式-中海油.kev";
|
|
|
|
|
|
CString markName = "油气层井";
|
|
|
|
|
|
bool bInitSucess = AfxGetMarkLibMgr()->InitLib(strLibPath, FALSE);
|
|
|
|
|
|
POSITION mpos = AfxGetMarkLibMgr()->Find(markFile);
|
|
|
|
|
|
CXy* pMark = NULL;
|
|
|
|
|
|
if (mpos != NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
CLibraryItem* pMItem = AfxGetMarkLibMgr()->GetAt(mpos);
|
|
|
|
|
|
if (pMItem->m_pxy == NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
pMItem->Read();
|
|
|
|
|
|
}
|
|
|
|
|
|
if (pMItem->m_pxy != NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
CMapStringToPtrNoCase* pmarks = pMItem->m_pxy->GetMark();
|
|
|
|
|
|
pMark = (CXy*)pMItem->m_pxy->FindMark(markName);
|
|
|
|
|
|
//pmarks->Lookup(makrName, (void*&)pMark);
|
|
|
|
|
|
if (pMark)
|
|
|
|
|
|
{
|
|
|
|
|
|
CXy* pNewMark = new CXy;
|
|
|
|
|
|
*pNewMark = *(pMark);
|
|
|
|
|
|
pDoc->GetDraw()->AddMark(pNewMark);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
CItemSelect* ptItemSelect = new CItemSelect(GetDocument());
|
|
|
|
|
|
double xl, xr, yt, yb;
|
|
|
|
|
|
xl = yb = DBL_MAX;
|
|
|
|
|
|
xr = yt = -1 * DBL_MAX;
|
|
|
|
|
|
for (int i = 0; i < wellPtArr.size(); i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
CPointNameEx* pPoint = wellPtArr[i];
|
|
|
|
|
|
|
|
|
|
|
|
CHowToViewPoint* pHVpt = new CHowToViewPoint;
|
|
|
|
|
|
pHVpt->m_word.cy = fontSize.cy;
|
|
|
|
|
|
pHVpt->m_word.cx = fontSize.cx;
|
|
|
|
|
|
pHVpt->frColor = RGB(10, 10, 10);
|
|
|
|
|
|
if (pMark)
|
|
|
|
|
|
{
|
|
|
|
|
|
pHVpt->m_mark.cx = fontSize.cy * 0.5;
|
|
|
|
|
|
pHVpt->m_mark.cy = fontSize.cy * 0.5;
|
|
|
|
|
|
pHVpt->MarkName = markName;
|
|
|
|
|
|
pHVpt->PositionNew(0);
|
|
|
|
|
|
pHVpt->SetAlignsH(CTextFlags::alignCenterH);
|
|
|
|
|
|
//pHVpt->pDraw =
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
pPoint->x0 = (pPoint->x0 - minx) * ratio + minpt.x0;
|
|
|
|
|
|
pPoint->y0 = (pPoint->y0 - miny) * ratio + minpt.y0;
|
|
|
|
|
|
|
|
|
|
|
|
POSITION pos = GetDocument()->GetDraw()->AddElement(pPoint, DOUBLEFOX_POINT);
|
|
|
|
|
|
COne* pOne = GetDocument()->GetDraw()->GetAt(pos);
|
|
|
|
|
|
pOne->HowToViewPoint = pHVpt;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CRect8 trect = pOne->GetRect();
|
|
|
|
|
|
if (trect.left < xl)
|
|
|
|
|
|
xl = trect.left;
|
|
|
|
|
|
if (trect.right > xr)
|
|
|
|
|
|
xr = trect.right;
|
|
|
|
|
|
if (trect.top > yt)
|
|
|
|
|
|
yt = trect.top;
|
|
|
|
|
|
if (trect.bottom < yb)
|
|
|
|
|
|
yb = trect.bottom;
|
|
|
|
|
|
|
|
|
|
|
|
ptItemSelect->m_selection.AddTail(pos);
|
|
|
|
|
|
//pOne->seth
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (ptItemSelect->m_selection.GetCount() > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
CRect8 rect;
|
|
|
|
|
|
rect.left = xl; rect.right = xr;
|
|
|
|
|
|
rect.top = yt; rect.bottom = yb;
|
|
|
|
|
|
CCurveEx* pCurve = new CCurveEx;
|
|
|
|
|
|
pCurve->CreateCurveFromRect(&rect);
|
|
|
|
|
|
POSITION pos1 = GetDocument()->GetDraw()->AddElement(pCurve, DOUBLEFOX_CURVE);
|
|
|
|
|
|
ptItemSelect->m_selection.AddTail(pos1);
|
|
|
|
|
|
|
|
|
|
|
|
POSITION gpos = ptItemSelect->GroupSelectionToBlock();
|
|
|
|
|
|
}
|
|
|
|
|
|
delete ptItemSelect;
|
|
|
|
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
}
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::OnBendExtendLevelLeft()
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
|
|
|
|
|
|
CItem *pItem = pDoc->GetItem();
|
|
|
|
|
|
if (NULL == pItem)
|
|
|
|
|
|
return;
|
|
|
|
|
|
if (pItem->GetType() == ITEM_WELLSECTION)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection* pItemWellSection = (CItemWellSection*)pItem;
|
|
|
|
|
|
|
|
|
|
|
|
if (NULL != pItemWellSection)
|
|
|
|
|
|
pItemWellSection->SetReUnDoAction(FALSE, IDS_STRING_ACTION_MOVE, 2);
|
|
|
|
|
|
|
|
|
|
|
|
CWellSection* pSection = (CWellSection*)pItemWellSection->GetWellSection();
|
|
|
|
|
|
pSection->GetFeature()->SetBendExtendLeftLevel(!pSection->GetFeature()->IsBendExtendLeftLevel());
|
|
|
|
|
|
|
|
|
|
|
|
POSITION pos = pSection->m_BendList.GetHeadPosition();
|
|
|
|
|
|
while (pos)
|
|
|
|
|
|
{
|
|
|
|
|
|
CBendObj* pBend = (CBendObj*)pSection->m_BendList.GetNext(pos);
|
|
|
|
|
|
pBend->CreateBendLines();
|
|
|
|
|
|
pBend->CreateBendFills();
|
|
|
|
|
|
}
|
|
|
|
|
|
pDoc->Invalidate();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::OnBendExtendTrendLeft()
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
|
|
|
|
|
|
CItem *pItem = pDoc->GetItem();
|
|
|
|
|
|
if (NULL == pItem)
|
|
|
|
|
|
return;
|
|
|
|
|
|
if (pItem->GetType() == ITEM_WELLSECTION)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection* pItemWellSection = (CItemWellSection*)pItem;
|
|
|
|
|
|
|
|
|
|
|
|
if (NULL != pItemWellSection)
|
|
|
|
|
|
pItemWellSection->SetReUnDoAction(FALSE, IDS_STRING_ACTION_MOVE, 2);
|
|
|
|
|
|
|
|
|
|
|
|
CWellSection* pSection = (CWellSection*)pItemWellSection->GetWellSection();
|
|
|
|
|
|
pSection->GetFeature()->SetBendExtendLeftTrend(!pSection->GetFeature()->IsBendExtendLeftTrend());
|
|
|
|
|
|
|
|
|
|
|
|
POSITION pos = pSection->m_BendList.GetHeadPosition();
|
|
|
|
|
|
while (pos)
|
|
|
|
|
|
{
|
|
|
|
|
|
CBendObj* pBend = (CBendObj*)pSection->m_BendList.GetNext(pos);
|
|
|
|
|
|
pBend->CreateBendLines();
|
|
|
|
|
|
pBend->CreateBendFills();
|
|
|
|
|
|
}
|
|
|
|
|
|
pDoc->Invalidate();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::OnBendExtendLevelRight()
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
|
|
|
|
|
|
CItem *pItem = pDoc->GetItem();
|
|
|
|
|
|
if (NULL == pItem)
|
|
|
|
|
|
return;
|
|
|
|
|
|
if (pItem->GetType() == ITEM_WELLSECTION)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection* pItemWellSection = (CItemWellSection*)pItem;
|
|
|
|
|
|
|
|
|
|
|
|
if (NULL != pItemWellSection)
|
|
|
|
|
|
pItemWellSection->SetReUnDoAction(FALSE, IDS_STRING_ACTION_MOVE, 2);
|
|
|
|
|
|
|
|
|
|
|
|
CWellSection* pSection = (CWellSection*)pItemWellSection->GetWellSection();
|
|
|
|
|
|
pSection->GetFeature()->SetBendExtendRightLevel(!pSection->GetFeature()->IsBendExtendRightLevel());
|
|
|
|
|
|
POSITION pos = pSection->m_BendList.GetHeadPosition();
|
|
|
|
|
|
while (pos)
|
|
|
|
|
|
{
|
|
|
|
|
|
CBendObj* pBend = (CBendObj*)pSection->m_BendList.GetNext(pos);
|
|
|
|
|
|
pBend->CreateBendLines();
|
|
|
|
|
|
pBend->CreateBendFills();
|
|
|
|
|
|
}
|
|
|
|
|
|
pDoc->Invalidate();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::OnBendExtendTrendRight()
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
|
|
|
|
|
|
CItem *pItem = pDoc->GetItem();
|
|
|
|
|
|
if (NULL == pItem)
|
|
|
|
|
|
return;
|
|
|
|
|
|
if (pItem->GetType() == ITEM_WELLSECTION)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection* pItemWellSection = (CItemWellSection*)pItem;
|
|
|
|
|
|
|
|
|
|
|
|
if (NULL != pItemWellSection)
|
|
|
|
|
|
pItemWellSection->SetReUnDoAction(FALSE, IDS_STRING_ACTION_MOVE, 2);
|
|
|
|
|
|
|
|
|
|
|
|
CWellSection* pSection = (CWellSection*)pItemWellSection->GetWellSection();
|
|
|
|
|
|
pSection->GetFeature()->SetBendExtendRightTrend(!pSection->GetFeature()->IsBendExtendRightTrend());
|
|
|
|
|
|
POSITION pos = pSection->m_BendList.GetHeadPosition();
|
|
|
|
|
|
while (pos)
|
|
|
|
|
|
{
|
|
|
|
|
|
CBendObj* pBend = (CBendObj*)pSection->m_BendList.GetNext(pos);
|
|
|
|
|
|
pBend->CreateBendLines();
|
|
|
|
|
|
pBend->CreateBendFills();
|
|
|
|
|
|
}
|
|
|
|
|
|
pDoc->Invalidate();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BOOL CMultiWellSectionView::OnAddBendLayerPoint()
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
|
|
|
|
|
|
CItem *pItem = pDoc->GetItem();
|
|
|
|
|
|
if (NULL == pItem)
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
if (pItem->GetType() == ITEM_WELLSECTION)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection* pItemSection = (CItemWellSection*)pItem;
|
|
|
|
|
|
if (pItemSection->GetItem()->GetType() == ITEM_BEND)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemBend* pBendItem = (CItemBend*)pItemSection->GetItem();
|
|
|
|
|
|
pBendItem->AddBendLayerPoint();
|
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BOOL CMultiWellSectionView::OnAddFaultPoint()
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
|
|
|
|
|
|
CItem *pItem = pDoc->GetItem();
|
|
|
|
|
|
if (NULL == pItem)
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
if (pItem->GetType() == ITEM_WELLSECTION)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection* pItemSection = (CItemWellSection*)pItem;
|
|
|
|
|
|
if (pItemSection->GetItem()->GetType() == ITEM_FAULT)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemFault* pFaultItem = (CItemFault*)pItemSection->GetItem();
|
|
|
|
|
|
pFaultItem->AddFaultPoint();
|
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BOOL CMultiWellSectionView::OnDeleteLayerPoint()
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
|
|
|
|
|
|
CItem *pItem = pDoc->GetItem();
|
|
|
|
|
|
if (NULL == pItem)
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
if (pItem->GetType() == ITEM_WELLSECTION)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection* pItemSection = (CItemWellSection*)pItem;
|
|
|
|
|
|
if (pItemSection->GetItem()->GetType() == ITEM_BEND)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemBend* pBendItem = (CItemBend*)pItemSection->GetItem();
|
|
|
|
|
|
pBendItem->DeleteBendLayerPoint();
|
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
BOOL CMultiWellSectionView::OnDeleteFaultPoint()
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
|
|
|
|
|
|
CItem *pItem = pDoc->GetItem();
|
|
|
|
|
|
if (NULL == pItem)
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
if (pItem->GetType() == ITEM_WELLSECTION)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection* pItemSection = (CItemWellSection*)pItem;
|
|
|
|
|
|
if (pItemSection->GetItem()->GetType() == ITEM_FAULT)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemFault* pFaultItem = (CItemFault*)pItemSection->GetItem();
|
|
|
|
|
|
pFaultItem->DeleteFaultPoint();
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::SetClient(int l, int t, int r, int b)
|
|
|
|
|
|
{
|
|
|
|
|
|
CSigmaView::SetClient(l, t, r, b);
|
|
|
|
|
|
OnSize(0, r - l, b - t);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::Scroll(int orientation, double offset)
|
|
|
|
|
|
{
|
|
|
|
|
|
CSigmaView::Scroll(orientation, offset);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int CMultiWellSectionView::ViewSetItemForSelectedElement(int mouseX, int mouseY)
|
|
|
|
|
|
{
|
|
|
|
|
|
int itemType = eWellPoleCallbackMsgDef::tZeroData;
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
|
|
|
|
|
|
if (pDoc->GetItem())
|
|
|
|
|
|
{
|
|
|
|
|
|
CItem* pItem = pDoc->GetItem();
|
|
|
|
|
|
CPoint pt;
|
|
|
|
|
|
pt.x = mouseX;
|
|
|
|
|
|
pt.y = mouseY;
|
|
|
|
|
|
|
|
|
|
|
|
CItem* pOldItem = pDoc->GetItem();
|
|
|
|
|
|
|
|
|
|
|
|
//if (pItem->GetType() != ITEM_SELECT && pItem->GetType() != ITEM_WELLSECTION)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// pDoc->GetItem()->OnLButtonDown(nFlags, point);
|
|
|
|
|
|
// return;
|
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
|
|
CPoint2D ptReal = pDoc->GetDC().GetReal(pt);
|
|
|
|
|
|
CRect8 rectReal = pDoc->GetSelectedRect(ptReal);
|
|
|
|
|
|
BOOL bIn = FALSE;
|
|
|
|
|
|
CPtrList* pList = pDoc->GetDraw()->GetValueList();
|
|
|
|
|
|
////对象链表
|
|
|
|
|
|
pList = pDoc->GetDraw()->GetValueList();
|
|
|
|
|
|
POSITION pos = pList->GetHeadPosition();
|
|
|
|
|
|
while (NULL != pos)
|
|
|
|
|
|
{
|
|
|
|
|
|
COne* pOne = (COne*)pList->GetAt(pos);
|
|
|
|
|
|
|
|
|
|
|
|
if (pOne->GetType() != KEP_WELLSECTION)
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
bIn = pOne->IsInRange(rectReal);
|
|
|
|
|
|
if (bIn)
|
|
|
|
|
|
{
|
|
|
|
|
|
if ((pItem->GetType() != ITEM_SELECT && !pItem->IsNestItem()) || (pItem->GetType() == ITEM_WELLSECTION && pItem->IsNestItem()))
|
|
|
|
|
|
{//选中其它对象,切换选择工具
|
|
|
|
|
|
//pDoc->SetItem(pDoc->FindItem(ITEM_SELECT));
|
|
|
|
|
|
itemType = eWellPoleCallbackMsgDef::vSetSelectItem;
|
|
|
|
|
|
pDoc->DeleteItem();
|
|
|
|
|
|
}
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
pList->GetNext(pos);
|
|
|
|
|
|
}
|
|
|
|
|
|
BOOL bInSection = FALSE;
|
|
|
|
|
|
if (!bIn)
|
|
|
|
|
|
{
|
|
|
|
|
|
pos = pList->GetHeadPosition();
|
|
|
|
|
|
while (NULL != pos)
|
|
|
|
|
|
{
|
|
|
|
|
|
COne* pOne = (COne*)pList->GetAt(pos);
|
|
|
|
|
|
if (pOne->GetType() == KEP_WELLSECTION)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (pOne->IsInRange(rectReal))
|
|
|
|
|
|
{
|
|
|
|
|
|
bInSection = TRUE;
|
|
|
|
|
|
|
|
|
|
|
|
if (pItem->GetType() != ITEM_WELLSECTION)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection* pItemWellSection = new CItemWellSection(GetDocument());
|
|
|
|
|
|
pItemWellSection->SetPos(pos);
|
|
|
|
|
|
pItemWellSection->SetDrawObj((CWellBaseObj*)pOne->GetValue());
|
|
|
|
|
|
pDoc->SetItem(pItemWellSection);
|
|
|
|
|
|
itemType = eWellPoleCallbackMsgDef::vSetWellSectionItem;
|
|
|
|
|
|
}
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
pList->GetNext(pos);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (!bInSection)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (pItem->GetType() == ITEM_WELLSECTION /*&& pItem->IsInEdit()*/)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection *pItemSection = (CItemWellSection *)pItem;
|
|
|
|
|
|
BOOL bSet = TRUE;
|
|
|
|
|
|
if (pItemSection->GetItem() != NULL && pItemSection->GetItem()->GetType() == ITEM_ADDFAULT)
|
|
|
|
|
|
bSet = FALSE;
|
|
|
|
|
|
if (bSet)
|
|
|
|
|
|
{//点中空白,切换工具
|
|
|
|
|
|
itemType = eWellPoleCallbackMsgDef::vSetSelectItem;
|
|
|
|
|
|
pDoc->DeleteItem();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return itemType;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return itemType;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
BOOL CMultiWellSectionView::GetSelectWellSectionObject(int& type, int& ttype, ULONGLONG& objHandle)
|
|
|
|
|
|
{
|
|
|
|
|
|
BOOL b = FALSE;
|
|
|
|
|
|
|
|
|
|
|
|
type = -1;
|
|
|
|
|
|
ttype = -1;
|
|
|
|
|
|
objHandle = 0;
|
|
|
|
|
|
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
if (pDoc->GetItem() == NULL)
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
|
|
|
|
|
|
if (m_pDoc->GetItem()->GetType() == ITEM_WELLSECTION)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection *pSectionItem = (CItemWellSection *)m_pDoc->GetItem();
|
|
|
|
|
|
if (pSectionItem->m_pItemSelected == NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
CWellSection* pSection = pDoc->GetWellSection();
|
|
|
|
|
|
type = KEP_WELLSECTION;
|
|
|
|
|
|
ttype = KEP_WELLSECTION;
|
|
|
|
|
|
objHandle = (ULONGLONG)(pSection);
|
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
if (pSectionItem->m_pItemSelected->GetType() == ITEM_BEND)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemBend *pItemBend = (CItemBend *)pSectionItem->m_pItemSelected;
|
|
|
|
|
|
type = KEP_SECTIONBEND;
|
|
|
|
|
|
ttype = KEP_SECTIONBEND;
|
|
|
|
|
|
CBendObj *pBend = (CBendObj*)pItemBend->GetDrawObj();
|
|
|
|
|
|
objHandle = (ULONGLONG)(pBend);
|
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
}
|
|
|
|
|
|
else if(pSectionItem->m_pItemSelected->GetType() == ITEM_FAULT)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemFault *pItemFault = (CItemFault *)pSectionItem->m_pItemSelected;
|
|
|
|
|
|
type = KEP_SECTIONFAULT;
|
|
|
|
|
|
ttype = KEP_SECTIONFAULT;
|
|
|
|
|
|
CFaultObj *pFault = (CFaultObj*)pItemFault->GetDrawObj();
|
|
|
|
|
|
objHandle = (ULONGLONG)(pFault);
|
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (pSectionItem->m_pItemSelected->GetType() == ITEM_SECTIONWELL)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemSectionWell* pItemWell = (CItemSectionWell*)pSectionItem->m_pItemSelected;
|
|
|
|
|
|
if (pItemWell->m_pItemSelected == NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
CWellPole* pWell = (CWellPole*)pItemWell->GetDrawObj();
|
|
|
|
|
|
type = KEP_WELL;
|
|
|
|
|
|
ttype = KEP_WELL;
|
|
|
|
|
|
objHandle = (ULONGLONG)(pWell);
|
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
if (pItemWell->m_pItemSelected->GetType() == ITEM_TRACK)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWcsTrack* pItemTrack = (CItemWcsTrack*)pItemWell->m_pItemSelected;
|
|
|
|
|
|
type = KEP_TRACK;
|
|
|
|
|
|
CTrackObj* pTrack = (CTrackObj*)pItemTrack->GetDrawObj();
|
|
|
|
|
|
ttype = pTrack->GetTrackType();
|
|
|
|
|
|
objHandle = (ULONGLONG)(pItemTrack->GetDrawObj());
|
|
|
|
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (pItemWell->m_pItemSelected->GetType() == ITEM_ADDBEND)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemAddBend* pItemAddBend = (CItemAddBend*)pItemWell->m_pItemSelected;
|
|
|
|
|
|
|
|
|
|
|
|
CWellBaseObj* pTrack = (CWellBaseObj*)pItemAddBend->GetDrawObj();
|
|
|
|
|
|
if (pTrack == NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
type = KEP_TRACKINDATA;
|
|
|
|
|
|
ttype = pTrack->GetType();
|
|
|
|
|
|
objHandle = (ULONGLONG)(pItemAddBend->GetDrawObj());
|
|
|
|
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (pItemWell->m_pItemSelected->GetType() == ITEM_TRACKIN)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWcsTrackIn* pItemTrackIn = (CItemWcsTrackIn*)pItemWell->m_pItemSelected;
|
|
|
|
|
|
|
|
|
|
|
|
CWellBaseObj* pTrack = (CWellBaseObj*)pItemTrackIn->GetDrawObj();
|
|
|
|
|
|
if (pTrack == NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
type = KEP_TRACKINDATA;
|
|
|
|
|
|
ttype = pTrack->GetType();
|
|
|
|
|
|
objHandle = (ULONGLONG)(pItemTrackIn->GetDrawObj());
|
|
|
|
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return b;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int CMultiWellSectionView::GetCurrentDrawItemType()
|
|
|
|
|
|
{
|
|
|
|
|
|
int rt = -1;
|
|
|
|
|
|
CMultiWellSectionDoc* pDoc = GetDocument();
|
|
|
|
|
|
if (pDoc->GetItem() == NULL)
|
|
|
|
|
|
return rt;
|
|
|
|
|
|
|
|
|
|
|
|
if (m_pDoc->GetItem()->GetType() == ITEM_WELLSECTION)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection *pSectionItem = (CItemWellSection *)m_pDoc->GetItem();
|
|
|
|
|
|
if (pSectionItem->m_pItemSelected == NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
rt = pSectionItem->GetType();
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
if (pSectionItem->m_pItemSelected->GetType() == ITEM_ADDFAULT)
|
|
|
|
|
|
{
|
|
|
|
|
|
rt = pSectionItem->m_pItemSelected->GetType();
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (pSectionItem->m_pItemSelected->GetType() == ITEM_BEND)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemBend *pItemBend = (CItemBend *)pSectionItem->m_pItemSelected;
|
|
|
|
|
|
rt = pItemBend->GetType();
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (pSectionItem->m_pItemSelected->GetType() == ITEM_FAULT)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemFault *pItemFault = (CItemFault *)pSectionItem->m_pItemSelected;
|
|
|
|
|
|
rt = pItemFault->GetType();
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (pSectionItem->m_pItemSelected->GetType() == ITEM_SECTIONWELL)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemSectionWell* pItemWell = (CItemSectionWell*)pSectionItem->m_pItemSelected;
|
|
|
|
|
|
if (pItemWell->m_pItemSelected == NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
rt = pItemWell->GetType();
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
if (pItemWell->m_pItemSelected->GetType() == ITEM_TRACK)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWcsTrack* pItemTrack = (CItemWcsTrack*)pItemWell->m_pItemSelected;
|
|
|
|
|
|
rt = pItemTrack->GetType();
|
|
|
|
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (pItemWell->m_pItemSelected->GetType() == ITEM_ADDBEND)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemAddBend* pItemAddBend = (CItemAddBend*)pItemWell->m_pItemSelected;
|
|
|
|
|
|
rt = pItemAddBend->GetType();
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (pItemWell->m_pItemSelected->GetType() == ITEM_TRACKIN)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWcsTrackIn* pItemTrackIn = (CItemWcsTrackIn*)pItemWell->m_pItemSelected;
|
|
|
|
|
|
|
|
|
|
|
|
rt = pItemTrackIn->GetType();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return rt;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
BOOL CMultiWellSectionView::GetSelectedWell(ULONGLONG& objHandle)
|
|
|
|
|
|
{
|
|
|
|
|
|
BOOL b = FALSE;
|
|
|
|
|
|
|
|
|
|
|
|
objHandle = 0;
|
|
|
|
|
|
|
|
|
|
|
|
CMultiWellSectionDoc* pWellDoc = (CMultiWellSectionDoc*)GetDocument();
|
|
|
|
|
|
|
|
|
|
|
|
if (pWellDoc->GetItem() == NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (pWellDoc->GetItem()->GetType() == ITEM_WELLSECTION)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection *pSectionItem = (CItemWellSection *)m_pDoc->GetItem();
|
|
|
|
|
|
if (pSectionItem->m_pItemSelected == NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (pSectionItem->m_pItemSelected->GetType() == ITEM_SECTIONWELL)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemSectionWell* pItemWell = (CItemSectionWell*)pSectionItem->m_pItemSelected;
|
|
|
|
|
|
CWellPole* pWell = (CWellPole*)pItemWell->GetDrawObj();
|
|
|
|
|
|
objHandle = (ULONGLONG)(pWell);
|
|
|
|
|
|
b = TRUE;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return b;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
BOOL CMultiWellSectionView::AddTrackAfterSelectedWellObject(int trackType[], int trackNum, ULONGLONG*& pNewTrackHandle, int*& pNewTrackType, int& newTrackNum)
|
|
|
|
|
|
{
|
|
|
|
|
|
BOOL b = FALSE;
|
|
|
|
|
|
newTrackNum = 0;
|
|
|
|
|
|
CMultiWellSectionDoc* pWellDoc = (CMultiWellSectionDoc*)GetDocument();
|
|
|
|
|
|
|
|
|
|
|
|
if (pWellDoc->GetItem() == NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (pWellDoc->GetItem()->GetType() == ITEM_WELLSECTION)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection *pSectionItem = (CItemWellSection *)m_pDoc->GetItem();
|
|
|
|
|
|
if (pSectionItem->m_pItemSelected == NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (pSectionItem->m_pItemSelected->GetType() == ITEM_SECTIONWELL)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemSectionWell* pItemWell = (CItemSectionWell*)pSectionItem->m_pItemSelected;
|
|
|
|
|
|
CTrackObj* pSelectTrack = NULL;
|
|
|
|
|
|
|
|
|
|
|
|
if (pItemWell->m_WellObjSelectlist.GetCount() > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
CWellBaseObj* pObjSelected = pItemWell->m_WellObjSelectlist.GetHead();
|
|
|
|
|
|
if (pObjSelected->GetType() == KEP_TRACK)
|
|
|
|
|
|
{
|
|
|
|
|
|
pSelectTrack = (CTrackObj*)pObjSelected;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
TRACKLIST newTracks;
|
|
|
|
|
|
|
|
|
|
|
|
pItemWell->AddTrack(pSelectTrack, trackType, trackNum, newTracks);
|
|
|
|
|
|
newTrackNum = newTracks.size();
|
|
|
|
|
|
pNewTrackHandle = (ULONGLONG*)(new BYTE[newTrackNum * sizeof(ULONGLONG)]); //new ULONGLONG[newTrackNum]; //保证分配的指针类型与释放的一致
|
|
|
|
|
|
pNewTrackType = (int*)(new BYTE[newTrackNum * sizeof(int)]); //new int[newTrackNum];
|
|
|
|
|
|
int id = 0;
|
|
|
|
|
|
TRACKLIST::iterator it = newTracks.begin();
|
|
|
|
|
|
for (; it != newTracks.end(); ++it)
|
|
|
|
|
|
{
|
|
|
|
|
|
pNewTrackHandle[id] = ULONGLONG(*it);
|
|
|
|
|
|
pNewTrackType[id] = (*it)->GetTrackType();
|
|
|
|
|
|
id++;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
m_pWndCallBack(eWellPoleCallbackMsgDef::tInvalidateWnd, 0);
|
|
|
|
|
|
}
|
|
|
|
|
|
b = TRUE;
|
|
|
|
|
|
}
|
|
|
|
|
|
return b;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
BOOL CMultiWellSectionView::DeleteSelectedWellObject()
|
|
|
|
|
|
{
|
|
|
|
|
|
BOOL b = FALSE;
|
|
|
|
|
|
|
|
|
|
|
|
CMultiWellSectionDoc* pWellDoc = (CMultiWellSectionDoc*)GetDocument();
|
|
|
|
|
|
|
|
|
|
|
|
if (m_pDoc->GetItem() == NULL)
|
|
|
|
|
|
return b;
|
|
|
|
|
|
|
|
|
|
|
|
if (pWellDoc->GetItem()->GetType() == ITEM_WELLSECTION)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection *pSectionItem = (CItemWellSection *)m_pDoc->GetItem();
|
|
|
|
|
|
|
|
|
|
|
|
pSectionItem->DeleteSelection();
|
|
|
|
|
|
m_pWndCallBack(eWellPoleCallbackMsgDef::tInvalidateWnd, 0);
|
|
|
|
|
|
b = TRUE;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return b;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
BOOL CMultiWellSectionView::SaveWellPoleTemplateFile(LPCTSTR filePathName)
|
|
|
|
|
|
{
|
|
|
|
|
|
BOOL b = FALSE;
|
|
|
|
|
|
CMultiWellSectionDoc* pWellDoc = (CMultiWellSectionDoc*)GetDocument();
|
|
|
|
|
|
|
|
|
|
|
|
if (pWellDoc->GetItem() == NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (pWellDoc->GetItem()->GetType() == ITEM_WELLSECTION)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection *pSectionItem = (CItemWellSection *)m_pDoc->GetItem();
|
|
|
|
|
|
if (pSectionItem->m_pItemSelected == NULL)
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
|
|
|
|
|
|
if (pSectionItem->m_pItemSelected->GetType() == ITEM_SECTIONWELL)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemSectionWell* pItemWell = (CItemSectionWell*)pSectionItem->m_pItemSelected;
|
|
|
|
|
|
CWellPole *pWellObj = pItemWell->GetWellObject();
|
|
|
|
|
|
pWellObj->SetActionTemplate(TRUE);
|
|
|
|
|
|
CStdioFile fw;
|
|
|
|
|
|
if (!fw.Open(filePathName, CFile::modeCreate | CFile::modeWrite))
|
|
|
|
|
|
{
|
|
|
|
|
|
pWellObj->SetActionTemplate(FALSE);
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
}
|
|
|
|
|
|
b = TRUE;
|
|
|
|
|
|
AfxGetPublicFunction()->InitSaveCounter();
|
|
|
|
|
|
//AfxGetPublicFunction()->__CurrentSaveFilePath = filepathstr;
|
|
|
|
|
|
DWORD tcode = AfxGetPublicFunction()->GetCodeType();
|
|
|
|
|
|
|
|
|
|
|
|
AfxGetPublicFunction()->SetCodeType(CODE_GB2321);
|
|
|
|
|
|
//AfxGetPublicFunction()->WriteDML_Head_Version(fw);
|
|
|
|
|
|
//AfxGetPublicFunction()->WriteDML_Head_Xmlns(fw);
|
|
|
|
|
|
nsWellPoleFunc::WritePCG_Head_Version(fw);
|
|
|
|
|
|
pWellObj->WritePCG(fw, 2, 1);//pWellObj->WriteDML(fw, -1, 1);
|
|
|
|
|
|
nsWellPoleFunc::WritePCG_Tail(fw);
|
|
|
|
|
|
//AfxGetPublicFunction()->SetCodeType((DWORD)::GetPreferences().WorkaroundSave.m_nCodeMode);
|
|
|
|
|
|
|
|
|
|
|
|
AfxGetPublicFunction()->InitSaveCounter();
|
|
|
|
|
|
fw.Close();
|
|
|
|
|
|
pWellObj->SetActionTemplate(FALSE);
|
|
|
|
|
|
AfxGetPublicFunction()->SetCodeType(tcode);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return b;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//BOOL CMultiWellSectionView::ApplyingWellPoleTemplateFile(LPCTSTR filePathName)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// BOOL b = FALSE;
|
|
|
|
|
|
// CMultiWellSectionDoc* pWellDoc = (CMultiWellSectionDoc*)GetDocument();
|
|
|
|
|
|
//
|
|
|
|
|
|
// if (pWellDoc->GetItem() == NULL)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// return FALSE;
|
|
|
|
|
|
// }
|
|
|
|
|
|
//
|
|
|
|
|
|
// if (pWellDoc->GetItem()->GetType() == ITEM_WELLSECTION)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// CItemWellSection *pSectionItem = (CItemWellSection *)m_pDoc->GetItem();
|
|
|
|
|
|
// if (pSectionItem->m_pItemSelected == NULL)
|
|
|
|
|
|
// return FALSE;
|
|
|
|
|
|
//
|
|
|
|
|
|
// if (pSectionItem->m_pItemSelected->GetType() == ITEM_SECTIONWELL)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// CItemSectionWell* pItemWell = (CItemSectionWell*)pSectionItem->m_pItemSelected;
|
|
|
|
|
|
// CWellPole *pWellObj = pItemWell->GetWellObject();
|
|
|
|
|
|
//
|
|
|
|
|
|
// CStdioFile fr;
|
|
|
|
|
|
// if (!fr.Open(filePathName, CFile::modeRead))
|
|
|
|
|
|
// return FALSE;
|
|
|
|
|
|
//
|
|
|
|
|
|
// pItemWell->SetReUnDoAction(FALSE);
|
|
|
|
|
|
//
|
|
|
|
|
|
//
|
|
|
|
|
|
// TRACKLIST tracklist;
|
|
|
|
|
|
// tracklist.assign(pWellObj->GetTrackList().begin(), pWellObj->GetTrackList().end());
|
|
|
|
|
|
// pWellObj->GetTrackList().clear();
|
|
|
|
|
|
//
|
|
|
|
|
|
// CString strWellTitle = pWellObj->m_strTitle;
|
|
|
|
|
|
// CString strWellName = pWellObj->GetWellName();
|
|
|
|
|
|
// double fLevel = pWellObj->m_fLevel;
|
|
|
|
|
|
// double topDepth = pWellObj->m_dSdep;
|
|
|
|
|
|
// double endDepth = pWellObj->m_dEdep;
|
|
|
|
|
|
// double top = pWellObj->GetPos().top;
|
|
|
|
|
|
// double left = pWellObj->GetPos().left;
|
|
|
|
|
|
// double proportion = pWellObj->m_fProportion;
|
|
|
|
|
|
// double dOldTrackHead = pWellObj->m_dHeightTrackHead;
|
|
|
|
|
|
// double dOldWellHead = pWellObj->m_dHeightTrackHead;
|
|
|
|
|
|
//
|
|
|
|
|
|
// std::vector<CWellPole::well_interval > oldWellIntervalVec;
|
|
|
|
|
|
// oldWellIntervalVec.insert(oldWellIntervalVec.begin(), pWellObj->GetIntervalVec()->begin(), pWellObj->GetIntervalVec()->end());
|
|
|
|
|
|
//
|
|
|
|
|
|
// AfxGetPublicFunction()->SetCodeType(CODE_GB2321);
|
|
|
|
|
|
//
|
|
|
|
|
|
// if (pWellObj->ReadPCG(fr, -1) == 0)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// //恢复道备份
|
|
|
|
|
|
// TRACKLIST::reverse_iterator rit = tracklist.rbegin();
|
|
|
|
|
|
// for (; rit != tracklist.rend(); rit++)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// pWellObj->GetTrackList().push_front(*rit);
|
|
|
|
|
|
// }
|
|
|
|
|
|
// tracklist.clear();
|
|
|
|
|
|
//
|
|
|
|
|
|
// return FALSE;
|
|
|
|
|
|
// }
|
|
|
|
|
|
// else
|
|
|
|
|
|
// {
|
|
|
|
|
|
// pWellObj->m_strTitle = strWellTitle;
|
|
|
|
|
|
// pWellObj->SetWellName(strWellName);
|
|
|
|
|
|
// pWellObj->m_fLevel = fLevel;
|
|
|
|
|
|
// pWellObj->GetPos().left = left;
|
|
|
|
|
|
// pWellObj->GetPos().top = top;
|
|
|
|
|
|
//
|
|
|
|
|
|
// pWellObj->m_dSdep = topDepth;
|
|
|
|
|
|
// pWellObj->m_dEdep = endDepth;
|
|
|
|
|
|
//
|
|
|
|
|
|
// pWellObj->GetIntervalVec()->clear();
|
|
|
|
|
|
// pWellObj->GetIntervalVec()->insert(pWellObj->GetIntervalVec()->begin(), oldWellIntervalVec.begin(), oldWellIntervalVec.end());
|
|
|
|
|
|
//
|
|
|
|
|
|
// pWellObj->m_fProportion = proportion;
|
|
|
|
|
|
// pWellObj->ReSetWellHead();
|
|
|
|
|
|
// pWellObj->CalculateSize(pWellObj->GetPos().TopLeft());
|
|
|
|
|
|
//
|
|
|
|
|
|
// //应用井模板
|
|
|
|
|
|
// TRACKLIST::iterator it = tracklist.begin();
|
|
|
|
|
|
// for (; it != tracklist.end(); it++)
|
|
|
|
|
|
// pWellObj->GetTemplateList().push_front(*it);
|
|
|
|
|
|
// pWellObj->ApplingTemplate(TRUE, dOldTrackHead, dOldWellHead);
|
|
|
|
|
|
//
|
|
|
|
|
|
// CWellSection *pSection = pSectionItem->GetWellSection();
|
|
|
|
|
|
// CWellPole* pWell = pItemWell->GetWellObject();
|
|
|
|
|
|
// POSITION pos = pSection->m_BendList.GetHeadPosition();
|
|
|
|
|
|
// while (pos)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// CBendObj* pBend = (CBendObj*)pSection->m_BendList.GetNext(pos);
|
|
|
|
|
|
// if (pBend->m_pWellLeft == pWell || pBend->m_pWellRight == pWell)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// pBend->ComputeBend();
|
|
|
|
|
|
// }
|
|
|
|
|
|
// }
|
|
|
|
|
|
// //ImportDataAll(pWellObj, FALSE);
|
|
|
|
|
|
// }
|
|
|
|
|
|
// }
|
|
|
|
|
|
// }
|
|
|
|
|
|
// return b;
|
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
|
|
BOOL CMultiWellSectionView::CombineLeftTrack()
|
|
|
|
|
|
{
|
|
|
|
|
|
BOOL b = FALSE;
|
|
|
|
|
|
CMultiWellSectionDoc* pWellDoc = (CMultiWellSectionDoc*)GetDocument();
|
|
|
|
|
|
|
|
|
|
|
|
if (pWellDoc->GetItem() == NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (pWellDoc->GetItem()->GetType() == ITEM_WELLSECTION)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection *pSectionItem = (CItemWellSection *)m_pDoc->GetItem();
|
|
|
|
|
|
if (pSectionItem->m_pItemSelected == NULL)
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
|
|
|
|
|
|
if (pSectionItem->m_pItemSelected->GetType() == ITEM_SECTIONWELL)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemSectionWell* pItemWell = (CItemSectionWell*)pSectionItem->m_pItemSelected;
|
|
|
|
|
|
pItemWell->TrackLeftGroup();
|
|
|
|
|
|
b = TRUE;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return b;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
BOOL CMultiWellSectionView::CombineRightTrack()
|
|
|
|
|
|
{
|
|
|
|
|
|
BOOL b = FALSE;
|
|
|
|
|
|
CMultiWellSectionDoc* pWellDoc = (CMultiWellSectionDoc*)GetDocument();
|
|
|
|
|
|
|
|
|
|
|
|
if (pWellDoc->GetItem() == NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (pWellDoc->GetItem()->GetType() == ITEM_WELLSECTION)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection *pSectionItem = (CItemWellSection *)m_pDoc->GetItem();
|
|
|
|
|
|
if (pSectionItem->m_pItemSelected == NULL)
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
|
|
|
|
|
|
|
if (pSectionItem->m_pItemSelected->GetType() == ITEM_SECTIONWELL)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemSectionWell* pItemWell = (CItemSectionWell*)pSectionItem->m_pItemSelected;
|
|
|
|
|
|
pItemWell->TrackRightGroup();
|
|
|
|
|
|
b = TRUE;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return b;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::SaveUndoRedoAction()
|
|
|
|
|
|
{
|
|
|
|
|
|
CMultiWellSectionDoc* pWellDoc = (CMultiWellSectionDoc*)GetDocument();
|
|
|
|
|
|
|
|
|
|
|
|
if (pWellDoc->GetItem() == NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
return ;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (pWellDoc->GetItem()->GetType() == ITEM_WELLSECTION)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection *pSectionItem = (CItemWellSection *)m_pDoc->GetItem();
|
|
|
|
|
|
if (pSectionItem->m_pItemSelected != NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (pSectionItem->m_pItemSelected->GetType() == ITEM_BEND || pSectionItem->m_pItemSelected->GetType() == ITEM_FAULT)
|
|
|
|
|
|
{
|
|
|
|
|
|
pSectionItem->SetReUnDoAction(FALSE, IDS_STRING_ACTION_MOVE, 2);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
pSectionItem->SetReUnDoAction();
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
pSectionItem->SetReUnDoAction();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
BOOL CMultiWellSectionView::ApplyingTemplateFileForWell(LPCSTR filePath, ULONGLONG wellHandle)
|
|
|
|
|
|
{
|
|
|
|
|
|
BOOL b = FALSE;
|
|
|
|
|
|
CMultiWellSectionDoc* pWellDoc = (CMultiWellSectionDoc*)GetDocument();
|
|
|
|
|
|
|
|
|
|
|
|
if (pWellDoc->GetItem() == NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
return b;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (pWellDoc->GetItem()->GetType() == ITEM_WELLSECTION)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection* pSectionItem = (CItemWellSection*)m_pDoc->GetItem();
|
|
|
|
|
|
b =pSectionItem->ApplyingTemplateFileForWell(filePath, wellHandle);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return b;
|
|
|
|
|
|
}
|
|
|
|
|
|
BOOL CMultiWellSectionView::ApplyingTemplateFileForSection(LPCSTR filePath)
|
|
|
|
|
|
{
|
|
|
|
|
|
BOOL b = FALSE;
|
|
|
|
|
|
CMultiWellSectionDoc* pWellDoc = (CMultiWellSectionDoc*)GetDocument();
|
|
|
|
|
|
|
|
|
|
|
|
if (pWellDoc->GetItem() == NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
return b;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (pWellDoc->GetItem()->GetType() == ITEM_WELLSECTION)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection* pSectionItem = (CItemWellSection*)m_pDoc->GetItem();
|
|
|
|
|
|
b = pSectionItem->ApplyingTemplateFileForWell(filePath, 0);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return b;
|
|
|
|
|
|
}
|
|
|
|
|
|
BOOL CMultiWellSectionView::ApplyingWellTemplateForSection(ULONGLONG wellHandle)
|
|
|
|
|
|
{
|
|
|
|
|
|
BOOL b = FALSE;
|
|
|
|
|
|
CMultiWellSectionDoc* pWellDoc = (CMultiWellSectionDoc*)GetDocument();
|
|
|
|
|
|
|
|
|
|
|
|
if (pWellDoc->GetItem() == NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
return b;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (pWellDoc->GetItem()->GetType() == ITEM_WELLSECTION)
|
|
|
|
|
|
{
|
|
|
|
|
|
CItemWellSection* pSectionItem = (CItemWellSection*)m_pDoc->GetItem();
|
|
|
|
|
|
b = pSectionItem->ApplyingWellTemplateForSection(wellHandle);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return b;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CMultiWellSectionView::ReSetWell(CWellPole* pWell)
|
|
|
|
|
|
{
|
|
|
|
|
|
CPoint2D pt = pWell->GetAnchorPoint();
|
|
|
|
|
|
pWell->CalculateSize(pt/*pWell->GetPos().TopLeft()*/);
|
|
|
|
|
|
pWell->ReadCurveData();
|
|
|
|
|
|
pWell->ResetChildPosition();
|
|
|
|
|
|
|
|
|
|
|
|
CWellBaseObj* pObj = (CWellBaseObj*)pWell->GetParent();
|
|
|
|
|
|
if (pObj != NULL && pObj->GetType() == KEP_WELLSECTION)
|
|
|
|
|
|
{
|
|
|
|
|
|
//删除相关连层
|
|
|
|
|
|
CWellSection* pWellSection = (CWellSection*)pObj;
|
|
|
|
|
|
POSITION posBend = pWellSection->m_BendList.GetHeadPosition();
|
|
|
|
|
|
while (posBend != NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
CBendObj* pBend = (CBendObj*)pWellSection->m_BendList.GetNext(posBend);
|
|
|
|
|
|
if (!pBend->m_pLayerLeft->IsView() || (pBend->m_pLayerRight != NULL && !pBend->m_pLayerRight->IsView()))
|
|
|
|
|
|
{
|
|
|
|
|
|
POSITION posFind = pWellSection->m_BendList.Find(pBend);
|
|
|
|
|
|
if (posFind != NULL)
|
|
|
|
|
|
{
|
|
|
|
|
|
pWellSection->DeleteBend(pBend);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
pWellSection->ReSetPosition();
|
|
|
|
|
|
}
|
|
|
|
|
|
//重设滚动条
|
|
|
|
|
|
SetScrollBarRange();
|
|
|
|
|
|
}
|