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
|