5530 lines
209 KiB
C++
5530 lines
209 KiB
C++
|
|
#pragma warning( push ,0)
|
|||
|
|
#include <QInputDialog>
|
|||
|
|
#include <QDialogButtonBox>
|
|||
|
|
#include <QFormLayout>
|
|||
|
|
#include <QLibrary>
|
|||
|
|
#include "completertextedit.h"
|
|||
|
|
// #include "ObjectEvent.h"
|
|||
|
|
#include "curveline.h"
|
|||
|
|
#include "DataHelper.h"
|
|||
|
|
#include "ObjWellLogTABLE.h"
|
|||
|
|
#include "ObjWellLogINP.h"
|
|||
|
|
// #include "DrawCurveCommand.h"
|
|||
|
|
#include "ConsoleOutputWidget.h"
|
|||
|
|
#include "QtWindowWellSection.h"
|
|||
|
|
#include "chooseShiftCurvesDlg.h"
|
|||
|
|
// #include "WellSectionWindowDocument.h"
|
|||
|
|
#include "GeometryUtils.h"
|
|||
|
|
// #include "ObjWellRulerTrack.h"
|
|||
|
|
#include "DataImport.h"
|
|||
|
|
#include "DataManagger.h"
|
|||
|
|
#include "DepthProgress.h"
|
|||
|
|
// #include "CreateResoultStructDlg.h"
|
|||
|
|
// #include "WellSectionCoordinate.h"
|
|||
|
|
// #include "QtWellSceneManager.h"
|
|||
|
|
// #include "QtWellSectionViewer.h"
|
|||
|
|
// #include "VecWindowCommand.h"
|
|||
|
|
// #include "VecDisplayObjectCommand.h"
|
|||
|
|
#include "VecViewCommand.h"
|
|||
|
|
// #include "ObjDiscreteWellLog.h"
|
|||
|
|
#include <QToolBar>
|
|||
|
|
#include "CurveLine.h"
|
|||
|
|
// #include "DataTree.h"
|
|||
|
|
|
|||
|
|
QStringList colors,liths,oils,colorinds;
|
|||
|
|
|
|||
|
|
// void OSGFRAMEWORK_EXPORT AppendConsole(pai::log::Priority priority,const QString &output);
|
|||
|
|
// #define GetViewCmdID_QtZONEDataTable() "{E908856A-6593-41AC-917D-84B5D82F7B3F}"
|
|||
|
|
// #define GetViewCmdID_ReFreshZONEDataTable() "{D781590C-46F2-4E50-A356-B8DDA3D1C908}"
|
|||
|
|
|
|||
|
|
#pragma warning( pop)
|
|||
|
|
// BEGIN_OSGGRAPHICS_NAMESPACE;
|
|||
|
|
void qsort(QVector<CurveLine *>&datx,int left,int right,int idx);
|
|||
|
|
|
|||
|
|
CQtWindowWellSection::CQtWindowWellSection()/* : CVecWindow(NULL)*/
|
|||
|
|
{
|
|||
|
|
// setFocusPolicy(Qt::StrongFocus);
|
|||
|
|
memset(&m_ListTableInf,0,sizeof(struct LIST_TABLE_INF));
|
|||
|
|
// if(::GetStatusBar()) {
|
|||
|
|
// QLabel *pLabel=::GetStatusBar()->findChild<QLabel*>("BarWL");
|
|||
|
|
// if(pLabel)pLabel->setVisible(true);
|
|||
|
|
// }
|
|||
|
|
m_clockTimer=NULL;
|
|||
|
|
pTDialog=NULL;
|
|||
|
|
spinbox1=NULL;
|
|||
|
|
spinbox2=NULL;
|
|||
|
|
spinbox3=NULL;
|
|||
|
|
recordnum=0;
|
|||
|
|
record=NULL;
|
|||
|
|
thicks=NULL;
|
|||
|
|
jiegudtat=NULL;
|
|||
|
|
jiegudtatshift=NULL;
|
|||
|
|
pairno=NULL;
|
|||
|
|
// QStringList strs=GetSimilarCurves("ROW_HEIGHT");
|
|||
|
|
// if(strs.size()) DEFAULT_ROW_HEIGHT=strs[0].toFloat();
|
|||
|
|
// strs=GetSimilarCurves("ZORE_WIDTH");
|
|||
|
|
// if(strs.size()) ZORE_WIDTH=strs[0].toFloat();
|
|||
|
|
// QString path=GetOilFieldName()+"linewidth.ini";
|
|||
|
|
// strs=GetSimilarCurves("WIDTH",(char*)path.toStdString().c_str());
|
|||
|
|
// if(strs.size()) mLineWidth=strs[0].toFloat();
|
|||
|
|
}
|
|||
|
|
void CQtWindowWellSection::onTimer()
|
|||
|
|
{
|
|||
|
|
// QScrollBar *pVbar=GetVecViewer()->GetVScroll();
|
|||
|
|
// if(pVbar)
|
|||
|
|
// {
|
|||
|
|
// int step=GetVecViewer()->GetHScroll()->pageStep();
|
|||
|
|
// if(step<1) step=10;
|
|||
|
|
// CQtWellSceneManager* scene = dynamic_cast<CQtWellSceneManager*>(GetSceneManager());
|
|||
|
|
// QRectF rcViewerGDIF = scene->GetCameraCommand().GetViewPortSize(
|
|||
|
|
// false,/*indicate the window is wellsection window*/
|
|||
|
|
// false,
|
|||
|
|
// false
|
|||
|
|
// );
|
|||
|
|
|
|||
|
|
// int maxval=pVbar->maximum();
|
|||
|
|
// int val=pVbar->value();
|
|||
|
|
// if(val+rcViewerGDIF.height()<maxval)
|
|||
|
|
// {
|
|||
|
|
// pVbar->setValue(val+step);
|
|||
|
|
// }
|
|||
|
|
// else pVbar->setValue(0);
|
|||
|
|
// }
|
|||
|
|
}
|
|||
|
|
// void CQtWindowWellSection::slotRemoveWell()
|
|||
|
|
// {
|
|||
|
|
// CQtWellSceneManager* m_pWellSceneManager = dynamic_cast<CQtWellSceneManager*>(GetSceneManager());
|
|||
|
|
// if(!m_pWellSceneManager) return;
|
|||
|
|
// CWellSectionWindowDocument *m_pDoc = dynamic_cast<CWellSectionWindowDocument*>(this->GetWindowDocument());
|
|||
|
|
// if(!m_pDoc) return;
|
|||
|
|
|
|||
|
|
// slotClearStandardShift();
|
|||
|
|
// slotClearShiftCurves();
|
|||
|
|
// slotClearShiftZonePoint();
|
|||
|
|
// slotClearShiftZonePoint0();
|
|||
|
|
// slotClearStandardMeg();
|
|||
|
|
// slotClearMegCurves();
|
|||
|
|
|
|||
|
|
// QVector<CObjWellTrack*> vWellTracks =m_pWellSceneManager->GetWellSectionGeomtry().GetAllWellTrack(true);
|
|||
|
|
// foreach(CObjWellTrack *pWellTrack,vWellTracks)
|
|||
|
|
// {
|
|||
|
|
// if(pWellTrack)
|
|||
|
|
// {
|
|||
|
|
// CDataTree *pDatatree=(CDataTree *)::GetProject()->m_pDataTree;
|
|||
|
|
// PaiObject *pP=pWellTrack->GetParent();
|
|||
|
|
// if(pDatatree) pDatatree->OnObjectDeleted(pP,pWellTrack);
|
|||
|
|
// m_pDoc->RemoveWellID(pWellTrack->GetID().toString());
|
|||
|
|
// CVecDisplayObjectCommand::RemoveObjectCommand(pWellTrack,m_pWellSceneManager->GetVecWindow());
|
|||
|
|
// //luol 20200527
|
|||
|
|
// // m_pWellSceneManager->SetCurentPickObject(QUuid());
|
|||
|
|
// if(vWellTracks.size()<=1) m_pDoc->SetCurrentWell(NULL);
|
|||
|
|
// else {
|
|||
|
|
// }
|
|||
|
|
// m_pDoc->GetDocumentDataFromWindow();
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
CQtWindowWellSection::~CQtWindowWellSection()
|
|||
|
|
{
|
|||
|
|
// if (m_clockTimer)
|
|||
|
|
// {
|
|||
|
|
// m_clockTimer->stop();
|
|||
|
|
// }
|
|||
|
|
// delete m_clockTimer;
|
|||
|
|
// m_clockTimer=NULL;
|
|||
|
|
// if(record) delete record;
|
|||
|
|
// CVecWindowCommand::SetCurrentWindow(NULL);
|
|||
|
|
// if(!::GetStatusBar()) return;
|
|||
|
|
// if(SystemExiting()) return;
|
|||
|
|
// QLabel *pLabel=::GetStatusBar()->findChild<QLabel*>("BarWL");
|
|||
|
|
// if(pLabel){
|
|||
|
|
// pLabel->setVisible(false);
|
|||
|
|
// pLabel->setText("");
|
|||
|
|
// }
|
|||
|
|
// pTDialog=NULL;
|
|||
|
|
}
|
|||
|
|
// void CQtWindowWellSection::focusInEvent ( QFocusEvent * event)
|
|||
|
|
// {
|
|||
|
|
// if(CVecWindowCommand::GetCurrentWindow()!=this)
|
|||
|
|
// {
|
|||
|
|
// CVecDisplayObjectCommand::ActiveOSGWindow( this );
|
|||
|
|
// QColor currentcolor =Qt::white;
|
|||
|
|
// GetVecViewer()->setClearColor(
|
|||
|
|
// osg::Vec4f( (float)currentcolor.redF(),
|
|||
|
|
// (float)currentcolor.greenF(),
|
|||
|
|
// (float)currentcolor.blueF(),0.2)
|
|||
|
|
// );
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// void CQtWindowWellSection::GetWindowConfig( EWindowFlag &WindowFlag,CVecSceneManager*&pSceneManager,
|
|||
|
|
// QVector<sUIBuilder>&vUIBuilder,CBaseObject *&pDefaultShowObject
|
|||
|
|
// ,QVector<QUuid> &vViewCommandID,osg::Vec4f& backgroundColor,bool /*bForDebugData*/)
|
|||
|
|
// {
|
|||
|
|
// //窗口为2D窗口,配备工具栏,状态栏,滚动条,window resize保持比例
|
|||
|
|
// WindowFlag = (EWindowFlag)(E2DWindow
|
|||
|
|
// |EKeepXYScaleWhenResizeWindow|EKeepAspectRatio| ELeftTopNoBlankArea | ERightBottomNoBlankArea |
|
|||
|
|
// EToolbar | ELToolbar |EStatusbar|EScrollbar );
|
|||
|
|
|
|||
|
|
|
|||
|
|
// //用自己的场景管理器,加入自动布局功能
|
|||
|
|
// pSceneManager = new CQtWellSceneManager();
|
|||
|
|
|
|||
|
|
// pSceneManager->SetCoordinate( new CWellSectionCoordinate() );
|
|||
|
|
|
|||
|
|
// //配备HUD 的固定Well Head 和 log Head
|
|||
|
|
// vUIBuilder << sUIBuilder( GetClassID_FixedWellHead(), GetID_FixedWellHead() )
|
|||
|
|
// << sUIBuilder( GetClassID_FixedWellLogHead(), GetID_FixedWellLogHead() );
|
|||
|
|
|
|||
|
|
// //默认不渲染任何对象
|
|||
|
|
// pDefaultShowObject = NULL;
|
|||
|
|
|
|||
|
|
// //配置工具栏上的View Command
|
|||
|
|
// vViewCommandID
|
|||
|
|
// << GetDigitizerID_QtWellWindowPick()
|
|||
|
|
// << GetViewCmdID_RotateWellSection()
|
|||
|
|
// << GetViewCmdID_FixedSectionHead()
|
|||
|
|
|
|||
|
|
// <<GetViewCmdID_Seperator()
|
|||
|
|
// <<GetViewCmdID_SetSizeAll()
|
|||
|
|
// <<GetViewCmdID_SetSizeAll()
|
|||
|
|
// <<GetViewCmdID_Seperator()
|
|||
|
|
|
|||
|
|
// <<GetViewCmdID_ActionGroupBegin()
|
|||
|
|
// <<GetCmdID_SaveTemplate()
|
|||
|
|
// <<GetCmdID_ApplyTemplate()
|
|||
|
|
// <<GetCmdID_SaveAsTemplate()
|
|||
|
|
// <<GetCmdID_SaveAsMultiWellTemplate()
|
|||
|
|
// <<GetViewCmdID_ActionGroupEnd()
|
|||
|
|
// << GetCmdID_UndoCommand()
|
|||
|
|
// << GetCmdID_RedoCommand()
|
|||
|
|
// <<GetViewCmdID_ActionGroupBegin()
|
|||
|
|
// << GetDigitizerID_QtDrawRect()
|
|||
|
|
// << GetDigitizerID_QtDrawEllipse()
|
|||
|
|
// << GetViewCmdID_DrawQtPolygon()
|
|||
|
|
// <<GetViewCmdID_ActionGroupEnd()
|
|||
|
|
|
|||
|
|
// <<GetViewCmdID_ActionGroupBegin()
|
|||
|
|
// << GetViewCmdID_QtCreateDataTable()
|
|||
|
|
// <<GetViewCmdID_QtZONEDataTable()
|
|||
|
|
// << GetViewCmdID_QtSetDataTableFormat()
|
|||
|
|
// << GetViewCmdID_ReFreshZONEDataTable()
|
|||
|
|
// <<GetViewCmdID_ActionGroupEnd()
|
|||
|
|
|
|||
|
|
// <<GetViewCmdID_ActionGroupBegin()
|
|||
|
|
// << GetViewCmdID_Print()
|
|||
|
|
// << GetViewCmdID_ExportPNG()
|
|||
|
|
// <<GetViewCmdID_ExportPDF()
|
|||
|
|
// << GetViewCmdID_ExportSVG()
|
|||
|
|
// <<GetViewCmdID_ActionGroupEnd()
|
|||
|
|
// ;
|
|||
|
|
|
|||
|
|
// //窗口背景色
|
|||
|
|
// backgroundColor = osg::Vec4f(1,1,1,1);
|
|||
|
|
// }
|
|||
|
|
void CQtWindowWellSection::slotSetListTableStruct()
|
|||
|
|
{
|
|||
|
|
// CCreateResoultStructDlg *pCreateResoultStructDlg=new CCreateResoultStructDlg();
|
|||
|
|
// QString path=GetTemplatePath();
|
|||
|
|
// QString strTplFilter="(*.lst)";
|
|||
|
|
// QString defaultTempleteFile=QFileDialog::getOpenFileName(NULL,QObject::tr("选择模板"),path,strTplFilter);
|
|||
|
|
// if(defaultTempleteFile.isEmpty()) {
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// pCreateResoultStructDlg->filename=defaultTempleteFile;
|
|||
|
|
// OnListTableInf(defaultTempleteFile);
|
|||
|
|
// pCreateResoultStructDlg->Init(&m_ListTableInf);
|
|||
|
|
// pCreateResoultStructDlg->exec();
|
|||
|
|
// delete pCreateResoultStructDlg;
|
|||
|
|
}
|
|||
|
|
void CQtWindowWellSection::OnListTableInf(QString m_ParFileName)
|
|||
|
|
{
|
|||
|
|
QStringList DataTypea;
|
|||
|
|
DataTypea<<("INT")<<("SHORT")<<("LONG")<<("FLOAT")<<("DOUBLE")<<("STRING")<<
|
|||
|
|
("CHAR")<<("UNSIGNED CHAR")<<("UNSIGNED SHORT")<<("UNSIGNED INT")<<("UNSIGNED LONG");
|
|||
|
|
QStringList GetValueModeStr=GetSimilarCurves("ValueMode");
|
|||
|
|
GetValueModeStr.insert(0,"");
|
|||
|
|
QStringList ZDType=GetSimilarCurves("FieldType");//字段类型
|
|||
|
|
FILE *fp=fopen(m_ParFileName.toStdString().c_str(),"rt");
|
|||
|
|
if(fp)
|
|||
|
|
{
|
|||
|
|
char buf[1000];
|
|||
|
|
m_ListTableInf.m_TableName[0]=0;
|
|||
|
|
m_ListTableInf.m_Mode=0;
|
|||
|
|
m_ListTableInf.m_Flag=0;
|
|||
|
|
fscanf(fp,"%s",m_ListTableInf.m_TableName);
|
|||
|
|
fscanf(fp,"%d %d %d ",&m_ListTableInf.Table_Field_Num,&m_ListTableInf.m_Mode,&m_ListTableInf.m_Flag);
|
|||
|
|
buf[0]=0;
|
|||
|
|
fgets(buf,1000,fp);
|
|||
|
|
QString cs=buf;
|
|||
|
|
cs.remove("\r\n");
|
|||
|
|
cs.remove("\r");
|
|||
|
|
cs.remove("\n");
|
|||
|
|
strcpy(m_ListTableInf.m_CurveName,cs.toStdString().c_str());
|
|||
|
|
|
|||
|
|
char ss[10][32];
|
|||
|
|
strcpy(ss[1],"");
|
|||
|
|
strcpy(ss[2],"");
|
|||
|
|
for(int i=0;i<m_ListTableInf.Table_Field_Num;i++)
|
|||
|
|
{
|
|||
|
|
strcpy(m_ListTableInf.TableName[i],"");
|
|||
|
|
fscanf(fp,"%s %s %s %s %s %s %s %s %s %s",ss[0],m_ListTableInf.Table_Field[i].Name,m_ListTableInf.Table_Field[i].HZName,ss[3],ss[4],ss[5],ss[6],ss[7],ss[8],ss[9]);
|
|||
|
|
//数值类型
|
|||
|
|
for(int m=0;m<DataTypea.size();m++)
|
|||
|
|
{
|
|||
|
|
if(ss[4]==DataTypea[m])
|
|||
|
|
{
|
|||
|
|
m_ListTableInf.Table_Field[i].RepCode=m+1;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
//字段长度
|
|||
|
|
sscanf(ss[5],"%d",&m_ListTableInf.Table_Field[i].Length);
|
|||
|
|
m_ListTableInf.Table_Field[i].Reserved=0;
|
|||
|
|
strcpy(m_ListTableInf.ZdIndex[i],ss[6]);
|
|||
|
|
if(!isdigit(ss[6][0])&&stricmp(ss[9],"MENU"))
|
|||
|
|
{
|
|||
|
|
strcpy(m_ListTableInf.TableName[i],ss[6]);
|
|||
|
|
strcpy(m_ListTableInf.ZdIndex[i],"0");
|
|||
|
|
}
|
|||
|
|
if(strlen(m_ListTableInf.ZdIndex[i])==0) strcpy(m_ListTableInf.ZdIndex[i],"0");
|
|||
|
|
//字段类型
|
|||
|
|
m_ListTableInf.Type[i]=ZDType.indexOf(ss[7]);
|
|||
|
|
if(m_ListTableInf.Type[i]==255) strcpy(m_ListTableInf.TableName[i],ss[7]);
|
|||
|
|
// if(m_ListTableInf.Type[i]<0) m_ListTableInf.Type[i]=1;
|
|||
|
|
//重定向名
|
|||
|
|
strcpy(m_ListTableInf.RenName[i],ss[8]);
|
|||
|
|
//取值方式
|
|||
|
|
m_ListTableInf.GetValueMode[i]=GetValueModeStr.indexOf(ss[9]);
|
|||
|
|
if(m_ListTableInf.GetValueMode[i]<=0||m_ListTableInf.GetValueMode[i]>=GetValueModeStr.size())m_ListTableInf.GetValueMode[i]=3;//如果没有指定取值方式,则取平均值
|
|||
|
|
}
|
|||
|
|
m_ListTableInf.IsHB=0;
|
|||
|
|
m_ListTableInf.IsFC=0;
|
|||
|
|
m_ListTableInf.m_TableType[0]=0;
|
|||
|
|
m_ListTableInf.m_TableSpFIELD[0]=0;
|
|||
|
|
|
|||
|
|
fscanf(fp," %d %d %d\n",&m_ListTableInf.lstm,&m_ListTableInf.IsHB,&m_ListTableInf.IsFC);
|
|||
|
|
fscanf(fp,"%s\n",&m_ListTableInf.m_TableType);
|
|||
|
|
fscanf(fp,"%s\n",&m_ListTableInf.m_TableSpFIELD);
|
|||
|
|
if(!m_ListTableInf.m_TableType[0]) strcpy(m_ListTableInf.m_TableType,"TOTALVAL");
|
|||
|
|
if(!m_ListTableInf.m_TableSpFIELD[0]) strcpy(m_ListTableInf.m_TableSpFIELD,"RESULTNO");
|
|||
|
|
m_ListTableInf.SPVALNUM=0;
|
|||
|
|
while(!feof(fp))
|
|||
|
|
{
|
|||
|
|
buf[0]=0;
|
|||
|
|
fgets(buf,1000,fp);
|
|||
|
|
cs=buf;
|
|||
|
|
cs.remove("\r");
|
|||
|
|
cs.remove("\n");
|
|||
|
|
cs.trimmed();
|
|||
|
|
if(!cs.isEmpty()&&m_ListTableInf.SPVALNUM<100)
|
|||
|
|
{
|
|||
|
|
strcpy(m_ListTableInf.SPVAL[m_ListTableInf.SPVALNUM],cs.toStdString().c_str());
|
|||
|
|
m_ListTableInf.SPVALNUM++;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
fclose(fp);
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
strcpy(m_ListTableInf.m_CurveName,"GR POR");
|
|||
|
|
m_ListTableInf.m_Mode=0;//取值模式选择:0-每条曲线按各自给定取值方式取值,1-按给定曲线的极值点深度取值
|
|||
|
|
m_ListTableInf.m_Flag=1;//全部结论列表
|
|||
|
|
m_ListTableInf.IsHB=1;
|
|||
|
|
m_ListTableInf.IsHB=0;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
// extern "C"
|
|||
|
|
// {
|
|||
|
|
// extern __declspec (dllexport) struct INC_STRU INC;
|
|||
|
|
// extern __declspec (dllexport) struct INP_STRU INP;
|
|||
|
|
// extern __declspec (dllexport) struct HD_STRU HD;
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
struct INC_STRU INC;
|
|||
|
|
struct INP_STRU INP;
|
|||
|
|
struct HD_STRU HD;
|
|||
|
|
|
|||
|
|
void CreateTableRecord(CMemRdWt &mrw,LAYER_DATA &m_Result,char*buffer,float dep1,LIST_TABLE_INF &m_ListTableInf,int &recno,int pos,float sdep,float edep,float**data,int point,WALLCORE_DATA*mResult,int m_CoreRecNum,int n0,int reclen1,int icount,Slf_TABLE_FIELD*pFIELD,QString fieldname,int isLast=0,int iIndex=-1)
|
|||
|
|
{
|
|||
|
|
char RecBuf[1000];
|
|||
|
|
int CurveId=0;
|
|||
|
|
int recpos=0;
|
|||
|
|
float *value=new float[m_ListTableInf.Table_Field_Num+1];
|
|||
|
|
for(int j=0;j<m_ListTableInf.Table_Field_Num;j++)
|
|||
|
|
{
|
|||
|
|
value[j]=-9999;
|
|||
|
|
if(m_ListTableInf.lstm<0&&m_ListTableInf.Type[j]==2) {
|
|||
|
|
recpos+=m_ListTableInf.Table_Field[j].Length;
|
|||
|
|
continue;
|
|||
|
|
}
|
|||
|
|
if(stricmp(m_ListTableInf.RenName[j],"DEPTH")==0) //字段
|
|||
|
|
{
|
|||
|
|
float val=m_Result.StartDepth+pos*HD.Rlev;
|
|||
|
|
if(pos<0) val=m_Result.StartDepth+(m_Result.EndDepth-m_Result.StartDepth)/2;
|
|||
|
|
if(!isLast) val=dep1;
|
|||
|
|
mrw.SetData(m_ListTableInf.Table_Field[j].RepCode,&buffer[recpos],&val);
|
|||
|
|
value[j]=val;
|
|||
|
|
}
|
|||
|
|
else if(m_ListTableInf.Type[j]==0)//字段
|
|||
|
|
{
|
|||
|
|
if(m_ListTableInf.lstm<0&&strcmp(m_ListTableInf.RenName[j],"THICK")!=0)
|
|||
|
|
{
|
|||
|
|
float val=0;
|
|||
|
|
recpos+=m_ListTableInf.Table_Field[j].Length;
|
|||
|
|
value[j]=val;
|
|||
|
|
continue;
|
|||
|
|
}
|
|||
|
|
strcpy(RecBuf,"");
|
|||
|
|
if(m_ListTableInf.ZdIndex[j][0]=='0'&&*m_ListTableInf.TableName[j])
|
|||
|
|
{
|
|||
|
|
int iIndex1=mrw.OpenTable(m_ListTableInf.TableName[j]);
|
|||
|
|
if(iIndex1>-1){
|
|||
|
|
int len=mrw.GetTableRecordLength(iIndex1);
|
|||
|
|
int sl=sizeof(LAYER_DATA);
|
|||
|
|
if(sl<len) sl=len;
|
|||
|
|
int RecordNum=mrw.GetTableRecordCount(iIndex1);
|
|||
|
|
LAYER_DATA *mResult1=(LAYER_DATA *)new char[sl*RecordNum+1];
|
|||
|
|
float val=0;
|
|||
|
|
float dep=(sdep+(edep-sdep)/2);
|
|||
|
|
QStringList Results=GetSimilarCurves("RESULT");
|
|||
|
|
for(int i=0;i<RecordNum;i++) {
|
|||
|
|
memset(&mResult1[i],0,len);
|
|||
|
|
mrw.ReadTable(iIndex1,i+1,&mResult1[i]);
|
|||
|
|
if(dep<mResult1[i].EndDepth&&dep>mResult1[i].StartDepth){
|
|||
|
|
int ret=mrw.GetTableFieldData(m_ListTableInf.TableName[j],m_ListTableInf.RenName[j],RecBuf,i+1);
|
|||
|
|
if(ret<0) break;
|
|||
|
|
if(ret==0){
|
|||
|
|
if(Results.indexOf(m_ListTableInf.RenName[j])>-1)
|
|||
|
|
{
|
|||
|
|
Results.removeOne(m_ListTableInf.RenName[j]);
|
|||
|
|
for(int k=0;k<Results.size();k++)
|
|||
|
|
{
|
|||
|
|
ret=mrw.GetTableFieldData(m_ListTableInf.TableName[j],(char*)Results[k].toStdString().c_str(),RecBuf,i+1);
|
|||
|
|
if(ret>0) break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
delete mResult1;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else if(!isLast&&m_ListTableInf.IsFC&&strncmp(m_ListTableInf.RenName[j],"RESULT",6)==0)
|
|||
|
|
{
|
|||
|
|
int poslen=0;
|
|||
|
|
int k=-1;
|
|||
|
|
for(int t=0;t<icount;t++)
|
|||
|
|
{
|
|||
|
|
if(stricmp(pFIELD[t].Name,m_ListTableInf.RenName[j])==0) {
|
|||
|
|
k=t;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
poslen+=pFIELD[t].Length;
|
|||
|
|
}
|
|||
|
|
if(k>-1){
|
|||
|
|
float v=*(int*)&((char*)&m_Result)[poslen];
|
|||
|
|
mrw.GetReservedValue(v,pFIELD[k].Reserved,(char*)&m_Result,RecBuf,reclen1,true,true);
|
|||
|
|
}
|
|||
|
|
QStringList strs=QString(RecBuf).split(';');
|
|||
|
|
if(n0<strs.size())strcpy(RecBuf,strs.at(n0).toStdString().c_str());
|
|||
|
|
if(mrw.isShengLi){
|
|||
|
|
if(strstr(RecBuf,"水淹")) strcpy(RecBuf,"水淹层");
|
|||
|
|
if(strcmp(RecBuf,"偏干油层")==0) strcpy(RecBuf,"油层");
|
|||
|
|
if(strcmp(RecBuf,"含水油层")==0) strcpy(RecBuf,"油层");
|
|||
|
|
if(strcmp(RecBuf,"含气油层")==0) strcpy(RecBuf,"油层");
|
|||
|
|
}
|
|||
|
|
if(strstr(RecBuf,"_")) *strstr(RecBuf,"(")=NULL;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
int ret=mrw.GetTableFieldData(icount,pFIELD,m_ListTableInf.RenName[j],(char*)&m_Result,RecBuf,value[j],reclen1);
|
|||
|
|
}
|
|||
|
|
if(strstr(RecBuf,"$L")) *strstr(RecBuf,"$L")=0;
|
|||
|
|
if(strstr(RecBuf,"$U")) *strstr(RecBuf,"$U")=0;
|
|||
|
|
if(m_ListTableInf.Table_Field[j].RepCode>=6&&m_ListTableInf.Table_Field[j].RepCode<=6)
|
|||
|
|
{
|
|||
|
|
strncpy(&buffer[recpos],RecBuf,m_ListTableInf.Table_Field[j].Length);
|
|||
|
|
value[j]=0;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
float val=0;
|
|||
|
|
if(strcmp(m_ListTableInf.RenName[j],"THICK")==0)
|
|||
|
|
{
|
|||
|
|
if(isLast){
|
|||
|
|
float d1=QString::number(sdep+0.0001,'f',1).toFloat();
|
|||
|
|
float d2=QString::number(edep+0.0001,'f',1).toFloat();
|
|||
|
|
val=d2-d1;
|
|||
|
|
}
|
|||
|
|
else val=dep1;
|
|||
|
|
}
|
|||
|
|
else if(m_ListTableInf.IsFC&&!m_ListTableInf.lstm){
|
|||
|
|
if(strstr(m_ListTableInf.RenName[j],"DEP")){
|
|||
|
|
if(strstr(m_ListTableInf.RenName[j],"S")) val=sdep;
|
|||
|
|
else val=edep;
|
|||
|
|
}
|
|||
|
|
else val=atof(RecBuf);
|
|||
|
|
}
|
|||
|
|
else val=value[j];//atof(RecBuf);
|
|||
|
|
if(iIndex!=-1&&recno>1&&m_ListTableInf.GetValueMode[j]==20)
|
|||
|
|
{
|
|||
|
|
float val1=0;
|
|||
|
|
mrw.GetTableFieldData(iIndex,j,recno-1,(char*)&val1);
|
|||
|
|
val+=val1;
|
|||
|
|
}
|
|||
|
|
int ind=atoi(m_ListTableInf.ZdIndex[j]);
|
|||
|
|
int indv=powf(10,ind);
|
|||
|
|
double dval=val;
|
|||
|
|
dval=dval*indv;
|
|||
|
|
dval=(long long)(dval+0.5)/(float)indv;
|
|||
|
|
val=dval;
|
|||
|
|
mrw.SetData(m_ListTableInf.Table_Field[j].RepCode,&buffer[recpos],&val);
|
|||
|
|
value[j]=val;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else if(m_ListTableInf.Type[j]==1)//曲线
|
|||
|
|
{
|
|||
|
|
float val=-9999;
|
|||
|
|
if(isLast)
|
|||
|
|
{
|
|||
|
|
if(!m_ListTableInf.m_Mode||pos<0)//每条曲线按各自给定取值方式取值
|
|||
|
|
{
|
|||
|
|
val=lst(m_ListTableInf.GetValueMode[j],point,data[CurveId],(char *)fieldname.toStdString().c_str(),m_ListTableInf.RenName[j],value,HD.Rlev);
|
|||
|
|
}
|
|||
|
|
else//按给定曲线的极值点深度取值
|
|||
|
|
{
|
|||
|
|
val=data[CurveId][pos];
|
|||
|
|
}
|
|||
|
|
/*
|
|||
|
|
int ind=atoi(m_ListTableInf.ZdIndex[j]);
|
|||
|
|
int indv=powf(10,ind);
|
|||
|
|
double vvs=val;
|
|||
|
|
vvs*=indv;
|
|||
|
|
vvs+=0.5;
|
|||
|
|
vvs=(long long)vvs;
|
|||
|
|
val=vvs/(float)indv;
|
|||
|
|
*/
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
int pos=(dep1-sdep)/HD.Rlev+0.5;
|
|||
|
|
if(pos<0) pos=0;
|
|||
|
|
if(pos<point)val=data[CurveId][pos];
|
|||
|
|
}
|
|||
|
|
mrw.SetData(m_ListTableInf.Table_Field[j].RepCode,&buffer[recpos],&val);
|
|||
|
|
value[j]=val;
|
|||
|
|
CurveId++;
|
|||
|
|
}
|
|||
|
|
else if(m_ListTableInf.Type[j]==2)//备注
|
|||
|
|
{
|
|||
|
|
QString OIL;
|
|||
|
|
int CoreOil=0;
|
|||
|
|
int CoreInd=-1;
|
|||
|
|
QVector<int> CoreOils;
|
|||
|
|
for(int j=0;j<m_CoreRecNum;j++)
|
|||
|
|
{
|
|||
|
|
if(mResult[j].Depth>=sdep&&mResult[j].Depth<=edep){
|
|||
|
|
if(mResult[j].CoreOil>CoreOil) {
|
|||
|
|
CoreOils.clear();
|
|||
|
|
CoreOil=mResult[j].CoreOil;
|
|||
|
|
CoreInd=j;
|
|||
|
|
CoreOils.append(j);
|
|||
|
|
}
|
|||
|
|
else if(mResult[j].CoreOil==CoreOil) CoreOils.append(j);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(mResult&&CoreOils.size()) {
|
|||
|
|
CoreOil=9999;
|
|||
|
|
for(int j=0;j<CoreOils.size();j++)
|
|||
|
|
{
|
|||
|
|
if(mResult[CoreOils[j]].CoreLith<CoreOil)
|
|||
|
|
{
|
|||
|
|
CoreOil=mResult[CoreOils[j]].CoreLith;
|
|||
|
|
CoreInd=CoreOils[j];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(m_ListTableInf.Table_Field[j].RepCode>=6&&m_ListTableInf.Table_Field[j].RepCode<=6)
|
|||
|
|
{
|
|||
|
|
QString des="";
|
|||
|
|
if(mResult&&CoreInd>-1) {
|
|||
|
|
int ind=colorinds.indexOf(QString::number(mResult[CoreInd].CoreColor));
|
|||
|
|
if(ind<0) ind=0;
|
|||
|
|
if(ind>=0&&ind<colors.size())des+=colors[ind];
|
|||
|
|
if(mResult[CoreInd].CoreOil>=1&&mResult[CoreInd].CoreOil<=oils.size()) des+=oils[mResult[CoreInd].CoreOil-1];
|
|||
|
|
if(mResult[CoreInd].CoreLith>=1&&mResult[CoreInd].CoreLith<=liths.size()) des+=liths[mResult[CoreInd].CoreLith-1];
|
|||
|
|
des.remove("空白");
|
|||
|
|
des.remove("空白");
|
|||
|
|
des.remove("空白");
|
|||
|
|
removeStr(des,"(",")");
|
|||
|
|
}
|
|||
|
|
strncpy(&buffer[recpos],des.toStdString().c_str(),m_ListTableInf.Table_Field[j].Length);
|
|||
|
|
buffer[recpos+m_ListTableInf.Table_Field[j].Length]=0;
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
float val=-9999;
|
|||
|
|
mrw.SetData(m_ListTableInf.Table_Field[j].RepCode,&buffer[recpos],&val);
|
|||
|
|
value[j]=val;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
QStringList Results=GetSimilarCurves("RESULT");
|
|||
|
|
int RecordNum=0;
|
|||
|
|
LAYER_DATA *mResult1=NULL;
|
|||
|
|
int iIndex1=mrw.OpenTable(m_ListTableInf.TableName[j]);
|
|||
|
|
float val=0;
|
|||
|
|
if(iIndex1>-1){
|
|||
|
|
int len=mrw.GetTableRecordLength(iIndex1);
|
|||
|
|
int sl=sizeof(LAYER_DATA);
|
|||
|
|
if(sl<len) sl=len;
|
|||
|
|
RecordNum=mrw.GetTableRecordCount(iIndex1);
|
|||
|
|
mResult1=(LAYER_DATA *)new char[sl*RecordNum+1];
|
|||
|
|
QStringList Names=QString(m_ListTableInf.RenName[j]).split(",");
|
|||
|
|
for(int i=0;i<RecordNum;i++) {
|
|||
|
|
memset(&mResult1[i],0,len);
|
|||
|
|
mrw.ReadTable(iIndex1,i+1,&mResult1[i]);
|
|||
|
|
if(mResult1[i].EndDepth<sdep) continue;
|
|||
|
|
if(mResult1[i].StartDepth>edep) break;
|
|||
|
|
float Sdep=mResult1[i].StartDepth;
|
|||
|
|
float Edep=mResult1[i].EndDepth;
|
|||
|
|
if(Sdep<sdep) Sdep=sdep;
|
|||
|
|
if(Edep>edep) Edep=edep;
|
|||
|
|
if(Edep-Sdep==0) continue;
|
|||
|
|
for(int lo=0;lo<Results.size();lo++)
|
|||
|
|
{
|
|||
|
|
if(mrw.GetTableFieldData(iIndex1,(char*)Results[lo].toStdString().c_str(),RecBuf,i+1)) break;
|
|||
|
|
}
|
|||
|
|
removeStr(RecBuf,"(",")");
|
|||
|
|
if(stricmp(RecBuf,m_ListTableInf.Table_Field[j].Name)==0||
|
|||
|
|
stricmp(RecBuf,m_ListTableInf.Table_Field[j].HZName)==0||
|
|||
|
|
Names.indexOf(RecBuf)>=0
|
|||
|
|
)
|
|||
|
|
{
|
|||
|
|
float d1=QString::number(Sdep+0.0001,'f',1).toFloat();
|
|||
|
|
float d2=QString::number(Edep+0.0001,'f',1).toFloat();
|
|||
|
|
val+=d2-d1;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
mrw.SetData(m_ListTableInf.Table_Field[j].RepCode,&buffer[recpos],&val);
|
|||
|
|
}
|
|||
|
|
else mrw.SetData(m_ListTableInf.Table_Field[j].RepCode,&buffer[recpos],&val);
|
|||
|
|
if(mResult1)delete mResult1;
|
|||
|
|
value[j]=val;
|
|||
|
|
}
|
|||
|
|
recpos+=m_ListTableInf.Table_Field[j].Length;
|
|||
|
|
}
|
|||
|
|
delete value;
|
|||
|
|
}
|
|||
|
|
void CQtWindowWellSection::OnListBedValue(QString m_csWellName,QString m_OGTableName)
|
|||
|
|
{
|
|||
|
|
QStringList GetValueModeStr=GetSimilarCurves("ValueMode");
|
|||
|
|
GetValueModeStr.insert(0,"");
|
|||
|
|
QStringList ZDType=GetSimilarCurves("FieldType");//字段类型
|
|||
|
|
QMap<QString,QMap<QString,QString>> zoneOrders;
|
|||
|
|
INC.Noi=0;
|
|||
|
|
INC.Name[0]=0;
|
|||
|
|
HD.Rlev=0.125;
|
|||
|
|
HD.Dep=-99999.0;
|
|||
|
|
HD.Depo=0;
|
|||
|
|
HD.Sdep=0;
|
|||
|
|
HD.Edep=-99999;
|
|||
|
|
HD.Stdep=99999;
|
|||
|
|
HD.StartDep=HD.Stdep;
|
|||
|
|
HD.EndDep=HD.Edep;
|
|||
|
|
QString cs=GetConfPath();
|
|||
|
|
QString color;
|
|||
|
|
int m_CoreRecNum=0;
|
|||
|
|
for(int j=0;j<4;j++)
|
|||
|
|
{
|
|||
|
|
if(j==0) color=cs+"corecolor.ini";
|
|||
|
|
else if(j==1) color=cs+"corelith.ini";
|
|||
|
|
else if(j==2) color=cs+"coreoil.ini";
|
|||
|
|
else color=cs+"colorind.ini";
|
|||
|
|
FILE *fp=fopen(color.toStdString().c_str(),"rt");
|
|||
|
|
QStringList ss;
|
|||
|
|
char buf[100];
|
|||
|
|
if(fp) {
|
|||
|
|
while(!feof(fp)) {
|
|||
|
|
fscanf(fp,"%s",buf);
|
|||
|
|
ss.append(buf);
|
|||
|
|
}
|
|||
|
|
fclose(fp);
|
|||
|
|
}
|
|||
|
|
if(j==0) colors=ss;
|
|||
|
|
else if(j==1) liths=ss;
|
|||
|
|
else if(j==2) oils=ss;
|
|||
|
|
else colorinds=ss;
|
|||
|
|
}
|
|||
|
|
// TODO: 在此添加命令处理程序代码
|
|||
|
|
if(m_ListTableInf.Table_Field_Num<=0)
|
|||
|
|
{
|
|||
|
|
AfxMessageBox("对不起,您没有定义取值表结构,无法进行取值\r\n\r\n请选择“分层曲线取值方式设置”菜单,设置取值表结构");
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
WALLCORE_DATA *mResult=NULL;
|
|||
|
|
LAYER_DATA *m_Result=NULL;
|
|||
|
|
int m_RecNum=0;
|
|||
|
|
int tabletype=0;
|
|||
|
|
int tabletype2=0;
|
|||
|
|
CMemRdWt mrw;
|
|||
|
|
if ( mrw.Open(m_csWellName.toStdString().c_str()) ) // 打开井文件
|
|||
|
|
{
|
|||
|
|
QString OutTab=m_ListTableInf.m_TableName;
|
|||
|
|
if(m_OGTableName==OutTab) OutTab+="_LIST";
|
|||
|
|
int iIndex=mrw.OpenTable(OutTab.toStdString().c_str());
|
|||
|
|
if (iIndex>=0)
|
|||
|
|
{
|
|||
|
|
if(QMessageBox::information(NULL,OutTab,"数据表已存在,重新生成新表吗?",QMessageBox::Yes|QMessageBox::No)!=QMessageBox::Yes)
|
|||
|
|
{
|
|||
|
|
mrw.CloseTable(iIndex);
|
|||
|
|
mrw.Close();
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
mrw.DiscardObject(iIndex);
|
|||
|
|
mrw.Close();
|
|||
|
|
|
|||
|
|
mrw.Open(m_csWellName.toStdString().c_str());
|
|||
|
|
// CQtWellSceneManager *m_pWellSceneManager = dynamic_cast<CQtWellSceneManager *>( GetSceneManager() );
|
|||
|
|
// CBaseObject *pCurrentObject = CObjProject::GetObjectByID(m_pWellSceneManager->GetCurrentPickObjectID());
|
|||
|
|
// CObjWellLog *pLog = dynamic_cast<CObjWellLog*>(pCurrentObject);
|
|||
|
|
// if(pLog) {
|
|||
|
|
// CObjWelllogRound*pR=pLog->GetWelllogRound();
|
|||
|
|
// if(pR) {
|
|||
|
|
// CDataTree *pDatatree=(CDataTree *)::GetProject()->m_pDataTree;
|
|||
|
|
// PaiObject *pB=pR->GetObjectByName(OutTab);
|
|||
|
|
// if(pB&&pDatatree) {
|
|||
|
|
// PaiObject *pPai=pB->GetParent();
|
|||
|
|
// pDatatree->OnObjectDeleted(pPai,pB);
|
|||
|
|
// pPai->RemoveChild(pB,true);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
iIndex=-1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//解释结论表
|
|||
|
|
int iIndex1=mrw.OpenTable(m_OGTableName.toStdString().c_str());
|
|||
|
|
if(iIndex1<0) {
|
|||
|
|
mrw.Clear();
|
|||
|
|
// AfxMessageBox(m_OGTableName+"不存在!,无法生成对应数据表!");
|
|||
|
|
QMessageBox::information(nullptr, "提示", m_OGTableName+"不存在!,无法生成对应数据表!");
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int icount=0;
|
|||
|
|
Slf_TABLE_FIELD *pFIELD=NULL;
|
|||
|
|
int reclen1=0;
|
|||
|
|
if(iIndex1>-1) {
|
|||
|
|
icount=mrw.GetTableFieldCount(iIndex1);
|
|||
|
|
pFIELD=new Slf_TABLE_FIELD[icount+1];
|
|||
|
|
mrw.GetTableFieldInfo(iIndex1,pFIELD);
|
|||
|
|
for(int i=0;i<icount;i++) {
|
|||
|
|
QString name=pFIELD[i].Name;
|
|||
|
|
if(name=="OFFSET") {
|
|||
|
|
tabletype=1;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
if(name=="CORRDEPTH") {
|
|||
|
|
tabletype=2;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
if(name=="SDEP"||name=="EDEP"||name=="STARTDEP"||name=="ENDDEP"||name=="DEPTH") tabletype2++;
|
|||
|
|
}
|
|||
|
|
QStringList RESULTS=GetSimilarCurves("RESULT");
|
|||
|
|
for(int i=0;i<icount;i++) {
|
|||
|
|
QString name=pFIELD[i].Name;
|
|||
|
|
if(RESULTS.indexOf(name)>-1)
|
|||
|
|
{
|
|||
|
|
strcpy(m_ListTableInf.m_TableSpFIELD,name.toStdString().c_str());
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
int len=mrw.GetTableRecordLength(iIndex1);
|
|||
|
|
int sl=sizeof(LAYER_DATA);
|
|||
|
|
if(sl<len) sl=len;
|
|||
|
|
reclen1=len;
|
|||
|
|
m_RecNum=mrw.GetTableRecordCount(iIndex1);
|
|||
|
|
m_Result=(LAYER_DATA *)new char[sl*m_RecNum+1];
|
|||
|
|
QMap<QString,QString> zoneOrder=GetZoneOrder();
|
|||
|
|
|
|||
|
|
for(int i=0;i<m_RecNum;i++) {
|
|||
|
|
memset(&m_Result[i],0,len);
|
|||
|
|
mrw.ReadTable(iIndex1,i+1,&m_Result[i]);
|
|||
|
|
|
|||
|
|
if(len==sizeof(LAYER_DATA)||len==sizeof(LAYER_DATA_OLD)) {
|
|||
|
|
m_Result[i].Gas=0;
|
|||
|
|
m_Result[i].WaterGas=0;
|
|||
|
|
m_Result[i].GasWater=0;
|
|||
|
|
m_Result[i].Oil=0;
|
|||
|
|
m_Result[i].OilWater=0;
|
|||
|
|
m_Result[i].PoorGas=0;
|
|||
|
|
m_Result[i].Thick=0;
|
|||
|
|
m_Result[i].WaterOil=0;
|
|||
|
|
m_Result[i].Tt=0;
|
|||
|
|
m_Result[i].PoorOil=0;
|
|||
|
|
QString result;
|
|||
|
|
QString Zone;
|
|||
|
|
QString result1;
|
|||
|
|
QString result2;
|
|||
|
|
QString result3;
|
|||
|
|
QString result4;
|
|||
|
|
QString result5;
|
|||
|
|
QString result6;
|
|||
|
|
QString result7;
|
|||
|
|
QString result8;
|
|||
|
|
QString result9;
|
|||
|
|
QString result10;
|
|||
|
|
|
|||
|
|
QString iconshotname;
|
|||
|
|
QString result_str=QString::number(m_Result[i].Result);
|
|||
|
|
if(result_str.length()>0&&m_Result[i].MDepth1)
|
|||
|
|
iconshotname=zoneOrder.key(result_str.at(0));
|
|||
|
|
else
|
|||
|
|
iconshotname=zoneOrder.key(result_str);
|
|||
|
|
if(iconshotname!="")
|
|||
|
|
result=::GetOilSymbolDir()+iconshotname+".svg";
|
|||
|
|
|
|||
|
|
if(m_Result[i].MDepth1!=0) {
|
|||
|
|
if(result_str.length()>1) iconshotname=zoneOrder.key(QString::number(m_Result[i].Result).at(1));
|
|||
|
|
if(iconshotname!="")
|
|||
|
|
result1=::GetOilSymbolDir()+iconshotname+".svg";
|
|||
|
|
}
|
|||
|
|
if(m_Result[i].MDepth2!=0) {
|
|||
|
|
if(result_str.length()>2) iconshotname=zoneOrder.key(result_str.at(2));
|
|||
|
|
if(iconshotname!="")
|
|||
|
|
result2=::GetOilSymbolDir()+iconshotname+".svg";
|
|||
|
|
}
|
|||
|
|
if(m_Result[i].MDepth3!=0) {
|
|||
|
|
if(result_str.length()>3) iconshotname=zoneOrder.key(result_str.at(3));
|
|||
|
|
if(iconshotname!="")
|
|||
|
|
result3=::GetOilSymbolDir()+iconshotname+".svg";
|
|||
|
|
}
|
|||
|
|
if(m_Result[i].MDepth4!=0) {
|
|||
|
|
if(result_str.length()>4) iconshotname=zoneOrder.key(result_str.at(4));
|
|||
|
|
if(iconshotname!="")
|
|||
|
|
result4=::GetOilSymbolDir()+iconshotname+".svg";
|
|||
|
|
}
|
|||
|
|
if(m_Result[i].MDepth5!=0) {
|
|||
|
|
if(result_str.length()>5) iconshotname=zoneOrder.key(result_str.at(5));
|
|||
|
|
if(iconshotname!="")
|
|||
|
|
result5=::GetOilSymbolDir()+iconshotname+".svg";
|
|||
|
|
}
|
|||
|
|
if(m_Result[i].MDepth6!=0) {
|
|||
|
|
if(result_str.length()>6) iconshotname=zoneOrder.key(result_str.at(6));
|
|||
|
|
if(iconshotname!="")
|
|||
|
|
result6=::GetOilSymbolDir()+iconshotname+".svg";
|
|||
|
|
}
|
|||
|
|
if(m_Result[i].MDepth7!=0) {
|
|||
|
|
if(result_str.length()>7) iconshotname=zoneOrder.key(result_str.at(7));
|
|||
|
|
if(iconshotname!="")
|
|||
|
|
result7=::GetOilSymbolDir()+iconshotname+".svg";
|
|||
|
|
}
|
|||
|
|
if(m_Result[i].MDepth8!=0) {
|
|||
|
|
if(result_str.length()>8) iconshotname=zoneOrder.key(result_str.at(8));
|
|||
|
|
if(iconshotname!="")
|
|||
|
|
result8=::GetOilSymbolDir()+iconshotname+".svg";
|
|||
|
|
}
|
|||
|
|
if(m_Result[i].MDepth9!=0) {
|
|||
|
|
if(result_str.length()>9) iconshotname=zoneOrder.key(result_str.at(9));
|
|||
|
|
if(iconshotname!="")
|
|||
|
|
result9=::GetOilSymbolDir()+iconshotname+".svg";
|
|||
|
|
}
|
|||
|
|
if(m_Result[i].MDepth10!=0) {
|
|||
|
|
if(result_str.length()>10) iconshotname=zoneOrder.key(result_str.at(10));
|
|||
|
|
if(iconshotname!="")
|
|||
|
|
result10=::GetOilSymbolDir()+iconshotname+".svg";
|
|||
|
|
}
|
|||
|
|
ComputeTT(m_Result[i],
|
|||
|
|
result,
|
|||
|
|
result1,
|
|||
|
|
result2,
|
|||
|
|
result3,
|
|||
|
|
result4,
|
|||
|
|
result5,
|
|||
|
|
result6,
|
|||
|
|
result7,
|
|||
|
|
result8,
|
|||
|
|
result9,
|
|||
|
|
result10
|
|||
|
|
);
|
|||
|
|
mrw.WriteTable(iIndex1,i+1,&m_Result[i]);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
mrw.CloseTable(iIndex1);
|
|||
|
|
}
|
|||
|
|
//////////////////////////////////////
|
|||
|
|
QString m_CoreTableName="SWALL_CORE";
|
|||
|
|
if(m_OGTableName.size()&&m_OGTableName.at(0)=='V') {
|
|||
|
|
m_CoreTableName="VSWALL_CORE";
|
|||
|
|
}
|
|||
|
|
int ResultTable1=mrw.OpenTable(m_CoreTableName.toStdString().c_str());
|
|||
|
|
if(ResultTable1>-1) {
|
|||
|
|
m_CoreRecNum=mrw.GetTableRecordCount(ResultTable1);
|
|||
|
|
mResult=new WALLCORE_DATA[m_CoreRecNum];
|
|||
|
|
memset(mResult,0,m_CoreRecNum*sizeof(WALLCORE_DATA));//清空表记录
|
|||
|
|
for(int i=0;i<m_CoreRecNum;i++) mrw.ReadTable(ResultTable1,i+1,&mResult[i]);
|
|||
|
|
mrw.CloseTable(ResultTable1);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
DepthProgress Progress;
|
|||
|
|
Progress.CreatProgress(0,100,"开始产生数据表...");
|
|||
|
|
char name[5000];
|
|||
|
|
char Length[500];
|
|||
|
|
char type[500];
|
|||
|
|
char temp[500];
|
|||
|
|
strncpy(name,m_ListTableInf.Table_Field[0].Name,16);
|
|||
|
|
name[16]=0;
|
|||
|
|
sprintf(Length,"%d",m_ListTableInf.Table_Field[0].Length);
|
|||
|
|
sprintf(type,"%d",m_ListTableInf.Table_Field[0].RepCode);
|
|||
|
|
sprintf(temp,"%d",m_ListTableInf.Table_Field[0].Reserved);
|
|||
|
|
QString fieldname=m_ListTableInf.Table_Field[0].Name;
|
|||
|
|
QString name1=name,leng=Length,type1=type,temp1=temp;
|
|||
|
|
QString hzname=m_ListTableInf.Table_Field[0].HZName;
|
|||
|
|
QString unit=m_ListTableInf.Table_Field[0].Unit;
|
|||
|
|
QString hzunit=m_ListTableInf.Table_Field[0].HZUnit;
|
|||
|
|
QVector<QString> strs1;
|
|||
|
|
for(int j=1;j<m_ListTableInf.Table_Field_Num;j++)
|
|||
|
|
{
|
|||
|
|
sprintf(name,"%s",m_ListTableInf.Table_Field[j].Name);
|
|||
|
|
if(strs1.indexOf(m_ListTableInf.Table_Field[j].Name)<0) {
|
|||
|
|
strs1.append(m_ListTableInf.Table_Field[j].Name);
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
AfxMessageBox("表字段重复,无法生成表!");
|
|||
|
|
if(mResult)delete mResult;
|
|||
|
|
if(m_Result)delete m_Result;
|
|||
|
|
if(pFIELD)delete pFIELD;
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
name1+=",";
|
|||
|
|
name1+=+name;
|
|||
|
|
sprintf(Length,"%d",m_ListTableInf.Table_Field[j].Length);
|
|||
|
|
leng+=",";
|
|||
|
|
leng+=Length;
|
|||
|
|
sprintf(type,"%d",m_ListTableInf.Table_Field[j].RepCode);
|
|||
|
|
type1+=",";
|
|||
|
|
type1+=type;
|
|||
|
|
sprintf(temp,"%d",m_ListTableInf.Table_Field[j].Reserved);
|
|||
|
|
temp1+=",";
|
|||
|
|
temp1+=temp;
|
|||
|
|
QString nn=m_ListTableInf.Table_Field[j].Name;
|
|||
|
|
fieldname+=" "+nn;
|
|||
|
|
hzname+=",";
|
|||
|
|
hzname+=m_ListTableInf.Table_Field[j].HZName;
|
|||
|
|
unit+=",";
|
|||
|
|
unit+=m_ListTableInf.Table_Field[j].Unit;
|
|||
|
|
hzunit+=",";
|
|||
|
|
hzunit+=m_ListTableInf.Table_Field[j].HZUnit;
|
|||
|
|
}
|
|||
|
|
Progress.SetDepth(10);
|
|||
|
|
strcpy(name,name1.toStdString().c_str());
|
|||
|
|
strcpy(Length,leng.toStdString().c_str());
|
|||
|
|
strcpy(type,type1.toStdString().c_str());
|
|||
|
|
strcpy(temp,temp1.toStdString().c_str());
|
|||
|
|
iIndex=mrw.Open_Set_Table(OutTab.toStdString().c_str(),0,m_ListTableInf.Table_Field_Num,
|
|||
|
|
name,
|
|||
|
|
Length,//字段长度
|
|||
|
|
type,//字段类型
|
|||
|
|
temp,
|
|||
|
|
(char*)hzname.toStdString().c_str(),
|
|||
|
|
(char*)unit.toStdString().c_str(),
|
|||
|
|
(char*)hzunit.toStdString().c_str()
|
|||
|
|
);//字段备注
|
|||
|
|
mrw.SetTableRecordCount(iIndex,0);//清空表记录
|
|||
|
|
|
|||
|
|
if(tabletype2<2) {
|
|||
|
|
if(tabletype==2) HD.StartDep=HD.StartDep=m_Result[0].EndDepth;
|
|||
|
|
else HD.StartDep=m_Result[0].StartDepth+tabletype*m_Result[0].EndDepth;
|
|||
|
|
HD.EndDep=m_Result[m_RecNum-1].StartDepth+tabletype*m_Result[m_RecNum-1].EndDepth;
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
HD.StartDep=m_Result[0].StartDepth;
|
|||
|
|
HD.EndDep=m_Result[m_RecNum-1].EndDepth;
|
|||
|
|
}
|
|||
|
|
HD.Sdep=HD.StartDep;
|
|||
|
|
HD.Edep=HD.EndDep;
|
|||
|
|
HD.Rlev=-1;
|
|||
|
|
INC.Noi=0;
|
|||
|
|
char CurveName[100][16];
|
|||
|
|
int CurveIndex[100];
|
|||
|
|
strcpy(INC.Name,"");
|
|||
|
|
Progress.SetDepth(20);
|
|||
|
|
for(int i=0;i<m_ListTableInf.Table_Field_Num;i++)
|
|||
|
|
{
|
|||
|
|
if(m_ListTableInf.Type[i]==1)//曲线取值
|
|||
|
|
{
|
|||
|
|
int pos=0;
|
|||
|
|
if(HD.Rlev<0)//取第一条曲线采样间隔为取值采样间隔
|
|||
|
|
{
|
|||
|
|
Slf_CURVE mCurve;
|
|||
|
|
int id=mrw.OpenCurve(m_ListTableInf.RenName[i]);
|
|||
|
|
if(id>=0)
|
|||
|
|
{
|
|||
|
|
mrw.GetCurveInfo(id,&mCurve);
|
|||
|
|
HD.Rlev=mCurve.DepLevel;
|
|||
|
|
mrw.CloseCurve(id);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(INC.Noi>0)strcat(INC.Name," ");
|
|||
|
|
strcat(INC.Name,m_ListTableInf.RenName[i]);
|
|||
|
|
INC.Noi++;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(HD.Rlev==-1) {
|
|||
|
|
HD.Rlev=0.125;
|
|||
|
|
}
|
|||
|
|
if(m_ListTableInf.m_Mode)//按给定曲线的极值点深度取值
|
|||
|
|
{
|
|||
|
|
for(int i=0;i<m_ListTableInf.SPVALNUM;i++){
|
|||
|
|
QString cs=m_ListTableInf.SPVAL[i];
|
|||
|
|
QStringList css=cs.split(" ");
|
|||
|
|
if(css.size()>1&&!css.at(1).isEmpty())
|
|||
|
|
{
|
|||
|
|
if(INC.Noi>0)strcat(INC.Name," ");
|
|||
|
|
strcat(INC.Name,css.at(1).toStdString().c_str());
|
|||
|
|
INC.Noi++;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
int Mpoint=0;
|
|||
|
|
mrw.SetStruct(&INC,NULL,&INP,NULL,NULL,NULL,&HD,NULL);
|
|||
|
|
|
|||
|
|
mrw.In();
|
|||
|
|
for(int i=0;i<m_RecNum;i++)
|
|||
|
|
{
|
|||
|
|
int point=0;
|
|||
|
|
if(tabletype2<2) {
|
|||
|
|
point=3;
|
|||
|
|
}
|
|||
|
|
else point=(m_Result[i].EndDepth-m_Result[i].StartDepth)/HD.Rlev+1.5;
|
|||
|
|
if(point>Mpoint)Mpoint=point;
|
|||
|
|
}
|
|||
|
|
float **data=new float *[INC.Noi];
|
|||
|
|
for (int j=0; j<INC.Noi; j++) data[j]=new float [Mpoint];
|
|||
|
|
int pos=0,CurveId=0;
|
|||
|
|
int reclen=mrw.GetTableRecordLength(iIndex);
|
|||
|
|
int ilen=1280;
|
|||
|
|
if(reclen>ilen) ilen=reclen+1;
|
|||
|
|
char *RecBuf=new char[ilen];
|
|||
|
|
char *buffer=new char[reclen+1];
|
|||
|
|
memset(buffer,0,reclen+1);
|
|||
|
|
int recno=0;
|
|||
|
|
int point=0;
|
|||
|
|
QStringList sMID=GetSimilarCurves("MID");
|
|||
|
|
QStringList sAGE=GetSimilarCurves("AGE");
|
|||
|
|
QStringList sMIN=GetSimilarCurves("MIN");
|
|||
|
|
QStringList sMAX=GetSimilarCurves("MAX");
|
|||
|
|
QStringList types,typet;
|
|||
|
|
for(int i=0;i<m_RecNum;i++)
|
|||
|
|
{
|
|||
|
|
Progress.SetDepth(30+i*70.0/m_RecNum);
|
|||
|
|
if(tabletype2>1) {
|
|||
|
|
point=(m_Result[i].EndDepth-m_Result[i].StartDepth)/HD.Rlev+1.5;
|
|||
|
|
for(int j=0;j<point;j++)
|
|||
|
|
{
|
|||
|
|
float dep=m_Result[i].StartDepth+j*HD.Rlev;
|
|||
|
|
mrw.In(dep);
|
|||
|
|
for (int m=0;m<INC.Noi;m++)
|
|||
|
|
{
|
|||
|
|
data[m][j]=INP.yy[m];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
point=3;
|
|||
|
|
float dep=m_Result[i].StartDepth+tabletype*m_Result[i].EndDepth;
|
|||
|
|
if(tabletype==2) dep=m_Result[i].EndDepth;
|
|||
|
|
|
|||
|
|
float dep1=dep-HD.Rlev;
|
|||
|
|
if((int)((dep-HD.Sdep)/HD.Rlev)*HD.Rlev+HD.Sdep==dep) dep1=dep;
|
|||
|
|
float dep2=dep+HD.Rlev;
|
|||
|
|
if(dep2>HD.EndDep) dep2=HD.EndDep;
|
|||
|
|
int j=0;
|
|||
|
|
mrw.In(dep1);
|
|||
|
|
for (int m=0;m<INC.Noi;m++)
|
|||
|
|
{
|
|||
|
|
data[m][j]=INP.yy[m];
|
|||
|
|
}
|
|||
|
|
j=2;
|
|||
|
|
mrw.In(dep2);
|
|||
|
|
for (int m=0;m<INC.Noi;m++)
|
|||
|
|
{
|
|||
|
|
data[m][j]=INP.yy[m];
|
|||
|
|
}
|
|||
|
|
j=1;
|
|||
|
|
for (int m=0;m<INC.Noi;m++)
|
|||
|
|
{
|
|||
|
|
data[m][j]=(data[m][j+1]-data[m][0])/(dep1-dep2)*(dep-dep1)+data[m][0];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
strcpy(RecBuf,"");
|
|||
|
|
mrw.GetTableFieldData(icount,pFIELD,m_ListTableInf.m_TableSpFIELD,(char*)&m_Result[i],RecBuf,reclen1);
|
|||
|
|
QStringList strt=QString(m_ListTableInf.m_CurveName).split(" ");
|
|||
|
|
int i1=strt.indexOf("GR");
|
|||
|
|
if(i1>-1) strt.removeAt(i1);
|
|||
|
|
i1=strt.indexOf("AC");
|
|||
|
|
if(i1>-1) strt.removeAt(i1);
|
|||
|
|
removeStr(RecBuf,"(",")");
|
|||
|
|
if(strt.size()&&strt.indexOf(RecBuf)<0) continue;
|
|||
|
|
|
|||
|
|
if(types.indexOf(RecBuf)==-1)
|
|||
|
|
{
|
|||
|
|
types.append(RecBuf);
|
|||
|
|
}
|
|||
|
|
typet.append(RecBuf);
|
|||
|
|
|
|||
|
|
if(m_ListTableInf.m_Mode)//按给定曲线的极值点深度取值
|
|||
|
|
{
|
|||
|
|
pos=0;//对应点位置
|
|||
|
|
int curpos=0;
|
|||
|
|
for(int mn=0;mn<m_ListTableInf.SPVALNUM;mn++)
|
|||
|
|
{
|
|||
|
|
QString cs=m_ListTableInf.SPVAL[mn];
|
|||
|
|
QStringList css=cs.split(" ");
|
|||
|
|
css.removeAll("");
|
|||
|
|
if(css.size()&&css.at(0)==RecBuf) {
|
|||
|
|
QString csss=INC.Name;
|
|||
|
|
QStringList cssss=csss.split(" ");
|
|||
|
|
curpos=cssss.indexOf(css.at(1));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(curpos<0) {
|
|||
|
|
curpos=0;
|
|||
|
|
pos=point/2;
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
if(sMAX.indexOf(RecBuf)>-1)
|
|||
|
|
{
|
|||
|
|
float br1=-99999.;
|
|||
|
|
for(int k=0;k<point;k++)
|
|||
|
|
{
|
|||
|
|
if(data[curpos][k]>br1)
|
|||
|
|
{
|
|||
|
|
br1=data[curpos][k];
|
|||
|
|
pos=k;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else if(sMIN.indexOf(RecBuf)>-1)
|
|||
|
|
{
|
|||
|
|
float br1=99999.;
|
|||
|
|
for(int k=0;k<point;k++)
|
|||
|
|
{
|
|||
|
|
if(data[curpos][k]<br1)
|
|||
|
|
{
|
|||
|
|
br1=data[curpos][k];
|
|||
|
|
pos=k;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else if(sAGE.indexOf(RecBuf)>-1) pos=-1;
|
|||
|
|
else {
|
|||
|
|
pos=point/2;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else pos=point/2;
|
|||
|
|
if(m_ListTableInf.lstm||m_ListTableInf.IsFC) {
|
|||
|
|
QVector<float> deps;
|
|||
|
|
int dv=m_ListTableInf.lstm;
|
|||
|
|
if(dv<0) dv=abs(dv);
|
|||
|
|
QVector<float> depss;
|
|||
|
|
depss.append(m_Result[i].StartDepth);
|
|||
|
|
if(m_ListTableInf.IsFC){
|
|||
|
|
if(m_Result[i].MDepth1) depss.append(m_Result[i].MDepth1);
|
|||
|
|
if(m_Result[i].MDepth2) depss.append(m_Result[i].MDepth2);
|
|||
|
|
if(m_Result[i].MDepth3) depss.append(m_Result[i].MDepth3);
|
|||
|
|
if(m_Result[i].MDepth4) depss.append(m_Result[i].MDepth4);
|
|||
|
|
if(m_Result[i].MDepth5) depss.append(m_Result[i].MDepth5);
|
|||
|
|
if(m_Result[i].MDepth6) depss.append(m_Result[i].MDepth6);
|
|||
|
|
if(m_Result[i].MDepth7) depss.append(m_Result[i].MDepth7);
|
|||
|
|
if(m_Result[i].MDepth8) depss.append(m_Result[i].MDepth8);
|
|||
|
|
if(m_Result[i].MDepth9) depss.append(m_Result[i].MDepth9);
|
|||
|
|
if(m_Result[i].MDepth10) depss.append(m_Result[i].MDepth10);
|
|||
|
|
}
|
|||
|
|
depss.append(m_Result[i].EndDepth);
|
|||
|
|
for(int n0=0;n0<depss.size()-1;n0++){
|
|||
|
|
deps.clear();
|
|||
|
|
float dep1=0;
|
|||
|
|
if(m_ListTableInf.lstm){
|
|||
|
|
for(dep1=depss[n0];dep1<depss[n0+1];dep1+=dv)
|
|||
|
|
{
|
|||
|
|
if(toString(dep1,'f',1)==toString(depss[n0+1],'f',1)) continue;
|
|||
|
|
deps.append(dep1);
|
|||
|
|
}
|
|||
|
|
deps.append(depss[n0+1]);
|
|||
|
|
}
|
|||
|
|
if(tabletype2>1) {
|
|||
|
|
point=(depss[n0+1]-depss[n0])/HD.Rlev+1.5;
|
|||
|
|
for(int j=0;j<point;j++)
|
|||
|
|
{
|
|||
|
|
float dep=depss[n0]+j*HD.Rlev;
|
|||
|
|
mrw.In(dep);
|
|||
|
|
for (int m=0;m<INC.Noi;m++)
|
|||
|
|
{
|
|||
|
|
data[m][j]=INP.yy[m];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
point=3;
|
|||
|
|
float dep=depss[n0]+tabletype*depss[n0];
|
|||
|
|
if(tabletype==2) dep=m_Result[i].EndDepth;
|
|||
|
|
|
|||
|
|
float dep1=dep-HD.Rlev;
|
|||
|
|
if((int)((dep-HD.Sdep)/HD.Rlev)*HD.Rlev+HD.Sdep==dep) dep1=dep;
|
|||
|
|
float dep2=dep+HD.Rlev;
|
|||
|
|
if(dep2>HD.EndDep) dep2=HD.EndDep;
|
|||
|
|
int j=0;
|
|||
|
|
mrw.In(dep1);
|
|||
|
|
for (int m=0;m<INC.Noi;m++)
|
|||
|
|
{
|
|||
|
|
data[m][j]=INP.yy[m];
|
|||
|
|
}
|
|||
|
|
j=2;
|
|||
|
|
mrw.In(dep2);
|
|||
|
|
for (int m=0;m<INC.Noi;m++)
|
|||
|
|
{
|
|||
|
|
data[m][j]=INP.yy[m];
|
|||
|
|
}
|
|||
|
|
j=1;
|
|||
|
|
for (int m=0;m<INC.Noi;m++)
|
|||
|
|
{
|
|||
|
|
data[m][j]=(data[m][j+1]-data[m][0])/(dep1-dep2)*(dep-dep1)+data[m][0];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
for(int mm=0;mm<deps.size();mm++)
|
|||
|
|
{
|
|||
|
|
memset(buffer,0,reclen+1);
|
|||
|
|
recno++;
|
|||
|
|
CreateTableRecord(mrw,m_Result[i],buffer,deps[mm],m_ListTableInf,recno,pos,depss[n0],depss[n0+1],data,point,mResult,m_CoreRecNum,n0,reclen1,icount,pFIELD,fieldname,0,iIndex);
|
|||
|
|
mrw.WriteTable(iIndex,recno,buffer);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
memset(buffer,0,reclen+1);
|
|||
|
|
recno++;
|
|||
|
|
CreateTableRecord(mrw,m_Result[i],buffer,0,m_ListTableInf,recno,pos,depss[n0],depss[n0+1],data,point,mResult,m_CoreRecNum,n0,reclen1,icount,pFIELD,fieldname,1,iIndex);
|
|||
|
|
mrw.WriteTable(iIndex,recno,buffer);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
memset(buffer,0,reclen+1);
|
|||
|
|
recno++;
|
|||
|
|
CreateTableRecord(mrw,m_Result[i],buffer,0,m_ListTableInf,recno,pos,m_Result[i].StartDepth,m_Result[i].EndDepth,data,point,mResult,m_CoreRecNum,0,reclen1,icount,pFIELD,fieldname,1,iIndex);
|
|||
|
|
mrw.WriteTable(iIndex,recno,buffer);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
delete buffer;
|
|||
|
|
delete RecBuf;
|
|||
|
|
for (int j=0; j<INC.Noi; j++) delete data[j];
|
|||
|
|
delete []data;
|
|||
|
|
if(mResult)delete mResult;
|
|||
|
|
mrw.CloseTable(iIndex);
|
|||
|
|
if(pFIELD) delete pFIELD;
|
|||
|
|
mrw.Close();
|
|||
|
|
|
|||
|
|
QString outtable=m_ListTableInf.m_TableName;
|
|||
|
|
outtable+="_TT";
|
|||
|
|
QList<float> sdep,edep;
|
|||
|
|
sdep.append(-9999);edep.append(-9999);
|
|||
|
|
CreateTattle(m_csWellName,m_OGTableName,outtable,sdep,edep);
|
|||
|
|
|
|||
|
|
CDataImport::ChangetoSlf(m_csWellName);
|
|||
|
|
// CWellSectionWindowDocument *pDoc=dynamic_cast<CWellSectionWindowDocument*>(GetWindowDocument());
|
|||
|
|
// int count=pDoc->GetFootSheetCount();
|
|||
|
|
// for(int i=0;i<count;i++) {
|
|||
|
|
// CSheet* pSheet = pDoc->GetFootSheet(i);
|
|||
|
|
// if(pSheet) {
|
|||
|
|
// pSheet->SetLoadDataFromSLFEnabled(true);
|
|||
|
|
// pSheet->LoadDataFromSLF();
|
|||
|
|
// if (m_pSceneManager)
|
|||
|
|
// {
|
|||
|
|
// // hideEditGraphicsHeadCell();
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// m_pSceneManager->UpdateAll();
|
|||
|
|
// CQtViewer* QtViewer=dynamic_cast<CQtViewer*>(m_pSceneManager->GetVecViwer());
|
|||
|
|
// QScrollBar* pHScroll=NULL,*pVScroll=NULL;
|
|||
|
|
// if(QtViewer) {
|
|||
|
|
// pHScroll=QtViewer->GetHScroll();
|
|||
|
|
// pVScroll=QtViewer->GetVScroll();
|
|||
|
|
// }
|
|||
|
|
// if(pHScroll) {
|
|||
|
|
// int hval=pHScroll->value();
|
|||
|
|
// pHScroll->setValue(0);
|
|||
|
|
// m_pSceneManager->GetCameraCommand().OnHScroll(hval);
|
|||
|
|
// }
|
|||
|
|
// if(pVScroll)
|
|||
|
|
// {
|
|||
|
|
// int vval=pVScroll->value();
|
|||
|
|
// pVScroll->setValue(0);
|
|||
|
|
// m_pSceneManager->GetCameraCommand().OnHScroll(vval);
|
|||
|
|
// }
|
|||
|
|
}
|
|||
|
|
//this->SetModifiedFlag();
|
|||
|
|
}
|
|||
|
|
void CQtWindowWellSection::CreateTattle(QString m_csWellName,QString m_OGTableName,QString OutTableName,QList<float>&sdep,QList<float>&edep)
|
|||
|
|
{
|
|||
|
|
CMemRdWt mrw;
|
|||
|
|
if ( mrw.Open(m_csWellName.toStdString().c_str()) ) // 打开井文件
|
|||
|
|
{
|
|||
|
|
int size=sdep.size();
|
|||
|
|
if(size>1) size++;
|
|||
|
|
for (int j=0;j<size;j++)
|
|||
|
|
{
|
|||
|
|
//解释结论表
|
|||
|
|
int iIndex1=mrw.OpenTable(m_OGTableName.toStdString().c_str());
|
|||
|
|
if(iIndex1<0) {
|
|||
|
|
mrw.Clear();
|
|||
|
|
AfxMessageBox(m_OGTableName+"不存在!无法生成对应数据表!");
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
char *m_Result=NULL;
|
|||
|
|
int m_RecNum=0;
|
|||
|
|
int len=mrw.GetTableRecordLength(iIndex1);
|
|||
|
|
m_RecNum=mrw.GetTableRecordCount(iIndex1);
|
|||
|
|
m_Result=new char[len*m_RecNum+1];
|
|||
|
|
QMap<QString,QString> zoneOrder=GetZoneOrder();
|
|||
|
|
char RecBuf[200];
|
|||
|
|
QStringList types;
|
|||
|
|
char**typet=new char*[m_RecNum+10];
|
|||
|
|
// mrw.IsChange=1;
|
|||
|
|
int typen=0;
|
|||
|
|
QList<int> INO;
|
|||
|
|
for(int i=0;i<m_RecNum;i++) {
|
|||
|
|
memset(&m_Result[i*len],0,len);
|
|||
|
|
mrw.ReadTable(iIndex1,i+1,&m_Result[i*len]);
|
|||
|
|
if(sdep.size()>1&&j==sdep.size()) {
|
|||
|
|
for(int jj=0;jj<size-1;jj++){
|
|||
|
|
if(sdep[jj]!=-9999&&edep[jj]!=-9999)
|
|||
|
|
{
|
|||
|
|
if(sdep[jj]>=((LAYER_DATA*)&m_Result[i*len])->StartDepth&&
|
|||
|
|
sdep[jj]<=((LAYER_DATA*)&m_Result[i*len])->EndDepth) ((LAYER_DATA*)&m_Result[i*len])->StartDepth=sdep[jj];
|
|||
|
|
if(edep[jj]>=((LAYER_DATA*)&m_Result[i*len])->StartDepth&&
|
|||
|
|
edep[jj]<=((LAYER_DATA*)&m_Result[i*len])->EndDepth) ((LAYER_DATA*)&m_Result[i*len])->EndDepth=edep[jj];
|
|||
|
|
if(((LAYER_DATA*)&m_Result[i*len])->StartDepth>=sdep[jj]&&((LAYER_DATA*)&m_Result[i*len])->EndDepth<=edep[jj]) {
|
|||
|
|
strcpy(RecBuf,"");
|
|||
|
|
mrw.GetTableFieldData(iIndex1,m_ListTableInf.m_TableSpFIELD,RecBuf,i+1);
|
|||
|
|
removeStr(RecBuf,"(",")");
|
|||
|
|
if(strstr(RecBuf,"水淹")) strcpy(RecBuf,"水淹层");
|
|||
|
|
if(types.indexOf(RecBuf)==-1)
|
|||
|
|
{
|
|||
|
|
types.append(RecBuf);
|
|||
|
|
}
|
|||
|
|
typet[typen]=new char[strlen(RecBuf)*2+1];
|
|||
|
|
strcpy(typet[typen],RecBuf);
|
|||
|
|
typen++;
|
|||
|
|
INO.append(i);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
strcpy(RecBuf,"");
|
|||
|
|
mrw.GetTableFieldData(iIndex1,m_ListTableInf.m_TableSpFIELD,RecBuf,i+1);
|
|||
|
|
if(strstr(RecBuf,"水淹")) strcpy(RecBuf,"水淹层");
|
|||
|
|
QStringList strt=QString(m_ListTableInf.m_CurveName).split(" ");
|
|||
|
|
int i1=strt.indexOf("GR");
|
|||
|
|
if(i1>-1) strt.removeAt(i1);
|
|||
|
|
i1=strt.indexOf("AC");
|
|||
|
|
if(i1>-1) strt.removeAt(i1);
|
|||
|
|
removeStr(RecBuf,"(",")");
|
|||
|
|
if(strt.size()&&strt.indexOf(RecBuf)<0) continue;
|
|||
|
|
if(types.indexOf(RecBuf)==-1)
|
|||
|
|
{
|
|||
|
|
types.append(RecBuf);
|
|||
|
|
}
|
|||
|
|
typet[typen]=new char[strlen(RecBuf)*2+1];
|
|||
|
|
strcpy(typet[typen],RecBuf);
|
|||
|
|
INO.append(i);
|
|||
|
|
typen++;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else if(sdep[j]!=-9999&&edep[j]!=-9999) {
|
|||
|
|
if(sdep[j]>=((LAYER_DATA*)&m_Result[i*len])->StartDepth&&
|
|||
|
|
sdep[j]<=((LAYER_DATA*)&m_Result[i*len])->EndDepth) ((LAYER_DATA*)&m_Result[i*len])->StartDepth=sdep[j];
|
|||
|
|
if(edep[j]>=((LAYER_DATA*)&m_Result[i*len])->StartDepth&&
|
|||
|
|
edep[j]<=((LAYER_DATA*)&m_Result[i*len])->EndDepth) ((LAYER_DATA*)&m_Result[i*len])->EndDepth=edep[j];
|
|||
|
|
if(((LAYER_DATA*)&m_Result[i*len])->StartDepth>=sdep[j]&&((LAYER_DATA*)&m_Result[i*len])->EndDepth<=edep[j]) {
|
|||
|
|
strcpy(RecBuf,"");
|
|||
|
|
mrw.GetTableFieldData(iIndex1,m_ListTableInf.m_TableSpFIELD,RecBuf,i+1);
|
|||
|
|
if(strstr(RecBuf,"水淹")) strcpy(RecBuf,"水淹层");
|
|||
|
|
QStringList strt=QString(m_ListTableInf.m_CurveName).split(" ");
|
|||
|
|
int i1=strt.indexOf("GR");
|
|||
|
|
if(i1>-1) strt.removeAt(i1);
|
|||
|
|
i1=strt.indexOf("AC");
|
|||
|
|
if(i1>-1) strt.removeAt(i1);
|
|||
|
|
if(strt.size()&&strt.indexOf(RecBuf)<0) continue;
|
|||
|
|
if(types.indexOf(RecBuf)==-1)
|
|||
|
|
{
|
|||
|
|
types.append(RecBuf);
|
|||
|
|
}
|
|||
|
|
typet[typen]=new char[strlen(RecBuf)+1];
|
|||
|
|
strcpy(typet[typen],RecBuf);
|
|||
|
|
typen++;
|
|||
|
|
INO.append(i);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
strcpy(RecBuf,"");
|
|||
|
|
mrw.GetTableFieldData(iIndex1,m_ListTableInf.m_TableSpFIELD,RecBuf,i+1);
|
|||
|
|
if(strstr(RecBuf,"水淹")) strcpy(RecBuf,"水淹层");
|
|||
|
|
QStringList strt=QString(m_ListTableInf.m_CurveName).split(" ");
|
|||
|
|
int i1=strt.indexOf("GR");
|
|||
|
|
if(i1>-1) strt.removeAt(i1);
|
|||
|
|
i1=strt.indexOf("AC");
|
|||
|
|
if(i1>-1) strt.removeAt(i1);
|
|||
|
|
removeStr(RecBuf,"(",")");
|
|||
|
|
if(strt.size()&&strt.indexOf(RecBuf)<0) continue;
|
|||
|
|
if(types.indexOf(RecBuf)==-1)
|
|||
|
|
{
|
|||
|
|
types.append(RecBuf);
|
|||
|
|
}
|
|||
|
|
typet[typen]=new char[strlen(RecBuf)+1];
|
|||
|
|
strcpy(typet[typen],RecBuf);
|
|||
|
|
INO.append(i);
|
|||
|
|
typen++;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
mrw.CloseTable(iIndex1);
|
|||
|
|
|
|||
|
|
CDataManagger dm;
|
|||
|
|
DEFAULTTABLE *DefauleTable=dm.GetDefauleTable();//[DefTabNum];
|
|||
|
|
int DefTabNum=dm.GetDefTabNum();
|
|||
|
|
int tabNo=-1;
|
|||
|
|
bool isDefauleTable=false;
|
|||
|
|
for (int i=0;i<DefTabNum;i++)
|
|||
|
|
{
|
|||
|
|
if(DefauleTable[i].TableName==m_ListTableInf.m_TableType) {
|
|||
|
|
tabNo=i;
|
|||
|
|
isDefauleTable=true;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
QString tname=OutTableName;
|
|||
|
|
if(sdep.size()>1&&j<sdep.size()) tname+="_"+QString::number(sdep[j])+"_"+QString::number(edep[j]);
|
|||
|
|
{
|
|||
|
|
int iIndex=mrw.OpenTable(tname.toStdString().c_str());
|
|||
|
|
if (iIndex>=0)
|
|||
|
|
{
|
|||
|
|
mrw.DiscardObject(iIndex);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(tabNo<0) {
|
|||
|
|
tabNo=0;
|
|||
|
|
DefauleTable=new DEFAULTTABLE;
|
|||
|
|
DefauleTable->ZdNum=5;
|
|||
|
|
DefauleTable->TableName=tname;
|
|||
|
|
DefauleTable->tinfo=new Slf_OBJECT_FIELD[DefauleTable->ZdNum];
|
|||
|
|
memset(DefauleTable->tinfo,0,sizeof(Slf_OBJECT_FIELD)*DefauleTable->ZdNum);
|
|||
|
|
for(int i=0;i<DefauleTable->ZdNum;i++)
|
|||
|
|
{
|
|||
|
|
if(i==0) {
|
|||
|
|
strcpy(DefauleTable->tinfo[i].Name,"NO");
|
|||
|
|
strcpy(DefauleTable->tinfo[i].HZName,"NO");
|
|||
|
|
DefauleTable->tinfo[i].RepCode=1;
|
|||
|
|
DefauleTable->tinfo[i].CodeLength=4;
|
|||
|
|
}
|
|||
|
|
else if(i==1) {
|
|||
|
|
strcpy(DefauleTable->tinfo[i].Name,m_ListTableInf.m_TableSpFIELD);
|
|||
|
|
strcpy(DefauleTable->tinfo[i].HZName,m_ListTableInf.m_TableSpFIELD);
|
|||
|
|
DefauleTable->tinfo[i].RepCode=6;
|
|||
|
|
DefauleTable->tinfo[i].CodeLength=64;
|
|||
|
|
}
|
|||
|
|
else if(i==2) {
|
|||
|
|
strcpy(DefauleTable->tinfo[i].Name,"NUMBER");
|
|||
|
|
strcpy(DefauleTable->tinfo[i].HZName,"NUMBER");
|
|||
|
|
DefauleTable->tinfo[i].RepCode=4;
|
|||
|
|
DefauleTable->tinfo[i].CodeLength=4;
|
|||
|
|
}
|
|||
|
|
else if(i==3) {
|
|||
|
|
strcpy(DefauleTable->tinfo[i].Name,"THICK");
|
|||
|
|
strcpy(DefauleTable->tinfo[i].HZName,"THICK");
|
|||
|
|
DefauleTable->tinfo[i].RepCode=4;
|
|||
|
|
DefauleTable->tinfo[i].CodeLength=4;
|
|||
|
|
}
|
|||
|
|
else if(i==4) {
|
|||
|
|
strcpy(DefauleTable->tinfo[i].Name,"PESC");
|
|||
|
|
strcpy(DefauleTable->tinfo[i].HZName,"PESC");
|
|||
|
|
DefauleTable->tinfo[i].RepCode=4;
|
|||
|
|
DefauleTable->tinfo[i].CodeLength=4;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
int iIndex=mrw.OpenTable(tname.toStdString().c_str());
|
|||
|
|
if (iIndex<0)
|
|||
|
|
{
|
|||
|
|
QString name,Length,type,temp,hzname,unit,hzunit;
|
|||
|
|
name="";
|
|||
|
|
Length="";
|
|||
|
|
type="";
|
|||
|
|
temp="";
|
|||
|
|
hzname="";
|
|||
|
|
for(int i=0;i<DefauleTable[tabNo].ZdNum;i++)
|
|||
|
|
{
|
|||
|
|
name+=DefauleTable[tabNo].tinfo[i].Name;
|
|||
|
|
if(i!=DefauleTable[tabNo].ZdNum-1) name+=",";
|
|||
|
|
Length+=QString::number(DefauleTable[tabNo].tinfo[i].CodeLength);
|
|||
|
|
if(i!=DefauleTable[tabNo].ZdNum-1) Length+=",";
|
|||
|
|
type+=QString::number(DefauleTable[tabNo].tinfo[i].RepCode);
|
|||
|
|
if(i!=DefauleTable[tabNo].ZdNum-1) type+=",";
|
|||
|
|
temp+=QString::number(0);//*(int*)&DefauleTable[tabNo].tinfo[i].Reserved);
|
|||
|
|
if(i!=DefauleTable[tabNo].ZdNum-1) temp+=",";
|
|||
|
|
hzname+=DefauleTable[tabNo].tinfo[i].HZName;
|
|||
|
|
if(i!=DefauleTable[tabNo].ZdNum-1) hzname+=",";
|
|||
|
|
unit+=DefauleTable[tabNo].tinfo[i].Unit;
|
|||
|
|
if(i!=DefauleTable[tabNo].ZdNum-1) unit+=",";
|
|||
|
|
hzunit+=DefauleTable[tabNo].tinfo[i].HZUnit;
|
|||
|
|
if(i!=DefauleTable[tabNo].ZdNum-1) hzunit+=",";
|
|||
|
|
}
|
|||
|
|
iIndex=mrw.Open_Set_Table(tname.toStdString().c_str(),0,DefauleTable[tabNo].ZdNum,
|
|||
|
|
(char*)name.toStdString().c_str(),
|
|||
|
|
(char*)Length.toStdString().c_str(),//字段长度
|
|||
|
|
(char*)type.toStdString().c_str(),//字段类型
|
|||
|
|
(char*)temp.toStdString().c_str(),
|
|||
|
|
(char*)hzname.toStdString().c_str(),
|
|||
|
|
(char*)unit.toStdString().c_str(),
|
|||
|
|
(char*)hzunit.toStdString().c_str());//字段备注
|
|||
|
|
}
|
|||
|
|
mrw.SetTableRecordCount(iIndex,0);//清空表记录
|
|||
|
|
iIndex1=mrw.OpenTable(m_OGTableName.toStdString().c_str());
|
|||
|
|
|
|||
|
|
float*val=new float[mrw.GetTableFieldCount(iIndex)+1];
|
|||
|
|
memset(val,0,mrw.GetTableFieldCount(iIndex)*sizeof(float));
|
|||
|
|
float*tval=new float[mrw.GetTableFieldCount(iIndex)+1];
|
|||
|
|
memset(tval,0,mrw.GetTableFieldCount(iIndex)*sizeof(float));
|
|||
|
|
QStringList strs,strss;
|
|||
|
|
QStringList ts;
|
|||
|
|
QString ts1;
|
|||
|
|
if(m_ListTableInf.m_Flag) strs=types;
|
|||
|
|
else for(int i=0;i<m_ListTableInf.SPVALNUM;i++)
|
|||
|
|
{
|
|||
|
|
if(m_ListTableInf.SPVAL[i][0])
|
|||
|
|
{
|
|||
|
|
ts1=m_ListTableInf.SPVAL[i];
|
|||
|
|
ts=ts1.split(" ");
|
|||
|
|
ts.removeAll("");
|
|||
|
|
if(ts.size()) strs.append(ts.at(0));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
for(int i=0;i<strs.size();i++){
|
|||
|
|
int ind=types.indexOf(strs.at(i));
|
|||
|
|
if(ind>=0) {
|
|||
|
|
strss.append(types[ind]);
|
|||
|
|
types[ind]="";
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
types.removeAll("");
|
|||
|
|
if(types.size())strss.append(types);
|
|||
|
|
types=strss;
|
|||
|
|
char total1[500];
|
|||
|
|
strcpy(total1,"合计");
|
|||
|
|
for (int i=0;i<types.size();i++)//全部统计类
|
|||
|
|
{
|
|||
|
|
memset(val,0,mrw.GetTableFieldCount(iIndex)*sizeof(float));
|
|||
|
|
val[0]=i+1;
|
|||
|
|
int ret=0;
|
|||
|
|
for(int jj=0;jj<typen;jj++) //全部记录数据
|
|||
|
|
{
|
|||
|
|
if(types.at(i)==typet[jj]) {//仅统计结论一致的
|
|||
|
|
for(int k=3;k<DefauleTable[tabNo].ZdNum;k++)
|
|||
|
|
{
|
|||
|
|
char bu[100];
|
|||
|
|
ret=mrw.GetTableFieldData(iIndex1,DefauleTable[tabNo].tinfo[k].Name,(char*)bu,INO[jj]+1);
|
|||
|
|
if(ret) val[k]+=atof(bu);
|
|||
|
|
else if(stricmp(DefauleTable[tabNo].tinfo[k].Name,"THICK")==0){
|
|||
|
|
float st=((LAYER_DATA*)&m_Result[INO[jj]*len])->StartDepth;
|
|||
|
|
float en=((LAYER_DATA*)&m_Result[INO[jj]*len])->EndDepth;
|
|||
|
|
if(j<sdep.size()&&(sdep[j]!=-9999&&edep[j]!=-9999))
|
|||
|
|
{
|
|||
|
|
if(st<sdep[j]) st=sdep[j];
|
|||
|
|
if(en>edep[j]) en=edep[j];
|
|||
|
|
}
|
|||
|
|
float d1=QString::number(st+0.0001,'f',1).toFloat();
|
|||
|
|
float d2=QString::number(en+0.0001,'f',1).toFloat();
|
|||
|
|
val[k]+=d2-d1;
|
|||
|
|
}
|
|||
|
|
else if(stricmp(DefauleTable[tabNo].tinfo[k].Name,"PESC")==0){
|
|||
|
|
val[k]+=0;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
val[2]+=1;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
for(int k=0;k<DefauleTable[tabNo].ZdNum;k++) {
|
|||
|
|
if(k==1) mrw.SetTableFieldData(iIndex,DefauleTable[tabNo].tinfo[k].Name,(char*)types.at(i).toStdString().c_str(),i+1);
|
|||
|
|
else mrw.SetTableFieldData(iIndex,DefauleTable[tabNo].tinfo[k].Name,(char*)&val[k],i+1);
|
|||
|
|
tval[k]+=val[k];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
tval[0]=types.size()+1;
|
|||
|
|
for(int k=0;k<DefauleTable[tabNo].ZdNum;k++) {
|
|||
|
|
if(k>2) tval[k]+=0.00001;
|
|||
|
|
if(k==1) mrw.SetTableFieldData(iIndex,DefauleTable[tabNo].tinfo[k].Name,total1,types.size()+1);
|
|||
|
|
else mrw.SetTableFieldData(iIndex,DefauleTable[tabNo].tinfo[k].Name,(char*)&tval[k],types.size()+1);
|
|||
|
|
}
|
|||
|
|
if(stricmp(DefauleTable[tabNo].tinfo[DefauleTable[tabNo].ZdNum-1].Name,"PESC")==0)
|
|||
|
|
{
|
|||
|
|
for(int k=0;k<types.size()+1;k++) {
|
|||
|
|
float vvv=0;
|
|||
|
|
char buf[100];
|
|||
|
|
mrw.GetTableFieldData(iIndex,DefauleTable[tabNo].tinfo[DefauleTable[tabNo].ZdNum-2].Name,buf,k+1);
|
|||
|
|
vvv=atof(buf);
|
|||
|
|
if(tval[DefauleTable[tabNo].ZdNum-2]!=0){
|
|||
|
|
vvv=vvv/tval[DefauleTable[tabNo].ZdNum-2]*100;
|
|||
|
|
if(k==types.size()) vvv=100;
|
|||
|
|
mrw.SetTableFieldData(iIndex,DefauleTable[tabNo].tinfo[DefauleTable[tabNo].ZdNum-1].Name,(char*)&vvv,k+1);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
mrw.CloseTable(iIndex);
|
|||
|
|
mrw.CloseTable(iIndex1);
|
|||
|
|
|
|||
|
|
if(m_Result)delete m_Result;
|
|||
|
|
delete val;
|
|||
|
|
delete tval;
|
|||
|
|
for(int i=0;i<typen;i++) delete typet[i];
|
|||
|
|
delete typet;
|
|||
|
|
if(!isDefauleTable) delete DefauleTable;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
mrw.Close(); //关闭井文件
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
// void CQtWindowWellSection::setTablePointValue(float dep)
|
|||
|
|
// {
|
|||
|
|
// CQtWindowWellSection *pWin=this;
|
|||
|
|
// if(!pWin) return;
|
|||
|
|
// {
|
|||
|
|
// CQtWellSceneManager* scene = dynamic_cast<CQtWellSceneManager*>(GetSceneManager());
|
|||
|
|
|
|||
|
|
// CBaseObject *pCurrentObject = CObjProject::GetObjectByID(scene->GetCurrentPickObjectID());
|
|||
|
|
// CObjWellLog *pLog = dynamic_cast<CObjWellLog*>(pCurrentObject);
|
|||
|
|
// CObjDiscreteWellLog *pLog1 = dynamic_cast<CObjDiscreteWellLog*>(pCurrentObject);
|
|||
|
|
// if((!pLog&&!pLog1)||(!pLog1&&pLog&&pLog->m_ObjectType!=TABLE_OBJECT&&pLog->m_ObjectType!=TABLEE_OBJECT)) {
|
|||
|
|
// AfxMessageBox("先选择数据表对象!");
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// if(!pWin->m_ListTableInf.m_TableName[0])
|
|||
|
|
// {
|
|||
|
|
// QString path=GetTemplatePath();
|
|||
|
|
// QString strTplFilter="(*.lst)";
|
|||
|
|
// QString defaultTempleteFile=QFileDialog::getOpenFileName(NULL,QObject::tr("选择模板"),path,strTplFilter);
|
|||
|
|
// if(defaultTempleteFile.isEmpty()) {
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// pWin->OnListTableInf(defaultTempleteFile);
|
|||
|
|
// }
|
|||
|
|
// if(pWin->m_ListTableInf.Table_Field_Num<=0)
|
|||
|
|
// {
|
|||
|
|
// AfxMessageBox("对不起,您没有定义取值表结构,无法进行取值\r\n\r\n请选择“分层曲线取值方式设置”菜单,设置取值表结构");
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// INC.Noi=0;
|
|||
|
|
// INC.Name[0]=0;
|
|||
|
|
// HD.Rlev=0.125;
|
|||
|
|
// HD.Dep=-99999.0;
|
|||
|
|
// HD.Depo=0;
|
|||
|
|
// HD.Sdep=0;
|
|||
|
|
// HD.Edep=-99999;
|
|||
|
|
// HD.Stdep=99999;
|
|||
|
|
// HD.StartDep=HD.Stdep;
|
|||
|
|
// HD.EndDep=HD.Edep;
|
|||
|
|
// CMemRdWt mrw;
|
|||
|
|
// LIST_TABLE_INF &m_ListTableInf=pWin->m_ListTableInf;
|
|||
|
|
// QString m_csWellName=pLog->GetSlfFileName();
|
|||
|
|
// if ( mrw.Open(m_csWellName.toStdString().c_str()) ) // 打开井文件
|
|||
|
|
// {
|
|||
|
|
// QString OutTab=m_ListTableInf.m_TableName;
|
|||
|
|
// int iIndex=mrw.OpenTable(OutTab.toStdString().c_str());
|
|||
|
|
// if (iIndex<0)
|
|||
|
|
// {
|
|||
|
|
// AfxMessageBox(OutTab+"数据表不存在,请先生成表!");
|
|||
|
|
// mrw.Close();
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// int iIndex1=mrw.OpenTable(pLog->GetName().toStdString().c_str());
|
|||
|
|
// if(iIndex1<0) {
|
|||
|
|
// mrw.Clear();
|
|||
|
|
// AfxMessageBox(pLog->GetName()+"不存在!,无法生成对应数据表!");
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// LAYER_DATA *m_Result=NULL;
|
|||
|
|
// int m_RecNum=0;
|
|||
|
|
// int tabletype=0;
|
|||
|
|
// int tabletype2=0;
|
|||
|
|
// m_RecNum=mrw.GetTableRecordCount(iIndex1);
|
|||
|
|
// int relen=mrw.GetTableRecordLength(iIndex1);
|
|||
|
|
// if(relen<sizeof(LAYER_DATA)) relen=sizeof(LAYER_DATA);
|
|||
|
|
// m_Result=(LAYER_DATA *)new char[relen*m_RecNum+1];
|
|||
|
|
|
|||
|
|
// for(int i=0;i<m_RecNum;i++) {
|
|||
|
|
// memset(&m_Result[i],0,relen);
|
|||
|
|
// mrw.ReadTable(iIndex1,i+1,&m_Result[i]);
|
|||
|
|
// }
|
|||
|
|
// mrw.CloseTable(iIndex1);
|
|||
|
|
// int count=mrw.GetTableRecordCount(iIndex);
|
|||
|
|
// for (int i=0;i<count;i++)
|
|||
|
|
// {
|
|||
|
|
// if(dep>=m_Result[i].StartDepth&&dep<=m_Result[i].EndDepth)
|
|||
|
|
// {
|
|||
|
|
// for (int j=0;j<m_ListTableInf.Table_Field_Num;j++)
|
|||
|
|
// {
|
|||
|
|
// strcat(INC.Name,m_ListTableInf.Table_Field[j].Name);
|
|||
|
|
// if(j<m_ListTableInf.Table_Field_Num) strcat(INC.Name," ");
|
|||
|
|
// INC.Noi++;
|
|||
|
|
// }
|
|||
|
|
// mrw.SetStruct(&INC,NULL,&INP,NULL,NULL,NULL,&HD);
|
|||
|
|
// mrw.In();
|
|||
|
|
// mrw.In(dep);
|
|||
|
|
// for (int j=0;j<m_ListTableInf.Table_Field_Num;j++)
|
|||
|
|
// {
|
|||
|
|
// if(stricmp(m_ListTableInf.Table_Field[j].Name,"DEPTH")==0)
|
|||
|
|
// {
|
|||
|
|
// mrw.SetTableFieldData(iIndex,m_ListTableInf.Table_Field[j].Name,(char*)&dep,i+1);
|
|||
|
|
// }
|
|||
|
|
// else if(m_ListTableInf.Type[j]==1)
|
|||
|
|
// {
|
|||
|
|
// mrw.SetTableFieldData(iIndex,m_ListTableInf.Table_Field[j].Name,(char*)&INP.yy[j],i+1);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// break;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// delete m_Result;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
void CQtWindowWellSection::slotReFreshZoneListData()
|
|||
|
|
{
|
|||
|
|
// CQtWellSceneManager *pWellSceneManager = dynamic_cast<CQtWellSceneManager *>( GetSceneManager() );
|
|||
|
|
// if(!pWellSceneManager) return;
|
|||
|
|
// CWellSectionWindowDocument *pDoc = pWellSceneManager->GetWellSectionGeomtry().GetSecionWindowDocument();
|
|||
|
|
// if(!pDoc) return;
|
|||
|
|
// CBaseObject *pCurrentObject = CObjProject::GetObjectByID(pWellSceneManager->GetCurrentPickObjectID());
|
|||
|
|
// CObjWellTrack *pWellTrack = dynamic_cast<CObjWellTrack *>(pCurrentObject);
|
|||
|
|
// CObjWellLogTrack *pWelllogTrack = dynamic_cast<CObjWellLogTrack *>( pCurrentObject );
|
|||
|
|
// if(pWelllogTrack) pWellTrack=pWelllogTrack->GetWellTrack();
|
|||
|
|
// CObjWelllogRound*pRound=NULL;
|
|||
|
|
// CObjWellLog *pLog = dynamic_cast<CObjWellLog *>( pCurrentObject );
|
|||
|
|
// if(pLog) {
|
|||
|
|
// pRound=pLog->GetWelllogRound();
|
|||
|
|
// }
|
|||
|
|
// if(!pRound) {
|
|||
|
|
// AfxMessageBox("请先选中结论对象!");
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// m_LOGS.clear();
|
|||
|
|
// m_LOGS.append(pLog);
|
|||
|
|
// QDialog dialog(NULL);
|
|||
|
|
// dialog.setModal(false);
|
|||
|
|
// Qt::WindowFlags flags = dialog.windowFlags();
|
|||
|
|
// flags |= Qt::WindowStaysOnTopHint;
|
|||
|
|
// flags &= ~Qt::WindowContextHelpButtonHint;
|
|||
|
|
// dialog.setWindowFlags(flags);
|
|||
|
|
// QString path,wellname;
|
|||
|
|
// GetWellNameAndPath(pRound->GetSlfFileName(),wellname,path);
|
|||
|
|
// dialog.setWindowTitle("深度点-"+wellname);
|
|||
|
|
// QGridLayout *verticalLayoutWidget = new QGridLayout(&dialog);
|
|||
|
|
// verticalLayoutWidget->setObjectName(QString::fromUtf8("verticalLayoutWidget"));
|
|||
|
|
// verticalLayoutWidget->setGeometry(QRect(30, 30, 631, 281));
|
|||
|
|
// QVBoxLayout*form = new QVBoxLayout();
|
|||
|
|
// form->setObjectName(QString::fromUtf8("form"));
|
|||
|
|
// form->setContentsMargins(0, 0, 0, 0);
|
|||
|
|
|
|||
|
|
// CompleterTextEdit*pTDialog = new CompleterTextEdit(&dialog);
|
|||
|
|
// pTDialog->setObjectName(QString::fromUtf8("pTDialog"));
|
|||
|
|
// form->addWidget(pTDialog);
|
|||
|
|
// pTDialog->setFont(QFont("宋体",24));
|
|||
|
|
// QHBoxLayout*horizontalLayout = new QHBoxLayout();
|
|||
|
|
// horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout"));
|
|||
|
|
// {
|
|||
|
|
// CMemRdWt mem(pLog->GetSlfFileName().toStdString().c_str());
|
|||
|
|
// if(!m_ListTableInf.m_TableName[0])
|
|||
|
|
// {
|
|||
|
|
// QString path=GetTemplatePath();
|
|||
|
|
// QString strTplFilter="(*.lst)";
|
|||
|
|
// QString defaultTempleteFile=QFileDialog::getOpenFileName(NULL,QObject::tr("选择模板"),path,strTplFilter);
|
|||
|
|
// if(defaultTempleteFile.isEmpty()) {
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// OnListTableInf(defaultTempleteFile);
|
|||
|
|
// }
|
|||
|
|
// DWORD bytes_write;
|
|||
|
|
// char cardname[200]="valdepth_inp";
|
|||
|
|
// int index_result = mem.OpenStream(cardname);
|
|||
|
|
// if(index_result<0)
|
|||
|
|
// {
|
|||
|
|
// QString OutTab=m_ListTableInf.m_TableName;
|
|||
|
|
// int iIndex=mem.OpenTable(OutTab.toStdString().c_str());
|
|||
|
|
// if (iIndex<0)
|
|||
|
|
// {
|
|||
|
|
// AfxMessageBox(OutTab+"数据表不存在,请先生成表!");
|
|||
|
|
// mem.Close();
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// int m_RecNum=0;
|
|||
|
|
// int tabletype=0;
|
|||
|
|
// int tabletype2=0;
|
|||
|
|
// m_RecNum=mem.GetTableRecordCount(iIndex);
|
|||
|
|
// QStringList STRS;
|
|||
|
|
// STRS.append("NO DEPTH");
|
|||
|
|
// char buf[200];
|
|||
|
|
// QString css;
|
|||
|
|
// for(int i=0;i<m_RecNum;i++) {
|
|||
|
|
// if(mem.GetTableFieldData(iIndex,"DEPTH",buf,i+1)){
|
|||
|
|
// css=QString::number(i+1)+" "+buf;
|
|||
|
|
// STRS.append(css);
|
|||
|
|
// }
|
|||
|
|
// else {
|
|||
|
|
// AfxMessageBox("成果表中\"DEPTH\"字段不存在,无非按照深度点进行取值!");
|
|||
|
|
// break;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// mem.CloseTable(iIndex);
|
|||
|
|
// pTDialog->document()->setPlainText(STRS.join("\n"));
|
|||
|
|
// }
|
|||
|
|
// else if(index_result>-1)
|
|||
|
|
// {
|
|||
|
|
// int len=mem.GetStreamLength(index_result);
|
|||
|
|
// if(len>0) {
|
|||
|
|
// char *buff=new char[len+1];
|
|||
|
|
// DWORD lb=0;
|
|||
|
|
// mem.ReadStream(index_result,len,&lb,buff);
|
|||
|
|
// pTDialog->document()->setPlainText(buff);
|
|||
|
|
// delete buff;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// mem.Close();
|
|||
|
|
// }
|
|||
|
|
// QDialogButtonBox buttonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel,
|
|||
|
|
// Qt::Horizontal, &dialog);
|
|||
|
|
// form->addLayout(horizontalLayout);
|
|||
|
|
// form->addWidget(&buttonBox);
|
|||
|
|
// verticalLayoutWidget->addLayout(form, 0, 0, 1, 1);
|
|||
|
|
// connect(pTDialog,SIGNAL(cursorPositionChanged()),
|
|||
|
|
// this,SLOT(onCurrentLineHighLight()));
|
|||
|
|
|
|||
|
|
// QObject::connect(&buttonBox, SIGNAL(accepted()), &dialog, SLOT(accept()));
|
|||
|
|
// QObject::connect(&buttonBox, SIGNAL(rejected()), &dialog, SLOT(reject()));
|
|||
|
|
// dialog.show();
|
|||
|
|
// if (dialog.exec() == QDialog::Accepted) {
|
|||
|
|
// QString text=pTDialog->document()->toPlainText();
|
|||
|
|
// DWORD bytes_write;
|
|||
|
|
// char cardname[200]="valdepth_inp";
|
|||
|
|
// CMemRdWt mem(pLog->GetSlfFileName().toStdString().c_str());
|
|||
|
|
// int index_result = mem.CreateStream(PARA_OBJECT,cardname,16384,FALSE);
|
|||
|
|
|
|||
|
|
// if(index_result>-1) {
|
|||
|
|
// int len=strlen(text.toStdString().c_str());
|
|||
|
|
// if(len>0) {
|
|||
|
|
// DWORD lb=0;
|
|||
|
|
// mem.WriteStream(index_result,len+1,&lb,text.toStdString().c_str());
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// mem.Close();
|
|||
|
|
// QString name=cardname;
|
|||
|
|
// CObjWelllogRound *pWelllogRound=dynamic_cast<CObjWelllogRound*>(pRound);
|
|||
|
|
// if(pWelllogRound) {
|
|||
|
|
// PaiObject*pBase=pWelllogRound->GetObjectByName(name,GetClassID_WellLogINP());
|
|||
|
|
// if(!dynamic_cast<CObjWellLogINP *>(pBase)){
|
|||
|
|
// CObjWellLog * acurve=new CObjWellLogINP();
|
|||
|
|
// if(acurve) {
|
|||
|
|
// acurve->m_ObjectType=CARD_OBJECT;
|
|||
|
|
// acurve->SetName(name);
|
|||
|
|
// acurve->SetAliasName(name);
|
|||
|
|
// acurve->SetSlfFileName(pLog->GetSlfFileName());
|
|||
|
|
// acurve->SetWell(pWelllogRound->GetWell());
|
|||
|
|
// pWelllogRound->AddChild(acurve);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// QString SDEPS=pTDialog->toPlainText();
|
|||
|
|
// SDEPS.replace("\r\n","\n");
|
|||
|
|
// QStringList sdeps=SDEPS.split("\n");
|
|||
|
|
// sdeps.removeAll("");
|
|||
|
|
// for(int i=0;i<sdeps.size();i++) {
|
|||
|
|
// QStringList cs=sdeps[i].split(" ");
|
|||
|
|
// cs.removeAll("");
|
|||
|
|
// if(!cs.size()) continue;
|
|||
|
|
// QString cs1=cs.at(cs.size()-1);
|
|||
|
|
// if(cs1.length()&&cs1.at(0).isDigit())
|
|||
|
|
// {
|
|||
|
|
// setTablePointValue(cs1.toFloat());
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// pTDialog=NULL;
|
|||
|
|
// int c=pDoc->GetFootSheetCount();
|
|||
|
|
// for(int index=0;index<c;index++){
|
|||
|
|
// CSheet* pSheet = pDoc->GetFootSheet( index );
|
|||
|
|
// if(pSheet) {
|
|||
|
|
// pSheet->SetLoadDataFromSLFEnabled(true);
|
|||
|
|
// pSheet->LoadDataFromSLF();
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// if (m_pSceneManager)
|
|||
|
|
// {
|
|||
|
|
// m_pSceneManager->UpdateAll();
|
|||
|
|
// m_pSceneManager->GetCameraCommand().OnHScroll();
|
|||
|
|
// // hideEditGraphicsHeadCell();
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// else {
|
|||
|
|
// pTDialog=NULL;
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
}
|
|||
|
|
void CQtWindowWellSection::slotZoneListData(CObjWellLog *pLog)
|
|||
|
|
{
|
|||
|
|
// CQtWellSceneManager *m_pWellSceneManager = dynamic_cast<CQtWellSceneManager *>( GetSceneManager() );
|
|||
|
|
// CWellSectionWindowDocument *m_pDoc = dynamic_cast<CWellSectionWindowDocument*>(this->GetWindowDocument());
|
|||
|
|
// if(!m_pDoc) return;
|
|||
|
|
// CBaseObject *pCurrentObject = CObjProject::GetObjectByID(m_pWellSceneManager->GetCurrentPickObjectID());
|
|||
|
|
// CObjWellLog *pLog = dynamic_cast<CObjWellLog*>(pCurrentObject);
|
|||
|
|
// CObjDiscreteWellLog *pLog1 = dynamic_cast<CObjDiscreteWellLog*>(pCurrentObject);
|
|||
|
|
// if((!pLog&&!pLog1)||(!pLog1&&pLog&&pLog->m_ObjectType!=TABLE_OBJECT&&pLog->m_ObjectType!=TABLEE_OBJECT)) {
|
|||
|
|
// AfxMessageBox("先选择数据表对象!");
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
if(!m_ListTableInf.m_TableName[0])
|
|||
|
|
{
|
|||
|
|
QString path=GetTemplatePath();
|
|||
|
|
QString strTplFilter="(*.lst)";
|
|||
|
|
QString defaultTempleteFile=QFileDialog::getOpenFileName(NULL,QObject::tr("选择模板"),path,strTplFilter);
|
|||
|
|
if(defaultTempleteFile.isEmpty()) {
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
OnListTableInf(defaultTempleteFile);
|
|||
|
|
}
|
|||
|
|
QDialog dialog(NULL);
|
|||
|
|
dialog.setModal(false);
|
|||
|
|
Qt::WindowFlags flags = dialog.windowFlags();
|
|||
|
|
flags |= Qt::WindowStaysOnTopHint;
|
|||
|
|
flags &= ~Qt::WindowContextHelpButtonHint;
|
|||
|
|
dialog.setWindowFlags(flags);
|
|||
|
|
dialog.setWindowTitle("深度分段统计");
|
|||
|
|
QFormLayout form(&dialog);
|
|||
|
|
form.addWidget(new QLabel("输入深度参数:"));
|
|||
|
|
// Value1
|
|||
|
|
QString value1 = QString("起始深度: ");
|
|||
|
|
spinbox1 = new QLineEdit(&dialog);
|
|||
|
|
form.addRow(value1, spinbox1);
|
|||
|
|
value1 = QString("终止深度: ");
|
|||
|
|
spinbox2 = new QLineEdit(&dialog);
|
|||
|
|
form.addRow(value1, spinbox2);
|
|||
|
|
|
|||
|
|
/* if(m_pDoc->m_mergeLineList.size()>1) {
|
|||
|
|
QString str;
|
|||
|
|
for(int i=0;i<m_pDoc->m_mergeLineList.size()/2;i++) {
|
|||
|
|
str+=toString(m_pDoc->m_mergeLineList[i*2]->GetLeftDepth());
|
|||
|
|
if(i<m_pDoc->m_mergeLineList.size()/2-1)str+=" ";
|
|||
|
|
}
|
|||
|
|
spinbox1->setText(str);
|
|||
|
|
}
|
|||
|
|
else */spinbox1->setText("-9999.0");
|
|||
|
|
/* if(m_pDoc->m_mergeLineList.size()>1) {
|
|||
|
|
QString str;
|
|||
|
|
for(int i=0;i<m_pDoc->m_mergeLineList.size()/2;i++) {
|
|||
|
|
str+=toString(m_pDoc->m_mergeLineList[i*2+1]->GetLeftDepth());
|
|||
|
|
if(i<m_pDoc->m_mergeLineList.size()/2-1)str+=" ";
|
|||
|
|
}
|
|||
|
|
spinbox2->setText(str);
|
|||
|
|
}
|
|||
|
|
else */spinbox2->setText("-9999.0");
|
|||
|
|
|
|||
|
|
spinbox3 = new QLineEdit(&dialog);
|
|||
|
|
value1 = QString("输出表名称: ");
|
|||
|
|
form.addRow(value1, spinbox3);
|
|||
|
|
QString outtable=m_ListTableInf.m_TableName;
|
|||
|
|
outtable+="_TT";
|
|||
|
|
spinbox3->setText(outtable);
|
|||
|
|
QDialogButtonBox buttonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel,
|
|||
|
|
Qt::Horizontal, &dialog);
|
|||
|
|
m_ButtonBox=&buttonBox;
|
|||
|
|
form.addWidget(&buttonBox);
|
|||
|
|
QObject::connect(&buttonBox, SIGNAL(rejected()), &dialog, SLOT(reject()));
|
|||
|
|
QObject::connect(&buttonBox, SIGNAL(accepted()), &dialog, SLOT(accept()));
|
|||
|
|
buttonBox.button(QDialogButtonBox::Ok)->setAutoDefault(false);
|
|||
|
|
if (dialog.exec() == QDialog::Accepted)
|
|||
|
|
{
|
|||
|
|
QList<float> sdep;
|
|||
|
|
QString SDEPS=spinbox1->text();
|
|||
|
|
QStringList sdeps;
|
|||
|
|
if(SDEPS.indexOf(",")>-1) sdeps=SDEPS.split(",");
|
|||
|
|
else sdeps=SDEPS.split(" ");
|
|||
|
|
sdeps.removeAll("");
|
|||
|
|
QList<float> edep;
|
|||
|
|
QString EDEPS=spinbox2->text();
|
|||
|
|
QStringList edeps;
|
|||
|
|
if(EDEPS.indexOf(",")>-1) edeps=EDEPS.split(",");
|
|||
|
|
else edeps=EDEPS.split(" ");
|
|||
|
|
edeps.removeAll("");
|
|||
|
|
int size=sdeps.size();
|
|||
|
|
for (int i=0;i<size;i++)
|
|||
|
|
{
|
|||
|
|
sdep.append(sdeps[i].toFloat());
|
|||
|
|
edep.append(edeps[i].toFloat());
|
|||
|
|
}
|
|||
|
|
QString tablename=spinbox3->text();
|
|||
|
|
QString slf=pLog->GetSlfFileName();
|
|||
|
|
CreateTattle(slf,pLog->GetName(),tablename,sdep,edep);
|
|||
|
|
// Do something here
|
|||
|
|
CDataImport::ChangetoSlf(slf);
|
|||
|
|
// CWellSectionWindowDocument *pDoc=dynamic_cast<CWellSectionWindowDocument*>(GetWindowDocument());
|
|||
|
|
// int count=pDoc->GetFootSheetCount();
|
|||
|
|
// for(int i=0;i<count;i++) {
|
|||
|
|
// CSheet* pSheet = pDoc->GetFootSheet(i);
|
|||
|
|
// if(pSheet) {
|
|||
|
|
// pSheet->SetLoadDataFromSLFEnabled(true);
|
|||
|
|
// pSheet->LoadDataFromSLF();
|
|||
|
|
// if (m_pSceneManager)
|
|||
|
|
// {
|
|||
|
|
// // hideEditGraphicsHeadCell();
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// m_pSceneManager->UpdateAll();
|
|||
|
|
// CQtViewer* QtViewer=dynamic_cast<CQtViewer*>(m_pSceneManager->GetVecViwer());
|
|||
|
|
// QScrollBar* pHScroll=NULL,*pVScroll=NULL;
|
|||
|
|
// if(QtViewer) {
|
|||
|
|
// pHScroll=QtViewer->GetHScroll();
|
|||
|
|
// pVScroll=QtViewer->GetVScroll();
|
|||
|
|
// }
|
|||
|
|
// if(pHScroll) {
|
|||
|
|
// int hval=pHScroll->value();
|
|||
|
|
// pHScroll->setValue(0);
|
|||
|
|
// m_pSceneManager->GetCameraCommand().OnHScroll(hval);
|
|||
|
|
// }
|
|||
|
|
// if(pVScroll)
|
|||
|
|
// {
|
|||
|
|
// int vval=pVScroll->value();
|
|||
|
|
// pVScroll->setValue(0);
|
|||
|
|
// m_pSceneManager->GetCameraCommand().OnHScroll(vval);
|
|||
|
|
// }
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
void CQtWindowWellSection::slotListData(CObjWellLog *pLog)
|
|||
|
|
{
|
|||
|
|
// CQtWellSceneManager *m_pWellSceneManager = dynamic_cast<CQtWellSceneManager *>( GetSceneManager() );
|
|||
|
|
// CBaseObject *pCurrentObject = CObjProject::GetObjectByID(m_pWellSceneManager->GetCurrentPickObjectID());
|
|||
|
|
// CObjWellLog *pLog = dynamic_cast<CObjWellLog*>(pCurrentObject);
|
|||
|
|
// CObjDiscreteWellLog *pLog1 = dynamic_cast<CObjDiscreteWellLog*>(pCurrentObject);
|
|||
|
|
// if((!pLog&&!pLog1)||(!pLog1&&pLog&&pLog->m_ObjectType!=TABLE_OBJECT&&pLog->m_ObjectType!=TABLEE_OBJECT)) {
|
|||
|
|
// AfxMessageBox("先选择数据表对象!");
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
if(pLog)
|
|||
|
|
{
|
|||
|
|
QString path=GetTemplatePath();
|
|||
|
|
QString strTplFilter="(*.lst)";
|
|||
|
|
QString defaultTempleteFile=QFileDialog::getOpenFileName(NULL,QObject::tr("选择模板"),path,strTplFilter);
|
|||
|
|
if(defaultTempleteFile.isEmpty()) {
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
OnListTableInf(defaultTempleteFile);
|
|||
|
|
// QString m_OGTableName=pCurrentObject->GetPaiObject()->GetName();
|
|||
|
|
QString m_OGTableName=pLog->GetName();
|
|||
|
|
QString m_csWellName=pLog->GetSlfFileName();
|
|||
|
|
OnListBedValue(m_csWellName,m_OGTableName);
|
|||
|
|
// slotClearMegCurves();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
// void CQtWindowWellSection::slotSetShiftTool()
|
|||
|
|
// {
|
|||
|
|
// CWellSectionWindowDocument*pDoc=dynamic_cast<CWellSectionWindowDocument*>(this->GetWindowDocument());
|
|||
|
|
// if(!pDoc) return;
|
|||
|
|
// QAction *pAction = GetSceneManager()->GetViewCommand().GetAction(GetCmdID_JOINDEPTH());
|
|||
|
|
// if(pAction->isChecked()) {
|
|||
|
|
// QToolBar *pRToolbar=GetSceneManager()->GetVecWindow()->GetRToolbar();
|
|||
|
|
// if(pRToolbar) {
|
|||
|
|
// pAction->setChecked(false);
|
|||
|
|
// pRToolbar->clear();
|
|||
|
|
// pRToolbar->setVisible(true);
|
|||
|
|
// pRToolbar->addAction(QIcon( ::GetImagePath() + "icon/Shift.png"), QObject::tr("整体深度平移校正"),this,SLOT(slotChangeAllCurves()));
|
|||
|
|
// pRToolbar->addAction(QIcon( ::GetImagePath() + "icon/MoveShift.png"), QObject::tr("深度分段平移校正"),this,SLOT(slotMoveAllCurves()));
|
|||
|
|
// pRToolbar->addAction(QIcon( ::GetImagePath() + "icon/DepthShift.png"), QObject::tr("参数卡深度平移校正"),this,SLOT(slotCardMoveCurves()));
|
|||
|
|
// pRToolbar->addSeparator();
|
|||
|
|
// pRToolbar->addAction(QIcon( ::GetImagePath()+"icon/Standard.png"),QObject::tr("设置/取消标准曲线"),this,SLOT(slotSetStandardCurve()));
|
|||
|
|
// pRToolbar->addAction(QIcon( ::GetImagePath() + "icon/Correction.png"), QObject::tr("设置/取消校正曲线"),this,SLOT(slotSetShiftCurve()));
|
|||
|
|
// pRToolbar->addAction(QIcon( ::GetImagePath() + "icon/Shiftother.png"), QObject::tr("批量设置从校正曲线"),this,SLOT(slotSetOtherShiftCurve()));
|
|||
|
|
// pRToolbar->addSeparator();
|
|||
|
|
|
|||
|
|
// // pRToolbar->addAction(QIcon( ::GetImagePath() + "icon/copy.png"), QObject::tr("执行可视化校正"),this,SLOT(slotRunShift()));
|
|||
|
|
// // pRToolbar->addAction(QIcon( ::GetImagePath() + "icon/paste.png"), QObject::tr("放弃可视化校正"),this,SLOT(slotCanelRunShift()));
|
|||
|
|
// pRToolbar->addAction(QIcon( ::GetImagePath() + "icon/autocor.png"), QObject::tr("自动对比"),this,SLOT(slotExecuteDepthAutoComp()));
|
|||
|
|
// pRToolbar->addAction(QIcon( ::GetImagePath() + "icon/runcor.png"), QObject::tr("执行校正"),this,SLOT(slotExecuteDepthShifting()));
|
|||
|
|
// pRToolbar->addSeparator();
|
|||
|
|
// pRToolbar->addAction(QIcon( ::GetImagePath() + "icon/ClearAllSetCurve.png"), QObject::tr("清除全部曲线设置"),this,SLOT(slotClearStandardShift()));
|
|||
|
|
// pRToolbar->addAction(QIcon( ::GetImagePath() + "icon/ClearSetCurve.png"), QObject::tr("清除全部从曲线设置"),this,SLOT(slotClearShiftCurves()));
|
|||
|
|
// slotClearMegCurves();
|
|||
|
|
// slotClearStandardMeg();
|
|||
|
|
// // slotClearShiftZonePoint();
|
|||
|
|
// }
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// QToolBar *pRToolbar=GetSceneManager()->GetVecWindow()->GetRToolbar();
|
|||
|
|
// if(pRToolbar) {
|
|||
|
|
// if(pRToolbar->isVisible()) {
|
|||
|
|
// QList<QAction*> s;
|
|||
|
|
// int c=0;
|
|||
|
|
// for(int i=0;i<s.size();i++) {
|
|||
|
|
// if(s[i]->text()==QObject::tr("整体深度平移校正")) {
|
|||
|
|
// c=1;
|
|||
|
|
// break;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// if(c) {
|
|||
|
|
// pRToolbar->setVisible(false);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// if(!pRToolbar->isVisible()) {
|
|||
|
|
// pRToolbar->clear();
|
|||
|
|
// pRToolbar->setVisible(true);
|
|||
|
|
// pRToolbar->addAction(QIcon( ::GetImagePath() + "icon/Shift.png"), QObject::tr("整体深度平移校正"),this,SLOT(slotChangeAllCurves()));
|
|||
|
|
// pRToolbar->addAction(QIcon( ::GetImagePath() + "icon/MoveShift.png"), QObject::tr("深度分段平移校正"),this,SLOT(slotMoveAllCurves()));
|
|||
|
|
// pRToolbar->addAction(QIcon( ::GetImagePath() + "icon/DepthShift.png"), QObject::tr("参数卡深度平移校正"),this,SLOT(slotCardMoveCurves()));
|
|||
|
|
// pRToolbar->addSeparator();
|
|||
|
|
// pRToolbar->addAction(QIcon( ::GetImagePath()+"icon/Standard.png"),QObject::tr("设置/取消标准曲线"),this,SLOT(slotSetStandardCurve()));
|
|||
|
|
// pRToolbar->addAction(QIcon( ::GetImagePath() + "icon/Correction.png"), QObject::tr("设置/取消校正曲线"),this,SLOT(slotSetShiftCurve()));
|
|||
|
|
// pRToolbar->addAction(QIcon( ::GetImagePath() + "icon/Shiftother.png"), QObject::tr("批量设置从校正曲线"),this,SLOT(slotSetOtherShiftCurve()));
|
|||
|
|
// pRToolbar->addSeparator();
|
|||
|
|
|
|||
|
|
// // pRToolbar->addAction(QIcon( ::GetImagePath() + "icon/copy.png"), QObject::tr("执行可视化校正"),this,SLOT(slotRunShift()));
|
|||
|
|
// // pRToolbar->addAction(QIcon( ::GetImagePath() + "icon/paste.png"), QObject::tr("放弃可视化校正"),this,SLOT(slotCanelRunShift()));
|
|||
|
|
// pRToolbar->addAction(QIcon( ::GetImagePath() + "icon/autocor.png"), QObject::tr("自动对比"),this,SLOT(slotExecuteDepthAutoComp()));
|
|||
|
|
// pRToolbar->addAction(QIcon( ::GetImagePath() + "icon/runcor.png"), QObject::tr("执行校正"),this,SLOT(slotExecuteDepthShifting()));
|
|||
|
|
// pRToolbar->addAction(QIcon( ::GetImagePath() + "icon/checkjiegu.png"), QObject::tr("接箍异常检测"),this,SLOT(slotCheckCCLDepthShift()));
|
|||
|
|
// pRToolbar->addSeparator();
|
|||
|
|
// pRToolbar->addAction(QIcon( ::GetImagePath() + "icon/ClearAllSetCurve.png"), QObject::tr("清除全部曲线设置"),this,SLOT(slotClearStandardShift()));
|
|||
|
|
// pRToolbar->addAction(QIcon( ::GetImagePath() + "icon/ClearSetCurve.png"), QObject::tr("清除全部从曲线设置"),this,SLOT(slotClearShiftCurves()));
|
|||
|
|
// if(pDoc->m_isShift!=0) {
|
|||
|
|
// slotClearMegCurves();
|
|||
|
|
// slotClearStandardMeg();
|
|||
|
|
// }
|
|||
|
|
// // slotClearShiftZonePoint();
|
|||
|
|
// }
|
|||
|
|
// else {
|
|||
|
|
// pRToolbar->setVisible(false);
|
|||
|
|
// slotClearMegCurves();
|
|||
|
|
// slotClearStandardMeg();
|
|||
|
|
// // slotClearShiftZonePoint();
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// void CQtWindowWellSection::slotSetJoinTool()
|
|||
|
|
// {
|
|||
|
|
// QAction *pAction = GetSceneManager()->GetViewCommand().GetAction(GetCmdID_SHIFTDEPTH());
|
|||
|
|
// if(pAction->isChecked()) {
|
|||
|
|
// pAction->setChecked(false);
|
|||
|
|
// QToolBar *pRToolbar=GetSceneManager()->GetVecWindow()->GetRToolbar();
|
|||
|
|
// if(pRToolbar) {
|
|||
|
|
// pRToolbar->clear();
|
|||
|
|
// pRToolbar->setVisible(true);
|
|||
|
|
// pRToolbar->addAction(QIcon( ::GetImagePath() + "icon/Standard.png"), QObject::tr("设置/取消目标拼接曲线"),this,SLOT(slotSetStandardMegCurve()));
|
|||
|
|
// pRToolbar->addAction(QIcon( ::GetImagePath() + "icon/Correction.png"), QObject::tr("设置/取消源拼接曲线"),this,SLOT(slotSetMegCurve()));
|
|||
|
|
// pRToolbar->addAction(QIcon( ::GetImagePath() + "icon/Shiftother.png"), QObject::tr("批量设置从拼接曲线"),this,SLOT(slotSetOtherMegCurve()));
|
|||
|
|
// pRToolbar->addSeparator();
|
|||
|
|
// pRToolbar->addAction(QIcon( ::GetImagePath() + "icon/PreMeg.png"), QObject::tr("拼接效果预览"),this,SLOT(slotDepthScrMerge()));
|
|||
|
|
// pRToolbar->addAction(QIcon( ::GetImagePath() + "icon/merge.png"), QObject::tr("执行拼接"),this,SLOT(slotDepthMerge()));
|
|||
|
|
// pRToolbar->addSeparator();
|
|||
|
|
// pRToolbar->addAction(QIcon( ::GetImagePath() + "icon/ClearAllSetCurve.png"), QObject::tr("清除全部曲线设置"),this,SLOT(slotClearStandardMeg()));
|
|||
|
|
// pRToolbar->addAction(QIcon( ::GetImagePath() + "icon/ClearSetCurve.png"), QObject::tr("清除全部从曲线设置"),this,SLOT(slotClearMegCurves()));
|
|||
|
|
// slotClearStandardShift();
|
|||
|
|
// slotClearShiftCurves();
|
|||
|
|
// }
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// QToolBar *pRToolbar=GetSceneManager()->GetVecWindow()->GetRToolbar();
|
|||
|
|
// if(pRToolbar) {
|
|||
|
|
// if(pRToolbar->isVisible()) {
|
|||
|
|
// QList<QAction*> s;
|
|||
|
|
// int c=0;
|
|||
|
|
// for(int i=0;i<s.size();i++) {
|
|||
|
|
// if(s[i]->text()==QObject::tr("设置/取消标准曲线")) {
|
|||
|
|
// c=1;
|
|||
|
|
// break;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// if(c) {
|
|||
|
|
// pRToolbar->setVisible(false);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// if(!pRToolbar->isVisible()) {
|
|||
|
|
// pRToolbar->clear();
|
|||
|
|
// pRToolbar->setVisible(true);
|
|||
|
|
// pRToolbar->addAction(QIcon( ::GetImagePath() + "icon/Standard.png"), QObject::tr("设置/取消目标拼接曲线"),this,SLOT(slotSetStandardMegCurve()));
|
|||
|
|
// pRToolbar->addAction(QIcon( ::GetImagePath() + "icon/Correction.png"), QObject::tr("设置/取消源拼接曲线"),this,SLOT(slotSetMegCurve()));
|
|||
|
|
// pRToolbar->addAction(QIcon( ::GetImagePath() + "icon/Shiftother.png"), QObject::tr("批量设置从拼接曲线"),this,SLOT(slotSetOtherMegCurve()));
|
|||
|
|
// pRToolbar->addSeparator();
|
|||
|
|
// pRToolbar->addAction(QIcon( ::GetImagePath() + "icon/PreMeg.png"), QObject::tr("拼接效果预览"),this,SLOT(slotDepthScrMerge()));
|
|||
|
|
// pRToolbar->addAction(QIcon( ::GetImagePath() + "icon/merge.png"), QObject::tr("执行拼接"),this,SLOT(slotDepthMerge()));
|
|||
|
|
// pRToolbar->addSeparator();
|
|||
|
|
// pRToolbar->addAction(QIcon( ::GetImagePath() + "icon/ClearAllSetCurve.png"), QObject::tr("清除全部曲线设置"),this,SLOT(slotClearStandardMeg()));
|
|||
|
|
// pRToolbar->addAction(QIcon( ::GetImagePath() + "icon/ClearSetCurve.png"), QObject::tr("清除全部从曲线设置"),this,SLOT(slotClearMegCurves()));
|
|||
|
|
// slotClearStandardShift();
|
|||
|
|
// slotClearShiftCurves();
|
|||
|
|
// // slotClearShiftZonePoint();
|
|||
|
|
// }
|
|||
|
|
// else {
|
|||
|
|
// pRToolbar->setVisible(false);
|
|||
|
|
// slotClearStandardShift();
|
|||
|
|
// slotClearShiftCurves();
|
|||
|
|
// // slotClearShiftZonePoint();
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// void CQtWindowWellSection::InitBeforShow(bool bCompositeWindow)
|
|||
|
|
// {
|
|||
|
|
// PickFirst();
|
|||
|
|
// QAction * pAction = GetSceneManager()->GetViewCommand().GetAction(GetViewCmdID_QtSetDataTableFormat());
|
|||
|
|
// if(pAction) {
|
|||
|
|
// connect(pAction, SIGNAL(triggered()), this, SLOT(slotSetListTableStruct()));
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// pAction = GetSceneManager()->GetViewCommand().GetAction(GetCmdID_JOINDEPTH());
|
|||
|
|
// if(pAction){
|
|||
|
|
// connect(pAction, SIGNAL(triggered()), this, SLOT(slotSetJoinTool()));
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// pAction = GetSceneManager()->GetViewCommand().GetAction(GetCmdID_SHIFTDEPTH());
|
|||
|
|
// if(pAction){
|
|||
|
|
// connect(pAction, SIGNAL(triggered()), this, SLOT(slotSetShiftTool()));
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// pAction = GetSceneManager()->GetViewCommand().GetAction(GetViewCmdID_QtCreateDataTable());
|
|||
|
|
// if(pAction){
|
|||
|
|
// connect(pAction, SIGNAL(triggered()), this, SLOT(slotListData()));
|
|||
|
|
// }
|
|||
|
|
// pAction = GetSceneManager()->GetViewCommand().GetAction(GetViewCmdID_QtZONEDataTable());
|
|||
|
|
// if(pAction){
|
|||
|
|
// connect(pAction, SIGNAL(triggered()), this, SLOT(slotZoneListData()));
|
|||
|
|
// }
|
|||
|
|
// pAction = GetSceneManager()->GetViewCommand().GetAction(GetViewCmdID_ReFreshZONEDataTable());
|
|||
|
|
// if(pAction){
|
|||
|
|
// connect(pAction, SIGNAL(triggered()), this, SLOT(slotReFreshZoneListData()));
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// pAction = this->GetSceneManager()->GetViewCommand().GetAction(GetCmdID_UndoCommand());
|
|||
|
|
// if (pAction)
|
|||
|
|
// {
|
|||
|
|
// pAction->setEnabled(this->GetSceneManager()->GetUndoStack()->canUndo());
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// pAction = this->GetSceneManager()->GetViewCommand().GetAction(GetCmdID_RedoCommand());
|
|||
|
|
// if (pAction)
|
|||
|
|
// {
|
|||
|
|
// pAction->setEnabled(this->GetSceneManager()->GetUndoStack()->canRedo());
|
|||
|
|
// }
|
|||
|
|
// QToolBar *pLToolbar=GetLToolbar();
|
|||
|
|
// if(!pLToolbar) return;
|
|||
|
|
// if(this->GetWindowType() == GetWindowTypeID_QtGeoGuideSection()) return;
|
|||
|
|
// //////////////////////////////////////////////////////////////////////////
|
|||
|
|
// QFile file(::GetConfPath()+"SingleWellCommand.ini");
|
|||
|
|
// if ( file.open( QIODevice::ReadOnly ) ) {
|
|||
|
|
// QTextStream stream( &file );
|
|||
|
|
// QString oneline;
|
|||
|
|
// while ( !stream.atEnd() ) {
|
|||
|
|
// oneline = stream.readLine(); // 不包括“\n”的一行文本
|
|||
|
|
// QStringList drawitemConfig=oneline.split(",");
|
|||
|
|
// if(drawitemConfig.size()>=3)
|
|||
|
|
// {
|
|||
|
|
// QAction *aAction= new QAction("增加"+drawitemConfig[0],this);
|
|||
|
|
// aAction->setToolTip(drawitemConfig[0]);
|
|||
|
|
// aAction->setData(drawitemConfig[1]);
|
|||
|
|
// aAction->setIcon(QIcon( ::GetImagePath()+"icon/"+drawitemConfig[2]));
|
|||
|
|
|
|||
|
|
// connect(aAction,SIGNAL(triggered()),this,SLOT(slotNewDataAndDraw()));
|
|||
|
|
// pLToolbar->addAction(aAction);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// file.close();
|
|||
|
|
// pLToolbar->addSeparator();
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// void CQtWindowWellSection::AfterOpenWindow()
|
|||
|
|
// {
|
|||
|
|
// QAction * pAction = this->GetSceneManager()->GetViewCommand().GetAction(GetViewCmdID_SetSizeAll());
|
|||
|
|
// if (pAction)
|
|||
|
|
// {
|
|||
|
|
// pAction->setCheckable(true);
|
|||
|
|
// }
|
|||
|
|
// pAction = this->GetSceneManager()->GetViewCommand().GetAction(GetViewCmdID_SizeAll());
|
|||
|
|
// if (pAction)
|
|||
|
|
// {
|
|||
|
|
// pAction->setCheckable(true);
|
|||
|
|
// }
|
|||
|
|
// QToolBar *pRToolbar=GetRToolbar();
|
|||
|
|
// if(!pRToolbar) return;
|
|||
|
|
// pRToolbar->setVisible(false);
|
|||
|
|
// }
|
|||
|
|
// void CQtWindowWellSection::UpdateHUD()
|
|||
|
|
// {
|
|||
|
|
// CQtWellSceneManager *pWellSceneManager = dynamic_cast<CQtWellSceneManager *>( GetSceneManager() );
|
|||
|
|
// if(!pWellSceneManager) return;
|
|||
|
|
// CQtWindowWellSection *pWin=dynamic_cast<CQtWindowWellSection*>(pWellSceneManager->GetVecWindow());
|
|||
|
|
// if(!pWin) return;
|
|||
|
|
// CWellSectionWindowDocument *pDoc = pWellSceneManager->GetWellSectionGeomtry().GetSecionWindowDocument();
|
|||
|
|
// if(pDoc) {
|
|||
|
|
// char buf[200];
|
|||
|
|
// double fTopPixelLen,fMidelPixeLen,fBottomPixelLen ;
|
|||
|
|
// double maxval=pWellSceneManager->GetCameraCommand().CalculateScrollValue( false,fTopPixelLen,fMidelPixeLen,fBottomPixelLen );
|
|||
|
|
// double maxwid=pWellSceneManager->GetCameraCommand().CalculateScrollValue( true,fTopPixelLen,fMidelPixeLen,fBottomPixelLen );
|
|||
|
|
// double cmp1=pWellSceneManager->GetCoordinate()->GetPixelPerCm();
|
|||
|
|
// int wid=maxwid;
|
|||
|
|
// if(pDoc){
|
|||
|
|
// float val=pDoc->GetWidth()+m_pSceneManager->FIXED_LOGLeft_MARGIN_CM*cmp1;
|
|||
|
|
// if(val<maxwid) {
|
|||
|
|
// wid=val+0.5;
|
|||
|
|
// if(wid<val) wid++;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// float leng=(float)((int)(((maxval+m_pSceneManager->GetIsDoubleHead()*pDoc->GetCurveHeadHeight()+pDoc->GetHeadHeight())/cmp1+pWellSceneManager->FIXED_LOGHead_MARGIN_CM)*10+0.5)/10.0);
|
|||
|
|
// MultiWellWindowViewInfo*pViewInfo=dynamic_cast<MultiWellWindowViewInfo*>(pWellSceneManager->GetViewInfo(pDoc->GetID()));
|
|||
|
|
// if(pViewInfo&&m_pSceneManager->GetIsDoubleHead()) {
|
|||
|
|
// if(pViewInfo->GetisUsePageLength())
|
|||
|
|
// {
|
|||
|
|
// int ln=leng/pViewInfo->GetPageLength();
|
|||
|
|
// if(ln*pViewInfo->GetPageLength()<leng) ln++;
|
|||
|
|
// leng=ln*pViewInfo->GetPageLength();
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// pDoc->PWidth=(float)((int)(wid/cmp1*10+0.5)/10.0+0.5);
|
|||
|
|
// pDoc->PLength=leng;
|
|||
|
|
// sprintf(buf,"%gcm,%gcm",pDoc->PWidth,pDoc->PLength);
|
|||
|
|
// if(::GetStatusBar()){
|
|||
|
|
// QLabel *pLabel=::GetStatusBar()->findChild<QLabel*>("BarWL");
|
|||
|
|
// if(pLabel) pLabel->setText(buf);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// if(pDoc&&pDoc->m_mergeLineList.size()) {
|
|||
|
|
// CBaseObject *pCurrentObject = CObjProject::GetObjectByID(pWellSceneManager->GetCurrentPickObjectID());
|
|||
|
|
// CObjWellTrack*pWellTrack =dynamic_cast<CObjWellTrack *>( pCurrentObject );
|
|||
|
|
// if(!pWellTrack) {
|
|||
|
|
// CObjWellLog *pLog = dynamic_cast<CObjWellLog *>( pCurrentObject );
|
|||
|
|
// if(pLog) {
|
|||
|
|
// CObjWellLogTrack*pLogTrack=dynamic_cast<CObjWellLogTrack *>(pLog->GetParent());
|
|||
|
|
// if(pLogTrack)pWellTrack = pLogTrack->GetWellTrack();
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// if(!pWellTrack) {
|
|||
|
|
// QVector<CObjWellTrack*> vTrack = pWellSceneManager->GetWellSectionGeomtry().GetAllWellTrack( true );
|
|||
|
|
// if(vTrack.size()) pWellTrack=vTrack[0];
|
|||
|
|
// }
|
|||
|
|
// if(pWellTrack) {
|
|||
|
|
// updateLines(pWellTrack);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// void CQtWindowWellSection::updateLines(CObjWellTrack*m_pWellTrack)
|
|||
|
|
// {
|
|||
|
|
// if (m_pWellTrack == NULL)
|
|||
|
|
// {
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// CQtWellSceneManager *pWellSceneManager = dynamic_cast<CQtWellSceneManager *>( GetSceneManager() );
|
|||
|
|
// CWellSectionWindowDocument *pDoc = pWellSceneManager->GetWellSectionGeomtry().GetSecionWindowDocument();
|
|||
|
|
// CQtWellTrackNode *pWellNode = dynamic_cast<CQtWellTrackNode *>( GetSceneManager()->GetBuilder(m_pWellTrack->GetID() ) );
|
|||
|
|
// float dTopDepth = m_pWellTrack->GetTopWellLogDepth();
|
|||
|
|
// float dBottomDepth = m_pWellTrack->GetBottomWellLogDepth();
|
|||
|
|
// float sdep=dTopDepth,edep=dBottomDepth;
|
|||
|
|
// if(pWellNode) pWellNode->GetVisibleDepth(dTopDepth,dBottomDepth,sdep,edep);
|
|||
|
|
// //如果曲线拼接线在最后一行区域中,则显示,否则不显示
|
|||
|
|
// QRectF lineRangeRect =getLineRangeRectOSGGLobal(m_pWellTrack);
|
|||
|
|
// QGraphicsRectItem*pItem=pWellSceneManager->GetRootHUDTopLayer();
|
|||
|
|
// if(pItem) pItem->setVisible(false);
|
|||
|
|
// foreach(CurveLine *pLine, pDoc->m_mergeLineList)
|
|||
|
|
// {
|
|||
|
|
// if(!pLine) continue;
|
|||
|
|
// QVector<QPointF> vecPoints;
|
|||
|
|
// if(pWellNode&&pLine->GetLeftDepth()<pWellNode->m_curSdep&&
|
|||
|
|
// pLine->GetRightDepth()<pWellNode->m_curSdep
|
|||
|
|
// ) {
|
|||
|
|
// pLine->setVisible(false);
|
|||
|
|
// continue;
|
|||
|
|
// }
|
|||
|
|
// if(pWellNode&&pLine->GetLeftDepth()>pWellNode->m_curEdep&&
|
|||
|
|
// pLine->GetRightDepth()>pWellNode->m_curEdep
|
|||
|
|
// ) {
|
|||
|
|
// pLine->setVisible(false);
|
|||
|
|
// continue;
|
|||
|
|
// }
|
|||
|
|
// vecPoints=SetLinePoint(pDoc,m_pWellTrack,pLine,lineRangeRect);
|
|||
|
|
// if(vecPoints.size()>1) {
|
|||
|
|
// pLine->setVisible(true);
|
|||
|
|
// pLine->SetPoints(vecPoints);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// if(pItem) pItem->setVisible(true);
|
|||
|
|
// // if(m_pSceneManager)m_pSceneManager->SetDirtyUIElement(true,true);
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// void CQtWindowWellSection::slotChangeAllCurves()
|
|||
|
|
// {
|
|||
|
|
// CQtWellSceneManager *pWellSceneManager = dynamic_cast<CQtWellSceneManager *>( GetSceneManager() );
|
|||
|
|
// if(!pWellSceneManager) return;
|
|||
|
|
// CWellSectionWindowDocument *pDoc = pWellSceneManager->GetWellSectionGeomtry().GetSecionWindowDocument();
|
|||
|
|
// if(!pDoc) return;
|
|||
|
|
// CBaseObject *pCurrentObject = CObjProject::GetObjectByID(pWellSceneManager->GetCurrentPickObjectID());
|
|||
|
|
// CObjWellTrack *pWellTrack = dynamic_cast<CObjWellTrack *>(pCurrentObject);
|
|||
|
|
// if(pWellTrack) {
|
|||
|
|
// AfxMessageBox("该功能不支持对井次校正,如果需要井次校正请到数据树上进行!");
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// CObjWellLogTrack *pWelllogTrack = dynamic_cast<CObjWellLogTrack *>( pCurrentObject );
|
|||
|
|
// CObjWellLog *pLog = dynamic_cast<CObjWellLog *>( pCurrentObject );
|
|||
|
|
// QList<CObjWellLog*> logs;
|
|||
|
|
// if(pLog) {
|
|||
|
|
// if(pLog->GetShiftOffset()) {
|
|||
|
|
// QString cs;
|
|||
|
|
// cs+=pLog->GetName()+"曲线移动量"+QString::number(-pLog->GetShiftOffset())+"尚未确认,无法进行该功能操作!\n关闭该提示后可用shif+Y键确认移动或用esc键放弃移动!";
|
|||
|
|
// AfxMessageBox(cs);
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// else
|
|||
|
|
// {
|
|||
|
|
// if(pDoc->m_RightCurve&&pLog!=pDoc->m_RightCurve) {
|
|||
|
|
// AfxMessageBox("已设置主从校正曲线,当前曲线"+pLog->GetName()+"无法执行校正!\n如果想校正当前曲线,请先取消主从曲线设置,\n如果要进行主从校正,则请选中主曲线后再进行此操作!");
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// logs.append(pLog);
|
|||
|
|
// pWelllogTrack =pLog->GetWellLogTrack();
|
|||
|
|
// if(!pWelllogTrack) return;
|
|||
|
|
// pWellTrack = dynamic_cast<CObjWellTrack *>(pWelllogTrack->GetWellTrack());
|
|||
|
|
// if(!pWellTrack) return;
|
|||
|
|
// CObjWelllogRound *pround=pLog->GetWelllogRound();
|
|||
|
|
// if(!pround) return;
|
|||
|
|
// QList <CObjWellLog*>names;
|
|||
|
|
// if(QMessageBox::information(NULL,"提示","需要附加其它数据(曲线、数据表、参数卡等)校正吗?",QMessageBox::Yes,QMessageBox::No)==QMessageBox::Yes) {
|
|||
|
|
// if(pDoc->m_RightCurve) {
|
|||
|
|
// names.append(pDoc->m_RightCurve);
|
|||
|
|
// }
|
|||
|
|
// if(pDoc->m_LeftCurve) {
|
|||
|
|
// names.append(pDoc->m_LeftCurve);
|
|||
|
|
// }
|
|||
|
|
// if(pLog) {
|
|||
|
|
// names.append(pLog);
|
|||
|
|
// }
|
|||
|
|
// CchooseShiftCurvesDlg *pShiftCurvesDlg=new CchooseShiftCurvesDlg(pWellTrack,names,pround);
|
|||
|
|
// QList<CObjWellLog*>m_ShiftCurves;
|
|||
|
|
// names.clear();
|
|||
|
|
// pShiftCurvesDlg->Init(m_ShiftCurves);
|
|||
|
|
// if(pShiftCurvesDlg->exec()==QDialog::Accepted) {
|
|||
|
|
// for(int i=0;i<m_ShiftCurves.size();i++)
|
|||
|
|
// {
|
|||
|
|
// CObjWellLog*pLog1=dynamic_cast<CObjWellLog*>(m_ShiftCurves[i]);
|
|||
|
|
// if(pLog1) {
|
|||
|
|
// QString slf=pLog1->GetSlfFileName();
|
|||
|
|
// slf.replace("\\","/");
|
|||
|
|
// QString slf1=pLog->GetSlfFileName();
|
|||
|
|
// slf1.replace("\\","/");
|
|||
|
|
// if(slf1.compare(slf,Qt::CaseInsensitive)==0){
|
|||
|
|
// if(pLog->GetName().compare(pLog1->GetName(),Qt::CaseInsensitive)==0) {
|
|||
|
|
// continue;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// logs.append(pLog1);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// else if(pWelllogTrack) {
|
|||
|
|
// std::vector<PaiObject*>vChild;
|
|||
|
|
// CPaiObjectHelper::RecursionGetAllChild(pWelllogTrack,vChild);
|
|||
|
|
// for(int i=0;i<vChild.size();i++) {
|
|||
|
|
// CObjWellLog*pLog1=dynamic_cast<CObjWellLog*>(vChild[i]);
|
|||
|
|
// if(!pLog1) continue;
|
|||
|
|
// logs.append(pLog1);
|
|||
|
|
// }
|
|||
|
|
// if(!logs.size()) {
|
|||
|
|
// AfxMessageBox("道内曲线对象为空,无对象可校正!");
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// bool ok=0;
|
|||
|
|
// double depthshift=QInputDialog::getDouble(NULL,"深度移动","请输入移动的深度量(上移-,下移+)",0.0,-2147483647, 2147483647,4,&ok);
|
|||
|
|
// if(!ok) return;
|
|||
|
|
// if(depthshift==0) return;
|
|||
|
|
// if(depthshift>10)
|
|||
|
|
// {
|
|||
|
|
// int flag = QMessageBox::warning(this->parentWidget(),"提示",QString("深度移动量 =")+QString::number(depthshift)+"m\n"+"\n您确定执行校正?",
|
|||
|
|
// QMessageBox::Yes,QMessageBox::No);
|
|||
|
|
// if(flag==QMessageBox::No)
|
|||
|
|
// {
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// foreach(CObjWellLog *pLogt,logs)
|
|||
|
|
// {
|
|||
|
|
// LayerInfo lay;
|
|||
|
|
// lay.top=pLogt->GetTopDepth();
|
|||
|
|
// lay.bottom=pLogt->GetBottomDepth();
|
|||
|
|
// pLogt->m_ChangeNo=0;
|
|||
|
|
// pLogt->m_vLayers.clear();
|
|||
|
|
// pLogt->m_vLayers.push_back(lay);
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// CDrawCurveCommand * pDrawCurveCommand = new CDrawCurveCommand(pWellSceneManager,logs);
|
|||
|
|
// pWellSceneManager->GetUndoStack()->push(pDrawCurveCommand);
|
|||
|
|
// foreach(CObjWellLog *pLogt,logs)
|
|||
|
|
// {
|
|||
|
|
// if(!pLogt) continue;
|
|||
|
|
// pLogt->AddShiftDepth(depthshift);
|
|||
|
|
// pLogt->ApplyShiftDepth();
|
|||
|
|
// }
|
|||
|
|
// pDrawCurveCommand->SetXValue();
|
|||
|
|
// foreach(CObjWellLog *pLogt,logs)
|
|||
|
|
// {
|
|||
|
|
// pLogt->m_vLayers.clear();
|
|||
|
|
// }
|
|||
|
|
// pWellSceneManager->SetDirtyUIElement(true,true);
|
|||
|
|
// CVecViewCommand &viewCommand = pWellSceneManager->GetViewCommand();
|
|||
|
|
|
|||
|
|
// QAction *pUndoAction = viewCommand.GetAction(GetCmdID_UndoCommand());
|
|||
|
|
// pUndoAction->setEnabled(pWellSceneManager->GetUndoStack()->canUndo());
|
|||
|
|
|
|||
|
|
// QAction *pRedoAction = viewCommand.GetAction(GetCmdID_RedoCommand());
|
|||
|
|
// pRedoAction->setEnabled(pWellSceneManager->GetUndoStack()->canRedo());
|
|||
|
|
// }
|
|||
|
|
// void CQtWindowWellSection::slotMoveAllCurves()
|
|||
|
|
// {
|
|||
|
|
// CQtWellSceneManager *pWellSceneManager = dynamic_cast<CQtWellSceneManager *>( GetSceneManager() );
|
|||
|
|
// if(!pWellSceneManager) return;
|
|||
|
|
// CWellSectionWindowDocument *pDoc = pWellSceneManager->GetWellSectionGeomtry().GetSecionWindowDocument();
|
|||
|
|
// if(!pDoc) return;
|
|||
|
|
// CBaseObject *pCurrentObject = CObjProject::GetObjectByID(pWellSceneManager->GetCurrentPickObjectID());
|
|||
|
|
// CObjWellTrack *pWellTrack = dynamic_cast<CObjWellTrack *>(pCurrentObject);
|
|||
|
|
// if(pWellTrack) {
|
|||
|
|
// AfxMessageBox("该功能不支持对井次校正!");
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// CObjWellLogTrack *pWelllogTrack = dynamic_cast<CObjWellLogTrack *>( pCurrentObject );
|
|||
|
|
// if(pWelllogTrack) pWellTrack=pWelllogTrack->GetWellTrack();
|
|||
|
|
// CObjWellLog *pLog = dynamic_cast<CObjWellLog *>( pCurrentObject );
|
|||
|
|
// if(pLog) {
|
|||
|
|
// pWelllogTrack=dynamic_cast<CObjWellLogTrack *>(pLog->GetParent());
|
|||
|
|
// if(pWelllogTrack) pWellTrack=pWelllogTrack->GetWellTrack();
|
|||
|
|
// pWelllogTrack=NULL;
|
|||
|
|
// }
|
|||
|
|
// QList<CObjWellLog *>logs;
|
|||
|
|
// if(pWelllogTrack) {
|
|||
|
|
// std::vector<PaiObject*>vChild;
|
|||
|
|
// CPaiObjectHelper::RecursionGetAllChild(pWelllogTrack,vChild);
|
|||
|
|
// for(int i=0;i<vChild.size();i++) {
|
|||
|
|
// CObjWellLog*pLog1=dynamic_cast<CObjWellLog*>(vChild[i]);
|
|||
|
|
// if(!pLog1) continue;
|
|||
|
|
// logs.append(pLog1);
|
|||
|
|
// }
|
|||
|
|
// if(!logs.size()) {
|
|||
|
|
// AfxMessageBox("道内曲线对象为空,无对象可校正!");
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// else if(pLog){
|
|||
|
|
// pDoc->m_shiftoffset=0;
|
|||
|
|
// pDoc->m_shiftcurve=NULL;
|
|||
|
|
// CObjWelllogRound*pRound=pLog->GetWelllogRound();
|
|||
|
|
// if(QMessageBox::information(NULL,"提示","是否附加其它校正曲线等?",QMessageBox::Yes|QMessageBox::No)==QMessageBox::Yes)
|
|||
|
|
// {
|
|||
|
|
// QList<CObjWellLog*> names;
|
|||
|
|
// if(pDoc->m_RightCurve) {
|
|||
|
|
// names.append(pDoc->m_RightCurve);
|
|||
|
|
// }
|
|||
|
|
// if(pDoc->m_LeftCurve) {
|
|||
|
|
// names.append(pDoc->m_LeftCurve);
|
|||
|
|
// }
|
|||
|
|
// if(pLog) {
|
|||
|
|
// names.append(pLog);
|
|||
|
|
// }
|
|||
|
|
// CchooseShiftCurvesDlg *pShiftCurvesDlg=new CchooseShiftCurvesDlg(pWellTrack,names,pRound);
|
|||
|
|
// pShiftCurvesDlg->Init(pDoc->m_ShiftCurves);
|
|||
|
|
// if(pShiftCurvesDlg->exec()==QDialog::Accepted) {
|
|||
|
|
// QList<CObjWellLog*>temps;
|
|||
|
|
// for(int i=0;i<pDoc->m_ShiftCurves.size();i++) {
|
|||
|
|
// CObjWellLog *pLog1 = dynamic_cast<CObjWellLog *>(pDoc->m_ShiftCurves[i]);
|
|||
|
|
// if(pLog1) {
|
|||
|
|
// if(pDoc->m_RightCurve) {
|
|||
|
|
// QString slf=pLog1->GetSlfFileName();
|
|||
|
|
// slf.replace("\\","/");
|
|||
|
|
// QString slf1=pDoc->m_RightCurve->GetSlfFileName();
|
|||
|
|
// slf1.replace("\\","/");
|
|||
|
|
// if(slf1.compare(slf,Qt::CaseInsensitive)==0){
|
|||
|
|
// if(pDoc->m_RightCurve->GetName().compare(pLog1->GetName(),Qt::CaseInsensitive)==0) {
|
|||
|
|
// temps.append(pLog1);
|
|||
|
|
// continue;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// if(pDoc->m_LeftCurve) {
|
|||
|
|
// QString slf=pLog1->GetSlfFileName();
|
|||
|
|
// slf.replace("\\","/");
|
|||
|
|
// QString slf1=pDoc->m_LeftCurve->GetSlfFileName();
|
|||
|
|
// slf1.replace("\\","/");
|
|||
|
|
// if(slf1.compare(slf,Qt::CaseInsensitive)==0){
|
|||
|
|
// if(pDoc->m_LeftCurve->GetName().compare(pLog1->GetName(),Qt::CaseInsensitive)==0) {
|
|||
|
|
// temps.append(pLog1);
|
|||
|
|
// continue;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// if(pLog) {
|
|||
|
|
// QString slf=pLog1->GetSlfFileName();
|
|||
|
|
// slf.replace("\\","/");
|
|||
|
|
// QString slf1=pLog->GetSlfFileName();
|
|||
|
|
// slf1.replace("\\","/");
|
|||
|
|
// if(slf1.compare(slf,Qt::CaseInsensitive)==0){
|
|||
|
|
// if(pLog->GetName().compare(pLog1->GetName(),Qt::CaseInsensitive)==0) {
|
|||
|
|
// temps.append(pLog1);
|
|||
|
|
// continue;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// if(pLog1->GetShiftOffset()) temps.append(pLog1);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// for(int j=0;j<temps.size();j++) pDoc->m_ShiftCurves.removeOne(temps[j]);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// logs.append(pLog);
|
|||
|
|
// foreach(CObjWellLog *pLogt,pDoc->m_ShiftCurves)
|
|||
|
|
// {
|
|||
|
|
// if(pLogt) {
|
|||
|
|
// logs.append(pLogt);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// else return;
|
|||
|
|
// QDialog dialog(NULL);
|
|||
|
|
// dialog.setModal(false);
|
|||
|
|
// Qt::WindowFlags flags = dialog.windowFlags();
|
|||
|
|
// flags |= Qt::WindowStaysOnTopHint;
|
|||
|
|
// flags &= ~Qt::WindowContextHelpButtonHint;
|
|||
|
|
// dialog.setWindowFlags(flags);
|
|||
|
|
// dialog.setWindowTitle("深度分段平移");
|
|||
|
|
// QFormLayout form(&dialog);
|
|||
|
|
// form.addWidget(new QLabel("输入深度参数:"));
|
|||
|
|
// // Value1
|
|||
|
|
// QString value1 = QString("起始深度: ");
|
|||
|
|
// spinbox1 = new QLineEdit(&dialog);
|
|||
|
|
// if(pWellTrack&&pWellSceneManager) {
|
|||
|
|
// float yGeoNormal =0;
|
|||
|
|
// bool isHorLayout=pWellSceneManager->IsWellSectonHorizonLayout();
|
|||
|
|
// //luol 20200508
|
|||
|
|
// if (isHorLayout)
|
|||
|
|
// {
|
|||
|
|
// yGeoNormal= m_pSceneManager->GetCoordinate()->ConvertX(pWellTrack->GetID(),eCoord_GDIPixel,pDoc->m_MouseCurrentPos.x(),eCoord_GEO);
|
|||
|
|
|
|||
|
|
// }else
|
|||
|
|
// {
|
|||
|
|
// yGeoNormal=getYGeoNormalFromPixel(pWellTrack,pDoc->m_MouseCurrentPos.y());
|
|||
|
|
// }
|
|||
|
|
// spinbox1->setText(toString(((int)(yGeoNormal*10+0.5))/10.0));
|
|||
|
|
// }
|
|||
|
|
// else spinbox1->setText("-9999.0");
|
|||
|
|
// form.addRow(value1, spinbox1);
|
|||
|
|
// value1 = QString("终止深度: ");
|
|||
|
|
// spinbox2 = new QLineEdit(&dialog);
|
|||
|
|
// form.addRow(value1, spinbox2);
|
|||
|
|
// if(pLog) spinbox2->setText(toString(pLog->GetBottomDepth()));
|
|||
|
|
// else spinbox2->setText("-9999.0");
|
|||
|
|
// value1 = QString("移动量(上移-,下移+): ");
|
|||
|
|
// spinbox3 = new QLineEdit(&dialog);
|
|||
|
|
// form.addRow(value1, spinbox3);
|
|||
|
|
// spinbox3->setText("0");
|
|||
|
|
// QDialogButtonBox buttonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel,
|
|||
|
|
// Qt::Horizontal, &dialog);
|
|||
|
|
// m_ButtonBox=&buttonBox;
|
|||
|
|
// form.addWidget(&buttonBox);
|
|||
|
|
|
|||
|
|
// m_LOGS=logs;
|
|||
|
|
// QObject::connect(spinbox1, SIGNAL(returnPressed()), this, SLOT(slotSetDep()));
|
|||
|
|
// QObject::connect(spinbox2, SIGNAL(returnPressed()), this, SLOT(slotSetDep()));
|
|||
|
|
// QObject::connect(buttonBox.button(QDialogButtonBox::Ok), SIGNAL(clicked()), this, SLOT(slotRun()));
|
|||
|
|
// QObject::connect(&buttonBox, SIGNAL(rejected()), &dialog, SLOT(reject()));
|
|||
|
|
// buttonBox.button(QDialogButtonBox::Ok)->setAutoDefault(false);
|
|||
|
|
// slotSetDep();
|
|||
|
|
// dialog.show();
|
|||
|
|
// if (dialog.exec() == QDialog::Accepted) {
|
|||
|
|
// // Do something here
|
|||
|
|
// }
|
|||
|
|
// if(pLog){
|
|||
|
|
// pLog->m_vLayers.clear();
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// void CQtWindowWellSection::slotSetDep()
|
|||
|
|
// {
|
|||
|
|
// CQtWellSceneManager *pWellSceneManager = dynamic_cast<CQtWellSceneManager *>( GetSceneManager() );
|
|||
|
|
// if(!pWellSceneManager) return;
|
|||
|
|
// m_ButtonBox->button(QDialogButtonBox::Ok)->setAutoDefault(false);
|
|||
|
|
// m_ButtonBox->button(QDialogButtonBox::Ok)->setDefault(false);
|
|||
|
|
// float sdep=spinbox1->text().toFloat();
|
|||
|
|
// float edep=spinbox2->text().toFloat();
|
|||
|
|
// if(m_LOGS.size()&&sdep!=-9999&&edep!=-9999)
|
|||
|
|
// {
|
|||
|
|
// CObjWellLog *pLog=m_LOGS[0];
|
|||
|
|
// LayerInfo lay;
|
|||
|
|
// lay.top=sdep;
|
|||
|
|
// lay.bottom=edep;
|
|||
|
|
// if(sdep==edep) {
|
|||
|
|
// lay.top=pLog->GetTopDepth();
|
|||
|
|
// lay.bottom=pLog->GetBottomDepth();
|
|||
|
|
// }
|
|||
|
|
// for(float dep=lay.top;dep<lay.bottom;dep+=pLog->m_Rlev)
|
|||
|
|
// {
|
|||
|
|
// lay.m_vXData.push_back(pLog->GetData(dep));
|
|||
|
|
// }
|
|||
|
|
// pLog->m_ChangeNo=0;
|
|||
|
|
// pLog->m_vLayers.clear();
|
|||
|
|
// pLog->m_vLayers.push_back(lay);
|
|||
|
|
// pWellSceneManager->SetDirtyUIElement(true,true);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// void CQtWindowWellSection::slotReplace()
|
|||
|
|
// {
|
|||
|
|
// if(pTDialog)
|
|||
|
|
// {
|
|||
|
|
// QString sdep=spinbox1->text();
|
|||
|
|
// QString edep=spinbox2->text();
|
|||
|
|
// if(!sdep.isEmpty()&&!edep.isEmpty())
|
|||
|
|
// {
|
|||
|
|
// QString str=pTDialog->toPlainText();
|
|||
|
|
// str.replace(sdep,edep);
|
|||
|
|
// pTDialog->setText(str);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// void CQtWindowWellSection::slotRun()
|
|||
|
|
// {
|
|||
|
|
// m_ButtonBox->button(QDialogButtonBox::Ok)->setAutoDefault(false);
|
|||
|
|
// m_ButtonBox->button(QDialogButtonBox::Ok)->setDefault(false);
|
|||
|
|
// CQtWellSceneManager *pWellSceneManager = dynamic_cast<CQtWellSceneManager *>( GetSceneManager() );
|
|||
|
|
// if(!pWellSceneManager) return;
|
|||
|
|
// double depthshift=spinbox3->text().toFloat();
|
|||
|
|
// if(depthshift==0) return;
|
|||
|
|
|
|||
|
|
// float sdep=spinbox1->text().toFloat();
|
|||
|
|
// float edep=spinbox2->text().toFloat();
|
|||
|
|
// if(sdep>edep) {
|
|||
|
|
// float depp=sdep;
|
|||
|
|
// sdep=edep;
|
|||
|
|
// edep=sdep;
|
|||
|
|
// }
|
|||
|
|
// foreach(CObjWellLog *pLogt,m_LOGS)
|
|||
|
|
// {
|
|||
|
|
// LayerInfo lay;
|
|||
|
|
// lay.top=sdep;
|
|||
|
|
// lay.bottom=edep;
|
|||
|
|
// if(sdep==edep) {
|
|||
|
|
// lay.top=pLogt->GetTopDepth();
|
|||
|
|
// lay.bottom=pLogt->GetBottomDepth();
|
|||
|
|
// }
|
|||
|
|
// pLogt->m_ChangeNo=0;
|
|||
|
|
// pLogt->m_vLayers.clear();
|
|||
|
|
// pLogt->m_vLayers.push_back(lay);
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// CDrawCurveCommand * pDrawCurveCommand = new CDrawCurveCommand(pWellSceneManager,m_LOGS);
|
|||
|
|
// pWellSceneManager->GetUndoStack()->push(pDrawCurveCommand);
|
|||
|
|
// foreach(CObjWellLog *pLogt,m_LOGS)
|
|||
|
|
// {
|
|||
|
|
// if(!pLogt) continue;
|
|||
|
|
// pLogt->SetShiftTopDepth(-9999.0);
|
|||
|
|
// pLogt->SetShiftBottomDepth(-9999.0);
|
|||
|
|
// pLogt->SetShiftOffset(0);
|
|||
|
|
// pLogt->MoveShift(sdep,edep,depthshift);
|
|||
|
|
// }
|
|||
|
|
// pDrawCurveCommand->SetXValue();
|
|||
|
|
// foreach(CObjWellLog *pLogt,m_LOGS)
|
|||
|
|
// {
|
|||
|
|
// pLogt->m_vLayers.clear();
|
|||
|
|
// }
|
|||
|
|
// pWellSceneManager->SetDirtyUIElement(true,true);
|
|||
|
|
// CVecViewCommand &viewCommand = pWellSceneManager->GetViewCommand();
|
|||
|
|
|
|||
|
|
// QAction *pUndoAction = viewCommand.GetAction(GetCmdID_UndoCommand());
|
|||
|
|
// pUndoAction->setEnabled(pWellSceneManager->GetUndoStack()->canUndo());
|
|||
|
|
|
|||
|
|
// QAction *pRedoAction = viewCommand.GetAction(GetCmdID_RedoCommand());
|
|||
|
|
// pRedoAction->setEnabled(pWellSceneManager->GetUndoStack()->canRedo());
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// void CQtWindowWellSection::onCurrentLineHighLight()
|
|||
|
|
// {
|
|||
|
|
// QTextEdit *edit = (QTextEdit *)pTDialog;
|
|||
|
|
// if(!pTDialog) return;
|
|||
|
|
// QTextCursor cursor = edit->textCursor();
|
|||
|
|
// QList<QTextEdit::ExtraSelection> extraSelection;
|
|||
|
|
// QTextEdit::ExtraSelection selection;
|
|||
|
|
// QColor lineColor = QColor(Qt::gray).lighter(140);
|
|||
|
|
// selection.format.setBackground(lineColor);
|
|||
|
|
// selection.format.setProperty(QTextFormat::FullWidthSelection,true);
|
|||
|
|
// selection.cursor = cursor;
|
|||
|
|
// selection.cursor.clearSelection();
|
|||
|
|
|
|||
|
|
// //将刚设置的 selection追加到链表当中
|
|||
|
|
// extraSelection.append(selection);
|
|||
|
|
// edit->setExtraSelections(extraSelection);
|
|||
|
|
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// void CQtWindowWellSection::slotCardMoveCurves()
|
|||
|
|
// {
|
|||
|
|
// CQtWellSceneManager *pWellSceneManager = dynamic_cast<CQtWellSceneManager *>( GetSceneManager() );
|
|||
|
|
// if(!pWellSceneManager) return;
|
|||
|
|
// CWellSectionWindowDocument *pDoc = pWellSceneManager->GetWellSectionGeomtry().GetSecionWindowDocument();
|
|||
|
|
// if(!pDoc) return;
|
|||
|
|
// CBaseObject *pCurrentObject = CObjProject::GetObjectByID(pWellSceneManager->GetCurrentPickObjectID());
|
|||
|
|
// CObjWellTrack *pWellTrack = dynamic_cast<CObjWellTrack *>(pCurrentObject);
|
|||
|
|
// CObjWellLogTrack *pWelllogTrack = dynamic_cast<CObjWellLogTrack *>( pCurrentObject );
|
|||
|
|
// if(pWelllogTrack) pWellTrack=pWelllogTrack->GetWellTrack();
|
|||
|
|
// CObjWelllogRound*pRound=NULL;
|
|||
|
|
// CObjWellLog *pLog = dynamic_cast<CObjWellLog *>( pCurrentObject );
|
|||
|
|
// if(pLog) {
|
|||
|
|
// pRound=pLog->GetWelllogRound();
|
|||
|
|
// }
|
|||
|
|
// if(!pRound) {
|
|||
|
|
// AfxMessageBox("请先选中一条目标井曲线!");
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// m_LOGS.clear();
|
|||
|
|
// m_LOGS.append(pLog);
|
|||
|
|
// QDialog dialog(NULL);
|
|||
|
|
// dialog.setModal(false);
|
|||
|
|
// Qt::WindowFlags flags = dialog.windowFlags();
|
|||
|
|
// flags |= Qt::WindowStaysOnTopHint;
|
|||
|
|
// flags &= ~Qt::WindowContextHelpButtonHint;
|
|||
|
|
// dialog.setWindowFlags(flags);
|
|||
|
|
// QString path,wellname;
|
|||
|
|
// GetWellNameAndPath(pRound->GetSlfFileName(),wellname,path);
|
|||
|
|
// dialog.setWindowTitle("分段平移井次文件-"+wellname);
|
|||
|
|
// QGridLayout *verticalLayoutWidget = new QGridLayout(&dialog);
|
|||
|
|
// verticalLayoutWidget->setObjectName(QString::fromUtf8("verticalLayoutWidget"));
|
|||
|
|
// verticalLayoutWidget->setGeometry(QRect(30, 30, 631, 281));
|
|||
|
|
// QVBoxLayout*form = new QVBoxLayout();
|
|||
|
|
// form->setObjectName(QString::fromUtf8("form"));
|
|||
|
|
// form->setContentsMargins(0, 0, 0, 0);
|
|||
|
|
|
|||
|
|
// pTDialog = new CompleterTextEdit(&dialog);
|
|||
|
|
|
|||
|
|
|
|||
|
|
// pTDialog->setObjectName(QString::fromUtf8("pTDialog"));
|
|||
|
|
|
|||
|
|
// form->addWidget(pTDialog);
|
|||
|
|
|
|||
|
|
// QHBoxLayout*horizontalLayout = new QHBoxLayout();
|
|||
|
|
// horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout"));
|
|||
|
|
// QLabel*label = new QLabel(&dialog);
|
|||
|
|
// label->setObjectName(QString::fromUtf8("label"));
|
|||
|
|
// label->setText("原曲线");
|
|||
|
|
// horizontalLayout->addWidget(label);
|
|||
|
|
|
|||
|
|
// spinbox1 = new QLineEdit(&dialog);
|
|||
|
|
// spinbox1->setObjectName(QString::fromUtf8("lineEdit"));
|
|||
|
|
|
|||
|
|
// horizontalLayout->addWidget(spinbox1);
|
|||
|
|
|
|||
|
|
// QLabel*label_2 = new QLabel(&dialog);
|
|||
|
|
// label_2->setObjectName(QString::fromUtf8("label_2"));
|
|||
|
|
// label_2->setText("替换曲线");
|
|||
|
|
// horizontalLayout->addWidget(label_2);
|
|||
|
|
|
|||
|
|
// spinbox2 = new QLineEdit(&dialog);
|
|||
|
|
// spinbox2->setObjectName(QString::fromUtf8("lineEdit_2"));
|
|||
|
|
|
|||
|
|
// horizontalLayout->addWidget(spinbox2);
|
|||
|
|
// QFont ft(QString::fromLocal8Bit("宋体"),12);
|
|||
|
|
// pTDialog->setFont(ft);
|
|||
|
|
|
|||
|
|
// QPushButton*pushButton = new QPushButton(&dialog);
|
|||
|
|
// pushButton->setObjectName(QString::fromUtf8("pushButton"));
|
|||
|
|
// pushButton->setText("替换");
|
|||
|
|
// horizontalLayout->addWidget(pushButton);
|
|||
|
|
|
|||
|
|
// QObject::connect(pushButton, SIGNAL(clicked()), this, SLOT(slotReplace()));
|
|||
|
|
|
|||
|
|
// QPushButton*pushButton1 = new QPushButton(&dialog);
|
|||
|
|
// pushButton1->setObjectName(QString::fromUtf8("pushButton1"));
|
|||
|
|
// pushButton1->setText("连续性检查");
|
|||
|
|
// horizontalLayout->addWidget(pushButton1);
|
|||
|
|
// QObject::connect(pushButton1, SIGNAL(clicked()), this, SLOT(slotDepthCheck()));
|
|||
|
|
|
|||
|
|
// {
|
|||
|
|
// DWORD bytes_write;
|
|||
|
|
// char cardname[200]="cardmove_inp";
|
|||
|
|
// CMemRdWt mem(pLog->GetSlfFileName().toStdString().c_str());
|
|||
|
|
// int index_result = mem.OpenStream(cardname);
|
|||
|
|
// if(index_result>-1)
|
|||
|
|
// {
|
|||
|
|
// int len=mem.GetStreamLength(index_result);
|
|||
|
|
// if(len>0) {
|
|||
|
|
// char *buff=new char[len+1];
|
|||
|
|
// DWORD lb=0;
|
|||
|
|
// mem.ReadStream(index_result,len,&lb,buff);
|
|||
|
|
// pTDialog->document()->setPlainText(buff);
|
|||
|
|
// delete buff;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// mem.Close();
|
|||
|
|
// }
|
|||
|
|
// QDialogButtonBox buttonBox(QDialogButtonBox::Yes|QDialogButtonBox::Ok | QDialogButtonBox::Cancel,
|
|||
|
|
// Qt::Horizontal, &dialog);
|
|||
|
|
// form->addLayout(horizontalLayout);
|
|||
|
|
// form->addWidget(&buttonBox);
|
|||
|
|
// verticalLayoutWidget->addLayout(form, 0, 0, 1, 1);
|
|||
|
|
// connect(pTDialog,SIGNAL(cursorPositionChanged()),
|
|||
|
|
// this,SLOT(onCurrentLineHighLight()));
|
|||
|
|
|
|||
|
|
// if(buttonBox.button(QDialogButtonBox::Yes)) buttonBox.button(QDialogButtonBox::Yes)->setText("保存");
|
|||
|
|
// if(buttonBox.button(QDialogButtonBox::Ok)) buttonBox.button(QDialogButtonBox::Ok)->setText("执行");
|
|||
|
|
|
|||
|
|
// QObject::connect(buttonBox.button(QDialogButtonBox::Yes), SIGNAL(clicked()), this, SLOT(slotCardSave()));
|
|||
|
|
// QObject::connect(buttonBox.button(QDialogButtonBox::Ok), SIGNAL(clicked()), this, SLOT(slotCardRun()));
|
|||
|
|
// QObject::connect(&buttonBox, SIGNAL(rejected()), &dialog, SLOT(reject()));
|
|||
|
|
// dialog.show();
|
|||
|
|
// if (dialog.exec() == QDialog::Accepted) {
|
|||
|
|
// pTDialog=NULL;
|
|||
|
|
// }
|
|||
|
|
// else {
|
|||
|
|
// pTDialog=NULL;
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// void CQtWindowWellSection::slotDepthCheck()
|
|||
|
|
// {
|
|||
|
|
// QString text=pTDialog->document()->toPlainText();
|
|||
|
|
// text.replace("\r\n","\n");
|
|||
|
|
// QStringList lines=text.split("\n");
|
|||
|
|
// lines.removeAll("");
|
|||
|
|
// float sdep1=-9999,edep1=-9999;
|
|||
|
|
// QString cname;
|
|||
|
|
// QString oline;
|
|||
|
|
// for(int i=0;i<lines.size();i++) {
|
|||
|
|
// QString line=lines.at(i);
|
|||
|
|
// line.replace(",",",");
|
|||
|
|
// line.replace(" "," ");
|
|||
|
|
// line.trimmed();
|
|||
|
|
// if(line.compare("end",Qt::CaseInsensitive)==0) break;
|
|||
|
|
// QStringList vals=line.split(" ");
|
|||
|
|
// vals.removeAll("");
|
|||
|
|
// if(vals.size()<2) {
|
|||
|
|
// vals=line.split(",");
|
|||
|
|
// vals.removeAll("");
|
|||
|
|
// }
|
|||
|
|
// if(vals.size()<4) continue;
|
|||
|
|
// float sdep=vals[1].toFloat();
|
|||
|
|
// float edep=vals[2].toFloat();
|
|||
|
|
// if(sdep1!=-9999&&cname.compare(vals[0],Qt::CaseInsensitive)==0)
|
|||
|
|
// {
|
|||
|
|
// if((sdep>sdep1&&sdep!=edep1)||(sdep<sdep1&&sdep1!=edep))
|
|||
|
|
// {
|
|||
|
|
// int flag = QMessageBox::warning(pTDialog->parentWidget(),
|
|||
|
|
// "提示",
|
|||
|
|
// line+"\n深度不连续!",
|
|||
|
|
// QMessageBox::Ok);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// sdep1=sdep;
|
|||
|
|
// edep1=edep;
|
|||
|
|
// cname=vals[0];
|
|||
|
|
// oline=line;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// void CQtWindowWellSection::slotCardRun()
|
|||
|
|
// {
|
|||
|
|
// CQtWellSceneManager *pWellSceneManager = dynamic_cast<CQtWellSceneManager *>( GetSceneManager() );
|
|||
|
|
// if(!pWellSceneManager) return;
|
|||
|
|
// if(m_LOGS.size()<1) return;
|
|||
|
|
// CObjWelllogRound*pRound=NULL;
|
|||
|
|
// CObjWellLog *pLog =m_LOGS.at(0);
|
|||
|
|
// if(pLog) {
|
|||
|
|
// pRound=pLog->GetWelllogRound();
|
|||
|
|
// }
|
|||
|
|
// if(!pRound) {
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// QString text=pTDialog->document()->toPlainText();
|
|||
|
|
// text.replace("\r\n","\n");
|
|||
|
|
// QStringList lines=text.split("\n");
|
|||
|
|
// lines.removeAll("");
|
|||
|
|
// QList<CObjWellLog *>logs;
|
|||
|
|
// QStringList ovals;
|
|||
|
|
// for(int i=0;i<lines.size();i++) {
|
|||
|
|
// QString line=lines.at(i);
|
|||
|
|
// line.replace(",",",");
|
|||
|
|
// line.replace(" "," ");
|
|||
|
|
// line.trimmed();
|
|||
|
|
// if(line.compare("end",Qt::CaseInsensitive)==0) break;
|
|||
|
|
// QStringList vals=line.split(" ");
|
|||
|
|
// vals.removeAll("");
|
|||
|
|
// if(vals.size()<2) {
|
|||
|
|
// vals=line.split(",");
|
|||
|
|
// vals.removeAll("");
|
|||
|
|
// }
|
|||
|
|
// if(vals.size()==1&&vals.at(0).at(0).isLetter()&&ovals.size()){
|
|||
|
|
// ovals[0]=vals[0];
|
|||
|
|
// vals=ovals;
|
|||
|
|
// }
|
|||
|
|
// if(vals.size()<4) continue;
|
|||
|
|
// double depthshift=vals[3].toFloat();
|
|||
|
|
// if(depthshift==0) continue;
|
|||
|
|
// if(depthshift>10)
|
|||
|
|
// {
|
|||
|
|
// int flag = QMessageBox::warning(pTDialog->parentWidget(),"提示",QString("深度移动量 >")+QString::number(depthshift)+"m\n"+line+"\n您确定执行校正?",
|
|||
|
|
// QMessageBox::Yes,QMessageBox::No);
|
|||
|
|
// if(flag==QMessageBox::No)
|
|||
|
|
// {
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// ovals=vals;
|
|||
|
|
// CObjWellLog*pLogt=dynamic_cast<CObjWellLog*>(pRound->GetObjectByName(vals[0].toUpper()));
|
|||
|
|
// if(!pLogt)continue;
|
|||
|
|
// if(logs.indexOf(pLogt)<0){
|
|||
|
|
// pLogt->m_ChangeNo=0;
|
|||
|
|
// pLogt->m_vLayers.clear();
|
|||
|
|
// logs.append(pLogt);
|
|||
|
|
// }
|
|||
|
|
// float sdep=vals[1].toFloat();
|
|||
|
|
// float edep=vals[2].toFloat();
|
|||
|
|
// if(pLogt->m_vLayers.size()<1) {
|
|||
|
|
// LayerInfo lay;
|
|||
|
|
// lay.top=sdep;
|
|||
|
|
// lay.bottom=edep;
|
|||
|
|
// pLogt->m_vLayers.push_back(lay);
|
|||
|
|
// }
|
|||
|
|
// else {
|
|||
|
|
// if (pLogt->m_vLayers.at(0).top>sdep)
|
|||
|
|
// {
|
|||
|
|
// pLogt->m_vLayers.at(0).top=sdep;
|
|||
|
|
// }
|
|||
|
|
// if (pLogt->m_vLayers.at(0).bottom<edep)
|
|||
|
|
// {
|
|||
|
|
// pLogt->m_vLayers.at(0).bottom=edep;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// CDrawCurveCommand * pDrawCurveCommand = new CDrawCurveCommand(pWellSceneManager,logs);
|
|||
|
|
// pWellSceneManager->GetUndoStack()->push(pDrawCurveCommand);
|
|||
|
|
// for(int i=0;i<lines.size();i++) {
|
|||
|
|
// QString line=lines.at(i);
|
|||
|
|
// line.replace(",",",");
|
|||
|
|
// line.replace(" "," ");
|
|||
|
|
// line.trimmed();
|
|||
|
|
// if(line.compare("end",Qt::CaseInsensitive)==0) break;
|
|||
|
|
// QStringList vals=line.split(" ");
|
|||
|
|
// vals.removeAll("");
|
|||
|
|
// if(vals.size()<2) {
|
|||
|
|
// vals=line.split(",");
|
|||
|
|
// vals.removeAll("");
|
|||
|
|
// }
|
|||
|
|
// if(vals.size()==1&&vals.at(0).at(0).isLetter()&&ovals.size()){
|
|||
|
|
// ovals[0]=vals[0];
|
|||
|
|
// vals=ovals;
|
|||
|
|
// }
|
|||
|
|
// if(vals.size()<4) continue;
|
|||
|
|
// double depthshift=vals[3].toFloat();
|
|||
|
|
// if(depthshift==0) continue;
|
|||
|
|
// CObjWellLog*pLogt=dynamic_cast<CObjWellLog*>(pRound->GetObjectByName(vals[0].toUpper()));
|
|||
|
|
// if(!pLogt)continue;
|
|||
|
|
// ovals=vals;
|
|||
|
|
// float sdep=vals[1].toFloat();
|
|||
|
|
// float edep=vals[2].toFloat();
|
|||
|
|
// pLogt->SetShiftTopDepth(-9999.0);
|
|||
|
|
// pLogt->SetShiftBottomDepth(-9999.0);
|
|||
|
|
// pLogt->SetShiftOffset(0);
|
|||
|
|
// if(sdep<pLogt->GetTopDepth()||edep>pLogt->GetBottomDepth())
|
|||
|
|
// {
|
|||
|
|
// QString str;
|
|||
|
|
// str+=pLogt->GetName();
|
|||
|
|
// str+="深度";
|
|||
|
|
// str+=vals[1];
|
|||
|
|
// str+="-";
|
|||
|
|
// str+=vals[2];
|
|||
|
|
// str+="不在原曲线深度";
|
|||
|
|
// str+=QString::number(pLogt->GetTopDepth());
|
|||
|
|
// str+="-";
|
|||
|
|
// str+=QString::number(pLogt->GetBottomDepth());
|
|||
|
|
// str+="范围内";
|
|||
|
|
// if(QMessageBox::information(pTDialog->parentWidget(),"提示",str+",是否继续?",QMessageBox::Yes,QMessageBox::No)==QMessageBox::No) break;
|
|||
|
|
// }
|
|||
|
|
// bool a=pLogt->isRun;
|
|||
|
|
// pLogt->isRun=false;
|
|||
|
|
// pLogt->MoveShift(sdep,edep,depthshift);
|
|||
|
|
// pLogt->isRun=false;
|
|||
|
|
// }
|
|||
|
|
// foreach(CObjWellLog *pLogt,logs)
|
|||
|
|
// {
|
|||
|
|
// pLogt->isLoad=false;
|
|||
|
|
// pLogt->LoadFromSLF();
|
|||
|
|
// }
|
|||
|
|
// pDrawCurveCommand->SetXValue();
|
|||
|
|
// foreach(CObjWellLog *pLogt,logs)
|
|||
|
|
// {
|
|||
|
|
// pLogt->m_vLayers.clear();
|
|||
|
|
// }
|
|||
|
|
// pWellSceneManager->SetDirtyUIElement(true,true);
|
|||
|
|
// DWORD bytes_write;
|
|||
|
|
// char cardname[200]="cardmove_inp";
|
|||
|
|
// CMemRdWt mem(pLog->GetSlfFileName().toStdString().c_str());
|
|||
|
|
// int index_result = mem.CreateStream(PARA_OBJECT,cardname,16384,FALSE);
|
|||
|
|
// if(index_result>-1) {
|
|||
|
|
// int len=strlen(text.toStdString().c_str());
|
|||
|
|
// if(len>0) {
|
|||
|
|
// DWORD lb=0;
|
|||
|
|
// mem.WriteStream(index_result,len+1,&lb,text.toStdString().c_str());
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// mem.Close();
|
|||
|
|
// CVecViewCommand &viewCommand = pWellSceneManager->GetViewCommand();
|
|||
|
|
|
|||
|
|
// QAction *pUndoAction = viewCommand.GetAction(GetCmdID_UndoCommand());
|
|||
|
|
// pUndoAction->setEnabled(pWellSceneManager->GetUndoStack()->canUndo());
|
|||
|
|
|
|||
|
|
// QAction *pRedoAction = viewCommand.GetAction(GetCmdID_RedoCommand());
|
|||
|
|
// pRedoAction->setEnabled(pWellSceneManager->GetUndoStack()->canRedo());
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// void CQtWindowWellSection::slotCardSave()
|
|||
|
|
// {
|
|||
|
|
// CQtWellSceneManager *pWellSceneManager = dynamic_cast<CQtWellSceneManager *>( GetSceneManager() );
|
|||
|
|
// if(!pWellSceneManager) return;
|
|||
|
|
// if(m_LOGS.size()<1) return;
|
|||
|
|
// CObjWelllogRound*pRound=NULL;
|
|||
|
|
// CObjWellLog *pLog =m_LOGS.at(0);
|
|||
|
|
// if(!pLog) return;
|
|||
|
|
// QString text=pTDialog->document()->toPlainText();
|
|||
|
|
// DWORD bytes_write;
|
|||
|
|
// char cardname[200]="cardmove_inp";
|
|||
|
|
// CMemRdWt mem(pLog->GetSlfFileName().toStdString().c_str());
|
|||
|
|
// int index_result = mem.CreateStream(PARA_OBJECT,cardname,16384,FALSE);
|
|||
|
|
// if(index_result>-1) {
|
|||
|
|
// int len=strlen(text.toStdString().c_str());
|
|||
|
|
// if(len>0) {
|
|||
|
|
// DWORD lb=0;
|
|||
|
|
// mem.WriteStream(index_result,len+1,&lb,text.toStdString().c_str());
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// mem.Close();
|
|||
|
|
// // AfxMessageBox("保存完毕!");
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// void CQtWindowWellSection::slotSetShiftCurve()
|
|||
|
|
// {
|
|||
|
|
// slotSetShiftCurve(0);
|
|||
|
|
// CQtWellSceneManager *pWellSceneManager = dynamic_cast<CQtWellSceneManager *>( GetSceneManager() );
|
|||
|
|
// CWellSectionWindowDocument *pDoc = pWellSceneManager->GetWellSectionGeomtry().GetSecionWindowDocument();
|
|||
|
|
// if(pDoc) {
|
|||
|
|
// if(pDoc->m_LeftCurve||pDoc->m_RightCurve||pDoc->m_ShiftCurves.size()) pDoc->m_isShift=0;
|
|||
|
|
// else pDoc->m_isShift=-1;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// void CQtWindowWellSection::slotSetOtherShiftCurve()
|
|||
|
|
// {
|
|||
|
|
// slotSetOtherShiftCurve(0);
|
|||
|
|
// CQtWellSceneManager *pWellSceneManager = dynamic_cast<CQtWellSceneManager *>( GetSceneManager() );
|
|||
|
|
// CWellSectionWindowDocument *pDoc = pWellSceneManager->GetWellSectionGeomtry().GetSecionWindowDocument();
|
|||
|
|
// if(pDoc) {
|
|||
|
|
// if(pDoc->m_LeftCurve||pDoc->m_RightCurve||pDoc->m_ShiftCurves.size()) pDoc->m_isShift=0;
|
|||
|
|
// else pDoc->m_isShift=-1;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// void CQtWindowWellSection::slotSetStandardCurve()
|
|||
|
|
// {
|
|||
|
|
// slotSetStandardCurve(0);
|
|||
|
|
// CQtWellSceneManager *pWellSceneManager = dynamic_cast<CQtWellSceneManager *>( GetSceneManager() );
|
|||
|
|
// CWellSectionWindowDocument *pDoc = pWellSceneManager->GetWellSectionGeomtry().GetSecionWindowDocument();
|
|||
|
|
// if(pDoc) {
|
|||
|
|
// if(pDoc->m_LeftCurve||pDoc->m_RightCurve||pDoc->m_ShiftCurves.size()) pDoc->m_isShift=0;
|
|||
|
|
// else pDoc->m_isShift=-1;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// ////////////////////
|
|||
|
|
// void CQtWindowWellSection::slotSetMegCurve()
|
|||
|
|
// {
|
|||
|
|
// slotSetShiftCurve(1);
|
|||
|
|
// CQtWellSceneManager *pWellSceneManager = dynamic_cast<CQtWellSceneManager *>( GetSceneManager() );
|
|||
|
|
// CWellSectionWindowDocument *pDoc = pWellSceneManager->GetWellSectionGeomtry().GetSecionWindowDocument();
|
|||
|
|
// if(pDoc) {
|
|||
|
|
// if(pDoc->m_LeftCurve||pDoc->m_RightCurve||pDoc->m_ShiftCurves.size()) pDoc->m_isShift=1;
|
|||
|
|
// else pDoc->m_isShift=-1;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// void CQtWindowWellSection::slotSetOtherMegCurve()
|
|||
|
|
// {
|
|||
|
|
// slotSetOtherShiftCurve(1);
|
|||
|
|
// CQtWellSceneManager *pWellSceneManager = dynamic_cast<CQtWellSceneManager *>( GetSceneManager() );
|
|||
|
|
// CWellSectionWindowDocument *pDoc = pWellSceneManager->GetWellSectionGeomtry().GetSecionWindowDocument();
|
|||
|
|
// if(pDoc) {
|
|||
|
|
// if(pDoc->m_LeftCurve||pDoc->m_RightCurve||pDoc->m_ShiftCurves.size()) pDoc->m_isShift=1;
|
|||
|
|
// else pDoc->m_isShift=-1;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// void CQtWindowWellSection::slotSetStandardMegCurve()
|
|||
|
|
// {
|
|||
|
|
// slotSetStandardCurve(1);
|
|||
|
|
// CQtWellSceneManager *pWellSceneManager = dynamic_cast<CQtWellSceneManager *>( GetSceneManager() );
|
|||
|
|
// CWellSectionWindowDocument *pDoc = pWellSceneManager->GetWellSectionGeomtry().GetSecionWindowDocument();
|
|||
|
|
// if(pDoc) {
|
|||
|
|
// if(pDoc->m_LeftCurve||pDoc->m_RightCurve||pDoc->m_ShiftCurves.size()) pDoc->m_isShift=1;
|
|||
|
|
// else pDoc->m_isShift=-1;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// void CQtWindowWellSection::slotSetStandardCurve(int type)
|
|||
|
|
// {
|
|||
|
|
// CQtWellSceneManager *pWellSceneManager = dynamic_cast<CQtWellSceneManager *>( GetSceneManager() );
|
|||
|
|
// CWellSectionWindowDocument *pDoc = pWellSceneManager->GetWellSectionGeomtry().GetSecionWindowDocument();
|
|||
|
|
// CBaseObject *pCurrentObject = CObjProject::GetObjectByID(pWellSceneManager->GetCurrentPickObjectID());
|
|||
|
|
// CObjWellLog *pLog = dynamic_cast<CObjWellLog *>( pCurrentObject );
|
|||
|
|
// if(pLog) {
|
|||
|
|
// QString name=pLog->GetAliasName();
|
|||
|
|
// QUuid objectID=pLog->GetPaiObject()->GetID();
|
|||
|
|
// CObjectViewInfo *pObjectViewInfo = dynamic_cast<CObjectViewInfo*>(m_pSceneManager->GetViewInfo( objectID ));
|
|||
|
|
// if(name.isEmpty()) {
|
|||
|
|
// if(pObjectViewInfo)name=pObjectViewInfo->GetAliasName();
|
|||
|
|
// if(name.isEmpty()) name=pLog->GetName();
|
|||
|
|
// }
|
|||
|
|
// int pos=-1;
|
|||
|
|
// if(type==0) pos=name.indexOf("_标");
|
|||
|
|
// else pos=name.indexOf("_目");
|
|||
|
|
// if(pos<0) {
|
|||
|
|
// int pos1=-1;
|
|||
|
|
// if(type==0) pos1=name.indexOf("_主");
|
|||
|
|
// else pos1=name.indexOf("_源");
|
|||
|
|
// if(pos1>=0) {
|
|||
|
|
// name=name.left(pos1);
|
|||
|
|
// }
|
|||
|
|
// else {
|
|||
|
|
// if(type==0) pos1=name.indexOf("_从校");
|
|||
|
|
// else pos1=name.indexOf("_从接");
|
|||
|
|
// if(pos1>=0) {
|
|||
|
|
// name=name.left(pos1);
|
|||
|
|
// if(pObjectViewInfo)pObjectViewInfo->SetAliasName(name);
|
|||
|
|
// pLog->SetAliasName(name);
|
|||
|
|
// pDoc->m_ShiftCurves.removeOne(pLog);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// if(pDoc->m_LeftCurve&&pLog!=pDoc->m_LeftCurve) {
|
|||
|
|
// QUuid objectID=pDoc->m_LeftCurve->GetPaiObject()->GetID();
|
|||
|
|
// CObjectViewInfo *pDestObjectViewInfo = dynamic_cast<CObjectViewInfo*>(m_pSceneManager->GetViewInfo( objectID ));
|
|||
|
|
// QString nn=pDoc->m_LeftCurve->GetAliasName();
|
|||
|
|
// if(nn.isEmpty()&&pDestObjectViewInfo) {
|
|||
|
|
// nn=pDestObjectViewInfo->GetAliasName();
|
|||
|
|
// if(nn.isEmpty()&&pDoc->m_LeftCurve) nn=pDoc->m_LeftCurve->GetName();
|
|||
|
|
// }
|
|||
|
|
// if(type==0)pos1=nn.indexOf("_从校");
|
|||
|
|
// else pos1=nn.indexOf("_从接");
|
|||
|
|
// if(pos1<0) {
|
|||
|
|
// if(type==0)pos1=nn.indexOf("_主");
|
|||
|
|
// else pos1=nn.indexOf("_源");
|
|||
|
|
// }
|
|||
|
|
// if(pos1<0) {
|
|||
|
|
// if(type==0)pos1=nn.indexOf("_标");
|
|||
|
|
// else pos1=nn.indexOf("_目");
|
|||
|
|
// }
|
|||
|
|
// if(pos1>=0) nn=nn.left(pos1);
|
|||
|
|
// else {
|
|||
|
|
// int a=1;
|
|||
|
|
// }
|
|||
|
|
// pDoc->m_LeftCurve->SetAliasName(nn);
|
|||
|
|
// if(pDestObjectViewInfo)pDestObjectViewInfo->SetAliasName(nn);
|
|||
|
|
// }
|
|||
|
|
// //////////////////////////////////////
|
|||
|
|
// if(type==0) {
|
|||
|
|
// pLog->SetAliasName(name+"_标");
|
|||
|
|
// if(pObjectViewInfo)pObjectViewInfo->SetAliasName(name+"_标");
|
|||
|
|
// }
|
|||
|
|
// else {
|
|||
|
|
// pLog->SetAliasName(name+"_目");
|
|||
|
|
// if(pObjectViewInfo)pObjectViewInfo->SetAliasName(name+"_目");
|
|||
|
|
// }
|
|||
|
|
// if(pDoc->m_LeftCurve)pWellSceneManager->UpdateObject(pDoc->m_LeftCurve->GetID(),eUpdate_ViewInfo,NULL );
|
|||
|
|
// pDoc->m_LeftCurve=pLog;
|
|||
|
|
// if(pDoc->m_RightCurve&&pLog==pDoc->m_RightCurve) {
|
|||
|
|
// pDoc->m_RightCurve=NULL;
|
|||
|
|
// if(pDoc->m_ShiftCurves.size()) {
|
|||
|
|
// pDoc->m_RightCurve=pDoc->m_ShiftCurves[0];
|
|||
|
|
// pDoc->m_ShiftCurves.removeAt(0);
|
|||
|
|
// if(pDoc->m_RightCurve) {
|
|||
|
|
// name=pDoc->m_RightCurve->GetAliasName();
|
|||
|
|
// if(type==0)pos1=name.indexOf("_从校");
|
|||
|
|
// else pos1=name.indexOf("_从接");
|
|||
|
|
// if(pos1>-1) name=name.left(pos1);
|
|||
|
|
// //设置为主曲线
|
|||
|
|
// QUuid objectID=pDoc->m_RightCurve->GetPaiObject()->GetID();
|
|||
|
|
// CObjectViewInfo *pObjectViewInfo = dynamic_cast<CObjectViewInfo*>(m_pSceneManager->GetViewInfo( objectID ));
|
|||
|
|
// if(type==0) {
|
|||
|
|
// pDoc->m_RightCurve->SetAliasName(name+"_主");
|
|||
|
|
// if(pObjectViewInfo)pObjectViewInfo->SetAliasName(name+"_主");
|
|||
|
|
// }
|
|||
|
|
// else {
|
|||
|
|
// pDoc->m_RightCurve->SetAliasName(name+"_源");
|
|||
|
|
// if(pObjectViewInfo) pObjectViewInfo->SetAliasName(name+"_源");
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// else {
|
|||
|
|
// int aa=0;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// else {
|
|||
|
|
// name=name.left(pos);
|
|||
|
|
// pLog->SetAliasName(name);
|
|||
|
|
// if(pObjectViewInfo)pObjectViewInfo->SetAliasName(name);
|
|||
|
|
// pDoc->m_LeftCurve=NULL;
|
|||
|
|
// }
|
|||
|
|
// UpdateHUD();
|
|||
|
|
// pWellSceneManager->UpdateObject(pLog->GetID(),eUpdate_ViewInfo,NULL );
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// double CQtWindowWellSection::getXOSGGlobalFromPixel(CObjWellTrack*m_pWellTrack,double x)
|
|||
|
|
// {
|
|||
|
|
// if(!m_pWellTrack) {
|
|||
|
|
// CBaseObject *pObject = m_pSceneManager->GetCurentPickObject();
|
|||
|
|
// //找到当前选中对象所在的well track,并选中,如果该well track下没有深度道,创建深度道
|
|||
|
|
// if (pObject != NULL)
|
|||
|
|
// {
|
|||
|
|
// m_pWellTrack = dynamic_cast<CObjWellTrack*>(pObject);
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// if(!m_pWellTrack) {
|
|||
|
|
// return 0;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// CQtWellTrackNode * pWellTrackNode=dynamic_cast<CQtWellTrackNode *>(m_pSceneManager->GetBuilder(m_pWellTrack->GetID()));
|
|||
|
|
// if(!pWellTrackNode) return 0;
|
|||
|
|
// if(m_pSceneManager->IsWellSectonHorizonLayout())
|
|||
|
|
// {
|
|||
|
|
// return pWellTrackNode->ConvertY(eCoord_OSGPixel,x,eCoord_OSGGlobal);
|
|||
|
|
// }
|
|||
|
|
// osg::Vec3d vecGeoNormal;
|
|||
|
|
// m_pSceneManager->GetCoordinate()->ConvertCoordDouble( m_pWellTrack->GetID(),eCoord_OSGPixel,osg::Vec3d(x,0,0),eCoord_OSGGlobal,vecGeoNormal );
|
|||
|
|
// return vecGeoNormal[0];
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// double CQtWindowWellSection::getYOSGGlobalFromPixel(CObjWellTrack*m_pWellTrack,double y)
|
|||
|
|
// {
|
|||
|
|
// if(!m_pWellTrack) {
|
|||
|
|
// CBaseObject *pObject = m_pSceneManager->GetCurentPickObject();
|
|||
|
|
// //找到当前选中对象所在的well track,并选中,如果该well track下没有深度道,创建深度道
|
|||
|
|
// if (pObject != NULL)
|
|||
|
|
// {
|
|||
|
|
// m_pWellTrack = dynamic_cast<CObjWellTrack*>(pObject);
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// if(!m_pWellTrack) {
|
|||
|
|
// return 0;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// CQtWellTrackNode * pWellTrackNode=dynamic_cast<CQtWellTrackNode *>(m_pSceneManager->GetBuilder(m_pWellTrack->GetID()));
|
|||
|
|
// if(!pWellTrackNode) return 0;
|
|||
|
|
// if(m_pSceneManager->IsWellSectonHorizonLayout())
|
|||
|
|
// {
|
|||
|
|
// return pWellTrackNode->ConvertX(eCoord_OSGPixel,y,eCoord_OSGGlobal);
|
|||
|
|
// }
|
|||
|
|
// osg::Vec3d vecGeoNormal;
|
|||
|
|
// m_pSceneManager->GetCoordinate()->ConvertCoordDouble( m_pWellTrack->GetID(),eCoord_OSGPixel,osg::Vec3d(0,y,0),eCoord_OSGGlobal,vecGeoNormal );
|
|||
|
|
// return vecGeoNormal[1];
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// double CQtWindowWellSection::getYGeoFromOSGGlobal(CObjWellTrack*m_pWellTrack,double yOSGGlobal)
|
|||
|
|
// {
|
|||
|
|
// if(!m_pWellTrack) {
|
|||
|
|
// CBaseObject *pObject = m_pSceneManager->GetCurentPickObject();
|
|||
|
|
// //找到当前选中对象所在的well track,并选中,如果该well track下没有深度道,创建深度道
|
|||
|
|
// if (pObject != NULL)
|
|||
|
|
// {
|
|||
|
|
// m_pWellTrack = dynamic_cast<CObjWellTrack*>(pObject);
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// if(!m_pWellTrack) {
|
|||
|
|
// return 0;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// CQtWellTrackNode * pWellTrackNode=dynamic_cast<CQtWellTrackNode *>(m_pSceneManager->GetBuilder(m_pWellTrack->GetID()));
|
|||
|
|
// if(!pWellTrackNode) return 0;
|
|||
|
|
// if(m_pSceneManager->IsWellSectonHorizonLayout())
|
|||
|
|
// {
|
|||
|
|
// return pWellTrackNode->ConvertX(eCoord_OSGGlobal,yOSGGlobal,eCoord_GEO);
|
|||
|
|
// }
|
|||
|
|
// osg::Vec3d vecGeoNormal;
|
|||
|
|
// m_pSceneManager->GetCoordinate()->ConvertCoordDouble( m_pWellTrack->GetID(),eCoord_OSGGlobal,osg::Vec3d(0,yOSGGlobal,0),eCoord_GEO,vecGeoNormal );
|
|||
|
|
// return vecGeoNormal[1];
|
|||
|
|
// }
|
|||
|
|
// double CQtWindowWellSection::getXGeoFromOSGGlobal(CObjWellTrack*m_pWellTrack,double xOSGGlobal)
|
|||
|
|
// {
|
|||
|
|
// if(!m_pWellTrack) {
|
|||
|
|
// CBaseObject *pObject = m_pSceneManager->GetCurentPickObject();
|
|||
|
|
// //找到当前选中对象所在的well track,并选中,如果该well track下没有深度道,创建深度道
|
|||
|
|
// if (pObject != NULL)
|
|||
|
|
// {
|
|||
|
|
// m_pWellTrack = dynamic_cast<CObjWellTrack*>(pObject);
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// if(!m_pWellTrack) {
|
|||
|
|
// return 0;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// CQtWellTrackNode * pWellTrackNode=dynamic_cast<CQtWellTrackNode *>(m_pSceneManager->GetBuilder(m_pWellTrack->GetID()));
|
|||
|
|
// if(!pWellTrackNode) return 0;
|
|||
|
|
// if(m_pSceneManager->IsWellSectonHorizonLayout())
|
|||
|
|
// {
|
|||
|
|
// return pWellTrackNode->ConvertY(eCoord_OSGGlobal,xOSGGlobal,eCoord_GEO);
|
|||
|
|
// }
|
|||
|
|
// osg::Vec3d vecGeoNormal;
|
|||
|
|
// m_pSceneManager->GetCoordinate()->ConvertCoordDouble( m_pWellTrack->GetID(),eCoord_OSGGlobal,osg::Vec3d(xOSGGlobal,0,0),eCoord_GEO,vecGeoNormal );
|
|||
|
|
// return vecGeoNormal[0];
|
|||
|
|
// }
|
|||
|
|
// double CQtWindowWellSection::getYGeoNormalFromPixel(CObjWellTrack*m_pWellTrack,double y)
|
|||
|
|
// {
|
|||
|
|
// if(!m_pWellTrack) {
|
|||
|
|
// CBaseObject *pObject = m_pSceneManager->GetCurentPickObject();
|
|||
|
|
// //找到当前选中对象所在的well track,并选中,如果该well track下没有深度道,创建深度道
|
|||
|
|
// if (pObject != NULL)
|
|||
|
|
// {
|
|||
|
|
// m_pWellTrack = dynamic_cast<CObjWellTrack*>(pObject);
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// if(!m_pWellTrack) {
|
|||
|
|
// return 0;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// CQtWellTrackNode * pWellTrackNode=dynamic_cast<CQtWellTrackNode *>(m_pSceneManager->GetBuilder(m_pWellTrack->GetID()));
|
|||
|
|
// if(!pWellTrackNode) return 0;
|
|||
|
|
// if(m_pSceneManager->IsWellSectonHorizonLayout())
|
|||
|
|
// {
|
|||
|
|
// return pWellTrackNode->ConvertX(eCoord_OSGPixel,y,eCoord_GEONormal);
|
|||
|
|
// }
|
|||
|
|
// osg::Vec3d vecGeoNormal;
|
|||
|
|
// m_pSceneManager->GetCoordinate()->ConvertCoordDouble( m_pWellTrack->GetID(),eCoord_OSGPixel,osg::Vec3d(0,y,0),eCoord_GEONormal,vecGeoNormal );
|
|||
|
|
// return vecGeoNormal[1];
|
|||
|
|
// }
|
|||
|
|
// QRectF CQtWindowWellSection::getLineRangeRectOSGGLobal(CObjWellTrack*m_pWellTrack)
|
|||
|
|
// {
|
|||
|
|
// QRectF r;
|
|||
|
|
// if (m_pWellTrack == NULL)
|
|||
|
|
// {
|
|||
|
|
// return r;
|
|||
|
|
// }
|
|||
|
|
// CQtWellTrackNode* pWellTrackBuilder = dynamic_cast<CQtWellTrackNode*>(GetSceneManager()->GetBuilder(m_pWellTrack->GetID()));
|
|||
|
|
// if(pWellTrackBuilder != NULL)
|
|||
|
|
// {
|
|||
|
|
// r = pWellTrackBuilder->GetWellRect();
|
|||
|
|
// int nEndRow = pWellTrackBuilder->GetWellSheet().GetRowNumber()-1;
|
|||
|
|
// QRectF rcF = pWellTrackBuilder->GetWellSheet().GetCellRect(
|
|||
|
|
// CellRange(nEndRow, nEndRow ,0 ,pWellTrackBuilder->GetWellSheet().GetColumeNumber()-1 ),
|
|||
|
|
// eCoord_OSGGlobal,m_pWellTrack->GetID() );
|
|||
|
|
// r.setTop(rcF.top());
|
|||
|
|
// r.setBottom(rcF.bottom());
|
|||
|
|
// }
|
|||
|
|
// return r;
|
|||
|
|
// }
|
|||
|
|
// QVector<QPointF> CQtWindowWellSection::SetLinePoint(CWellSectionWindowDocument *pDoc,CObjWellTrack*m_pWellTrack,CurveLine *pLine,QRectF lineRangeRect)
|
|||
|
|
// {
|
|||
|
|
// QVector<QPointF> vecPoints;
|
|||
|
|
// if (m_pWellTrack == NULL)
|
|||
|
|
// {
|
|||
|
|
// return vecPoints;
|
|||
|
|
// }
|
|||
|
|
// osg::Vec3d vecGeoLeft;
|
|||
|
|
// osg::Vec3d vecGeoRight;
|
|||
|
|
|
|||
|
|
// QPointF leftpoint;
|
|||
|
|
// QPointF rightpoint;
|
|||
|
|
// CQtWellSceneManager *pWellSceneManager = dynamic_cast<CQtWellSceneManager *>( GetSceneManager() );
|
|||
|
|
// CQtWellTrackNode *pWellTrackNode=dynamic_cast<CQtWellTrackNode*>(pWellSceneManager->GetBuilder(m_pWellTrack->GetID()));
|
|||
|
|
// //luol 20200508 水平控制
|
|||
|
|
// if(pWellSceneManager->IsWellSectonHorizonLayout())
|
|||
|
|
// {
|
|||
|
|
// osg::Vec3d vecGeoNormal1(0, pLine->GetLeftDepth(), 0);
|
|||
|
|
// m_pSceneManager->GetCoordinate()->ConvertCoordDouble( m_pWellTrack->GetID(),eCoord_GEO,vecGeoNormal1,eCoord_GDIPixel,vecGeoLeft );
|
|||
|
|
// osg::Vec3d vecGeoNormal2(0, pLine->GetRightDepth(), 0);
|
|||
|
|
// m_pSceneManager->GetCoordinate()->ConvertCoordDouble( m_pWellTrack->GetID(),eCoord_GEO,vecGeoNormal2,eCoord_GDIPixel,vecGeoRight );
|
|||
|
|
// if (pDoc&&pDoc->m_LeftCurve)
|
|||
|
|
// {
|
|||
|
|
// CVecNodeBuilder *pLogNode = dynamic_cast<CVecNodeBuilder *>( GetSceneManager()->GetBuilder( pDoc->m_LeftCurve->GetID() ) );
|
|||
|
|
// //luol20200508 此处存在BUG 由于 GetOSGPixelPoint 函数只提供了 X方向像素点获取,
|
|||
|
|
// //最终解决方案需要底层新增Y方向获取像素点的函数
|
|||
|
|
// leftpoint=pLogNode->GetOSGPixelPoint(pLine->GetLeftDepth(),0.0f);
|
|||
|
|
// if(leftpoint.x()==leftpoint.y()&&leftpoint.x()==0)
|
|||
|
|
// {
|
|||
|
|
// leftpoint.setX(lineRangeRect.left());
|
|||
|
|
// }
|
|||
|
|
// leftpoint.setY(vecGeoLeft[0]);
|
|||
|
|
// }
|
|||
|
|
// else {
|
|||
|
|
// leftpoint.setX(lineRangeRect.left());
|
|||
|
|
// leftpoint.setY(vecGeoLeft[0]);
|
|||
|
|
// }
|
|||
|
|
// if (pDoc&&pDoc->m_RightCurve)
|
|||
|
|
// {
|
|||
|
|
// CVecNodeBuilder *pLogNode = dynamic_cast<CVecNodeBuilder *>( GetSceneManager()->GetBuilder( pDoc->m_RightCurve->GetID() ) );
|
|||
|
|
// if(pLogNode) {
|
|||
|
|
// rightpoint=pLogNode->GetOSGPixelPoint(pLine->GetRightDepth(),0.0f);
|
|||
|
|
// if(rightpoint.x()==rightpoint.y()&&rightpoint.x()==0)
|
|||
|
|
// {
|
|||
|
|
// rightpoint.setX(lineRangeRect.right());
|
|||
|
|
// }
|
|||
|
|
// rightpoint.setY(vecGeoRight[0]);
|
|||
|
|
// }
|
|||
|
|
// else {
|
|||
|
|
// rightpoint.setX(lineRangeRect.right());
|
|||
|
|
// rightpoint.setY(vecGeoRight[0]);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// else {
|
|||
|
|
// rightpoint.setX(lineRangeRect.right());
|
|||
|
|
// rightpoint.setY(vecGeoRight[0]);
|
|||
|
|
// }
|
|||
|
|
// }else
|
|||
|
|
// {
|
|||
|
|
// osg::Vec3d vecGeoNormal1(0, pLine->GetLeftDepth(), 0);
|
|||
|
|
// m_pSceneManager->GetCoordinate()->ConvertCoordDouble( m_pWellTrack->GetID(),eCoord_GEO,vecGeoNormal1,eCoord_GDIPixel,vecGeoLeft );
|
|||
|
|
// osg::Vec3d vecGeoNormal2(0, pLine->GetRightDepth(), 0);
|
|||
|
|
// m_pSceneManager->GetCoordinate()->ConvertCoordDouble( m_pWellTrack->GetID(),eCoord_GEO,vecGeoNormal2,eCoord_GDIPixel,vecGeoRight );
|
|||
|
|
|
|||
|
|
// if (pDoc&&pDoc->m_LeftCurve)
|
|||
|
|
// {
|
|||
|
|
// CVecNodeBuilder *pLogNode = dynamic_cast<CVecNodeBuilder *>( GetSceneManager()->GetBuilder( pDoc->m_LeftCurve->GetID() ) );
|
|||
|
|
// if(pLogNode) {
|
|||
|
|
// leftpoint=pLogNode->GetOSGPixelPoint(pLine->GetLeftDepth(),0.0f);
|
|||
|
|
// if(leftpoint.x()==leftpoint.y()&&leftpoint.x()==0)
|
|||
|
|
// {
|
|||
|
|
// leftpoint.setX(lineRangeRect.left());
|
|||
|
|
// }
|
|||
|
|
// leftpoint.setY(vecGeoLeft[1]);
|
|||
|
|
// }
|
|||
|
|
// else {
|
|||
|
|
// leftpoint.setX(lineRangeRect.left());
|
|||
|
|
// leftpoint.setY(vecGeoLeft[1]);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// else {
|
|||
|
|
// leftpoint.setX(lineRangeRect.left());
|
|||
|
|
// leftpoint.setY(vecGeoLeft[1]);
|
|||
|
|
// }
|
|||
|
|
// if (pDoc&&pDoc->m_RightCurve)
|
|||
|
|
// {
|
|||
|
|
// CVecNodeBuilder *pLogNode = dynamic_cast<CVecNodeBuilder *>( GetSceneManager()->GetBuilder( pDoc->m_RightCurve->GetID() ) );
|
|||
|
|
// if(pLogNode){
|
|||
|
|
// rightpoint=pLogNode->GetOSGPixelPoint(pLine->GetRightDepth(),0.0f);
|
|||
|
|
// if(rightpoint.x()==rightpoint.y()&&rightpoint.x()==0)
|
|||
|
|
// {
|
|||
|
|
// rightpoint.setX(lineRangeRect.right());
|
|||
|
|
// }
|
|||
|
|
// rightpoint.setY(vecGeoRight[1]);
|
|||
|
|
// }
|
|||
|
|
// else {
|
|||
|
|
// rightpoint.setX(lineRangeRect.right());
|
|||
|
|
// rightpoint.setY(vecGeoRight[1]);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// else {
|
|||
|
|
// rightpoint.setX(lineRangeRect.right());
|
|||
|
|
// rightpoint.setY(vecGeoRight[1]);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// if (!pWellTrackNode)
|
|||
|
|
// {
|
|||
|
|
// return vecPoints;
|
|||
|
|
// }
|
|||
|
|
// vecPoints <<leftpoint<<rightpoint;
|
|||
|
|
// return vecPoints;
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
|
|||
|
|
// void CQtWindowWellSection::slotClearShiftZonePoint()
|
|||
|
|
// {
|
|||
|
|
// CQtWellSceneManager *pWellSceneManager = dynamic_cast<CQtWellSceneManager *>( GetSceneManager() );
|
|||
|
|
// if(!pWellSceneManager) return;
|
|||
|
|
// CWellSectionWindowDocument *pDoc = pWellSceneManager->GetWellSectionGeomtry().GetSecionWindowDocument();
|
|||
|
|
// if(pDoc->pLine) {
|
|||
|
|
// int pos=pDoc->m_mergeLineList.indexOf(pDoc->pLine);
|
|||
|
|
// if(pos>-1) {
|
|||
|
|
// pDoc->m_mergeLineList.remove(pos);
|
|||
|
|
// QList<CurveLine*> aa;
|
|||
|
|
// aa.append(pDoc->pLine);
|
|||
|
|
// qDeleteAll(aa);
|
|||
|
|
// pDoc->pLine=NULL;
|
|||
|
|
// pWellSceneManager->SetDirtyUIElement(true,true);
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// ::qDeleteAll(pDoc->m_mergeLineList);
|
|||
|
|
// pDoc->m_mergeLineList.clear();
|
|||
|
|
// pDoc->pLine=NULL;
|
|||
|
|
// pWellSceneManager->SetDirtyUIElement(true,true);
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// void CQtWindowWellSection::slotClearShiftZonePoint0()
|
|||
|
|
// {
|
|||
|
|
// CQtWellSceneManager *pWellSceneManager = dynamic_cast<CQtWellSceneManager *>( GetSceneManager() );
|
|||
|
|
// if(!pWellSceneManager) return;
|
|||
|
|
// CWellSectionWindowDocument *pDoc = pWellSceneManager->GetWellSectionGeomtry().GetSecionWindowDocument();
|
|||
|
|
// if(pDoc->pLine) {
|
|||
|
|
// int pos=pDoc->m_mergeLineList.indexOf(pDoc->pLine);
|
|||
|
|
// if(pos>-1) {
|
|||
|
|
// pDoc->m_mergeLineList.remove(pos);
|
|||
|
|
// QList<CurveLine*> aa;
|
|||
|
|
// aa.append(pDoc->pLine);
|
|||
|
|
// qDeleteAll(aa);
|
|||
|
|
// pDoc->pLine=NULL;
|
|||
|
|
// pWellSceneManager->SetDirtyUIElement(true,true);
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// void CQtWindowWellSection::slotClearStandardShift(int type)
|
|||
|
|
// {
|
|||
|
|
// CQtWellSceneManager *pWellSceneManager = dynamic_cast<CQtWellSceneManager *>( GetSceneManager() );
|
|||
|
|
// CWellSectionWindowDocument *pDoc = pWellSceneManager->GetWellSectionGeomtry().GetSecionWindowDocument();
|
|||
|
|
// CBaseObject *pCurrentObject = CObjProject::GetObjectByID(pWellSceneManager->GetCurrentPickObjectID());
|
|||
|
|
// if(pDoc->m_LeftCurve) {
|
|||
|
|
// QString name=pDoc->m_LeftCurve->GetAliasName();
|
|||
|
|
// QUuid objectID=pDoc->m_LeftCurve->GetPaiObject()->GetID();
|
|||
|
|
// CObjectViewInfo *pDestObjectViewInfo = dynamic_cast<CObjectViewInfo*>(m_pSceneManager->GetViewInfo( objectID ));
|
|||
|
|
// if(name.isEmpty()&&pDestObjectViewInfo) {
|
|||
|
|
// name=pDestObjectViewInfo->GetAliasName();
|
|||
|
|
// if(name.isEmpty()) name=pDoc->m_LeftCurve->GetName();
|
|||
|
|
// }
|
|||
|
|
// int pos=-1;
|
|||
|
|
// pos=name.indexOf("_标");
|
|||
|
|
// if(pos<0)pos=name.indexOf("_目");
|
|||
|
|
// if(pos<0)pos=name.indexOf("_主");
|
|||
|
|
// if(pos<0)pos=name.indexOf("_源");
|
|||
|
|
// if(pos<0)pos=name.indexOf("_从校");
|
|||
|
|
// if(pos<0)pos=name.indexOf("_从接");
|
|||
|
|
// if(pos>=0) {
|
|||
|
|
// name=name.left(pos);
|
|||
|
|
// pDoc->m_LeftCurve->SetAliasName(name);
|
|||
|
|
// if(pDestObjectViewInfo)pDestObjectViewInfo->SetAliasName(name);
|
|||
|
|
// }
|
|||
|
|
// pDoc->m_LeftCurve->SetShiftOffset(0.0);
|
|||
|
|
// pDoc->m_LeftCurve->SetShiftTopDepth(-9999.0);
|
|||
|
|
// pDoc->m_LeftCurve->SetShiftBottomDepth(-9999);
|
|||
|
|
// pWellSceneManager->UpdateObject(pDoc->m_LeftCurve->GetID(),eUpdate_ViewInfo,NULL);
|
|||
|
|
// }
|
|||
|
|
// if(pDoc->m_RightCurve) {
|
|||
|
|
// QString name=pDoc->m_RightCurve->GetAliasName();
|
|||
|
|
// QUuid objectID=pDoc->m_RightCurve->GetPaiObject()->GetID();
|
|||
|
|
// CObjectViewInfo *pDestObjectViewInfo = dynamic_cast<CObjectViewInfo*>(m_pSceneManager->GetViewInfo( objectID ));
|
|||
|
|
// if(name.isEmpty()&&pDestObjectViewInfo) {
|
|||
|
|
// name=pDestObjectViewInfo->GetAliasName();
|
|||
|
|
// if(name.isEmpty()) name=pDoc->m_RightCurve->GetName();
|
|||
|
|
// }
|
|||
|
|
// int pos=-1;
|
|||
|
|
// pos=name.indexOf("_标");
|
|||
|
|
// if(pos<0) pos=name.indexOf("_主");
|
|||
|
|
// if(pos<0) pos=name.indexOf("_从校");
|
|||
|
|
// if(pos<0) pos=name.indexOf("_目");
|
|||
|
|
// if(pos<0) pos=name.indexOf("_源");
|
|||
|
|
// if(pos<0) pos=name.indexOf("_从接");
|
|||
|
|
// if(pos>=0) {
|
|||
|
|
// name=name.left(pos);
|
|||
|
|
// pDoc->m_RightCurve->SetAliasName(name);
|
|||
|
|
// if(pDestObjectViewInfo)pDestObjectViewInfo->SetAliasName(name);
|
|||
|
|
// }
|
|||
|
|
// pDoc->m_RightCurve->SetShiftOffset(0.0);
|
|||
|
|
// pDoc->m_RightCurve->SetShiftTopDepth(-9999.0);
|
|||
|
|
// pDoc->m_RightCurve->SetShiftBottomDepth(-9999);
|
|||
|
|
// pWellSceneManager->UpdateObject(pDoc->m_RightCurve->GetID(),eUpdate_ViewInfo,NULL);
|
|||
|
|
// }
|
|||
|
|
// foreach(CObjWellLog *pLogt,pDoc->m_ShiftCurves)
|
|||
|
|
// {
|
|||
|
|
// pLogt->SetShiftOffset(0);
|
|||
|
|
// pLogt->SetShiftTopDepth(-9999.0);
|
|||
|
|
// pLogt->SetShiftBottomDepth(-9999.0);
|
|||
|
|
// QUuid objectID=pLogt->GetPaiObject()->GetID();
|
|||
|
|
// CObjectViewInfo *pDestObjectViewInfo = dynamic_cast<CObjectViewInfo*>(m_pSceneManager->GetViewInfo( objectID ));
|
|||
|
|
// QString nn=pLogt->GetAliasName();
|
|||
|
|
// if(nn.isEmpty()&&pDestObjectViewInfo) {
|
|||
|
|
// nn=pDestObjectViewInfo->GetAliasName();
|
|||
|
|
// if(nn.isEmpty()&&pDoc->m_LeftCurve) nn=pDoc->m_LeftCurve->GetName();
|
|||
|
|
// }
|
|||
|
|
// int pos1=-1;
|
|||
|
|
// pos1=nn.indexOf("_从校");
|
|||
|
|
// if(pos1<0) pos1=nn.indexOf("_主");
|
|||
|
|
// if(pos1<0) pos1=nn.indexOf("_标");
|
|||
|
|
// if(pos1<0){
|
|||
|
|
// pos1=nn.indexOf("_从接");
|
|||
|
|
// if(pos1<0) pos1=nn.indexOf("_源");
|
|||
|
|
// if(pos1<0) pos1=nn.indexOf("_目");
|
|||
|
|
// }
|
|||
|
|
// if(pos1>=0) nn=nn.left(pos1);
|
|||
|
|
// if (pos1>=0)
|
|||
|
|
// {
|
|||
|
|
// pLogt->SetAliasName(nn);
|
|||
|
|
// if(pDestObjectViewInfo) pDestObjectViewInfo->SetAliasName(nn);
|
|||
|
|
// }
|
|||
|
|
// pWellSceneManager->UpdateObject(pLogt->GetID(),eUpdate_ViewInfo,NULL);
|
|||
|
|
// }
|
|||
|
|
// pDoc->m_ShiftCurves.clear();
|
|||
|
|
// pDoc->m_RightCurve=NULL;
|
|||
|
|
// pDoc->m_LeftCurve=NULL;
|
|||
|
|
// // slotClearShiftZonePoint();
|
|||
|
|
// UpdateHUD();
|
|||
|
|
// // pWellSceneManager->UpdateAllNonHUD();
|
|||
|
|
// }
|
|||
|
|
// void CQtWindowWellSection::slotClearShiftCurve(CObjWellLog *pLogt)
|
|||
|
|
// {
|
|||
|
|
// CQtWellSceneManager *pWellSceneManager = dynamic_cast<CQtWellSceneManager *>( GetSceneManager() );
|
|||
|
|
// CWellSectionWindowDocument *pDoc = pWellSceneManager->GetWellSectionGeomtry().GetSecionWindowDocument();
|
|||
|
|
// if(pLogt)
|
|||
|
|
// {
|
|||
|
|
// pLogt->SetShiftOffset(0);
|
|||
|
|
// pLogt->SetShiftTopDepth(-9999.0);
|
|||
|
|
// pLogt->SetShiftBottomDepth(-9999.0);
|
|||
|
|
|
|||
|
|
// QUuid objectID=pLogt->GetPaiObject()->GetID();
|
|||
|
|
// CObjectViewInfo *pDestObjectViewInfo = dynamic_cast<CObjectViewInfo*>(m_pSceneManager->GetViewInfo( objectID ));
|
|||
|
|
// QString nn=pLogt->GetAliasName();
|
|||
|
|
// if(nn.isEmpty()&&pDestObjectViewInfo) {
|
|||
|
|
// nn=pDestObjectViewInfo->GetAliasName();
|
|||
|
|
// if(nn.isEmpty()&&pDoc->m_LeftCurve) nn=pDoc->m_LeftCurve->GetName();
|
|||
|
|
// }
|
|||
|
|
// int pos1=-1;
|
|||
|
|
// pos1=nn.indexOf("_从校");
|
|||
|
|
// if(pos1<0) pos1=nn.indexOf("_主");
|
|||
|
|
// if(pos1<0) pos1=nn.indexOf("_标");
|
|||
|
|
// if(pos1<0){
|
|||
|
|
// pos1=nn.indexOf("_从接");
|
|||
|
|
// if(pos1<0) pos1=nn.indexOf("_源");
|
|||
|
|
// if(pos1<0) pos1=nn.indexOf("_目");
|
|||
|
|
// }
|
|||
|
|
// if(pos1>=0) nn=nn.left(pos1);
|
|||
|
|
// pLogt->SetAliasName(nn);
|
|||
|
|
// if(pDestObjectViewInfo)pDestObjectViewInfo->SetAliasName(nn);
|
|||
|
|
// pWellSceneManager->UpdateObject(pLogt->GetID(),eUpdate_ViewInfo,NULL);
|
|||
|
|
// }
|
|||
|
|
// int i=pDoc->m_ShiftCurves.indexOf(pLogt);
|
|||
|
|
// if(i>-1) pDoc->m_ShiftCurves.removeAt(i);
|
|||
|
|
// UpdateHUD();
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// void CQtWindowWellSection::slotClearShiftCurves(int type)
|
|||
|
|
// {
|
|||
|
|
// CQtWellSceneManager *pWellSceneManager = dynamic_cast<CQtWellSceneManager *>( GetSceneManager() );
|
|||
|
|
// CWellSectionWindowDocument *pDoc = pWellSceneManager->GetWellSectionGeomtry().GetSecionWindowDocument();
|
|||
|
|
// foreach(CObjWellLog *pLogt,pDoc->m_ShiftCurves)
|
|||
|
|
// {
|
|||
|
|
// pLogt->SetShiftOffset(0);
|
|||
|
|
// pLogt->SetShiftTopDepth(-9999.0);
|
|||
|
|
// pLogt->SetShiftBottomDepth(-9999.0);
|
|||
|
|
|
|||
|
|
// QUuid objectID=pLogt->GetPaiObject()->GetID();
|
|||
|
|
// CObjectViewInfo *pDestObjectViewInfo = dynamic_cast<CObjectViewInfo*>(m_pSceneManager->GetViewInfo( objectID ));
|
|||
|
|
// QString nn=pLogt->GetAliasName();
|
|||
|
|
// if(nn.isEmpty()&&pDestObjectViewInfo) {
|
|||
|
|
// nn=pDestObjectViewInfo->GetAliasName();
|
|||
|
|
// if(nn.isEmpty()&&pDoc->m_LeftCurve) nn=pDoc->m_LeftCurve->GetName();
|
|||
|
|
// }
|
|||
|
|
// int pos1=-1;
|
|||
|
|
// pos1=nn.indexOf("_从校");
|
|||
|
|
// if(pos1<0) pos1=nn.indexOf("_主");
|
|||
|
|
// if(pos1<0) pos1=nn.indexOf("_标");
|
|||
|
|
// if(pos1<0){
|
|||
|
|
// pos1=nn.indexOf("_从接");
|
|||
|
|
// if(pos1<0) pos1=nn.indexOf("_源");
|
|||
|
|
// if(pos1<0) pos1=nn.indexOf("_目");
|
|||
|
|
// }
|
|||
|
|
// if(pos1>=0) nn=nn.left(pos1);
|
|||
|
|
// pLogt->SetAliasName(nn);
|
|||
|
|
// if(pDestObjectViewInfo)pDestObjectViewInfo->SetAliasName(nn);
|
|||
|
|
// pWellSceneManager->UpdateObject(pLogt->GetID(),eUpdate_ViewInfo,NULL);
|
|||
|
|
// }
|
|||
|
|
// pDoc->m_ShiftCurves.clear();
|
|||
|
|
// UpdateHUD();
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// void CQtWindowWellSection::slotSetOtherShiftCurve(int type)
|
|||
|
|
// {
|
|||
|
|
// CQtWellSceneManager *pWellSceneManager = dynamic_cast<CQtWellSceneManager *>( GetSceneManager() );
|
|||
|
|
// CWellSectionWindowDocument *pDoc = pWellSceneManager->GetWellSectionGeomtry().GetSecionWindowDocument();
|
|||
|
|
// if(!pDoc) return;
|
|||
|
|
// CBaseObject *pCurrentObject = CObjProject::GetObjectByID( pWellSceneManager->GetCurrentPickObjectID() );
|
|||
|
|
// CObjWellLog *pLog = dynamic_cast<CObjWellLog *>( pCurrentObject );
|
|||
|
|
// if(!pLog) return;
|
|||
|
|
|
|||
|
|
// PaiObject *pPai=pLog->GetParent();
|
|||
|
|
// if(!pPai) return;
|
|||
|
|
// pPai=pPai->GetParent();
|
|||
|
|
// if(!pPai) return;
|
|||
|
|
// CObjWellTrack *pWellTrack=dynamic_cast<CObjWellTrack *>(pPai);
|
|||
|
|
// if(!pWellTrack) return;
|
|||
|
|
// QList<CObjWellLog*>temp_ss=pDoc->m_ShiftCurves;
|
|||
|
|
// QList<CObjWellLog*> names;
|
|||
|
|
// if(pDoc->m_RightCurve) {
|
|||
|
|
// names.append(pDoc->m_RightCurve);
|
|||
|
|
// }
|
|||
|
|
// if(pDoc->m_LeftCurve) {
|
|||
|
|
// names.append(pDoc->m_LeftCurve);
|
|||
|
|
// }
|
|||
|
|
// CObjWelllogRound*pRound=NULL;
|
|||
|
|
// if(type==1) {
|
|||
|
|
// if(!pDoc->m_LeftCurve) {
|
|||
|
|
// AfxMessageBox("请先选择目标曲线!");
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// pRound=pDoc->m_LeftCurve->GetWelllogRound();
|
|||
|
|
// }
|
|||
|
|
// CchooseShiftCurvesDlg *pShiftCurvesDlg=new CchooseShiftCurvesDlg(pWellTrack,names,pRound);
|
|||
|
|
// pShiftCurvesDlg->Init(pDoc->m_ShiftCurves);
|
|||
|
|
// if(pShiftCurvesDlg->exec()==QDialog::Accepted) {
|
|||
|
|
// QList<CObjWellLog*>temps;
|
|||
|
|
// for(int i=0;i<pDoc->m_ShiftCurves.size();i++) {
|
|||
|
|
// CObjWellLog *pLog = dynamic_cast<CObjWellLog *>(pDoc->m_ShiftCurves[i]);
|
|||
|
|
// if(pLog) {
|
|||
|
|
// if(pDoc->m_RightCurve) {
|
|||
|
|
// QString slf=pLog->GetSlfFileName();
|
|||
|
|
// slf.replace("\\","/");
|
|||
|
|
// QString slf1=pDoc->m_RightCurve->GetSlfFileName();
|
|||
|
|
// slf1.replace("\\","/");
|
|||
|
|
// if(slf1.compare(slf,Qt::CaseInsensitive)==0){
|
|||
|
|
// if(pDoc->m_RightCurve->GetName().compare(pLog->GetName(),Qt::CaseInsensitive)==0) {
|
|||
|
|
// temps.append(pLog);
|
|||
|
|
// continue;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// if(pDoc->m_LeftCurve) {
|
|||
|
|
// QString slf=pLog->GetSlfFileName();
|
|||
|
|
// slf.replace("\\","/");
|
|||
|
|
// QString slf1=pDoc->m_LeftCurve->GetSlfFileName();
|
|||
|
|
// slf1.replace("\\","/");
|
|||
|
|
// if(slf1.compare(slf,Qt::CaseInsensitive)==0){
|
|||
|
|
// if(pDoc->m_LeftCurve->GetName().compare(pLog->GetName(),Qt::CaseInsensitive)==0) {
|
|||
|
|
// temps.append(pLog);
|
|||
|
|
// continue;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// QString name=pLog->GetAliasName();
|
|||
|
|
// QUuid objectID=pLog->GetPaiObject()->GetID();
|
|||
|
|
// if(m_pSceneManager->GetBuilder(objectID)) {
|
|||
|
|
// CObjectViewInfo *pObjectViewInfo = dynamic_cast<CObjectViewInfo*>(m_pSceneManager->GetViewInfo( objectID ));
|
|||
|
|
// if(name.isEmpty()) {
|
|||
|
|
// if(pObjectViewInfo)name=pObjectViewInfo->GetAliasName();
|
|||
|
|
// if(name.isEmpty()) name=pLog->GetName();
|
|||
|
|
// }
|
|||
|
|
// int pos=-1;
|
|||
|
|
// if(type==0) {
|
|||
|
|
// pos=name.indexOf("_主");
|
|||
|
|
// if(pos<0) {
|
|||
|
|
// pos=name.indexOf("_标");
|
|||
|
|
// if(pos<1)pos=name.indexOf("_从校");//
|
|||
|
|
// }
|
|||
|
|
// if(pos<0){//当前曲线为从曲线
|
|||
|
|
// name=name+"_从校";
|
|||
|
|
// pLog->SetAliasName(name);
|
|||
|
|
// if(pObjectViewInfo)pObjectViewInfo->SetAliasName(name);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// else {
|
|||
|
|
// pos=name.indexOf("_源");
|
|||
|
|
// if(pos<0) {
|
|||
|
|
// pos=name.indexOf("_目");
|
|||
|
|
// if(pos<1)pos=name.indexOf("_从接");//
|
|||
|
|
// }
|
|||
|
|
// if(pos<0){//当前曲线为从曲线
|
|||
|
|
// name=name+"_从接";
|
|||
|
|
// pLog->SetAliasName(name);
|
|||
|
|
// if(pObjectViewInfo)pObjectViewInfo->SetAliasName(name);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// for(int j=0;j<temps.size();j++) pDoc->m_ShiftCurves.removeOne(temps[j]);
|
|||
|
|
// for(int k=0;k<pDoc->m_ShiftCurves.size();k++) {
|
|||
|
|
// for(int j=0;j<temp_ss.size();j++) {
|
|||
|
|
// if(pDoc->m_ShiftCurves.indexOf(temp_ss[j])>-1) temp_ss.removeAt(j);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// UpdateHUD();
|
|||
|
|
// if(pWellSceneManager) {
|
|||
|
|
// for(int j=0;j<temp_ss.size();j++) {
|
|||
|
|
// CObjWellLog *pLog=temp_ss[j];
|
|||
|
|
// if(!pLog) return;
|
|||
|
|
// QString name=pLog->GetAliasName();
|
|||
|
|
// QUuid objectID=pLog->GetPaiObject()->GetID();
|
|||
|
|
// int pos=name.indexOf("_主");
|
|||
|
|
// if(pos<0) {
|
|||
|
|
// pos=name.indexOf("_标");
|
|||
|
|
// if(pos<1)pos=name.indexOf("_从校");//
|
|||
|
|
// }
|
|||
|
|
// if(pos<0)pos=name.indexOf("_源");
|
|||
|
|
// if(pos<0) {
|
|||
|
|
// pos=name.indexOf("_目");
|
|||
|
|
// if(pos<1)pos=name.indexOf("_从接");//
|
|||
|
|
// }
|
|||
|
|
// if(pos>=0){//当前曲线为从曲线
|
|||
|
|
// name=name.left(pos);
|
|||
|
|
// pLog->SetAliasName(name);
|
|||
|
|
// if(m_pSceneManager->GetBuilder(objectID)) {
|
|||
|
|
// CObjectViewInfo *pObjectViewInfo = dynamic_cast<CObjectViewInfo*>(m_pSceneManager->GetViewInfo( objectID ));
|
|||
|
|
// if(pObjectViewInfo)pObjectViewInfo->SetAliasName(name);
|
|||
|
|
// }
|
|||
|
|
// pWellSceneManager->UpdateObject(pLog->GetID(),eUpdate_ViewInfo,NULL);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// for(int i=0;i<pDoc->m_ShiftCurves.size();i++) {
|
|||
|
|
// pWellSceneManager->UpdateObject(pDoc->m_ShiftCurves[i]->GetID(),eUpdate_ViewInfo,NULL);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// delete pShiftCurvesDlg;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// void CQtWindowWellSection::slotClearStandardShift()
|
|||
|
|
// {
|
|||
|
|
// slotClearStandardShift(0);
|
|||
|
|
// CQtWellSceneManager *pWellSceneManager = dynamic_cast<CQtWellSceneManager *>( GetSceneManager() );
|
|||
|
|
// CWellSectionWindowDocument *pDoc = pWellSceneManager->GetWellSectionGeomtry().GetSecionWindowDocument();
|
|||
|
|
// if(pDoc) {
|
|||
|
|
// pDoc->m_isShift=-1;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// void CQtWindowWellSection::slotClearShiftCurves()
|
|||
|
|
// {
|
|||
|
|
// slotClearShiftCurves(0);
|
|||
|
|
// CQtWellSceneManager *pWellSceneManager = dynamic_cast<CQtWellSceneManager *>( GetSceneManager() );
|
|||
|
|
// CWellSectionWindowDocument *pDoc = pWellSceneManager->GetWellSectionGeomtry().GetSecionWindowDocument();
|
|||
|
|
// if(pDoc) {
|
|||
|
|
// if(!pDoc->m_LeftCurve&&!pDoc->m_RightCurve&&!pDoc->m_ShiftCurves.size()) pDoc->m_isShift=-1;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// void CQtWindowWellSection::slotClearStandardMeg()
|
|||
|
|
// {
|
|||
|
|
// slotClearStandardShift(1);
|
|||
|
|
// CQtWellSceneManager *pWellSceneManager = dynamic_cast<CQtWellSceneManager *>( GetSceneManager() );
|
|||
|
|
// CWellSectionWindowDocument *pDoc = pWellSceneManager->GetWellSectionGeomtry().GetSecionWindowDocument();
|
|||
|
|
// if(pDoc) {
|
|||
|
|
// pDoc->m_isShift=-1;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// void CQtWindowWellSection::slotClearMegCurves()
|
|||
|
|
// {
|
|||
|
|
// slotClearShiftCurves(1);
|
|||
|
|
// CQtWellSceneManager *pWellSceneManager = dynamic_cast<CQtWellSceneManager *>( GetSceneManager() );
|
|||
|
|
// CWellSectionWindowDocument *pDoc = pWellSceneManager->GetWellSectionGeomtry().GetSecionWindowDocument();
|
|||
|
|
// if(pDoc) {
|
|||
|
|
// if(!pDoc->m_LeftCurve&&!pDoc->m_RightCurve&&!pDoc->m_ShiftCurves.size()) pDoc->m_isShift=-1;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// void CQtWindowWellSection::slotSetShiftCurve(int type)
|
|||
|
|
// {
|
|||
|
|
// CQtWellSceneManager *pWellSceneManager = dynamic_cast<CQtWellSceneManager *>( GetSceneManager() );
|
|||
|
|
// CWellSectionWindowDocument *pDoc = pWellSceneManager->GetWellSectionGeomtry().GetSecionWindowDocument();
|
|||
|
|
// CBaseObject *pCurrentObject = CObjProject::GetObjectByID( pWellSceneManager->GetCurrentPickObjectID() );
|
|||
|
|
// CObjWellLog *pLog = dynamic_cast<CObjWellLog *>( pCurrentObject );
|
|||
|
|
// if(pLog) {
|
|||
|
|
// QString name=pLog->GetAliasName();
|
|||
|
|
// QUuid objectID=pLog->GetPaiObject()->GetID();
|
|||
|
|
// CObjectViewInfo *pObjectViewInfo = dynamic_cast<CObjectViewInfo*>(m_pSceneManager->GetViewInfo( objectID ));
|
|||
|
|
// if(name.isEmpty()) {
|
|||
|
|
// if(pObjectViewInfo)name=pObjectViewInfo->GetAliasName();
|
|||
|
|
// if(name.isEmpty()) name=pLog->GetName();
|
|||
|
|
// }
|
|||
|
|
// int pos=-1;
|
|||
|
|
// if(type==0) pos=name.indexOf("_主");
|
|||
|
|
// else pos=name.indexOf("_源");
|
|||
|
|
// if(pos<0) {
|
|||
|
|
// int pos1=-1;
|
|||
|
|
// if(type==0) pos1=name.indexOf("_标");
|
|||
|
|
// else pos1=name.indexOf("_目");
|
|||
|
|
// if(pos1>=0) name=name.left(pos1);//当前曲线为主曲线
|
|||
|
|
// else {
|
|||
|
|
// pos1=-1;
|
|||
|
|
// if(type==0)pos1=name.indexOf("_从校");//
|
|||
|
|
// else pos1=name.indexOf("_从接");//
|
|||
|
|
// if(pos1>=0){//当前曲线为从曲线
|
|||
|
|
// name=name.left(pos1);
|
|||
|
|
// pDoc->m_ShiftCurves.removeOne(pLog);
|
|||
|
|
// pLog->SetAliasName(name);
|
|||
|
|
// if(pObjectViewInfo)pObjectViewInfo->SetAliasName(name);
|
|||
|
|
// UpdateHUD();
|
|||
|
|
// if(pWellSceneManager)pWellSceneManager->UpdateObject(pLog->GetID(),eUpdate_ViewInfo,NULL);
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// if(pDoc->m_RightCurve&&pLog!=pDoc->m_RightCurve) {//主曲线已存在
|
|||
|
|
// //设置为从曲线
|
|||
|
|
// if(type==0) {
|
|||
|
|
// pLog->SetAliasName(name+"_从校");
|
|||
|
|
// if(pObjectViewInfo)pObjectViewInfo->SetAliasName(name+"_从校");
|
|||
|
|
// }
|
|||
|
|
// else {
|
|||
|
|
// pLog->SetAliasName(name+"_从接");
|
|||
|
|
// if(pObjectViewInfo)pObjectViewInfo->SetAliasName(name+"_从接");
|
|||
|
|
// }
|
|||
|
|
// if(!pDoc->m_ShiftCurves.contains(pLog))
|
|||
|
|
// pDoc->m_ShiftCurves.append(pLog);
|
|||
|
|
// }
|
|||
|
|
// else {//设置为主曲线
|
|||
|
|
// if(type==0) {
|
|||
|
|
// pLog->SetAliasName(name+"_主");
|
|||
|
|
// if(pObjectViewInfo)pObjectViewInfo->SetAliasName(name+"_主");
|
|||
|
|
// }
|
|||
|
|
// else {
|
|||
|
|
// pLog->SetAliasName(name+"_源)");
|
|||
|
|
// if(pObjectViewInfo)pObjectViewInfo->SetAliasName(name+"_源");
|
|||
|
|
// }
|
|||
|
|
// pDoc->m_RightCurve=pLog;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// else {//清除主曲线
|
|||
|
|
// name=name.left(pos);
|
|||
|
|
// pLog->SetAliasName(name);
|
|||
|
|
// if(pObjectViewInfo)pObjectViewInfo->SetAliasName(name);
|
|||
|
|
// if(pDoc->m_RightCurve){
|
|||
|
|
// pDoc->m_RightCurve->SetShiftOffset(0.0);
|
|||
|
|
// pDoc->m_RightCurve->SetShiftTopDepth(-9999.0);
|
|||
|
|
// pDoc->m_RightCurve->SetShiftBottomDepth(-9999);
|
|||
|
|
// }
|
|||
|
|
// pDoc->m_RightCurve=NULL;
|
|||
|
|
// }
|
|||
|
|
// UpdateHUD();
|
|||
|
|
// if(pWellSceneManager)pWellSceneManager->UpdateObject(pLog->GetID(),eUpdate_ViewInfo,NULL);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// void CQtWindowWellSection::slotExecuteDepthAutoComp()
|
|||
|
|
// {
|
|||
|
|
// CWellSectionWindowDocument* pDoc = dynamic_cast<CWellSectionWindowDocument*>(GetSceneManager()->GetDocument());
|
|||
|
|
// CQtWellSceneManager *pWellSceneManager = dynamic_cast<CQtWellSceneManager *>( GetSceneManager() );
|
|||
|
|
// static float cmins=0.9;
|
|||
|
|
// static float winLength=4;
|
|||
|
|
// static float stepLength=2;
|
|||
|
|
// static float searchLength=4;
|
|||
|
|
|
|||
|
|
// static float stdep=-9999;
|
|||
|
|
// static float endep=-9999;
|
|||
|
|
|
|||
|
|
// CObjWellLog *plog1=pDoc->m_LeftCurve;
|
|||
|
|
// if(!plog1) {
|
|||
|
|
// AfxMessageBox("请先选择标准曲线!");
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// CObjWellLogTrack*pLogTrack1=dynamic_cast<CObjWellLogTrack *>(plog1->GetParent());
|
|||
|
|
// if(!pLogTrack1) {
|
|||
|
|
// QObject *p=plog1->GetParent();
|
|||
|
|
// AfxMessageBox(plog1->GetName()+"某种原因不能作为标准曲线,请重新设置标准曲线!");
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// CObjWellTrack*pWellTrack1=NULL;
|
|||
|
|
// if(pLogTrack1) {
|
|||
|
|
// pWellTrack1 = pLogTrack1->GetWellTrack();
|
|||
|
|
// }
|
|||
|
|
// CVecNodeBuilder *pLogNode1 = dynamic_cast<CVecNodeBuilder *>( GetSceneManager()->GetBuilder( plog1->GetID() ) );
|
|||
|
|
// if(!pLogNode1) {
|
|||
|
|
// AfxMessageBox(plog1->GetName()+"某种原因不能作为校正曲线,请重新设置校深曲线!");
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// CObjWellLog *plog2=pDoc->m_RightCurve;
|
|||
|
|
// if(!plog2) {
|
|||
|
|
// AfxMessageBox("请先选择校正曲线!");
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// CObjWellLogTrack*pLogTrack2=dynamic_cast<CObjWellLogTrack *>(plog2->GetParent());
|
|||
|
|
// if(!pLogTrack2) {
|
|||
|
|
// QObject *p=plog2->GetParent();
|
|||
|
|
// AfxMessageBox(plog2->GetName()+"某种原因不能作为校正曲线,请重新设置校深曲线!");
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// CObjWellTrack*pWellTrack2=NULL;
|
|||
|
|
// if(pLogTrack2) {
|
|||
|
|
// pWellTrack2 = pLogTrack2->GetWellTrack();
|
|||
|
|
// }
|
|||
|
|
// CVecNodeBuilder *pLogNode2 = dynamic_cast<CVecNodeBuilder *>( GetSceneManager()->GetBuilder( plog2->GetID() ) );
|
|||
|
|
|
|||
|
|
// if(!pLogNode2) {
|
|||
|
|
// AfxMessageBox(plog2->GetName()+"某种原因不能作为校正曲线,请重新设置校深曲线!");
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// QDialog dialog(NULL);
|
|||
|
|
// dialog.setModal(false);
|
|||
|
|
// Qt::WindowFlags flags = dialog.windowFlags();
|
|||
|
|
// flags |= Qt::WindowStaysOnTopHint;
|
|||
|
|
// flags &= ~Qt::WindowContextHelpButtonHint;
|
|||
|
|
// dialog.setWindowFlags(flags);
|
|||
|
|
// dialog.setWindowTitle("自动对比参数");
|
|||
|
|
// QFormLayout form(&dialog);
|
|||
|
|
// form.addRow(new QLabel("输入窗长:"));
|
|||
|
|
// // Value1
|
|||
|
|
// QString value1 = QString("窗长: ");
|
|||
|
|
// QLineEdit *spinbox1 = new QLineEdit(&dialog);
|
|||
|
|
// spinbox1->setText(toString(winLength));
|
|||
|
|
// form.addRow(value1, spinbox1);
|
|||
|
|
// value1 = QString("步长: ");
|
|||
|
|
// QLineEdit *spinbox2 = new QLineEdit(&dialog);
|
|||
|
|
// form.addRow(value1, spinbox2);
|
|||
|
|
// spinbox2->setText(toString(stepLength));
|
|||
|
|
// value1 = QString("搜索长度: ");
|
|||
|
|
// QLineEdit *spinbox3 = new QLineEdit(&dialog);
|
|||
|
|
// form.addRow(value1, spinbox3);
|
|||
|
|
// spinbox3->setText(toString(searchLength));
|
|||
|
|
// value1 = QString("最小相关系数: ");
|
|||
|
|
// QLineEdit *spinbox4 = new QLineEdit(&dialog);
|
|||
|
|
// form.addRow(value1, spinbox4);
|
|||
|
|
// spinbox4->setText(toString(cmins));
|
|||
|
|
|
|||
|
|
// value1 = QString("起始深度: ");
|
|||
|
|
// QLineEdit *spinbox5 = new QLineEdit(&dialog);
|
|||
|
|
// form.addRow(value1, spinbox5);
|
|||
|
|
// spinbox5->setText(toString(stdep));
|
|||
|
|
|
|||
|
|
// value1 = QString("终止深度: ");
|
|||
|
|
// QLineEdit *spinbox6 = new QLineEdit(&dialog);
|
|||
|
|
// form.addRow(value1, spinbox6);
|
|||
|
|
// spinbox6->setText(toString(endep));
|
|||
|
|
// QDialogButtonBox buttonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel,
|
|||
|
|
// Qt::Horizontal, &dialog);
|
|||
|
|
// form.addWidget(&buttonBox);
|
|||
|
|
|
|||
|
|
// QObject::connect(&buttonBox, SIGNAL(accepted()), &dialog, SLOT(accept()));
|
|||
|
|
// QObject::connect(&buttonBox, SIGNAL(rejected()), &dialog, SLOT(reject()));
|
|||
|
|
|
|||
|
|
// dialog.show();
|
|||
|
|
// if (dialog.exec() == QDialog::Accepted) {
|
|||
|
|
// // Do something here
|
|||
|
|
// }
|
|||
|
|
// else return;
|
|||
|
|
// winLength=spinbox1->text().toFloat();
|
|||
|
|
// stepLength=spinbox2->text().toFloat();
|
|||
|
|
// searchLength=spinbox3->text().toFloat();
|
|||
|
|
// cmins=spinbox4->text().toFloat();
|
|||
|
|
// stdep=spinbox5->text().toFloat();
|
|||
|
|
// endep=spinbox6->text().toFloat();
|
|||
|
|
|
|||
|
|
// QString Filename=plog1->GetSlfFileName();
|
|||
|
|
// if(Filename=="") return;
|
|||
|
|
// QString AC=plog1->GetName();
|
|||
|
|
// QString Filename1=plog2->GetSlfFileName();
|
|||
|
|
// QString AC1=plog2->GetName();
|
|||
|
|
|
|||
|
|
// QLibrary Methodlib;
|
|||
|
|
// QString PeModulePath=QCoreApplication::applicationDirPath() + QDir::separator() +"DepPairs.dll";
|
|||
|
|
// Methodlib.setFileName(PeModulePath);
|
|||
|
|
// Methodlib.load();
|
|||
|
|
// typedef int (* LPFNDLLFUNC1)(char *Filename,char *Filename1,char *CurveName1,char *CurveName2,
|
|||
|
|
// float cmins,
|
|||
|
|
// float winLength,float stepLength, float searchLength,
|
|||
|
|
// float *FirstDep,
|
|||
|
|
// float *SecondDep,
|
|||
|
|
// float *corc);
|
|||
|
|
|
|||
|
|
// LPFNDLLFUNC1 AutoCompute;
|
|||
|
|
// QString funname1="AutoComp";
|
|||
|
|
|
|||
|
|
// AutoCompute = (LPFNDLLFUNC1)(Methodlib.resolve(funname1.toStdString().c_str()));//strDLLFun.toStdString().c_str())
|
|||
|
|
|
|||
|
|
// if(!AutoCompute) {
|
|||
|
|
// AppendConsole(pai::log::PAI_ERROR,"GetDepPairs.dll或GetDepPairs.so不存在!");
|
|||
|
|
// Methodlib.unload();
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// float* FirstDep=new float[5000];
|
|||
|
|
// float* SecondDep=new float[5000];
|
|||
|
|
// float* corc=new float[5000];
|
|||
|
|
|
|||
|
|
// *FirstDep=stdep;
|
|||
|
|
// *SecondDep=endep;
|
|||
|
|
|
|||
|
|
// int num=AutoCompute((char *)Filename.toStdString().c_str(),(char *)Filename1.toStdString().c_str(),(char *)AC.toStdString().c_str(),(char *)AC1.toStdString().c_str(),
|
|||
|
|
// cmins,
|
|||
|
|
// winLength,
|
|||
|
|
// stepLength,
|
|||
|
|
// searchLength,
|
|||
|
|
// FirstDep,
|
|||
|
|
// SecondDep,
|
|||
|
|
// corc
|
|||
|
|
// );
|
|||
|
|
// Methodlib.unload();
|
|||
|
|
// pDoc->pLine=NULL;
|
|||
|
|
// slotClearShiftZonePoint();
|
|||
|
|
// QRectF lineRangeRect = getLineRangeRectOSGGLobal(pWellTrack1);
|
|||
|
|
// pDoc->m_mergeLineList.resize(num);
|
|||
|
|
// QVector<QPointF> vecPoints;
|
|||
|
|
// vecPoints.resize(2);
|
|||
|
|
|
|||
|
|
// ::GetProgressBar()->setVisible(true);
|
|||
|
|
// ::GetProgressBar()->setRange(0,num);
|
|||
|
|
// ::GetProgressBarHint()->setVisible(true);
|
|||
|
|
// ::GetProgressBarHint()->setText("开始绘制对比线...");
|
|||
|
|
// QApplication::processEvents();
|
|||
|
|
|
|||
|
|
// for(int i=0;i<num;i++) {
|
|||
|
|
// ::GetProgressBar()->setValue(i);
|
|||
|
|
// CurveLine * pLine = new CurveLine();
|
|||
|
|
// pLine->Init(2,osg::Vec4f(0,0,1,1),SOLIDLINE );
|
|||
|
|
// pLine->SetLeftDepth(FirstDep[i]);
|
|||
|
|
// pLine->SetRightDepth(SecondDep[i]);
|
|||
|
|
// QPointF leftpoint=pLogNode1->GetOSGPixelPoint(FirstDep[i],0.0f);
|
|||
|
|
// QPointF rightpoint=pLogNode2->GetOSGPixelPoint(SecondDep[i],0.0f);
|
|||
|
|
// vecPoints[0]=leftpoint;
|
|||
|
|
// vecPoints[1]=rightpoint;
|
|||
|
|
// pLine->SetPoints(vecPoints);
|
|||
|
|
// pLine->setParentItem(pWellSceneManager->GetRootHUDTopLayer());//m_pQuad);
|
|||
|
|
// pDoc->m_mergeLineList[i]=pLine;
|
|||
|
|
// }
|
|||
|
|
// ::GetProgressBar()->setVisible(false);
|
|||
|
|
// ::GetProgressBarHint()->setVisible(false);
|
|||
|
|
// QApplication::processEvents();
|
|||
|
|
// delete FirstDep;
|
|||
|
|
// delete SecondDep;
|
|||
|
|
// delete corc;
|
|||
|
|
// qsort(pDoc->m_mergeLineList,0,pDoc->m_mergeLineList.size()-1,0);
|
|||
|
|
// if(num>0) {
|
|||
|
|
// CString szBuffer="";
|
|||
|
|
// CString szBuffer1="";
|
|||
|
|
// for(int i=0;i<num;i++)
|
|||
|
|
// {
|
|||
|
|
// float sdep=pDoc->m_mergeLineList[i]->GetLeftDepth();
|
|||
|
|
// float edep=pDoc->m_mergeLineList[i]->GetRightDepth();
|
|||
|
|
// szBuffer1.Format("%g %g\r\n",sdep,edep);
|
|||
|
|
// szBuffer+=szBuffer1;
|
|||
|
|
// }
|
|||
|
|
// CMemRdWt mem;
|
|||
|
|
// if(mem.Open(pDoc->m_RightCurve->GetSlfFileName().toStdString().c_str()))
|
|||
|
|
// {
|
|||
|
|
// WriteShiftMessage(mem,szBuffer,"Create depths Pairs:","depth_inp");
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// UpdateHUD();
|
|||
|
|
// }
|
|||
|
|
// void CQtWindowWellSection::SetCLLDepthShift()
|
|||
|
|
// {
|
|||
|
|
// CQtWellSceneManager *pWellSceneManager = dynamic_cast<CQtWellSceneManager *>( GetSceneManager() );
|
|||
|
|
// CWellSectionWindowDocument* pDoc = dynamic_cast<CWellSectionWindowDocument*>(GetSceneManager()->GetDocument());
|
|||
|
|
// QString jiegu="READCCL";
|
|||
|
|
// CLogIO mem;
|
|||
|
|
// if(!mem.Open(pDoc->m_RightCurve->GetSlfFileName().toStdString().c_str(),CSlfIO::modeRead))
|
|||
|
|
// {
|
|||
|
|
// AfxMessageBox(pDoc->m_RightCurve->GetSlfFileName()+"不存在!");
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// int index=mem.OpenTable(jiegu.toStdString().c_str());
|
|||
|
|
// if(index<0) {
|
|||
|
|
// AfxMessageBox(jiegu+"接箍表不存在!");
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// int count=mem.GetTableRecordCount(index);
|
|||
|
|
// if(!count){
|
|||
|
|
// AfxMessageBox(jiegu+"表记录为空!");
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// int m_nDepPairsNum=pDoc->m_mergeLineList.size();
|
|||
|
|
// if(m_nDepPairsNum<1) {
|
|||
|
|
// AfxMessageBox("请先生成深度对比线!");
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// jiegunum=count;
|
|||
|
|
// if(jiegudtat) delete jiegudtat;
|
|||
|
|
// if(jiegudtatshift) delete jiegudtatshift;
|
|||
|
|
// jiegudtat=new struct jiegutable_struct[count];
|
|||
|
|
// jiegudtatshift=new struct jiegutable_struct[count];
|
|||
|
|
// if(pairno) delete pairno;
|
|||
|
|
// pairno=new int[count];
|
|||
|
|
// float* FirstDep=new float[m_nDepPairsNum+1];
|
|||
|
|
// float* SecondDep=new float[m_nDepPairsNum+1];
|
|||
|
|
// for(int i=0;i<m_nDepPairsNum;i++)
|
|||
|
|
// {
|
|||
|
|
// float sdep=pDoc->m_mergeLineList[i]->GetLeftDepth();
|
|||
|
|
// float edep=pDoc->m_mergeLineList[i]->GetRightDepth();
|
|||
|
|
// FirstDep[i]=sdep;
|
|||
|
|
// SecondDep[i]=edep;
|
|||
|
|
// }
|
|||
|
|
// for(int i=0;i<count;i++)
|
|||
|
|
// {
|
|||
|
|
// pairno[i]=-1;
|
|||
|
|
// mem.ReadTable(index,i+1,&jiegudtat[i]);
|
|||
|
|
// mem.ReadTable(index,i+1,&jiegudtatshift[i]);
|
|||
|
|
// float Depth=jiegudtat[i].sdep;
|
|||
|
|
// float dep=0;
|
|||
|
|
// for(int j=0;j<m_nDepPairsNum-1;j++)
|
|||
|
|
// {
|
|||
|
|
// if(Depth<FirstDep[j]||Depth>FirstDep[j+1]) continue;
|
|||
|
|
// jiegudtatshift[i].sdep=SecondDep[j]+(SecondDep[j+1]-SecondDep[j])/(FirstDep[j+1]-FirstDep[j])*(Depth-FirstDep[j]);
|
|||
|
|
// pairno[i]=j;
|
|||
|
|
// break;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// mem.Close();
|
|||
|
|
// pTDialog->clear();
|
|||
|
|
// QString cs="序号 原接箍点1 校后接箍点1 校后长度 原长度 目标起-止深度\n";
|
|||
|
|
// pTDialog->verticalScrollBar()->setValue(pTDialog->verticalScrollBar()->maximum());
|
|||
|
|
// pTDialog->insertPlainText(cs);
|
|||
|
|
// if(thicks) delete thicks;
|
|||
|
|
// thicks=new float[count+1];
|
|||
|
|
// if(count)thicks[0]=0;
|
|||
|
|
// if(record) delete record;
|
|||
|
|
// record=new int[count+1];
|
|||
|
|
// recordnum=0;
|
|||
|
|
// char buf[500];
|
|||
|
|
// for(int i=0;i<jiegunum;i++)
|
|||
|
|
// {
|
|||
|
|
// if(!i) {
|
|||
|
|
// sprintf(buf,"%d %g %g %g %g %g %g %g\n",i,jiegudtat[i].sdep,jiegudtatshift[i].sdep,0,0,0,0,0);
|
|||
|
|
// continue;
|
|||
|
|
// }
|
|||
|
|
// float thick1=jiegudtatshift[i].sdep-jiegudtatshift[i-1].sdep;
|
|||
|
|
// float thick2=jiegudtat[i].sdep-jiegudtat[i-1].sdep;
|
|||
|
|
// float thick=thick1-thick2;
|
|||
|
|
// thick=(int)(thick*100)/100.0;
|
|||
|
|
// thicks[i]=thick;
|
|||
|
|
// sprintf(buf,"%d %10.3f %10.3f %6.3f %6.3f %6.3f %6.3f %6.3f\n",i,jiegudtat[i].sdep,jiegudtatshift[i].sdep,thick1,thick2,thick,SecondDep[pairno[i]],SecondDep[pairno[i]+1]);
|
|||
|
|
// if(fabsf(thick)-0.2>=0.01&&thick>0) {
|
|||
|
|
// pTDialog->setTextColor(Qt::red);
|
|||
|
|
// record[recordnum]=pairno[i];
|
|||
|
|
// recordnum++;
|
|||
|
|
// }
|
|||
|
|
// else if(fabsf(thick)-0.2>=0.01&&thick<0) {
|
|||
|
|
// pTDialog->setTextColor(Qt::blue);
|
|||
|
|
// record[recordnum]=pairno[i];
|
|||
|
|
// recordnum++;
|
|||
|
|
// }
|
|||
|
|
// else pTDialog->setTextColor(QColor(0,0,0));
|
|||
|
|
// pTDialog->verticalScrollBar()->setValue(pTDialog->verticalScrollBar()->maximum());
|
|||
|
|
// pTDialog->insertPlainText(buf);
|
|||
|
|
// }
|
|||
|
|
// delete []FirstDep;
|
|||
|
|
// delete []SecondDep;
|
|||
|
|
// }
|
|||
|
|
// void CQtWindowWellSection::slotCheckCCLDepthShift()
|
|||
|
|
// {
|
|||
|
|
// QString jiegu="READCCL";
|
|||
|
|
// CQtWellSceneManager *pWellSceneManager = dynamic_cast<CQtWellSceneManager *>( GetSceneManager() );
|
|||
|
|
// CWellSectionWindowDocument* pDoc = dynamic_cast<CWellSectionWindowDocument*>(GetSceneManager()->GetDocument());
|
|||
|
|
// if(!pDoc->m_RightCurve) {
|
|||
|
|
// AfxMessageBox("没有设置校正曲线,请设置!");
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// CLogIO mem;
|
|||
|
|
// if(!mem.Open(pDoc->m_RightCurve->GetSlfFileName().toStdString().c_str(),CSlfIO::modeRead))
|
|||
|
|
// {
|
|||
|
|
// AfxMessageBox(pDoc->m_RightCurve->GetSlfFileName()+"不存在!");
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// int index=mem.OpenTable(jiegu.toStdString().c_str());
|
|||
|
|
// if(index<0) {
|
|||
|
|
// AfxMessageBox(jiegu+"接箍表不存在!");
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// int count=mem.GetTableRecordCount(index);
|
|||
|
|
// if(!count){
|
|||
|
|
// AfxMessageBox(jiegu+"表记录为空!");
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// int m_nDepPairsNum=pDoc->m_mergeLineList.size();
|
|||
|
|
// if(m_nDepPairsNum<1) {
|
|||
|
|
// AfxMessageBox("请先生成深度对比线!");
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// mem.Close();
|
|||
|
|
// QDialog dialog(NULL);
|
|||
|
|
// dialog.setModal(false);
|
|||
|
|
// Qt::WindowFlags flags = dialog.windowFlags();
|
|||
|
|
// flags |= Qt::WindowStaysOnTopHint;
|
|||
|
|
// flags &= ~Qt::WindowContextHelpButtonHint;
|
|||
|
|
// dialog.setWindowFlags(flags);
|
|||
|
|
// dialog.setWindowTitle("异常接箍位置表");
|
|||
|
|
// QVBoxLayout form(&dialog);
|
|||
|
|
// pTDialog = new QTextEdit();//&dialog);
|
|||
|
|
// QSizePolicy policy = dialog.sizePolicy();
|
|||
|
|
// policy.setVerticalPolicy(QSizePolicy::Expanding);
|
|||
|
|
// pTDialog->setSizePolicy(policy);
|
|||
|
|
// QSizePolicy dialogpolicy = pTDialog->sizePolicy();
|
|||
|
|
// policy.setVerticalPolicy(QSizePolicy::Expanding);
|
|||
|
|
// dialog.setSizePolicy(dialogpolicy);
|
|||
|
|
// form.addWidget(pTDialog);
|
|||
|
|
// form.setSpacing(10);
|
|||
|
|
// form.setMargin(10);
|
|||
|
|
// SetCLLDepthShift();
|
|||
|
|
|
|||
|
|
// QDialogButtonBox buttonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel|QDialogButtonBox::YesToAll|QDialogButtonBox::Yes,
|
|||
|
|
// Qt::Horizontal, &dialog);
|
|||
|
|
// form.addWidget(&buttonBox);
|
|||
|
|
// buttonBox.button(QDialogButtonBox::Ok)->setText("自动均分误差");
|
|||
|
|
// buttonBox.button(QDialogButtonBox::Cancel)->setText("人工处理");
|
|||
|
|
// buttonBox.button(QDialogButtonBox::YesToAll)->setText("删除全部偏差校正线");
|
|||
|
|
// buttonBox.button(QDialogButtonBox::Yes)->setText("重新检测");
|
|||
|
|
// QObject::connect(buttonBox.button(QDialogButtonBox::Yes), SIGNAL(clicked()), this, SLOT(slotJieguReFresh()));
|
|||
|
|
// QObject::connect(buttonBox.button(QDialogButtonBox::YesToAll), SIGNAL(clicked()), this, SLOT(slotJieguChangeRun()));
|
|||
|
|
// QObject::connect(buttonBox.button(QDialogButtonBox::Ok), SIGNAL(clicked()), this, SLOT(slotJieguChangeOK()));
|
|||
|
|
// QObject::connect(&buttonBox, SIGNAL(rejected()), &dialog, SLOT(reject()));
|
|||
|
|
|
|||
|
|
// dialog.show();
|
|||
|
|
// dialog.exec();
|
|||
|
|
// pTDialog=NULL;
|
|||
|
|
// if(thicks) delete []thicks;
|
|||
|
|
// thicks=NULL;
|
|||
|
|
// if(jiegudtatshift)delete jiegudtatshift;
|
|||
|
|
// jiegudtatshift=NULL;
|
|||
|
|
// if(jiegudtat)delete jiegudtat;
|
|||
|
|
// jiegudtat=NULL;
|
|||
|
|
|
|||
|
|
// if(pairno) delete pairno;
|
|||
|
|
// pairno=NULL;
|
|||
|
|
// if(record)delete record;
|
|||
|
|
// record=NULL;
|
|||
|
|
// recordnum=0;
|
|||
|
|
// }
|
|||
|
|
// void CQtWindowWellSection::slotJieguReFresh()
|
|||
|
|
// {
|
|||
|
|
// SetCLLDepthShift();
|
|||
|
|
// }
|
|||
|
|
// void CQtWindowWellSection::slotJieguChangeOK()
|
|||
|
|
// {
|
|||
|
|
// CQtWellSceneManager *pWellSceneManager = dynamic_cast<CQtWellSceneManager *>( GetSceneManager() );
|
|||
|
|
// CWellSectionWindowDocument* pDoc = dynamic_cast<CWellSectionWindowDocument*>(GetSceneManager()->GetDocument());
|
|||
|
|
// if(!pDoc) return;
|
|||
|
|
// int m_nDepPairsNum=pDoc->m_mergeLineList.size();
|
|||
|
|
|
|||
|
|
// float* FirstDep=new float[m_nDepPairsNum+1];
|
|||
|
|
// float* SecondDep=new float[m_nDepPairsNum+1];
|
|||
|
|
// for(int i=0;i<m_nDepPairsNum;i++)
|
|||
|
|
// {
|
|||
|
|
// float sdep=pDoc->m_mergeLineList[i]->GetLeftDepth();
|
|||
|
|
// float edep=pDoc->m_mergeLineList[i]->GetRightDepth();
|
|||
|
|
// FirstDep[i]=sdep;
|
|||
|
|
// SecondDep[i]=edep;
|
|||
|
|
// }
|
|||
|
|
// int j=0;
|
|||
|
|
// int *no=new int[jiegunum];
|
|||
|
|
// memset(no,0,sizeof(int)*jiegunum);
|
|||
|
|
// for(int i=0;i<jiegunum;i++)
|
|||
|
|
// {
|
|||
|
|
// if(fabsf(thicks[i])-0.20>=0.01) {
|
|||
|
|
// no[j]=i;
|
|||
|
|
// j++;
|
|||
|
|
// }
|
|||
|
|
// else {
|
|||
|
|
// if(j==1) {
|
|||
|
|
// j=pairno[no[0]];
|
|||
|
|
// if(thicks[no[0]]<0) {
|
|||
|
|
// int flg=0;
|
|||
|
|
// if(pairno[no[0]-1]==j-1) {
|
|||
|
|
// if(thicks[no[0]-1]>=0.1) {
|
|||
|
|
// SecondDep[j]-=(-thicks[no[0]]+thicks[no[0]-1])/2;
|
|||
|
|
// flg=1;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// if(!flg)SecondDep[j]-=thicks[no[0]]/2;
|
|||
|
|
// float Depth=jiegudtat[i].sdep;
|
|||
|
|
// // SecondDep[j]=SecondDep[j+1]+(FirstDep[j]-FirstDep[j+1])*(Depth-0.2-SecondDep[j+1])/(Depth-FirstDep[j+1]);
|
|||
|
|
// }
|
|||
|
|
// else {
|
|||
|
|
// if(SecondDep[j+1]<FirstDep[j+1]) {
|
|||
|
|
// SecondDep[j]-=0.2;
|
|||
|
|
// SecondDep[j+1]-=0.2;
|
|||
|
|
// }
|
|||
|
|
// else {
|
|||
|
|
// SecondDep[j]+=0.2;//thicks[0]/2;
|
|||
|
|
// SecondDep[j+1]+=0.2;//thicks[0]/2;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// else if(j==2){
|
|||
|
|
// if(thicks[0]*thicks[1]>0) {
|
|||
|
|
// SecondDep[pairno[abs(no[0])]]+=thicks[abs(no[0])]/2;
|
|||
|
|
// SecondDep[pairno[abs(no[1])]+1]-=thicks[abs(no[1])]/2;
|
|||
|
|
// }
|
|||
|
|
// else if(thicks[0]*thicks[1]<0) {
|
|||
|
|
// SecondDep[pairno[abs(no[1])]]-=thicks[abs(no[1])]/2;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// j=0;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// delete []no;
|
|||
|
|
// CVecNodeBuilder *pLogNode1 = dynamic_cast<CVecNodeBuilder *>( GetSceneManager()->GetBuilder( pDoc->m_LeftCurve->GetID() ) );
|
|||
|
|
// CVecNodeBuilder *pLogNode2 = dynamic_cast<CVecNodeBuilder *>( GetSceneManager()->GetBuilder( pDoc->m_RightCurve->GetID() ) );
|
|||
|
|
// CObjWellLogTrack*pLogTrack1=dynamic_cast<CObjWellLogTrack *>(pDoc->m_LeftCurve->GetParent());
|
|||
|
|
// CObjWellTrack*pWellTrack1=NULL;
|
|||
|
|
// if(pLogTrack1&&pLogNode1&&pLogNode2) {
|
|||
|
|
// pWellTrack1 = pLogTrack1->GetWellTrack();
|
|||
|
|
// pDoc->pLine=NULL;
|
|||
|
|
// slotClearShiftZonePoint();
|
|||
|
|
// QRectF lineRangeRect = getLineRangeRectOSGGLobal(pWellTrack1);
|
|||
|
|
// pDoc->m_mergeLineList.resize(m_nDepPairsNum);
|
|||
|
|
// for(int i=0;i<m_nDepPairsNum;i++) {
|
|||
|
|
// CurveLine * pLine = new CurveLine();
|
|||
|
|
// pLine->Init(2,osg::Vec4f(0,0,1,1),SOLIDLINE );
|
|||
|
|
// pLine->SetLeftDepth(FirstDep[i]);
|
|||
|
|
// pLine->SetRightDepth(SecondDep[i]);
|
|||
|
|
// QVector<QPointF> vecPoints;
|
|||
|
|
// QPointF leftpoint=pLogNode1->GetOSGPixelPoint(FirstDep[i],0.0f);
|
|||
|
|
// QPointF rightpoint=pLogNode2->GetOSGPixelPoint(SecondDep[i],0.0f);
|
|||
|
|
// vecPoints << leftpoint <<rightpoint;
|
|||
|
|
// pLine->SetPoints(vecPoints);
|
|||
|
|
// pLine->setParentItem(pWellSceneManager->GetRootHUDTopLayer());//m_pQuad);
|
|||
|
|
// pDoc->m_mergeLineList[i]=pLine;
|
|||
|
|
// }
|
|||
|
|
// qsort(pDoc->m_mergeLineList,0,pDoc->m_mergeLineList.size()-1,0);
|
|||
|
|
// UpdateHUD();
|
|||
|
|
// }
|
|||
|
|
// // AfxMessageBox("修正完成!");
|
|||
|
|
// SetCLLDepthShift();
|
|||
|
|
// }
|
|||
|
|
// void CQtWindowWellSection::slotJieguChangeRun()
|
|||
|
|
// {
|
|||
|
|
// CQtWellSceneManager *pWellSceneManager = dynamic_cast<CQtWellSceneManager *>( GetSceneManager() );
|
|||
|
|
// CWellSectionWindowDocument* pDoc = dynamic_cast<CWellSectionWindowDocument*>(GetSceneManager()->GetDocument());
|
|||
|
|
// if(!pDoc) return;
|
|||
|
|
// for(int i=recordnum-1;i>=0;i--)
|
|||
|
|
// {
|
|||
|
|
// CurveLine*pLine=pDoc->m_mergeLineList.at(record[i]);
|
|||
|
|
// if(pLine) {
|
|||
|
|
// pLine->setParentItem(NULL);
|
|||
|
|
// delete pLine;
|
|||
|
|
// }
|
|||
|
|
// pDoc->m_mergeLineList.remove(record[i]);
|
|||
|
|
// }
|
|||
|
|
// delete record;
|
|||
|
|
// record=NULL;
|
|||
|
|
// recordnum=0;
|
|||
|
|
// UpdateHUD();
|
|||
|
|
// SetCLLDepthShift();
|
|||
|
|
// // AfxMessageBox("删除完成!");
|
|||
|
|
// }
|
|||
|
|
// void CQtWindowWellSection::slotExecuteDepthShifting()
|
|||
|
|
// {
|
|||
|
|
// CQtWellSceneManager *pWellSceneManager = dynamic_cast<CQtWellSceneManager *>( GetSceneManager() );
|
|||
|
|
// CWellSectionWindowDocument* pDoc = dynamic_cast<CWellSectionWindowDocument*>(GetSceneManager()->GetDocument());
|
|||
|
|
// if(!pDoc->m_RightCurve) {
|
|||
|
|
// AfxMessageBox("没有设置校正曲线,请设置!");
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// int itemCount =pDoc->m_mergeLineList.size() ;
|
|||
|
|
// int m_nDepPairsNum=itemCount;
|
|||
|
|
// QList<CObjWellLog *> m_ShiftCurves;
|
|||
|
|
// if(pDoc->m_RightCurve) {
|
|||
|
|
// m_ShiftCurves.append(pDoc->m_RightCurve);
|
|||
|
|
// }
|
|||
|
|
// else {
|
|||
|
|
// CBaseObject *pCurrentObject = CObjProject::GetObjectByID(pWellSceneManager->GetCurrentPickObjectID());
|
|||
|
|
// CObjWellLog *pLog = dynamic_cast<CObjWellLog *>( pCurrentObject );
|
|||
|
|
// if(pLog&&pLog->GetShiftOffset()) {
|
|||
|
|
// m_ShiftCurves.append(pLog);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// m_ShiftCurves.append(pDoc->m_ShiftCurves);
|
|||
|
|
// if(m_ShiftCurves.size()<1) return;
|
|||
|
|
// QList<QString> names;
|
|||
|
|
// QList<CObjWellLog *>logs;
|
|||
|
|
// foreach(CObjWellLog *pLogt,m_ShiftCurves)
|
|||
|
|
// {
|
|||
|
|
// if(!pLogt) continue;
|
|||
|
|
// QString slf=pLogt->GetSlfFileName()+pLogt->GetName();
|
|||
|
|
// slf.replace("\\","/");
|
|||
|
|
// if(names.indexOf(slf,0)>-1) continue;
|
|||
|
|
// names.append(slf);
|
|||
|
|
// logs.append(pLogt);
|
|||
|
|
// }
|
|||
|
|
// m_ShiftCurves=logs;
|
|||
|
|
// logs.clear();
|
|||
|
|
// qsort(pDoc->m_mergeLineList,0,m_nDepPairsNum-1,0);
|
|||
|
|
// if(itemCount==1) {
|
|||
|
|
// int flag = QMessageBox::information(NULL,"确认","确认要执行深度平移校正吗?",QMessageBox::Yes,QMessageBox::No);
|
|||
|
|
// if(flag==QMessageBox::No) return;
|
|||
|
|
// for(int i=0;i<m_ShiftCurves.size();i++) {
|
|||
|
|
// LayerInfo lay;
|
|||
|
|
// CObjWellLog *pLog=m_ShiftCurves[i];
|
|||
|
|
// if(!pLog) continue;
|
|||
|
|
// lay.top=pLog->GetTopDepth();
|
|||
|
|
// lay.bottom=pLog->GetBottomDepth();
|
|||
|
|
// pLog->m_ChangeNo=0;
|
|||
|
|
// pLog->m_vLayers.clear();
|
|||
|
|
// pLog->m_vLayers.push_back(lay);
|
|||
|
|
// logs.append(pLog);
|
|||
|
|
// }
|
|||
|
|
// CDrawCurveCommand * pDrawCurveCommand = new CDrawCurveCommand(GetSceneManager(),logs);
|
|||
|
|
// GetSceneManager()->GetUndoStack()->push(pDrawCurveCommand);
|
|||
|
|
// float m_MoveDep=pDoc->m_mergeLineList[0]->GetLeftDepth()-pDoc->m_mergeLineList[0]->GetRightDepth();
|
|||
|
|
// for(int i=0;i<m_ShiftCurves.size();i++) {
|
|||
|
|
// CObjWellLog *plog2=m_ShiftCurves[i];
|
|||
|
|
// if(!plog2) continue;
|
|||
|
|
// QString Filename1=plog2->GetSlfFileName();
|
|||
|
|
// CMemRdWt mem;
|
|||
|
|
// char showname[200];
|
|||
|
|
// if(mem.Open(Filename1.toStdString().c_str())) {
|
|||
|
|
// QString curve=m_ShiftCurves[i]->GetName();
|
|||
|
|
// sprintf(showname,"正在校正%s...",curve.toStdString().c_str());
|
|||
|
|
// int iIndex=mem.FindObjectName((char *)curve.toStdString().c_str());
|
|||
|
|
// if (iIndex >= 0)
|
|||
|
|
// {
|
|||
|
|
// CString szBuffer="";
|
|||
|
|
// szBuffer=QString::number(m_MoveDep,'f',3)+"\r\n";
|
|||
|
|
// WriteShiftMessage(mem,szBuffer,curve);
|
|||
|
|
// mem.CorrectObjectDepth(iIndex,m_MoveDep);
|
|||
|
|
// mem.Close();
|
|||
|
|
// plog2->isLoad=false;
|
|||
|
|
// plog2->LoadFromSLF();
|
|||
|
|
// }
|
|||
|
|
// else {
|
|||
|
|
// mem.Close();
|
|||
|
|
// plog2->SetShiftOffset(0.0);
|
|||
|
|
// plog2->SetShiftBottomDepth(-9999.0);
|
|||
|
|
// plog2->SetShiftTopDepth(-9999.0);
|
|||
|
|
// plog2->MoveShift(plog2->GetTopDepth(),plog2->GetBottomDepth(),m_MoveDep);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// if(pDoc->m_RightCurve) {
|
|||
|
|
// pDoc->m_RightCurve->SetShiftOffset(0.0);
|
|||
|
|
// pDoc->m_RightCurve->SetShiftBottomDepth(-9999.0);
|
|||
|
|
// pDoc->m_RightCurve->SetShiftTopDepth(-9999.0);
|
|||
|
|
// pDoc->m_RightCurve->isLoad=false;
|
|||
|
|
// pDoc->m_RightCurve->LoadFromSLF();
|
|||
|
|
// }
|
|||
|
|
// pDoc->pLine=NULL;
|
|||
|
|
// pDrawCurveCommand->SetXValue();
|
|||
|
|
// for(int i=0;i<m_ShiftCurves.size();i++) {
|
|||
|
|
// CObjWellLog *plog2=m_ShiftCurves[i];
|
|||
|
|
// if(!plog2) continue;
|
|||
|
|
// plog2->m_vLayers.clear();
|
|||
|
|
// }
|
|||
|
|
// m_pSceneManager->SetDirtyUIElement(true,true);
|
|||
|
|
// CVecViewCommand &viewCommand = m_pSceneManager->GetViewCommand();
|
|||
|
|
|
|||
|
|
// QAction *pUndoAction = viewCommand.GetAction(GetCmdID_UndoCommand());
|
|||
|
|
// pUndoAction->setEnabled(m_pSceneManager->GetUndoStack()->canUndo());
|
|||
|
|
|
|||
|
|
// QAction *pRedoAction = viewCommand.GetAction(GetCmdID_RedoCommand());
|
|||
|
|
// pRedoAction->setEnabled(m_pSceneManager->GetUndoStack()->canRedo());
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// else if(itemCount==3) {
|
|||
|
|
// QMessageBox box(QMessageBox::Warning,"确认","选择校深方式:");
|
|||
|
|
// box.setStandardButtons (QMessageBox::Yes|QMessageBox::No|QMessageBox::Cancel);
|
|||
|
|
// box.setButtonText(QMessageBox::Yes,QString("压缩拉伸"));
|
|||
|
|
// box.setButtonText (QMessageBox::No,QString("平移"));
|
|||
|
|
// box.setButtonText (QMessageBox::Cancel,QString("放弃"));
|
|||
|
|
// int ret=box.exec();
|
|||
|
|
// if(ret==QMessageBox::Cancel) return;
|
|||
|
|
// if(ret==QMessageBox::No) {
|
|||
|
|
// QList<CObjWellLog *>logs;
|
|||
|
|
// for(int i=0;i<m_ShiftCurves.size();i++) {
|
|||
|
|
// LayerInfo lay;
|
|||
|
|
// CObjWellLog *pLog=m_ShiftCurves[i];
|
|||
|
|
// if(!pLog) continue;
|
|||
|
|
// lay.top=pLog->GetTopDepth();
|
|||
|
|
// lay.bottom=pLog->GetBottomDepth();
|
|||
|
|
// pLog->m_ChangeNo=0;
|
|||
|
|
// pLog->m_vLayers.clear();
|
|||
|
|
// pLog->m_vLayers.push_back(lay);
|
|||
|
|
// logs.append(pLog);
|
|||
|
|
// }
|
|||
|
|
// CDrawCurveCommand * pDrawCurveCommand = new CDrawCurveCommand(GetSceneManager(),logs);
|
|||
|
|
// GetSceneManager()->GetUndoStack()->push(pDrawCurveCommand);
|
|||
|
|
// float sdep=pDoc->m_mergeLineList[0]->GetLeftDepth();
|
|||
|
|
// float edep=pDoc->m_mergeLineList[2]->GetLeftDepth();
|
|||
|
|
// float m_MoveDep=pDoc->m_mergeLineList[1]->GetLeftDepth()-pDoc->m_mergeLineList[1]->GetRightDepth();
|
|||
|
|
// for(int i=0;i<m_ShiftCurves.size();i++) {
|
|||
|
|
// CObjWellLog *plog2=m_ShiftCurves[i];
|
|||
|
|
// if(!plog2) continue;
|
|||
|
|
// QString Filename1=plog2->GetSlfFileName();
|
|||
|
|
// CMemRdWt mem;
|
|||
|
|
// char showname[200];
|
|||
|
|
// if(mem.Open(Filename1.toStdString().c_str())) {
|
|||
|
|
// QString curve=m_ShiftCurves[i]->GetName();
|
|||
|
|
// sprintf(showname,"正在校正%s...",curve.toStdString().c_str());
|
|||
|
|
// int iIndex=mem.OpenChannel(curve.toStdString().c_str());
|
|||
|
|
// if (iIndex >= 0)
|
|||
|
|
// {
|
|||
|
|
// Slf_CHANNEL mc;
|
|||
|
|
// mem.GetChannelInfo(iIndex,&mc);
|
|||
|
|
// if(m_MoveDep) {
|
|||
|
|
// CString szBuffer="";
|
|||
|
|
// szBuffer.Format("%10.3f %10.3f %10.3f\r\n");
|
|||
|
|
// WriteShiftMessage(mem,szBuffer,curve);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// mem.Close();
|
|||
|
|
// plog2->SetShiftOffset(0.0);
|
|||
|
|
// plog2->SetShiftBottomDepth(-9999.0);
|
|||
|
|
// plog2->SetShiftTopDepth(-9999.0);
|
|||
|
|
// plog2->MoveShift(sdep,edep,m_MoveDep);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// if(pDoc->m_RightCurve) {
|
|||
|
|
// pDoc->m_RightCurve->SetShiftOffset(0.0);
|
|||
|
|
// pDoc->m_RightCurve->SetShiftBottomDepth(-9999);
|
|||
|
|
// pDoc->m_RightCurve->SetShiftTopDepth(-9999);
|
|||
|
|
// pDoc->m_RightCurve->isLoad=false;
|
|||
|
|
// pDoc->m_RightCurve->LoadFromSLF();
|
|||
|
|
// }
|
|||
|
|
// pDoc->pLine=NULL;
|
|||
|
|
// pDrawCurveCommand->SetXValue();
|
|||
|
|
// for(int i=0;i<m_ShiftCurves.size();i++) {
|
|||
|
|
// CObjWellLog *plog2=m_ShiftCurves[i];
|
|||
|
|
// if(!plog2) continue;
|
|||
|
|
// plog2->m_vLayers.clear();
|
|||
|
|
// }
|
|||
|
|
// m_pSceneManager->SetDirtyUIElement(true,true);
|
|||
|
|
// CVecViewCommand &viewCommand = m_pSceneManager->GetViewCommand();
|
|||
|
|
|
|||
|
|
// QAction *pUndoAction = viewCommand.GetAction(GetCmdID_UndoCommand());
|
|||
|
|
// pUndoAction->setEnabled(m_pSceneManager->GetUndoStack()->canUndo());
|
|||
|
|
|
|||
|
|
// QAction *pRedoAction = viewCommand.GetAction(GetCmdID_RedoCommand());
|
|||
|
|
// pRedoAction->setEnabled(m_pSceneManager->GetUndoStack()->canRedo());
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// else {
|
|||
|
|
// if(m_nDepPairsNum<1&&pDoc->m_RightCurve->GetShiftOffset()==0)
|
|||
|
|
// {
|
|||
|
|
// AfxMessageBox("无校正深度线或深度移动量!");
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// int flag = QMessageBox::information(NULL,"确认","确认要执行深度校正吗?",QMessageBox::Yes,QMessageBox::No);
|
|||
|
|
// if(flag != QMessageBox::Yes) return;
|
|||
|
|
// }
|
|||
|
|
// for(int i=0;i<m_ShiftCurves.size();i++) {
|
|||
|
|
// LayerInfo lay;
|
|||
|
|
// CObjWellLog *pLog=m_ShiftCurves[i];
|
|||
|
|
// if(!pLog) continue;
|
|||
|
|
// lay.top=pLog->GetTopDepth();
|
|||
|
|
// lay.bottom=pLog->GetBottomDepth();
|
|||
|
|
// pLog->m_ChangeNo=0;
|
|||
|
|
// pLog->m_vLayers.clear();
|
|||
|
|
// pLog->m_vLayers.push_back(lay);
|
|||
|
|
// logs.append(pLog);
|
|||
|
|
// }
|
|||
|
|
// CDrawCurveCommand * pDrawCurveCommand = new CDrawCurveCommand(GetSceneManager(),logs);
|
|||
|
|
// GetSceneManager()->GetUndoStack()->push(pDrawCurveCommand);
|
|||
|
|
// DepthProgress MyDepthProgress;
|
|||
|
|
// MyDepthProgress.CreatProgress(0,m_ShiftCurves.size(),"开始校正...");
|
|||
|
|
// float m_MoveDep=pDoc->m_RightCurve->GetShiftOffset();
|
|||
|
|
// CString szBuffer="";
|
|||
|
|
// if(m_nDepPairsNum>0) {
|
|||
|
|
// CString szBuffer1="";
|
|||
|
|
// for(int i=0;i<m_nDepPairsNum;i++)
|
|||
|
|
// {
|
|||
|
|
// float sdep=pDoc->m_mergeLineList[i]->GetLeftDepth();
|
|||
|
|
// float edep=pDoc->m_mergeLineList[i]->GetRightDepth()+m_MoveDep;
|
|||
|
|
// szBuffer1.Format("%g %g\r\n",sdep,edep);
|
|||
|
|
// szBuffer+=szBuffer1;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// else if(m_MoveDep) {
|
|||
|
|
// szBuffer=QString::number(-m_MoveDep,'f',3)+"\r\n";
|
|||
|
|
// }
|
|||
|
|
// for(int i=0;i<m_ShiftCurves.size();i++) {
|
|||
|
|
// CObjWellLog *plog2=m_ShiftCurves[i];
|
|||
|
|
// if(!plog2) continue;
|
|||
|
|
// plog2->SetShiftOffset(0.0);
|
|||
|
|
// plog2->SetShiftBottomDepth(-9999.0);
|
|||
|
|
// plog2->SetShiftTopDepth(-9999.0);
|
|||
|
|
// QString curve=plog2->GetName();
|
|||
|
|
// QString Filename1=plog2->GetSlfFileName();
|
|||
|
|
// CMemRdWt mem;
|
|||
|
|
// char showname[200];
|
|||
|
|
// sprintf(showname,"正在校正%s...",curve.toStdString().c_str());
|
|||
|
|
// MyDepthProgress.SetShowName(showname);
|
|||
|
|
// MyDepthProgress.SetDepth(i+1);
|
|||
|
|
// if(mem.Open(Filename1.toStdString().c_str()))
|
|||
|
|
// {
|
|||
|
|
// int iIndex=mem.FindObjectName((char *)curve.toStdString().c_str());
|
|||
|
|
// if (iIndex >= 0) {
|
|||
|
|
// WriteShiftMessage(mem,szBuffer,curve,"depth_inp");
|
|||
|
|
// WriteShiftMessage(mem,szBuffer,curve);
|
|||
|
|
// if(m_MoveDep&&!m_nDepPairsNum) {
|
|||
|
|
// mem.CorrectObjectDepth(iIndex,-m_MoveDep);
|
|||
|
|
// }
|
|||
|
|
// else if(m_nDepPairsNum){
|
|||
|
|
// mem.EShiftDepth((char *)curve.toStdString().c_str());
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// mem.Close();
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// MyDepthProgress.DelProgress();
|
|||
|
|
// if(pDoc->m_RightCurve) {
|
|||
|
|
// pDoc->m_RightCurve->SetShiftOffset(0.0);
|
|||
|
|
// pDoc->m_RightCurve->SetShiftBottomDepth(-9999.0);
|
|||
|
|
// pDoc->m_RightCurve->SetShiftTopDepth(-9999.0);
|
|||
|
|
// }
|
|||
|
|
// pDoc->pLine=NULL;
|
|||
|
|
// /*
|
|||
|
|
// for(int i=0;i<m_ShiftCurves.size();i++) {
|
|||
|
|
// CObjWellLog *plog2=m_ShiftCurves[i];
|
|||
|
|
// if(!plog2) continue;
|
|||
|
|
// plog2->isLoad=true;
|
|||
|
|
// GetObjectEvent().OnDeAttchData(plog2->GetSlfFileName(),plog2->GetName());
|
|||
|
|
// }
|
|||
|
|
// */
|
|||
|
|
// for(int i=0;i<m_ShiftCurves.size();i++) {
|
|||
|
|
// CObjWellLog *plog2=m_ShiftCurves[i];
|
|||
|
|
// if(!plog2) continue;
|
|||
|
|
// plog2->isLoad=false;
|
|||
|
|
// plog2->LoadFromSLF();
|
|||
|
|
// }
|
|||
|
|
// pDrawCurveCommand->SetXValue();
|
|||
|
|
// for(int i=0;i<m_ShiftCurves.size();i++) {
|
|||
|
|
// CObjWellLog *plog2=m_ShiftCurves[i];
|
|||
|
|
// if(!plog2) continue;
|
|||
|
|
// plog2->m_vLayers.clear();
|
|||
|
|
// }
|
|||
|
|
// m_pSceneManager->SetDirtyUIElement(true,true);
|
|||
|
|
// CVecViewCommand &viewCommand = m_pSceneManager->GetViewCommand();
|
|||
|
|
|
|||
|
|
// QAction *pUndoAction = viewCommand.GetAction(GetCmdID_UndoCommand());
|
|||
|
|
// pUndoAction->setEnabled(m_pSceneManager->GetUndoStack()->canUndo());
|
|||
|
|
|
|||
|
|
// QAction *pRedoAction = viewCommand.GetAction(GetCmdID_RedoCommand());
|
|||
|
|
// pRedoAction->setEnabled(m_pSceneManager->GetUndoStack()->canRedo());
|
|||
|
|
// }
|
|||
|
|
// void CQtWindowWellSection::slotDepthScrMerge()
|
|||
|
|
// {
|
|||
|
|
// CQtWellSceneManager *pWellSceneManager = dynamic_cast<CQtWellSceneManager *>( GetSceneManager() );
|
|||
|
|
// CWellSectionWindowDocument *pDoc = pWellSceneManager->GetWellSectionGeomtry().GetSecionWindowDocument();
|
|||
|
|
// int pointnum=pDoc->m_mergeLineList.size();
|
|||
|
|
// if(pointnum<1) {
|
|||
|
|
// AfxMessageBox("曲线拼接深度点不存在,无法拼接!\n请先设置拼接深度点。");
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// if(pointnum>2) {
|
|||
|
|
// AfxMessageBox("曲线拼接深度点太多,最多可设置2点!\n请重新设置拼接深度点。");
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// if(pDoc->m_LeftCurve&&pDoc->m_RightCurve) {
|
|||
|
|
// float SourSdep=0;
|
|||
|
|
// float SourEdep=0;
|
|||
|
|
// float DectSdep=0;
|
|||
|
|
// if(pointnum==1) {
|
|||
|
|
// QMessageBox box(QMessageBox::Warning,"提示","拼接深度点仅有1个,请您选择拼接部位");
|
|||
|
|
// box.setStandardButtons (QMessageBox::Yes|QMessageBox::No|QMessageBox::Cancel);
|
|||
|
|
// box.setButtonText(QMessageBox::Yes,QString("拼接上段"));
|
|||
|
|
// box.setButtonText(QMessageBox::No,QString("拼接下段"));
|
|||
|
|
// box.setButtonText(QMessageBox::Cancel,QString("放弃"));
|
|||
|
|
// int flag=box.exec();//QMessageBox::information(NULL,"敬告",pwelllog->GetName()+mess,QMessageBox::Yes,QMessageBox::No,QMessageBox::Cancel);
|
|||
|
|
// if(flag==QMessageBox::Yes) {
|
|||
|
|
// pDoc->isScr=flag;
|
|||
|
|
// SourSdep=pDoc->m_RightCurve->GetTopDepth();
|
|||
|
|
// SourEdep=pDoc->m_mergeLineList[0]->GetLeftDepth();
|
|||
|
|
// DectSdep=SourSdep;
|
|||
|
|
// }
|
|||
|
|
// else if(flag==QMessageBox::No) {
|
|||
|
|
// pDoc->isScr=flag;
|
|||
|
|
// SourSdep=pDoc->m_mergeLineList[0]->GetLeftDepth();
|
|||
|
|
// SourEdep=pDoc->m_RightCurve->GetBottomDepth();
|
|||
|
|
// DectSdep=pDoc->m_mergeLineList[0]->GetLeftDepth();
|
|||
|
|
// }
|
|||
|
|
// else return;
|
|||
|
|
// }
|
|||
|
|
// else if(pointnum==2) {
|
|||
|
|
// SourSdep=pDoc->m_mergeLineList[0]->GetLeftDepth()+pDoc->m_RightCurve->GetShiftOffset();
|
|||
|
|
// SourEdep=pDoc->m_mergeLineList[1]->GetLeftDepth()+pDoc->m_RightCurve->GetShiftOffset();
|
|||
|
|
// DectSdep=pDoc->m_mergeLineList[0]->GetLeftDepth();
|
|||
|
|
// pDoc->isScr=1;
|
|||
|
|
// }
|
|||
|
|
// else {
|
|||
|
|
// pDoc->isScr=1;
|
|||
|
|
// }
|
|||
|
|
// QString name2=pDoc->m_RightCurve->GetName();
|
|||
|
|
// QString name1=pDoc->m_LeftCurve->GetName();
|
|||
|
|
// if(pDoc->m_RightCurve->m_Rlev==0) return;
|
|||
|
|
// int size=(SourEdep-SourSdep)/pDoc->m_RightCurve->m_Rlev+1.5;
|
|||
|
|
// LayerInfo lay;
|
|||
|
|
// lay.top=DectSdep;
|
|||
|
|
// lay.bottom=DectSdep+SourEdep-SourSdep;
|
|||
|
|
// PFLOATPROPERTY &vProperty = pDoc->m_RightCurve->GetProperty();
|
|||
|
|
// PFLOATPROPERTY &vMD = pDoc->m_RightCurve->GetMD();
|
|||
|
|
// if(vProperty.size()) {
|
|||
|
|
// size=vProperty.size();
|
|||
|
|
// int size1=(SourEdep-SourSdep)/pDoc->m_LeftCurve->GetRlev()+1.5;
|
|||
|
|
// if(size1>0) {
|
|||
|
|
// lay.m_vXData.reserve(size1);
|
|||
|
|
// lay.rlev=pDoc->m_LeftCurve->GetRlev();
|
|||
|
|
// float dep=0;
|
|||
|
|
// for(int i=0;i<size1;i++) {
|
|||
|
|
// dep=SourSdep+i*pDoc->m_LeftCurve->GetRlev();
|
|||
|
|
// lay.m_vXData.push_back(pDoc->m_RightCurve->GetData(dep));
|
|||
|
|
// }
|
|||
|
|
// pDoc->m_LeftCurve->m_vLayers.clear();
|
|||
|
|
// pDoc->m_LeftCurve->m_ChangeNo=0;
|
|||
|
|
// pDoc->m_LeftCurve->m_vLayers.push_back(lay);
|
|||
|
|
// pDoc->m_LeftCurve->m_ChangeNo++;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// pWellSceneManager->SetDirtyUIElement(true,true);
|
|||
|
|
// }
|
|||
|
|
// else if(!pDoc->m_LeftCurve&&!pDoc->m_RightCurve){
|
|||
|
|
// AfxMessageBox("必须设置目标曲线和源曲线!");
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// else if(!pDoc->m_LeftCurve)
|
|||
|
|
// {
|
|||
|
|
// AfxMessageBox("必须设置目标曲线!");
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// else if(!pDoc->m_RightCurve)
|
|||
|
|
// {
|
|||
|
|
// AfxMessageBox("必须设置源曲线!");
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// void CQtWindowWellSection::slotDepthMerge()
|
|||
|
|
// {
|
|||
|
|
// CQtWellSceneManager *pWellSceneManager = dynamic_cast<CQtWellSceneManager *>( GetSceneManager() );
|
|||
|
|
// CWellSectionWindowDocument *pDoc = pWellSceneManager->GetWellSectionGeomtry().GetSecionWindowDocument();
|
|||
|
|
// int pointnum=pDoc->m_mergeLineList.size();
|
|||
|
|
// if(pointnum<1) {
|
|||
|
|
// AfxMessageBox("曲线拼接深度点不存在,无法拼接!\n请先设置拼接深度点。");
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// if(pointnum>2) {
|
|||
|
|
// AfxMessageBox("曲线拼接深度点太多,最多可设置2点!\n请重新设置拼接深度点。");
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// if(pDoc->m_LeftCurve&&pDoc->m_RightCurve)
|
|||
|
|
// {
|
|||
|
|
// float SourSdep=0;
|
|||
|
|
// float SourEdep=0;
|
|||
|
|
// float DectSdep=0;
|
|||
|
|
// if(pointnum==1) {
|
|||
|
|
// int flag=pDoc->isScr;
|
|||
|
|
// if(!pDoc->isScr) {
|
|||
|
|
// QMessageBox box(QMessageBox::Warning,"提示","拼接深度点仅有1个,请您选择拼接部位");
|
|||
|
|
// box.setStandardButtons (QMessageBox::Yes|QMessageBox::No|QMessageBox::Cancel);
|
|||
|
|
// box.setButtonText(QMessageBox::Yes,QString("拼接上段"));
|
|||
|
|
// box.setButtonText(QMessageBox::No,QString("拼接下段"));
|
|||
|
|
// box.setButtonText(QMessageBox::Cancel,QString("放弃"));
|
|||
|
|
// flag=box.exec();//QMessageBox::information(NULL,"敬告",pwelllog->GetName()+mess,QMessageBox::Yes,QMessageBox::No,QMessageBox::Cancel);
|
|||
|
|
// }
|
|||
|
|
// pDoc->isScr=0;
|
|||
|
|
// if(flag==QMessageBox::Yes) {
|
|||
|
|
// SourSdep=pDoc->m_RightCurve->GetTopDepth();
|
|||
|
|
// SourEdep=pDoc->m_mergeLineList[0]->GetLeftDepth();
|
|||
|
|
// DectSdep=SourSdep;
|
|||
|
|
// }
|
|||
|
|
// else if(flag==QMessageBox::No) {
|
|||
|
|
// DectSdep=pDoc->m_mergeLineList[0]->GetLeftDepth();
|
|||
|
|
// SourEdep=pDoc->m_RightCurve->GetBottomDepth();
|
|||
|
|
// SourSdep=pDoc->m_mergeLineList[0]->GetRightDepth();
|
|||
|
|
// }
|
|||
|
|
// else return;
|
|||
|
|
// }
|
|||
|
|
// else if(pointnum==2) {
|
|||
|
|
// SourSdep=pDoc->m_mergeLineList[0]->GetLeftDepth()+pDoc->m_RightCurve->GetShiftOffset();
|
|||
|
|
// SourEdep=pDoc->m_mergeLineList[1]->GetLeftDepth()+pDoc->m_RightCurve->GetShiftOffset();
|
|||
|
|
// DectSdep=pDoc->m_mergeLineList[0]->GetLeftDepth();
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// QString name2=pDoc->m_RightCurve->GetName();
|
|||
|
|
// QString name1=pDoc->m_LeftCurve->GetName();
|
|||
|
|
// QList<CObjWellLog*> logs;
|
|||
|
|
// CObjWelllogRound* pround =pDoc->m_LeftCurve->GetWelllogRound();
|
|||
|
|
// if(!pround) {
|
|||
|
|
// AfxMessageBox("无目标井!");
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// QList<CObjWellLog*>m_ShiftCurves;
|
|||
|
|
// m_ShiftCurves.push_back(pDoc->m_LeftCurve);
|
|||
|
|
// m_ShiftCurves.append(pDoc->m_ShiftCurves);
|
|||
|
|
// for(int i=0;i<m_ShiftCurves.size();i++)
|
|||
|
|
// {
|
|||
|
|
// if(!m_ShiftCurves[i]) return;
|
|||
|
|
// CObjWellLog *pLogs=dynamic_cast<CObjWellLog *>(m_ShiftCurves[i]);
|
|||
|
|
// if(!pLogs) continue;
|
|||
|
|
// LayerInfo lay;
|
|||
|
|
// lay.top=SourSdep;
|
|||
|
|
// lay.bottom=SourEdep;
|
|||
|
|
// pLogs->m_ChangeNo=0;
|
|||
|
|
// pLogs->m_vLayers.clear();
|
|||
|
|
// pLogs->m_vLayers.push_back(lay);
|
|||
|
|
// logs.append(pLogs);
|
|||
|
|
// }
|
|||
|
|
// if(logs.size()<1) {
|
|||
|
|
// AfxMessageBox("缺少目标曲线或目标曲线无效!");
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// CDrawCurveCommand * pDrawCurveCommand = new CDrawCurveCommand(GetSceneManager(),logs);
|
|||
|
|
// GetSceneManager()->GetUndoStack()->push(pDrawCurveCommand);
|
|||
|
|
|
|||
|
|
// int size=(SourEdep-SourSdep)/pDoc->m_LeftCurve->m_Rlev+1.5;
|
|||
|
|
// QString filename2=pDoc->m_RightCurve->GetSlfFileName();
|
|||
|
|
// QString filename1=pDoc->m_LeftCurve->GetSlfFileName();
|
|||
|
|
// CMemRdWt mrw1;
|
|||
|
|
// CMemRdWt mrw2;
|
|||
|
|
|
|||
|
|
// struct INC_STRU Inc={0},Inc1={0};
|
|||
|
|
// struct INP_STRU Inp,Inp1;
|
|||
|
|
// struct HD_STRU Hd={99999.0,-99999.0,0};
|
|||
|
|
// struct HD_STRU Hd1={99999.0,-99999.0,0};
|
|||
|
|
// int flag=0;
|
|||
|
|
// if(filename1==filename2) {
|
|||
|
|
// CMemRdWt mrw4;
|
|||
|
|
// if(mrw4.Open(filename1.toStdString().c_str())) {
|
|||
|
|
// CMemRdWt mrw3;
|
|||
|
|
// QDir aa;
|
|||
|
|
// filename2=::GetLogdataPath()+"temp\\temp001";
|
|||
|
|
// aa.remove(filename2);
|
|||
|
|
// if(mrw3.Open(filename2.toStdString().c_str(),CMemRdWt::modeCreate,1024,1024,0,mrw4.IsWis)) {
|
|||
|
|
// mrw3.CopyFromFile(mrw4,(char *)name2.toStdString().c_str());
|
|||
|
|
// mrw3.Save();
|
|||
|
|
// mrw3.Close();
|
|||
|
|
// flag=1;
|
|||
|
|
// }
|
|||
|
|
// mrw1.Close();
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// if (!mrw1.Open(filename1.toStdString().c_str())) {
|
|||
|
|
// if(flag) {
|
|||
|
|
// QDir aa;
|
|||
|
|
// aa.remove(filename2);
|
|||
|
|
// }
|
|||
|
|
// pDoc->isScr=0;
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// if (!mrw2.Open(filename2.toStdString().c_str())) {
|
|||
|
|
// mrw1.Close();
|
|||
|
|
// if(flag) {
|
|||
|
|
// QDir aa;
|
|||
|
|
// aa.remove(filename2);
|
|||
|
|
// }
|
|||
|
|
// pDoc->isScr=0;
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// mrw1.SetStruct(&Inc,NULL,&Inp,NULL,NULL,NULL,&Hd,NULL);
|
|||
|
|
// mrw2.SetStruct(&Inc1,NULL,&Inp1,NULL,NULL,NULL,&Hd1,NULL);
|
|||
|
|
|
|||
|
|
// QList<QString> names1,names2;
|
|||
|
|
// names1.append(name1);
|
|||
|
|
// names2.append(name2);
|
|||
|
|
// for(int i=0;i<pDoc->m_ShiftCurves.size();i++){
|
|||
|
|
// names1.append(pDoc->m_ShiftCurves.at(i)->GetName());
|
|||
|
|
// names2.append(pDoc->m_ShiftCurves.at(i)->GetName());
|
|||
|
|
// }
|
|||
|
|
// int ind1,ind2;
|
|||
|
|
// QStringList ERRORS;
|
|||
|
|
// int j=0;
|
|||
|
|
// for(int i=0;i<names1.size();i++)
|
|||
|
|
// {
|
|||
|
|
// Slf_CHANNEL m_Channel1;
|
|||
|
|
// Slf_CHANNEL m_Channel2;
|
|||
|
|
// ind1=mrw1.OpenChannel(names1[i].toStdString().c_str());
|
|||
|
|
// ind2=mrw2.OpenChannel(names2[i].toStdString().c_str());
|
|||
|
|
// if(ind1<0||ind2<0) {
|
|||
|
|
// CString cs;
|
|||
|
|
// if(ind1<0) {
|
|||
|
|
// ERRORS.append(names1[i]+" ");
|
|||
|
|
// // cs.Format("源曲线不存在%s!",name1.toStdString().c_str());
|
|||
|
|
// }
|
|||
|
|
// else if(ind2<0) {
|
|||
|
|
// ERRORS.append(names2[i]+" ");
|
|||
|
|
// // cs.Format("目标曲线不存在%s!",name2.toStdString().c_str());
|
|||
|
|
// }
|
|||
|
|
// else {
|
|||
|
|
// ERRORS.append(names1[i]+" "+names2[i]);
|
|||
|
|
// // cs.Format("源曲线、目标曲线不存在!");
|
|||
|
|
// }
|
|||
|
|
// continue;
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// mrw1.GetChannelInfo(ind1,&m_Channel1);
|
|||
|
|
// mrw2.GetChannelInfo(ind2,&m_Channel2);
|
|||
|
|
// if(ind1&&SourEdep==0) SourEdep=m_Channel1.DimInfo[0].StartVal+m_Channel1.DimInfo[0].Samples*m_Channel1.DimInfo[0].Delta;
|
|||
|
|
// mrw1.AddInCurve((char *)names1[i].toStdString().c_str());
|
|||
|
|
// mrw2.AddInCurve((char *)names2[i].toStdString().c_str());
|
|||
|
|
// mrw1.CopyCurve(mrw2,SourSdep,SourEdep,DectSdep,j,j);
|
|||
|
|
// j++;
|
|||
|
|
// }
|
|||
|
|
// mrw2.Close();
|
|||
|
|
// mrw1.Save();
|
|||
|
|
// mrw1.Close();
|
|||
|
|
// if(flag) {
|
|||
|
|
// QDir aa;
|
|||
|
|
// aa.remove(filename2);
|
|||
|
|
// }
|
|||
|
|
// pDoc->m_RightCurve->SetShiftOffset(0);
|
|||
|
|
// pDoc->m_RightCurve->SetShiftBottomDepth(-9999.0);
|
|||
|
|
// pDoc->m_RightCurve->SetShiftTopDepth(-9999.0);
|
|||
|
|
// foreach(CObjWellLog*pLog,logs)
|
|||
|
|
// {
|
|||
|
|
// if(pLog) {
|
|||
|
|
// GetObjectEvent().OnDeAttchData(pDoc->m_LeftCurve->GetSlfFileName(),pLog->GetName());
|
|||
|
|
// GetObjectEvent().OnRefreshData(pDoc->m_LeftCurve->GetSlfFileName(),pLog->GetName());
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// pDrawCurveCommand->SetXValue();
|
|||
|
|
// pDoc->m_LeftCurve->m_vLayers.clear();
|
|||
|
|
// pDoc->m_LeftCurve->m_ChangeNo=0;
|
|||
|
|
// pDoc->isScr=0;
|
|||
|
|
// foreach(CObjWellLog*pLog,logs)
|
|||
|
|
// {
|
|||
|
|
// if(pLog) {
|
|||
|
|
// pLog->m_vLayers.clear();
|
|||
|
|
// pLog->m_ChangeNo=0;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// GetSceneManager()->SetDirtyUIElement(true,true);
|
|||
|
|
// if(ERRORS.size())AfxMessageBox("目标曲线不存在:"+ERRORS.join(" "));
|
|||
|
|
// CVecViewCommand &viewCommand =GetSceneManager()->GetViewCommand();
|
|||
|
|
|
|||
|
|
// QAction *pUndoAction = viewCommand.GetAction(GetCmdID_UndoCommand());
|
|||
|
|
// pUndoAction->setEnabled(GetSceneManager()->GetUndoStack()->canUndo());
|
|||
|
|
|
|||
|
|
// QAction *pRedoAction = viewCommand.GetAction(GetCmdID_RedoCommand());
|
|||
|
|
// pRedoAction->setEnabled(GetSceneManager()->GetUndoStack()->canRedo());
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// void CQtWindowWellSection::AddDataDrawObject(QVector<CObjWellTrack*> &welltracks,CWellSectionWindowDocument *pDoc,CObjWellTrack*pWellTrack,CObjWell *well,CBaseObject*objfromplugin)
|
|||
|
|
// {
|
|||
|
|
// CQtWellSceneManager *p_scene_manager=dynamic_cast<CQtWellSceneManager *>(m_pSceneManager);
|
|||
|
|
// if(objfromplugin){
|
|||
|
|
// PaiObject *aobj=objfromplugin->GetPaiObject();
|
|||
|
|
// CObjWellLog *pResultLog=dynamic_cast<CObjWellLog*>(aobj);
|
|||
|
|
// if(aobj){
|
|||
|
|
// //把这种对象藏起来
|
|||
|
|
// ::GetProject()->AddIDMap(aobj->GetID(),objfromplugin);
|
|||
|
|
// //2.加道
|
|||
|
|
// pResultLog = dynamic_cast<CObjWellLog *>(objfromplugin);
|
|||
|
|
// if(pResultLog)
|
|||
|
|
// {
|
|||
|
|
// QString rname=pResultLog->GetName();
|
|||
|
|
// QStringList rns;
|
|||
|
|
// if(rname.indexOf("GUJING")>-1&&welltracks.size())
|
|||
|
|
// {
|
|||
|
|
// std::vector<PaiObject *> vObject;
|
|||
|
|
// CPaiObjectHelper::RecursionGetAllChild(welltracks.at(0),vObject);
|
|||
|
|
// foreach(PaiObject *pChild,vObject)
|
|||
|
|
// {
|
|||
|
|
// if(pChild->GetName().indexOf("GUJING")>-1) rns.append(pChild->GetName());
|
|||
|
|
// }
|
|||
|
|
// if(rns.size()) {
|
|||
|
|
// int ind[3]={-1,-1,-1};
|
|||
|
|
// char buf[20];
|
|||
|
|
// for(int i=0;i<3;i++)
|
|||
|
|
// {
|
|||
|
|
// sprintf(buf,"GUJING%d_RESULT",i+1);
|
|||
|
|
// if(rns.indexOf(buf)>-1) {
|
|||
|
|
// ind[i]=i;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// if(ind[0]==-1) {
|
|||
|
|
// }
|
|||
|
|
// else if(ind[1]==-1){
|
|||
|
|
// pResultLog->SetName("GUJING2_RESULT");
|
|||
|
|
// }
|
|||
|
|
// else if(ind[2]==-1) {
|
|||
|
|
// pResultLog->SetName("GUJING3_RESULT");
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// else if(rname=="RESULT"&&welltracks.size())
|
|||
|
|
// {
|
|||
|
|
// std::vector<PaiObject *> vObject;
|
|||
|
|
// CPaiObjectHelper::RecursionGetAllChild(welltracks.at(0),vObject);
|
|||
|
|
// foreach(PaiObject *pChild,vObject)
|
|||
|
|
// {
|
|||
|
|
// if(pChild->GetName().indexOf("RESULT",0)>-1) rns.append(pChild->GetName());
|
|||
|
|
// }
|
|||
|
|
// if(rns.size()) {
|
|||
|
|
// int ind[3]={-1,-1,-1};
|
|||
|
|
// char buf[20];
|
|||
|
|
// for(int i=0;i<3;i++)
|
|||
|
|
// {
|
|||
|
|
// if(i==0) sprintf(buf,"RESULT",i);
|
|||
|
|
// else sprintf(buf,"RESULT%d",i);
|
|||
|
|
// if(rns.indexOf(buf,0)>-1) {
|
|||
|
|
// ind[i]=i;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// if(ind[0]==-1) {
|
|||
|
|
// }
|
|||
|
|
// else if(ind[1]==-1){
|
|||
|
|
// pResultLog->SetName("RESULT1");
|
|||
|
|
// }
|
|||
|
|
// else if(ind[2]==-1) {
|
|||
|
|
// pResultLog->SetName("RESULT2");
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// else if(pResultLog->GetTypeID()==QUuid(GetOSGWellRulerTrackID()))
|
|||
|
|
// {
|
|||
|
|
// pResultLog->SetName("DEPTH");
|
|||
|
|
// pResultLog->SetAliasName("深度");
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// if(well&&pResultLog&&pResultLog->GetName()!="DEPTH") {
|
|||
|
|
// // pResultLog->isLoad=false;
|
|||
|
|
// // pResultLog->LoadFromSLF();
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// objfromplugin->SetCheckState(Qt::Checked);
|
|||
|
|
|
|||
|
|
// CVecDisplayObjectCommand::SetObjectCheckState(aobj,Qt::CheckState::Checked,p_scene_manager->GetVecWindow());
|
|||
|
|
// CVecNodeBuilder*pBuilder=m_pSceneManager->GetBuilder(aobj->GetID());
|
|||
|
|
// if(!pBuilder) {
|
|||
|
|
// ::GetProject()->RemoveIDMap(dynamic_cast<CBaseObject*>(aobj));
|
|||
|
|
// delete aobj;
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// int type=pBuilder->GetType();
|
|||
|
|
// CObjWellLogTrack *pP=NULL;
|
|||
|
|
// if(pBuilder&&(type!=TRACKTYPE/*&&type!=DEPTHTYPE*/))
|
|||
|
|
// {
|
|||
|
|
// pP=dynamic_cast<CObjWellLogTrack *>(aobj->GetParent());
|
|||
|
|
// if((type==DEPTHTYPE||type>=OGRESULTTYPE)&&pP->GetChildrenCount()<2)
|
|||
|
|
// // if(pP&&pP->GetTrackType()==CObjWellLogTrack::OG_RESULT&&pP->GetChildrenCount()<2)
|
|||
|
|
// {
|
|||
|
|
// if(type==DEPTHTYPE) pP->SetTrackType(CObjWellLogTrack::DEPTH);
|
|||
|
|
// else pP->SetTrackType(CObjWellLogTrack::OG_RESULT);
|
|||
|
|
// CObjectViewInfo *pLogTrackViewinfo = dynamic_cast<CObjectViewInfo*>(p_scene_manager->GetViewInfo(pP->GetID()));
|
|||
|
|
// if(pLogTrackViewinfo) {
|
|||
|
|
// if(pLogTrackViewinfo->property("hDrawGrid").isValid()) pLogTrackViewinfo->setProperty("hDrawGrid",0);
|
|||
|
|
// if(pLogTrackViewinfo->property("DrawGrid").isValid()) pLogTrackViewinfo->setProperty("DrawGrid",0);
|
|||
|
|
// if(pResultLog)pP->SetName(pResultLog->GetAliasName());
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// QList< PaiObject* > children;
|
|||
|
|
// if(!pWellTrack) {
|
|||
|
|
// PaiObject*temp=aobj;
|
|||
|
|
// while(temp) {
|
|||
|
|
// pWellTrack=dynamic_cast<CObjWellTrack*>(temp->GetParent());
|
|||
|
|
// if(pWellTrack) {
|
|||
|
|
// if(welltracks.indexOf(pWellTrack)<1) welltracks.append(pWellTrack);
|
|||
|
|
// break;
|
|||
|
|
// }
|
|||
|
|
// temp=temp->GetParent();
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// if(pWellTrack) {
|
|||
|
|
// CWellViewInfo*pWellViewInfo=dynamic_cast<CWellViewInfo*>(p_scene_manager->GetViewInfo(pWellTrack->GetID()));
|
|||
|
|
// CObjectViewInfo*pViewInfo=dynamic_cast<CObjectViewInfo*>(m_pSceneManager->GetViewInfo(pBuilder->GetID()));
|
|||
|
|
// if(pWellViewInfo&&pViewInfo)
|
|||
|
|
// {
|
|||
|
|
// pViewInfo->SetLogHeadFont(pWellViewInfo->GetLogHeaderFont());
|
|||
|
|
// pViewInfo->SetLogScaleFont(pWellViewInfo->GetLogScaleFont());
|
|||
|
|
// pViewInfo->SetLogUnitFont(pWellViewInfo->GetLogUnitFont());
|
|||
|
|
// }
|
|||
|
|
// pWellTrack->GetChildren(children);
|
|||
|
|
// if (children.size()==1) {
|
|||
|
|
// float sdep=0;
|
|||
|
|
// float edep=0;
|
|||
|
|
// if(welltracks.size()>1) {
|
|||
|
|
// sdep=welltracks[0]->GetTopWellLogDepth();
|
|||
|
|
// edep=welltracks[0]->GetBottomWellLogDepth();
|
|||
|
|
// }
|
|||
|
|
// else {
|
|||
|
|
// CObjWelllogRound*pWelllogRound=pWellTrack->GetWelllogRound();
|
|||
|
|
// if(pWelllogRound)
|
|||
|
|
// {
|
|||
|
|
// CObjWell *pWell=pWelllogRound->GetWell();
|
|||
|
|
// if(pWell) {
|
|||
|
|
// sdep=pWell->GetStartDep();
|
|||
|
|
// edep=pWell->GetEndDep();
|
|||
|
|
// if(sdep==99999||edep==-99999) {
|
|||
|
|
// sdep=0;
|
|||
|
|
// edep=0;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// if(pWellViewInfo) {
|
|||
|
|
// pWellViewInfo->SetTopDepth(sdep);
|
|||
|
|
// pWellViewInfo->SetBottomDepth(edep);
|
|||
|
|
// CVecWindowCommand::ViewInfoPropetyChanged( "TopDepth", pWellViewInfo,sdep);
|
|||
|
|
// CVecWindowCommand::ViewInfoPropetyChanged( "BottomDepth", pWellViewInfo,edep);
|
|||
|
|
// }
|
|||
|
|
// WellWindowViewInfo *pWellWindowViewInfo = dynamic_cast<WellWindowViewInfo *>( p_scene_manager->GetViewInfo(p_scene_manager->GetVecWindow()->GetWindowID()));
|
|||
|
|
// if(pWellViewInfo) {
|
|||
|
|
// if(pWellWindowViewInfo->property("TopDepth").isValid()) {
|
|||
|
|
// pWellWindowViewInfo->setProperty("TopDepth",sdep);
|
|||
|
|
// }
|
|||
|
|
// if(pWellWindowViewInfo->property("BottomDepth").isValid()) {
|
|||
|
|
// pWellWindowViewInfo->setProperty("BottomDepth",edep);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// if(!p_scene_manager->IsWellSectonFixHeader()) {
|
|||
|
|
// p_scene_manager->ReAllViews();
|
|||
|
|
// }
|
|||
|
|
// else p_scene_manager->UpdateAll();
|
|||
|
|
// CSheet* sheet = p_scene_manager->GetCurrentSheet();
|
|||
|
|
// if(sheet != NULL)
|
|||
|
|
// {
|
|||
|
|
// QtWellSectionViewer *pViewer = dynamic_cast<QtWellSectionViewer *>(p_scene_manager->GetVecWindow()->GetVecViewer() );
|
|||
|
|
// double wellHeadContentHeight= pDoc->GetCurveHeadHeight();
|
|||
|
|
// if(!p_scene_manager->IsWellSectonFixHeader()) {
|
|||
|
|
// QList<CSheet*> *sheets=pDoc->GetSheets();
|
|||
|
|
// foreach(CSheet* curSheet,*sheets)
|
|||
|
|
// {
|
|||
|
|
// if(curSheet != NULL)
|
|||
|
|
// {
|
|||
|
|
// curSheet->SetViewportStartHeight(0);
|
|||
|
|
// curSheet->SetViewportHeight(wellHeadContentHeight*p_scene_manager->GetZoomYRatio());
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// else {
|
|||
|
|
// pViewer->GetHeadVScroll()->setValue(wellHeadContentHeight*p_scene_manager->GetZoomYRatio());
|
|||
|
|
// p_scene_manager->OnHeadVScroll((wellHeadContentHeight-sheet->GetViewportHeight())*p_scene_manager->GetZoomYRatio());
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// void CQtWindowWellSection::slotNewDataAndDraw()
|
|||
|
|
// {
|
|||
|
|
// CQtWellSceneManager * p_scene_manager= dynamic_cast<CQtWellSceneManager*>(GetSceneManager());
|
|||
|
|
// if(!p_scene_manager)return;//说明不是单井多井图,暂时返回
|
|||
|
|
// QAction* aaction=(QAction*)(QObject::sender());
|
|||
|
|
// CWellSectionWindowDocument *pDoc = p_scene_manager->GetWellSectionGeomtry().GetSecionWindowDocument();
|
|||
|
|
|
|||
|
|
// #pragma region luolin
|
|||
|
|
// if(!p_scene_manager->GetVecWindow())return;
|
|||
|
|
// //QMessageBox::information(NULL,"",QString::number(GetSceneManager()->GetVecWindow()->getTag(GetWindowTypeID_QtGeoGuideActiveOSGWindow()).toBool()));
|
|||
|
|
// bool isGuad=p_scene_manager->GetVecWindow()->getTag(GetWindowTypeID_QtGeoGuideActiveOSGWindow()).toBool();
|
|||
|
|
// //地质导引同步
|
|||
|
|
// if(isGuad)
|
|||
|
|
// {
|
|||
|
|
// CVecDisplayObjectCommand::ActiveOSGWindow(p_scene_manager->GetVecWindow());
|
|||
|
|
// }
|
|||
|
|
// #pragma endregion
|
|||
|
|
// QVector<CObjWellTrack*> welltracks;
|
|||
|
|
// CObjWellTrack* currentwelltrack=NULL;
|
|||
|
|
// QUuid m_CurrentPickObjectID=p_scene_manager->GetCurrentPickObjectID();
|
|||
|
|
|
|||
|
|
// if(m_CurrentPickObjectID!=""){
|
|||
|
|
// CBaseObject* pViewObject = CObjProject::GetObjectByID( m_CurrentPickObjectID );
|
|||
|
|
// CObjWellLogTrack* currentlogtrack=dynamic_cast<CObjWellLogTrack *>(pViewObject);
|
|||
|
|
// if(!currentlogtrack) {
|
|||
|
|
// currentlogtrack=p_scene_manager->GetWellSectionGeomtry().GetLogTrack(m_CurrentPickObjectID);
|
|||
|
|
// p_scene_manager->SetCurentPickObject(QUuid());
|
|||
|
|
// m_CurrentPickObjectID=QUuid();
|
|||
|
|
// }
|
|||
|
|
// if(currentlogtrack) {
|
|||
|
|
// currentwelltrack=p_scene_manager->GetWellSectionGeomtry().GetWellTrack(currentlogtrack);
|
|||
|
|
// }
|
|||
|
|
// else
|
|||
|
|
// {
|
|||
|
|
// if(pViewObject&&pViewObject->GetPaiObject()->GetTypeID()==GetOSGWellTrackID()) currentwelltrack=dynamic_cast<CObjWellTrack*>(pViewObject);
|
|||
|
|
// }
|
|||
|
|
// if(currentwelltrack) welltracks.append(currentwelltrack);
|
|||
|
|
// }
|
|||
|
|
// else
|
|||
|
|
// {
|
|||
|
|
// welltracks=p_scene_manager->GetWellSectionGeomtry().GetAllWellTrack(true);
|
|||
|
|
// if(!welltracks.size()) {
|
|||
|
|
// currentwelltrack=p_scene_manager->GetWellSectionGeomtry().GetWellTrack(NULL);
|
|||
|
|
// if(currentwelltrack) welltracks.append(currentwelltrack);
|
|||
|
|
// }
|
|||
|
|
// else currentwelltrack=welltracks[0];
|
|||
|
|
// }
|
|||
|
|
// if (!currentwelltrack)
|
|||
|
|
// {
|
|||
|
|
// AppendConsole(pai::log::PAI_ERROR,"不能找到当前的井,请先选择井:"+aaction->text());
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// foreach(CObjWellTrack *pWellTrack,welltracks)
|
|||
|
|
// {
|
|||
|
|
// PaiObject * aobj=NULL;
|
|||
|
|
// CObjWellTrack* currentwelltrack=NULL;
|
|||
|
|
// CObjWell* well = NULL;
|
|||
|
|
// well=dynamic_cast<CObjWell* >(CObjProject::GetObjectByID(pWellTrack->GetWellID()));
|
|||
|
|
// if(!well) {
|
|||
|
|
// if(pDoc) well=pDoc->GetCurrentWell( );
|
|||
|
|
// if(well) {
|
|||
|
|
// pWellTrack->SetWellID(well->GetID());
|
|||
|
|
// pWellTrack->SetWelllogRound(well->GetCurrentObjWellRound());
|
|||
|
|
// pDoc->AddChild(pWellTrack);
|
|||
|
|
// p_scene_manager->AddObject(pWellTrack);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// //1.上树
|
|||
|
|
// CBaseObject *objfromplugin=CBaseObject::GetFatory().CreateObject(sObjectClassIDKey(aaction->data().toString()));
|
|||
|
|
|
|||
|
|
// if(objfromplugin){
|
|||
|
|
// CObjWellLog * pResultLog = dynamic_cast<CObjWellLog *>(objfromplugin);
|
|||
|
|
// if(pResultLog) {
|
|||
|
|
// CBaseObject *pObject=objfromplugin->GhostObject();
|
|||
|
|
// delete objfromplugin;
|
|||
|
|
// objfromplugin=pObject;
|
|||
|
|
// pResultLog = dynamic_cast<CObjWellLog *>(objfromplugin);
|
|||
|
|
// if(pResultLog) {
|
|||
|
|
// pResultLog->m_pObjWell=well;
|
|||
|
|
// QString wellname=well->GetWellFileName();
|
|||
|
|
// pResultLog->SetSlfFileName(wellname);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// aobj=objfromplugin->GetPaiObject();
|
|||
|
|
|
|||
|
|
// if(!pResultLog&&aobj)
|
|||
|
|
// {
|
|||
|
|
// aobj->SetName(aaction->toolTip());
|
|||
|
|
// pWellTrack->AddChild(aobj);
|
|||
|
|
// }
|
|||
|
|
// AddDataDrawObject(welltracks,pDoc,pWellTrack,well,objfromplugin);
|
|||
|
|
// }
|
|||
|
|
// else
|
|||
|
|
// {
|
|||
|
|
// AppendConsole(pai::log::PAI_ERROR,"图元创建失败,请检查相关插件是否已经正常加载:"+aaction->text());
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// double CQtWindowWellSection::GetDepByPos(double x,double y)
|
|||
|
|
// {
|
|||
|
|
// double dep=0;
|
|||
|
|
// CQtWellSceneManager * m_pWellSceneManager= dynamic_cast<CQtWellSceneManager*>(GetSceneManager());
|
|||
|
|
// if(!m_pWellSceneManager) return dep;
|
|||
|
|
// CBaseObject* pViewObject = CObjProject::GetObjectByID(m_pWellSceneManager->GetCurrentPickObjectID());
|
|||
|
|
// CObjWellTrack *pWellTrack = dynamic_cast<CObjWellTrack *>(pViewObject);
|
|||
|
|
// CObjWellLogTrack *pWellLogTrack = dynamic_cast<CObjWellLogTrack*>( m_pWellSceneManager->GetWellSectionGeomtry().PickLeafTrackObject( x,y ) );
|
|||
|
|
// if(!pWellTrack&&pWellLogTrack) pWellTrack=dynamic_cast<CObjWellTrack *>(pWellLogTrack->GetWellTrack());
|
|||
|
|
// if(!pWellTrack){
|
|||
|
|
// CObjWellLog *pWellLog=dynamic_cast<CObjWellLog*>(pViewObject);
|
|||
|
|
// if(pWellLog){
|
|||
|
|
// pWellTrack=pWellLog->GetWellTrack();
|
|||
|
|
// }
|
|||
|
|
// if(!pWellTrack) {
|
|||
|
|
// QVector<CObjWellTrack*> vTrack = m_pWellSceneManager->GetWellSectionGeomtry().GetAllWellTrack( true );
|
|||
|
|
// if(vTrack.size()) pWellTrack =vTrack[0];
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// CQtWellTrackNode* pTrackNode=NULL;
|
|||
|
|
// if(pWellTrack) {
|
|||
|
|
// pTrackNode = dynamic_cast<CQtWellTrackNode*>(m_pWellSceneManager->GetBuilder(pWellTrack->GetID()));
|
|||
|
|
// if(!pTrackNode) return true;
|
|||
|
|
// if(m_pWellSceneManager->IsWellSectonHorizonLayout()) {
|
|||
|
|
// dep=pTrackNode->ConvertX(eCoord_OSGPixel,x,eCoord_GEO);
|
|||
|
|
// }
|
|||
|
|
// else {
|
|||
|
|
// dep=pTrackNode->ConvertY(eCoord_OSGPixel,y,eCoord_GEO);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// return dep;
|
|||
|
|
// }
|
|||
|
|
// CVecViewer* CQtWindowWellSection::CreateViewer()
|
|||
|
|
// {
|
|||
|
|
// return new QtWellSectionViewer(this);
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// void CQtWindowWellSection::PickFirst()
|
|||
|
|
// {
|
|||
|
|
// QAction *pAction =NULL;
|
|||
|
|
// QUuid id=GetDigitizerID_QtWellWindowPick();
|
|||
|
|
// if(GetWindowType() ==GetWindowTypeID_QtWellSection()) id=GetDigitizerID_QtWellWindowPick();
|
|||
|
|
// else if(GetWindowType() == GetWindowTypeID_QtMultiWellSection()) id=GetDigitizerID_MultiWell();
|
|||
|
|
// else if(GetWindowType() == GetWindowTypeID_QtGeoGuideSection() ) id=GetDigitizerID_QtWellWindowPick();
|
|||
|
|
// pAction=this->GetSceneManager()->GetViewCommand().GetAction(id);
|
|||
|
|
// if (pAction)
|
|||
|
|
// {
|
|||
|
|
// pAction->setChecked(true);
|
|||
|
|
// }
|
|||
|
|
// GetSceneManager()->GetEventHander().SwitchDigitizer(id,QUuid());
|
|||
|
|
// }
|
|||
|
|
// void CQtWindowWellSection::UpdateObject(eUpdateEvent e,CObjectEventParam *pEventParam,QVariant vtPropertyValue)
|
|||
|
|
// {
|
|||
|
|
// if(!pEventParam) return;
|
|||
|
|
// CQtWellSceneManager *pWellSceneManager=dynamic_cast<CQtWellSceneManager *>(GetSceneManager());
|
|||
|
|
// if(!pWellSceneManager) return;
|
|||
|
|
// if(pEventParam->strPropertyIDName=="MapRatio")
|
|||
|
|
// {
|
|||
|
|
// double targetfactor=100.0/vtPropertyValue.toInt();
|
|||
|
|
// double currentXfacotr=pWellSceneManager->GetZoomXRatio();
|
|||
|
|
// double currentYfacotr=pWellSceneManager->GetZoomYRatio();
|
|||
|
|
// double zoomXscale=targetfactor/currentXfacotr;
|
|||
|
|
// double zoomYscale=targetfactor/currentYfacotr;
|
|||
|
|
// pWellSceneManager->GetCameraCommand().Zoom( zoomXscale,zoomYscale );
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// //修改了全图的深度比例尺
|
|||
|
|
// if(pEventParam->strPropertyIDName=="MapYScaleEnum"||
|
|||
|
|
// pEventParam->strPropertyIDName=="SelfYScaleEnum")
|
|||
|
|
// {
|
|||
|
|
// QVector<CObjWellTrack *> vWellTrack;
|
|||
|
|
// vWellTrack =pWellSceneManager->GetWellSectionGeomtry().GetAllWellTrack(true);
|
|||
|
|
// foreach( CObjWellTrack *pWellTrack,vWellTrack)
|
|||
|
|
// {
|
|||
|
|
// CVecWindowCommand::SendEventToBuilder( pWellTrack,
|
|||
|
|
// this,
|
|||
|
|
// eUpdate_WellSectionDepthScale,pEventParam );
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// pWellSceneManager->UpdateAll();
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// else if(pEventParam->strPropertyIDName=="DefaultROW_HEIGHTCM")
|
|||
|
|
// {
|
|||
|
|
// DEFAULT_ROW_HEIGHT=vtPropertyValue.toFloat();
|
|||
|
|
// pWellSceneManager->UpdateAll();
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// else if(pEventParam->strPropertyIDName=="CloseMegins")
|
|||
|
|
// {
|
|||
|
|
// if(vtPropertyValue.toBool())
|
|||
|
|
// {
|
|||
|
|
// pWellSceneManager->FIXED_LOGBottom_MARGIN_CM_BACK=pWellSceneManager->FIXED_LOGBottom_MARGIN_CM;
|
|||
|
|
// pWellSceneManager->FIXED_LOGLeft_MARGIN_CM_BACK=pWellSceneManager->FIXED_LOGLeft_MARGIN_CM;
|
|||
|
|
// pWellSceneManager->FIXED_LOGRight_MARGIN_CM_BACK=pWellSceneManager->FIXED_LOGRight_MARGIN_CM;
|
|||
|
|
// pWellSceneManager->FIXED_LOGHead_MARGIN_CM_BACK=pWellSceneManager->FIXED_LOGHead_MARGIN_CM;
|
|||
|
|
// pWellSceneManager->FIXED_LOGBottom_MARGIN_CM_BACK=pWellSceneManager->FIXED_LOGBottom_MARGIN_CM;
|
|||
|
|
|
|||
|
|
// pWellSceneManager->FIXED_LOGBottom_MARGIN_CM=0;
|
|||
|
|
// pWellSceneManager->FIXED_LOGLeft_MARGIN_CM=0;
|
|||
|
|
// pWellSceneManager->FIXED_LOGRight_MARGIN_CM=0;
|
|||
|
|
// pWellSceneManager->FIXED_LOGHead_MARGIN_CM=0;
|
|||
|
|
// pWellSceneManager->FIXED_LOGBottom_MARGIN_CM=0;
|
|||
|
|
// }
|
|||
|
|
// else {
|
|||
|
|
// pWellSceneManager->FIXED_LOGBottom_MARGIN_CM=pWellSceneManager->FIXED_LOGBottom_MARGIN_CM_BACK;
|
|||
|
|
// pWellSceneManager->FIXED_LOGLeft_MARGIN_CM=pWellSceneManager->FIXED_LOGLeft_MARGIN_CM_BACK;
|
|||
|
|
// pWellSceneManager->FIXED_LOGRight_MARGIN_CM=pWellSceneManager->FIXED_LOGRight_MARGIN_CM_BACK;
|
|||
|
|
// pWellSceneManager->FIXED_LOGHead_MARGIN_CM=pWellSceneManager->FIXED_LOGHead_MARGIN_CM_BACK;
|
|||
|
|
// pWellSceneManager->FIXED_LOGBottom_MARGIN_CM=pWellSceneManager->FIXED_LOGBottom_MARGIN_CM_BACK;
|
|||
|
|
// }
|
|||
|
|
// pWellSceneManager->UpdateAll();
|
|||
|
|
// return;
|
|||
|
|
// }
|
|||
|
|
// else
|
|||
|
|
// {
|
|||
|
|
// QVector<CObjWellTrack *> vWellTrack;
|
|||
|
|
// CObjWellTrack *pWellTrack=dynamic_cast<CObjWellTrack*>(pWellSceneManager->GetCurentPickObject());
|
|||
|
|
// if(pWellTrack) vWellTrack.append(pWellTrack);
|
|||
|
|
// else vWellTrack =pWellSceneManager->GetWellSectionGeomtry().GetAllWellTrack(true);
|
|||
|
|
// foreach( CObjWellTrack *pWellTrack,vWellTrack)
|
|||
|
|
// {
|
|||
|
|
// CWellViewInfo *pWellViewInfo=dynamic_cast<CWellViewInfo*>(pWellSceneManager->GetViewInfo(pWellTrack->GetID()));
|
|||
|
|
// if(pWellViewInfo) {
|
|||
|
|
// if(pEventParam->strPropertyIDName=="BigGridLine") pWellViewInfo->SetBigGridLine(vtPropertyValue.toInt());
|
|||
|
|
// else if(pEventParam->strPropertyIDName=="MidGridLine") pWellViewInfo->SetMidGridLine(vtPropertyValue.toInt());
|
|||
|
|
// else if(pEventParam->strPropertyIDName=="MinGridLine") pWellViewInfo->SetMinGridLine(vtPropertyValue.toInt());
|
|||
|
|
// else if(pEventParam->strPropertyIDName=="Angle") pWellViewInfo->SetAngle(vtPropertyValue.toDouble());
|
|||
|
|
// else if(pEventParam->strPropertyIDName=="DepthType") pWellViewInfo->SetDepthType(vtPropertyValue.toDouble());
|
|||
|
|
// }
|
|||
|
|
// pEventParam->vtPropertyValue=vtPropertyValue;
|
|||
|
|
// CVecWindowCommand::SendEventToBuilder( pWellTrack,
|
|||
|
|
// this,
|
|||
|
|
// eUpdate_Other,pEventParam);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
|
|||
|
|
// BEGIN_REGISTER_OSGWINDOW(CQtWindowWellSection)
|
|||
|
|
// sVecWindowKey(GetWindowTypeID_QtWellSection(),L"测井绘图","wellsectionwindow.png")
|
|||
|
|
// END_REGISTER_OSGWINDOW(CQtWindowWellSection);
|
|||
|
|
|
|||
|
|
|
|||
|
|
// END_OSGGRAPHICS_NAMESPACE
|