179 lines
5.7 KiB
C++
179 lines
5.7 KiB
C++
|
|
#include <cassert>
|
|||
|
|
#include "ObjTubingstringResult.h"
|
|||
|
|
#include "MemRdWt.h"
|
|||
|
|
#include "geometryutils.h"
|
|||
|
|
|
|||
|
|
CObjTubingstringResult::CObjTubingstringResult()
|
|||
|
|
{
|
|||
|
|
if(zoneOrder.size()==0)
|
|||
|
|
{
|
|||
|
|
zoneOrder=GetZoneOrder(QString("TubTools.ini"));
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
cclimgpath=GetSymbolDir()+"\\管柱组件\\";
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
CObjTubingstringResult::~CObjTubingstringResult()
|
|||
|
|
{
|
|||
|
|
m_pResultList.clear();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
bool CObjTubingstringResult::LoadFromSLF(QMyCustomPlot *widget, QString strSlfName, QString csCurve)
|
|||
|
|
{
|
|||
|
|
m_pResultList.clear();
|
|||
|
|
|
|||
|
|
// //隐藏刻度
|
|||
|
|
// widget->xAxis->setTicks(false);
|
|||
|
|
// widget->yAxis->setTicks(false);
|
|||
|
|
// widget->xAxis2->setTicks(false);
|
|||
|
|
// widget->yAxis2->setTicks(false);
|
|||
|
|
|
|||
|
|
Slf_JIEGUPOS *m_pResult=NULL;
|
|||
|
|
CMemRdWt *logio=new CMemRdWt();
|
|||
|
|
if(strSlfName==""||!logio->Open(strSlfName.toStdString().c_str(),CSlfIO::modeRead))
|
|||
|
|
{
|
|||
|
|
delete logio;
|
|||
|
|
// QMessageBox::information(NULL,"提示","SLF文件打开失败,请检查!!",QMessageBox::Yes);
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
int iIndex=logio->OpenTable(csCurve.toStdString().c_str());
|
|||
|
|
if(iIndex>-1) {
|
|||
|
|
int count=logio->GetTableRecordCount(iIndex);
|
|||
|
|
//int fieldnum=logio->GetTableFieldCount(iIndex);
|
|||
|
|
int len=logio->GetTableRecordLength(iIndex);
|
|||
|
|
m_pResult=(Slf_JIEGUPOS *)new char[len+1];
|
|||
|
|
char buf[200];
|
|||
|
|
logio->IsChange=true;
|
|||
|
|
|
|||
|
|
bool bDrawGuanzhu = false;
|
|||
|
|
for(int i=0;i<count;i++)
|
|||
|
|
{
|
|||
|
|
memset(m_pResult,0,sizeof(len));
|
|||
|
|
logio->ReadTable(iIndex,i+1,m_pResult);
|
|||
|
|
|
|||
|
|
Slf_JIEGUPOS result;
|
|||
|
|
result.Depth=m_pResult->Depth;
|
|||
|
|
result.Order=m_pResult->Order;
|
|||
|
|
result.Number=m_pResult->Number;
|
|||
|
|
m_pResultList.append(result);
|
|||
|
|
|
|||
|
|
//
|
|||
|
|
double depth=m_pResult->Depth;
|
|||
|
|
int Order=m_pResult->Order;
|
|||
|
|
int Number=m_pResult->Number;
|
|||
|
|
|
|||
|
|
if(bDrawGuanzhu == false)
|
|||
|
|
{
|
|||
|
|
//还没有画管柱
|
|||
|
|
if(Number == zoneOrder.value("管底部").toInt()||
|
|||
|
|
Number == zoneOrder.value("油管深").toInt()||
|
|||
|
|
Number == zoneOrder.value("喇叭口").toInt()||
|
|||
|
|
Number == zoneOrder.value("剌叭口").toInt())
|
|||
|
|
{
|
|||
|
|
bDrawGuanzhu = true;//画管柱
|
|||
|
|
|
|||
|
|
QString shotimgfile=GetSymbolDir()+"\\管柱组件\\管柱.png";
|
|||
|
|
//QImage shotimg(shotimgfile);
|
|||
|
|
//pPainter->drawImage(rect,shotimg);
|
|||
|
|
|
|||
|
|
double lY1 = widget->yAxis->range().lower;//+10
|
|||
|
|
double lY2 = widget->yAxis->range().upper;
|
|||
|
|
QCPItemPixmap *mPixmap;
|
|||
|
|
mPixmap = new QCPItemPixmap(widget);
|
|||
|
|
//mPixmap->setPixmap(QPixmap(":/image/file.png")); // 设置图片
|
|||
|
|
mPixmap->setScaled(true, Qt::IgnoreAspectRatio); // 设置缩放方式
|
|||
|
|
mPixmap->setLayer("overlay"); // 确保在最上层
|
|||
|
|
//
|
|||
|
|
float upper = widget->xAxis->range().upper;
|
|||
|
|
mPixmap->topLeft->setCoords(upper, lY1 + (lY2-lY1-m_Oguan)/2.0);
|
|||
|
|
mPixmap->bottomRight->setCoords(-depth, lY2 - (lY2-lY1-m_Oguan)/2.0);
|
|||
|
|
mPixmap->setPixmap(QPixmap(shotimgfile)); // 设置图片
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
logio->CloseTable(iIndex);
|
|||
|
|
delete m_pResult;
|
|||
|
|
}
|
|||
|
|
delete logio;
|
|||
|
|
|
|||
|
|
for(int i=0; i<m_pResultList.size(); i++)
|
|||
|
|
{
|
|||
|
|
Slf_JIEGUPOS result = m_pResultList[i];
|
|||
|
|
//
|
|||
|
|
drawOne(widget, result);
|
|||
|
|
}
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CObjTubingstringResult::drawOne(QMyCustomPlot *widget, Slf_JIEGUPOS result)
|
|||
|
|
{
|
|||
|
|
double depth=result.Depth;
|
|||
|
|
int Order=result.Order;
|
|||
|
|
int Number=result.Number;
|
|||
|
|
|
|||
|
|
float h=20;
|
|||
|
|
float in=m_Oind;
|
|||
|
|
if(!m_bDrawCCL)
|
|||
|
|
{
|
|||
|
|
if(Number==1) {
|
|||
|
|
in=m_Oind+1;
|
|||
|
|
}
|
|||
|
|
else if(Number==zoneOrder.value("套管接箍").toInt()){
|
|||
|
|
h=10;
|
|||
|
|
in=m_Oind;
|
|||
|
|
}
|
|||
|
|
else if(Number==zoneOrder.value("封隔器").toInt()||
|
|||
|
|
Number==zoneOrder.value("水力猫").toInt()||
|
|||
|
|
Number==zoneOrder.value("卡瓦").toInt()||
|
|||
|
|
Number==zoneOrder.value("定封隔猫").toInt()
|
|||
|
|
)
|
|||
|
|
{
|
|||
|
|
if(Number==zoneOrder.value("封隔器").toInt()) h=25;
|
|||
|
|
in=m_Oind;
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
in=m_Oind+1;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
in=m_Oind+1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
QString name;
|
|||
|
|
if(!m_bDrawCCL)
|
|||
|
|
{
|
|||
|
|
name=zoneOrder.key(QString::number(Number));
|
|||
|
|
if(name.isEmpty()) name=zoneOrder.key(QString::number(1));
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
name=zoneOrder.key(QString::number(1));
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
QString cclimgfile=cclimgpath+name+".png";
|
|||
|
|
float upper = widget->xAxis->coordToPixel(-depth)-h/2.0;
|
|||
|
|
float lower = widget->xAxis->coordToPixel(-depth)+h/2.0;
|
|||
|
|
float newUpper = widget->xAxis->pixelToCoord(upper);
|
|||
|
|
float newLower = widget->xAxis->pixelToCoord(lower);
|
|||
|
|
widget->addGuanToPlot(newLower, newUpper, cclimgfile, in);
|
|||
|
|
|
|||
|
|
// QString cclimgfile=cclimgpath+name+".png";
|
|||
|
|
// double lY1 = widget->yAxis->range().lower;//+10
|
|||
|
|
// double lY2 = widget->yAxis->range().upper;
|
|||
|
|
// QCPItemPixmap *mPixmap;
|
|||
|
|
// mPixmap = new QCPItemPixmap(widget);
|
|||
|
|
// mPixmap->setScaled(true, Qt::IgnoreAspectRatio); // 设置缩放方式
|
|||
|
|
// mPixmap->setLayer("overlay"); // 确保在最上层
|
|||
|
|
// //
|
|||
|
|
// float upper = widget->xAxis->coordToPixel(-depth)-h/2.0;
|
|||
|
|
// float lower = widget->xAxis->coordToPixel(-depth)+h/2.0;
|
|||
|
|
// float newUpper = widget->xAxis->pixelToCoord(upper);
|
|||
|
|
// float newLower = widget->xAxis->pixelToCoord(lower);
|
|||
|
|
// mPixmap->topLeft->setCoords(newUpper, lY1 + (lY2-lY1-in)/2.0);
|
|||
|
|
// mPixmap->bottomRight->setCoords(newLower, lY2 - (lY2-lY1-in)/2.0);
|
|||
|
|
// mPixmap->setPixmap(QPixmap(cclimgfile)); // 设置图片
|
|||
|
|
}
|