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)); // 设置图片
|
||
}
|