logplus/logPlus/ObjTubingstringResult.cpp

179 lines
5.7 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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