Merge branch 'main' of http://git.hivekion.com:3000/jiayulong/logplus
This commit is contained in:
commit
6e314845ed
|
|
@ -183,7 +183,7 @@ signals:
|
|||
void sig_changeDepthProperty(QVariantList vlist);
|
||||
|
||||
//改变岩心分析
|
||||
void sig_changeCorePhysicsProperty(QVariantList vlist);
|
||||
void sig_changeCorePhysicsProperty(QVariantMap vlist);
|
||||
|
||||
//右键--添加分段线
|
||||
void sig_AddShiftLine(QString strUuid, double left_Low, double right_Hight);
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -203,7 +203,7 @@ public:
|
|||
|
||||
// 录井剖面属性
|
||||
void initGeoLithProperty(FormInfo *formInfo);
|
||||
void initGeoLithItemProperty(TransparentDraggableGeoLith* tdGeoLith, double lower, double upper, const QString myLith, const QString myOil, const QString myColor);
|
||||
void initGeoLithItemProperty(TransparentDraggableGeoLith* tdGeoLith, double lower, double upper, QString myLith, QString myOil, QString myColor);
|
||||
|
||||
// 文字结论属性
|
||||
void initTextProperty(FormInfo *formInfo);
|
||||
|
|
|
|||
|
|
@ -49,8 +49,40 @@ void TransparentDraggableCorePhysics::setRange(double left_Low, double right_Hig
|
|||
}
|
||||
}
|
||||
m_lY1 = lY1;
|
||||
// lY2除以实际左到右刻度数值
|
||||
lY2 = lY2 / (getCpRightScale() - getCpLeftScale()) * 100;
|
||||
|
||||
|
||||
|
||||
double minV = getCpLeftScale();
|
||||
double maxV = getCpRightScale();
|
||||
double value = lY2;
|
||||
double finalValue = 0;
|
||||
int scaleType = getCpScaleType(); // 0=线性 1=对数 2=倾角
|
||||
if (scaleType == 0)
|
||||
{
|
||||
// 线性(原来的公式) // lY2除以实际左到右刻度数值
|
||||
finalValue = (value - minV) / (maxV - minV) * 100.0;
|
||||
}
|
||||
else if (scaleType == 1)
|
||||
{
|
||||
// 对数刻度(匹配 QCPAxis::stLogarithmic)
|
||||
double logMin = log10(minV <= 0 ? 1 : minV);
|
||||
double logMax = log10(maxV);
|
||||
double logVal = log10(value);
|
||||
finalValue = (logVal - logMin) / (logMax - logMin) * 100.0;
|
||||
}
|
||||
else if (scaleType == 2)
|
||||
{
|
||||
// 倾角刻度(正切非线性,QCustomPlot没有,我们自己实现标准倾角)
|
||||
double PI = acos(-1);
|
||||
auto linearNorm = (value - minV) / (maxV - minV); // 0~1
|
||||
double tanPos = tan(linearNorm * PI/2 - PI/4); // -1 ~ +1
|
||||
double tanNorm = (tanPos + 1.0) / 2.0; // 0~1
|
||||
finalValue = tanNorm * 100.0;
|
||||
}
|
||||
// 最终结果赋值给 lY2
|
||||
lY2 = finalValue;
|
||||
|
||||
|
||||
|
||||
|
||||
qcpItemLine->start->setCoords(left_Low, lY1);//圆心位置
|
||||
|
|
@ -98,13 +130,14 @@ void TransparentDraggableCorePhysics::update()
|
|||
|
||||
void TransparentDraggableCorePhysics::initRect()
|
||||
{
|
||||
|
||||
|
||||
// 连接鼠标事件
|
||||
connect(mPlot, &QCustomPlot::mousePress, this, &TransparentDraggableCorePhysics::onMousePress);
|
||||
connect(mPlot, &QCustomPlot::mouseMove, this, &TransparentDraggableCorePhysics::onMouseMove);
|
||||
connect(mPlot, &QCustomPlot::mouseRelease, this, &TransparentDraggableCorePhysics::onMouseRelease);
|
||||
|
||||
qcpItemLine = new QCPItemLine(mPlot);
|
||||
// qcpItemLine->setPen(QPen(Qt::blue, 20));
|
||||
qcpItemLine->setLayer("overlay"); // 确保在最上层
|
||||
|
||||
//上下边界
|
||||
|
|
@ -115,7 +148,7 @@ void TransparentDraggableCorePhysics::initRect()
|
|||
tracer->setGraph(nullptr); // 不关联曲线,自由定位
|
||||
tracer->setStyle(QCPItemTracer::tsCircle); // 圆形,可选:tsSquare, tsCross, tsPlus等
|
||||
tracer->setSize(3); // 点的大小(像素)
|
||||
tracer->setPen(QPen(Qt::red)); // 边框颜色
|
||||
tracer->setPen(QPen(Qt::black)); // 边框颜色
|
||||
tracer->setBrush(QBrush(QColor(0, 0, 0, 0))); // 黄色半透明,Alpha=128
|
||||
tracer->setInterpolating(false);
|
||||
// 绑定到线条终点(关键!)
|
||||
|
|
@ -123,6 +156,7 @@ void TransparentDraggableCorePhysics::initRect()
|
|||
tracer->setVisible(false);
|
||||
|
||||
qDebug() << "Creating qcpItemLine";
|
||||
// qDebug() << "=========this:" << this << " mPlot:" << mPlot;
|
||||
}
|
||||
|
||||
void TransparentDraggableCorePhysics::updateHandles()
|
||||
|
|
@ -165,17 +199,13 @@ void TransparentDraggableCorePhysics::onMousePress(QMouseEvent *event)
|
|||
{
|
||||
//之前的选中线段,恢复黑色
|
||||
TransparentDraggableCorePhysics *tmpLine = (TransparentDraggableCorePhysics*)mPlot->m_SelectShiftLine;
|
||||
QPen pen = tmpLine->qcpItemLine->pen();
|
||||
// pen.setWidth(getCpLineWidth());
|
||||
pen.setColor(Qt::black); // 线宽
|
||||
QPen pen = tmpLine->qcpItemLine->pen(); // 现在这里绝对安全
|
||||
pen.setColor(this->getCpLineColor());
|
||||
tmpLine->qcpItemLine->setPen(pen);
|
||||
// tmpLine->qcpItemLine->setPen(QPen(Qt::black));
|
||||
}
|
||||
|
||||
//重新设置选中线段
|
||||
mPlot->m_SelectShiftLine = this;
|
||||
QPen pen = qcpItemLine->pen();
|
||||
// pen.setWidth(getCpLineWidth());
|
||||
pen.setColor(Qt::red);
|
||||
qcpItemLine->setPen(pen);
|
||||
|
||||
|
|
@ -307,35 +337,25 @@ void TransparentDraggableCorePhysics::setCpCoreValue(double value)
|
|||
qcpItemLine->end->setCoords(currentX, value);
|
||||
}
|
||||
|
||||
double TransparentDraggableCorePhysics::getCpExampleAreaHeightCm() const
|
||||
{
|
||||
return this->m_cp_exampleAreaHeightCm;
|
||||
}
|
||||
//double TransparentDraggableCorePhysics::getCpRotationAngle() const
|
||||
//{
|
||||
// return this->m_cp_rotationAngle;
|
||||
//}
|
||||
|
||||
void TransparentDraggableCorePhysics::setCpExampleAreaHeightCm(double value)
|
||||
{
|
||||
this->m_cp_exampleAreaHeightCm = value;
|
||||
}
|
||||
//void TransparentDraggableCorePhysics::setCpRotationAngle(double value)
|
||||
//{
|
||||
// this->m_cp_rotationAngle = value;
|
||||
//}
|
||||
|
||||
double TransparentDraggableCorePhysics::getCpRotationAngle() const
|
||||
{
|
||||
return this->m_cp_rotationAngle;
|
||||
}
|
||||
//QString TransparentDraggableCorePhysics::getCpDisplayName() const
|
||||
//{
|
||||
// return this->m_cp_displayName;
|
||||
//}
|
||||
|
||||
void TransparentDraggableCorePhysics::setCpRotationAngle(double value)
|
||||
{
|
||||
this->m_cp_rotationAngle = value;
|
||||
}
|
||||
|
||||
QString TransparentDraggableCorePhysics::getCpDisplayName() const
|
||||
{
|
||||
return this->m_cp_displayName;
|
||||
}
|
||||
|
||||
void TransparentDraggableCorePhysics::setCpDisplayName(const QString &value)
|
||||
{
|
||||
this->m_cp_displayName = value;
|
||||
}
|
||||
//void TransparentDraggableCorePhysics::setCpDisplayName(const QString &value)
|
||||
//{
|
||||
// this->m_cp_displayName = value;
|
||||
//}
|
||||
|
||||
int TransparentDraggableCorePhysics::getCpLineWidth() const
|
||||
{
|
||||
|
|
@ -345,12 +365,11 @@ int TransparentDraggableCorePhysics::getCpLineWidth() const
|
|||
void TransparentDraggableCorePhysics::setCpLineWidth(int value)
|
||||
{
|
||||
this->m_cp_lineWidth = value;
|
||||
QList<QCPItemLine*> itemLine = this->mPlot->findChildren<QCPItemLine*>();
|
||||
foreach (QCPItemLine *tracer, itemLine) {
|
||||
QPen pen = tracer->pen();
|
||||
pen.setWidth(value); // 线宽
|
||||
tracer->setPen(pen);
|
||||
}
|
||||
|
||||
QPen pen = this->qcpItemLine->pen();
|
||||
pen.setWidth(value); // 线宽
|
||||
this->qcpItemLine->setPen(pen);
|
||||
|
||||
}
|
||||
|
||||
QColor TransparentDraggableCorePhysics::getCpLineColor() const
|
||||
|
|
@ -362,14 +381,12 @@ void TransparentDraggableCorePhysics::setCpLineColor(QColor value)
|
|||
{
|
||||
this->m_cp_lineColor = value;
|
||||
|
||||
QList<QCPItemLine*> itemLine = this->mPlot->findChildren<QCPItemLine*>();
|
||||
foreach (QCPItemLine *tracer, itemLine) {
|
||||
QPen pen = tracer->pen();
|
||||
pen.setColor(value);
|
||||
tracer->setPen(pen);
|
||||
}
|
||||
QPen pen = this->qcpItemLine->pen();
|
||||
pen.setColor(value);
|
||||
this->qcpItemLine->setPen(pen);
|
||||
}
|
||||
|
||||
|
||||
Qt::PenStyle TransparentDraggableCorePhysics::getCpLineStyle() const
|
||||
{
|
||||
return this->m_cp_lineStyle;
|
||||
|
|
@ -379,12 +396,10 @@ void TransparentDraggableCorePhysics::setCpLineStyle(Qt::PenStyle value)
|
|||
{
|
||||
this->m_cp_lineStyle = value;
|
||||
|
||||
QList<QCPItemLine*> itemLine = this->mPlot->findChildren<QCPItemLine*>();
|
||||
foreach (QCPItemLine *tracer, itemLine) {
|
||||
QPen pen = tracer->pen();
|
||||
pen.setStyle(value);
|
||||
tracer->setPen(pen);
|
||||
}
|
||||
QPen pen = this->qcpItemLine->pen();
|
||||
pen.setStyle(value);
|
||||
this->qcpItemLine->setPen(pen);
|
||||
|
||||
}
|
||||
|
||||
double TransparentDraggableCorePhysics::getCpLeftScale() const
|
||||
|
|
@ -396,7 +411,6 @@ void TransparentDraggableCorePhysics::setCpLeftScale(double value)
|
|||
{
|
||||
this->m_cp_leftScale = value;
|
||||
|
||||
this->mPlot->yAxis2->setRange(value, this->mPlot->yAxis2->range().upper);
|
||||
// 重新绘制图形
|
||||
this->setRange(this->m_left_Low, this->m_left_Low, this->getCpCoreValue(), false);
|
||||
}
|
||||
|
|
@ -410,7 +424,6 @@ void TransparentDraggableCorePhysics::setCpRightScale(double value)
|
|||
{
|
||||
this->m_cp_rightScale = value;
|
||||
|
||||
this->mPlot->yAxis2->setRange(this->mPlot->yAxis2->range().lower, value);
|
||||
// 重新绘制图形
|
||||
this->setRange(this->m_left_Low, this->m_left_Low, this->getCpCoreValue(), false);
|
||||
}
|
||||
|
|
@ -424,51 +437,37 @@ void TransparentDraggableCorePhysics::setCpScaleType(int value)
|
|||
{
|
||||
this->m_cp_scaleType = value;
|
||||
|
||||
int newStyle = 0;
|
||||
switch(value)
|
||||
{
|
||||
case 0:
|
||||
// 线性
|
||||
this->mPlot->yAxis2->setScaleType(QCPAxis::stLinear);
|
||||
break;
|
||||
case 1:
|
||||
// 对数
|
||||
this->mPlot->yAxis2->setScaleType(QCPAxis::stLogarithmic);
|
||||
break;
|
||||
case 2:
|
||||
// 倾角 没有倾角类型
|
||||
this->mPlot->yAxis2->setScaleType(QCPAxis::stLogarithmic);
|
||||
break;
|
||||
}
|
||||
// 重新绘制图形
|
||||
this->setRange(this->m_left_Low, this->m_left_Low, this->getCpCoreValue(), false);
|
||||
}
|
||||
|
||||
int TransparentDraggableCorePhysics::getCpScaleDivisionsOrCustom() const
|
||||
{
|
||||
return this->m_cp_scaleDivisionsOrCustom;
|
||||
}
|
||||
//int TransparentDraggableCorePhysics::getCpScaleDivisionsOrCustom() const
|
||||
//{
|
||||
// return this->m_cp_scaleDivisionsOrCustom;
|
||||
//}
|
||||
|
||||
void TransparentDraggableCorePhysics::setCpScaleDivisionsOrCustom(int value)
|
||||
{
|
||||
this->m_cp_scaleDivisionsOrCustom = value;
|
||||
//void TransparentDraggableCorePhysics::setCpScaleDivisionsOrCustom(int value)
|
||||
//{
|
||||
// this->m_cp_scaleDivisionsOrCustom = value;
|
||||
|
||||
// 创建文本刻度 Ticker
|
||||
QSharedPointer<QCPAxisTickerText> textTicker(new QCPAxisTickerText);
|
||||
double minVal = this->mPlot->yAxis2->range().lower;
|
||||
double maxVal = this->mPlot->yAxis2->range().upper;
|
||||
// 计算步长:(最大值 - 最小值) / 等分数
|
||||
double step = (maxVal - minVal) / value;
|
||||
// 生成刻度
|
||||
for (int i = 0; i <= value; ++i) {
|
||||
double value = minVal + step * i;
|
||||
// 取整显示(34.0 显示为 "34")
|
||||
QString label = QString::number(qRound(value));
|
||||
textTicker->addTick(value, label);
|
||||
}
|
||||
// 应用 Ticker
|
||||
this->mPlot->yAxis2->setTicker(textTicker);
|
||||
// 设置范围(稍微留边距,让刻度显示完整)
|
||||
// this->mPlot->yAxis2->setRange(minVal - step * 0.1, maxVal + step * 0.1);
|
||||
}
|
||||
//// // 创建文本刻度 Ticker
|
||||
//// QSharedPointer<QCPAxisTickerText> textTicker(new QCPAxisTickerText);
|
||||
//// double minVal = this->mPlot->yAxis2->range().lower;
|
||||
//// double maxVal = this->mPlot->yAxis2->range().upper;
|
||||
//// // 计算步长:(最大值 - 最小值) / 等分数
|
||||
//// double step = (maxVal - minVal) / value;
|
||||
//// // 生成刻度
|
||||
//// for (int i = 0; i <= value; ++i) {
|
||||
//// double value = minVal + step * i;
|
||||
//// // 取整显示(34.0 显示为 "34")
|
||||
//// QString label = QString::number(qRound(value));
|
||||
//// textTicker->addTick(value, label);
|
||||
//// }
|
||||
//// // 应用 Ticker
|
||||
//// this->mPlot->yAxis2->setTicker(textTicker);
|
||||
//// // 设置范围(稍微留边距,让刻度显示完整)
|
||||
////// this->mPlot->yAxis2->setRange(minVal - step * 0.1, maxVal + step * 0.1);
|
||||
//}
|
||||
|
||||
QString TransparentDraggableCorePhysics::getCpDisplayUnit() const
|
||||
{
|
||||
|
|
@ -509,7 +508,7 @@ void TransparentDraggableCorePhysics::setCpCurveScale(QFont value)
|
|||
{
|
||||
this->m_cp_curveScale = value;
|
||||
|
||||
this->mPlot->yAxis2->setTickLabelFont(value);
|
||||
// this->mPlot->yAxis2->setTickLabelFont(value);
|
||||
}
|
||||
|
||||
bool TransparentDraggableCorePhysics::getCpDrawAsBar() const
|
||||
|
|
@ -543,17 +542,28 @@ bool TransparentDraggableCorePhysics::getCpLeftBoundary() const
|
|||
void TransparentDraggableCorePhysics::setCpLeftBoundary(bool value)
|
||||
{
|
||||
this->m_cp_leftBoundary = value;
|
||||
// 由于 X轴↔Y轴 互换,"水平翻转"变成关于 Y轴中心对称
|
||||
double y_center = (this->mPlot->yAxis->range().lower + this->mPlot->yAxis->range().upper) / 2;
|
||||
|
||||
// 获取原坐标(注意:此时 coords() 返回的是互换后的坐标)
|
||||
QPointF start = this->qcpItemLine->start->coords();
|
||||
QPointF end = this->qcpItemLine->end->coords();
|
||||
|
||||
// 翻转:Y轴不变(实际是视觉上的X轴),X轴镜像(实际是视觉上的Y轴)
|
||||
// 但由于轴互换了,我们需要翻转的是 y 坐标
|
||||
this->qcpItemLine->start->setCoords(start.x(), 2 * y_center - start.y());
|
||||
this->qcpItemLine->end->setCoords(end.x(), 2 * y_center - end.y());
|
||||
double y_min = mPlot->yAxis->range().lower;
|
||||
double y_max = mPlot->yAxis->range().upper;
|
||||
double y_center = (y_min + y_max) / 2;
|
||||
QPointF start = qcpItemLine->start->coords();
|
||||
QPointF end = qcpItemLine->end->coords();
|
||||
double targetYStart, targetYEnd;
|
||||
if (value) {
|
||||
// ======================================
|
||||
// ✅ TRUE = 强制回到左边(固定公式)
|
||||
// ======================================
|
||||
targetYStart = y_min + (y_max - start.y());
|
||||
targetYEnd = y_min + (y_max - end.y());
|
||||
} else {
|
||||
// ======================================
|
||||
// ✅ FALSE = 强制去到右边(固定公式)
|
||||
// ======================================
|
||||
targetYStart = 2 * y_center - start.y();
|
||||
targetYEnd = 2 * y_center - end.y();
|
||||
}
|
||||
qcpItemLine->start->setCoords(start.x(), targetYStart);
|
||||
qcpItemLine->end->setCoords(end.x(), targetYEnd);
|
||||
}
|
||||
|
||||
bool TransparentDraggableCorePhysics::getCpSkipZeroInvalidValues() const
|
||||
|
|
@ -657,7 +667,6 @@ void TransparentDraggableCorePhysics::setCpSymbolSize(int value)
|
|||
foreach (QCPItemTracer *tracer, tracers) {
|
||||
tracer->setSize(value); // 点的大小(像素)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
QColor TransparentDraggableCorePhysics::getCpSymbolFillColor() const
|
||||
|
|
@ -680,12 +689,12 @@ void TransparentDraggableCorePhysics::setCpSymbolFillColor(QColor value)
|
|||
}
|
||||
}
|
||||
|
||||
int TransparentDraggableCorePhysics::getCpFieldName() const
|
||||
{
|
||||
return this->m_cp_fieldName;
|
||||
}
|
||||
//int TransparentDraggableCorePhysics::getCpFieldName() const
|
||||
//{
|
||||
// return this->m_cp_fieldName;
|
||||
//}
|
||||
|
||||
void TransparentDraggableCorePhysics::setCpFieldName(const int &value)
|
||||
{
|
||||
this->m_cp_fieldName = value;
|
||||
}
|
||||
//void TransparentDraggableCorePhysics::setCpFieldName(const int &value)
|
||||
//{
|
||||
// this->m_cp_fieldName = value;
|
||||
//}
|
||||
|
|
|
|||
|
|
@ -48,14 +48,11 @@ public:
|
|||
double getCpCoreValue() const;
|
||||
void setCpCoreValue(double value);
|
||||
|
||||
double getCpExampleAreaHeightCm() const;
|
||||
void setCpExampleAreaHeightCm(double value);
|
||||
// double getCpRotationAngle() const;
|
||||
// void setCpRotationAngle(double value);
|
||||
|
||||
double getCpRotationAngle() const;
|
||||
void setCpRotationAngle(double value);
|
||||
|
||||
QString getCpDisplayName() const;
|
||||
void setCpDisplayName(const QString &value);
|
||||
// QString getCpDisplayName() const;
|
||||
// void setCpDisplayName(const QString &value);
|
||||
|
||||
int getCpLineWidth() const;
|
||||
void setCpLineWidth(int value);
|
||||
|
|
@ -75,8 +72,8 @@ public:
|
|||
int getCpScaleType() const;
|
||||
void setCpScaleType(int value);
|
||||
|
||||
int getCpScaleDivisionsOrCustom() const;
|
||||
void setCpScaleDivisionsOrCustom(int value);
|
||||
// int getCpScaleDivisionsOrCustom() const;
|
||||
// void setCpScaleDivisionsOrCustom(int value);
|
||||
|
||||
QString getCpDisplayUnit() const;
|
||||
void setCpDisplayUnit(const QString &value);
|
||||
|
|
@ -117,23 +114,22 @@ public:
|
|||
QColor getCpSymbolFillColor() const;
|
||||
void setCpSymbolFillColor(QColor value);
|
||||
|
||||
int getCpFieldName() const;
|
||||
void setCpFieldName(const int &value);
|
||||
// int getCpFieldName() const;
|
||||
// void setCpFieldName(const int &value);
|
||||
|
||||
signals:
|
||||
void rangeChanged(QCPRange newRange);
|
||||
|
||||
private:
|
||||
double m_cp_exampleAreaHeightCm; // 例区高度(cm)
|
||||
double m_cp_rotationAngle; // 旋转角度
|
||||
QString m_cp_displayName; // 显示名称
|
||||
// double m_cp_rotationAngle; // 旋转角度
|
||||
// QString m_cp_displayName; // 显示名称
|
||||
int m_cp_lineWidth; // 线宽
|
||||
QColor m_cp_lineColor; // 线条颜色
|
||||
Qt::PenStyle m_cp_lineStyle; // 线型
|
||||
double m_cp_leftScale = 0; // 左刻度
|
||||
double m_cp_rightScale = 100; // 右刻度
|
||||
int m_cp_scaleType; // 刻度类型
|
||||
int m_cp_scaleDivisionsOrCustom; // 等分刻度数或自定序列
|
||||
int m_cp_scaleType = 0; // 刻度类型
|
||||
// int m_cp_scaleDivisionsOrCustom; // 等分刻度数或自定序列
|
||||
QString m_cp_displayUnit; // 显示单位
|
||||
QString m_cp_curveName; // 曲线名称
|
||||
QString m_cp_curveUnit; // 曲线单位
|
||||
|
|
@ -147,7 +143,7 @@ private:
|
|||
QColor m_cp_symbolBorderColor; // 边框颜色
|
||||
int m_cp_symbolSize; // 大小
|
||||
QColor m_cp_symbolFillColor; // 填充颜色
|
||||
int m_cp_fieldName; // 字段名称
|
||||
// int m_cp_fieldName; // 字段名称
|
||||
// 这四个是slf文件保存读取的
|
||||
int m_cp_order; // 序号
|
||||
double m_cp_depth; // 深度
|
||||
|
|
@ -183,7 +179,6 @@ public:
|
|||
double m_lY1 = 0;
|
||||
// 添加最小宽度成员变量
|
||||
double mMinWidth;
|
||||
|
||||
};
|
||||
|
||||
#endif // TRANSPARENTDRAGGABLECOREPHYSICS_H
|
||||
|
|
|
|||
|
|
@ -5501,7 +5501,7 @@ void FormDraw::initIMAGE_DATA(QMyCustomPlot *widget, QString strSlfName, QString
|
|||
widget->xAxis2->setTicks(false);
|
||||
widget->yAxis2->setTicks(false);
|
||||
//
|
||||
LoadFromIMAGE_SLF(widget, strSlfName, strLineName);
|
||||
widget->LoadFromIMAGE_SLF(strSlfName, strLineName);
|
||||
//显示文本
|
||||
QString strAliasName = "岩心图片";
|
||||
if(stringList.size() >= 1)
|
||||
|
|
@ -5518,61 +5518,61 @@ void FormDraw::initIMAGE_DATA(QMyCustomPlot *widget, QString strSlfName, QString
|
|||
m_RightVal, m_LeftVal, strScaleType, "tableObject", stringList);//yanxinImageObject
|
||||
}
|
||||
|
||||
bool FormDraw::LoadFromIMAGE_SLF(QMyCustomPlot *widget, QString strSlfName, QString strLineName)
|
||||
{
|
||||
{
|
||||
QString ss=strSlfName;
|
||||
CMemRdWt *logio=new CMemRdWt();
|
||||
if(ss==""||!logio->Open(ss.toStdString().c_str(),CSlfIO::modeRead))
|
||||
{
|
||||
delete logio;
|
||||
// QMessageBox::information(NULL,"提示","SLF文件打开失败,请检查!!",QMessageBox::Yes);
|
||||
return false;
|
||||
}
|
||||
int iIndex=logio->OpenTable(strLineName.toStdString().c_str());
|
||||
if(iIndex>-1) {
|
||||
int len=logio->GetTableRecordLength(iIndex);
|
||||
if(len<sizeof(IMAGE_DATA)) len=sizeof(IMAGE_DATA);
|
||||
char*buf=new char[len+1];
|
||||
IMAGE_DATA *m_Result=(IMAGE_DATA *)buf;
|
||||
//bool FormDraw::LoadFromIMAGE_SLF(QMyCustomPlot *widget, QString strSlfName, QString strLineName)
|
||||
//{
|
||||
// {
|
||||
// QString ss=strSlfName;
|
||||
// CMemRdWt *logio=new CMemRdWt();
|
||||
// if(ss==""||!logio->Open(ss.toStdString().c_str(),CSlfIO::modeRead))
|
||||
// {
|
||||
// delete logio;
|
||||
// // QMessageBox::information(NULL,"提示","SLF文件打开失败,请检查!!",QMessageBox::Yes);
|
||||
// return false;
|
||||
// }
|
||||
// int iIndex=logio->OpenTable(strLineName.toStdString().c_str());
|
||||
// if(iIndex>-1) {
|
||||
// int len=logio->GetTableRecordLength(iIndex);
|
||||
// if(len<sizeof(IMAGE_DATA)) len=sizeof(IMAGE_DATA);
|
||||
// char*buf=new char[len+1];
|
||||
// IMAGE_DATA *m_Result=(IMAGE_DATA *)buf;
|
||||
|
||||
int count=logio->GetTableRecordCount(iIndex);
|
||||
for(int i=0;i<count;i++) {
|
||||
memset(m_Result,0,sizeof(IMAGE_DATA));
|
||||
logio->ReadTable(iIndex,i+1,m_Result);
|
||||
// WelllogItem* item=AddItem(m_Result->StartDepth,m_Result->EndDepth);
|
||||
// if(!item) continue;
|
||||
// OGWordsResultItem* pResult = dynamic_cast<OGWordsResultItem*>(item);
|
||||
//logio->GetTableFieldData(iIndex,(char*)FieldName.toStdString().c_str(),m_Result->Image,i+1);
|
||||
// int count=logio->GetTableRecordCount(iIndex);
|
||||
// for(int i=0;i<count;i++) {
|
||||
// memset(m_Result,0,sizeof(IMAGE_DATA));
|
||||
// logio->ReadTable(iIndex,i+1,m_Result);
|
||||
// // WelllogItem* item=AddItem(m_Result->StartDepth,m_Result->EndDepth);
|
||||
// // if(!item) continue;
|
||||
// // OGWordsResultItem* pResult = dynamic_cast<OGWordsResultItem*>(item);
|
||||
// //logio->GetTableFieldData(iIndex,(char*)FieldName.toStdString().c_str(),m_Result->Image,i+1);
|
||||
|
||||
|
||||
// SetCharacters(m_Result->Words);
|
||||
// // SetCharacters(m_Result->Words);
|
||||
|
||||
// fontColor=QColor(0,0,0,255);
|
||||
// backgroundColor=QColor(255,255,255,255);
|
||||
// wordfont.setFamily("黑体");
|
||||
// wordfont.setPointSize(10);
|
||||
// // fontColor=QColor(0,0,0,255);
|
||||
// // backgroundColor=QColor(255,255,255,255);
|
||||
// // wordfont.setFamily("黑体");
|
||||
// // wordfont.setPointSize(10);
|
||||
|
||||
//显示图片Image
|
||||
QString filename=QString::fromLocal8Bit(m_Result->Image);
|
||||
int pos=filename.lastIndexOf("\\");
|
||||
int pos1=filename.lastIndexOf("/");
|
||||
if(pos1>pos) pos=pos1;
|
||||
if(filename.lastIndexOf(".")>-1) {
|
||||
int aa=filename.lastIndexOf(".");
|
||||
if(aa<pos) {
|
||||
filename="";
|
||||
}
|
||||
}
|
||||
widget->addImageToPlot(-m_Result->EndDepth, -m_Result->StartDepth, filename, static_cast<double>(m_Result->Left), static_cast<double>(m_Result->Width));
|
||||
}
|
||||
logio->CloseTable(iIndex);
|
||||
delete buf;
|
||||
}
|
||||
delete logio;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
// //显示图片Image
|
||||
// QString filename=QString::fromLocal8Bit(m_Result->Image);
|
||||
// int pos=filename.lastIndexOf("\\");
|
||||
// int pos1=filename.lastIndexOf("/");
|
||||
// if(pos1>pos) pos=pos1;
|
||||
// if(filename.lastIndexOf(".")>-1) {
|
||||
// int aa=filename.lastIndexOf(".");
|
||||
// if(aa<pos) {
|
||||
// filename="";
|
||||
// }
|
||||
// }
|
||||
// widget->addImageToPlot(-m_Result->EndDepth, -m_Result->StartDepth, filename, static_cast<double>(m_Result->Left), static_cast<double>(m_Result->Width));
|
||||
// }
|
||||
// logio->CloseTable(iIndex);
|
||||
// delete buf;
|
||||
// }
|
||||
// delete logio;
|
||||
// }
|
||||
// return true;
|
||||
//}
|
||||
|
||||
//解释结论
|
||||
void FormDraw::initResult(QMyCustomPlot *widget, QString strSlfName, QString strLineName)
|
||||
|
|
@ -6968,111 +6968,92 @@ void FormDraw::initCorePhysics(QMyCustomPlot *widget, QString strSlfName, QStrin
|
|||
widget->xAxis->setTicks(false);
|
||||
widget->yAxis->setTicks(false);
|
||||
widget->xAxis2->setTicks(false);
|
||||
widget->yAxis2->setTicks(true);
|
||||
widget->yAxis2->setTicks(false);
|
||||
|
||||
widget->yAxis2->setTickLabels(true);
|
||||
widget->yAxis2->setTickLabelSide(QCPAxis::lsInside);
|
||||
|
||||
|
||||
widget->yAxis2->setRange(0, 100);
|
||||
// 设置刻度
|
||||
// 创建文本刻度 Ticker
|
||||
QSharedPointer<QCPAxisTickerText> textTicker(new QCPAxisTickerText);
|
||||
double minVal = widget->yAxis2->range().lower;
|
||||
double maxVal = widget->yAxis2->range().upper;
|
||||
int value = 2;
|
||||
// 计算步长:(最大值 - 最小值) / 等分数
|
||||
double step = (maxVal - minVal) / value;
|
||||
// 生成刻度
|
||||
for (int i = 0; i <= value; ++i) {
|
||||
double value = minVal + step * i;
|
||||
// 取整显示(34.0 显示为 "34")
|
||||
QString label = QString::number(qRound(value));
|
||||
textTicker->addTick(value, label);
|
||||
}
|
||||
// 应用 Ticker
|
||||
widget->yAxis2->setTicker(textTicker);
|
||||
|
||||
|
||||
// 加载slf文件 开始
|
||||
QVector<double> x, y;
|
||||
|
||||
Slf_CORE_PHYSICS *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;
|
||||
}
|
||||
int iIndex=logio->OpenTable(strLineName.toStdString().c_str());
|
||||
if(iIndex>-1) {
|
||||
int FieldNo=0;
|
||||
int count=logio->GetTableRecordCount(iIndex);
|
||||
|
||||
QString FieldName = "AC";
|
||||
// // 加载slf文件 开始
|
||||
// QVector<double> x, y;
|
||||
// Slf_CORE_PHYSICS *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;
|
||||
// }
|
||||
// int iIndex=logio->OpenTable(strLineName.toStdString().c_str());
|
||||
// if(iIndex>-1) {
|
||||
// int FieldNo=0;
|
||||
// int count=logio->GetTableRecordCount(iIndex);
|
||||
|
||||
if(!FieldName.isEmpty()) {
|
||||
static int err=0;
|
||||
FieldNo=logio->GetTableFieldNo(iIndex,(char *)FieldName.toStdString().c_str());
|
||||
if(FieldNo<0) {
|
||||
if(!err)QMessageBox::information(nullptr, "提示", "岩心试验数据模块初始加载数据不成功,因为隐含"+FieldName+"字段在实际数据表中不存在,稍后请您重新选择有效字段!");
|
||||
err++;
|
||||
delete logio;
|
||||
return;
|
||||
}
|
||||
else err=0;
|
||||
}
|
||||
else {
|
||||
delete logio;
|
||||
return;
|
||||
}
|
||||
int len=logio->GetTableRecordLength(iIndex);
|
||||
m_pResult=(Slf_CORE_PHYSICS *)new char[len+1];
|
||||
char buf[100];
|
||||
for(int i=0;i<count;i++) {
|
||||
logio->GetTableFieldData(iIndex,1,buf,i+1);
|
||||
sscanf(buf,"%f",&m_pResult->Depth);
|
||||
logio->GetTableFieldData(iIndex,2,buf,i+1);
|
||||
sscanf(buf,"%f",&m_pResult->CorrDepth);
|
||||
// logio->ReadTable(iIndex,i+1,m_pResult);
|
||||
// QString FieldName = "AC";
|
||||
|
||||
int Order = m_pResult->Order;
|
||||
float depth = m_pResult->Depth;
|
||||
float CorrDepth = m_pResult->CorrDepth;
|
||||
float CoreValue = m_pResult->CoreValue;
|
||||
logio->GetTableFieldData(iIndex,FieldNo,buf,i+1);
|
||||
// if(!FieldName.isEmpty()) {
|
||||
// static int err=0;
|
||||
// FieldNo=logio->GetTableFieldNo(iIndex,(char *)FieldName.toStdString().c_str());
|
||||
// if(FieldNo<0) {
|
||||
// if(!err)QMessageBox::information(nullptr, "提示", "岩心试验数据模块初始加载数据不成功,因为隐含"+FieldName+"字段在实际数据表中不存在,稍后请您重新选择有效字段!");
|
||||
// err++;
|
||||
// delete logio;
|
||||
// return;
|
||||
// }
|
||||
// else err=0;
|
||||
// }
|
||||
// else {
|
||||
// delete logio;
|
||||
// return;
|
||||
// }
|
||||
// int len=logio->GetTableRecordLength(iIndex);
|
||||
// m_pResult=(Slf_CORE_PHYSICS *)new char[len+1];
|
||||
// char buf[100];
|
||||
// for(int i=0;i<count;i++) {
|
||||
// logio->GetTableFieldData(iIndex,1,buf,i+1);
|
||||
// sscanf(buf,"%f",&m_pResult->Depth);
|
||||
// logio->GetTableFieldData(iIndex,2,buf,i+1);
|
||||
// sscanf(buf,"%f",&m_pResult->CorrDepth);
|
||||
// // logio->ReadTable(iIndex,i+1,m_pResult);
|
||||
|
||||
CoreValue=0;
|
||||
sscanf(buf,"%f",&CoreValue);
|
||||
//
|
||||
// int Order = m_pResult->Order;
|
||||
// float depth = m_pResult->Depth;
|
||||
// float CorrDepth = m_pResult->CorrDepth;
|
||||
// float CoreValue = m_pResult->CoreValue;
|
||||
// logio->GetTableFieldData(iIndex,FieldNo,buf,i+1);
|
||||
|
||||
if(i==0)
|
||||
{
|
||||
//最大值,最小值默认采用第一个有效值
|
||||
//vmax = vmin = CoreValue;
|
||||
// CoreValue=0;
|
||||
// sscanf(buf,"%f",&CoreValue);
|
||||
// //
|
||||
|
||||
//默认采用0-100范围
|
||||
if(vmax<CoreValue)vmax=CoreValue;
|
||||
if(vmin>CoreValue)vmin=CoreValue;
|
||||
}
|
||||
else
|
||||
{
|
||||
//
|
||||
if(vmax<CoreValue)vmax=CoreValue;
|
||||
if(vmin>CoreValue)vmin=CoreValue;
|
||||
}
|
||||
//
|
||||
x.append(-CorrDepth);
|
||||
y.append(CoreValue);
|
||||
// 已经加载了slf文件内容 显示界面上
|
||||
widget->addCorePhysicsWithParam(Order, static_cast<double>(-depth), static_cast<double>(-CorrDepth), static_cast<double>(-CoreValue));
|
||||
}
|
||||
logio->CloseTable(iIndex);
|
||||
delete m_pResult;
|
||||
}
|
||||
delete logio;
|
||||
// 加载slf文件结束
|
||||
// if(i==0)
|
||||
// {
|
||||
// //最大值,最小值默认采用第一个有效值
|
||||
// //vmax = vmin = CoreValue;
|
||||
|
||||
// //默认采用0-100范围
|
||||
// if(vmax<CoreValue)vmax=CoreValue;
|
||||
// if(vmin>CoreValue)vmin=CoreValue;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// //
|
||||
// if(vmax<CoreValue)vmax=CoreValue;
|
||||
// if(vmin>CoreValue)vmin=CoreValue;
|
||||
// }
|
||||
// //
|
||||
// x.append(-CorrDepth);
|
||||
// y.append(CoreValue);
|
||||
// // 已经加载了slf文件内容 显示界面上
|
||||
// widget->addCorePhysicsWithParam(Order, static_cast<double>(-depth), static_cast<double>(-CorrDepth), static_cast<double>(-CoreValue));
|
||||
// }
|
||||
// logio->CloseTable(iIndex);
|
||||
// delete m_pResult;
|
||||
// }
|
||||
// delete logio;
|
||||
// // 加载slf文件结束
|
||||
|
||||
// 加载slf文件
|
||||
widget->loadFromSLFCorePhysics(strSlfName, strLineName);
|
||||
|
||||
QString strAliasName = "岩心实验数据";
|
||||
QString strUnit = "";
|
||||
|
|
@ -7088,15 +7069,6 @@ void FormDraw::initCorePhysics(QMyCustomPlot *widget, QString strSlfName, QStrin
|
|||
addRandomGraph(widget, x, y, strSlfName, strLineName, strAliasName, strUnit,
|
||||
newLeftScale, newRightScale, strScaleType, lineColor, width, lineStyle, stringList);
|
||||
|
||||
// if(stringList.size() >= 1)
|
||||
// {
|
||||
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// addRandomGraph(widget, x, y, strSlfName, strLineName, strAliasName, strUnit);
|
||||
// }
|
||||
|
||||
//支持框选------------------
|
||||
// widget->setSelectionRectMode(QCP::SelectionRectMode::srmSelect);
|
||||
widget->graph(0)->setSelectable(QCP::SelectionType::stMultipleDataRanges);// stSingleData
|
||||
|
|
|
|||
|
|
@ -229,7 +229,7 @@ public:
|
|||
|
||||
//岩心图片数据
|
||||
void initIMAGE_DATA(QMyCustomPlot *widget, QString strSlfName, QString strLineName, QStringList listOtherProperty={});
|
||||
bool LoadFromIMAGE_SLF(QMyCustomPlot *widget, QString strSlfName, QString strLineName);
|
||||
// bool LoadFromIMAGE_SLF(QMyCustomPlot *widget, QString strSlfName, QString strLineName);
|
||||
|
||||
//深度
|
||||
void initDepth(QMyCustomPlot *widget);
|
||||
|
|
|
|||
|
|
@ -800,20 +800,60 @@ void FormInfo::paintEvent(QPaintEvent* event)
|
|||
}
|
||||
if(m_strType == "tableObject" && m_strLineName == "CORE_PHYSICS")
|
||||
{
|
||||
painter.setPen(Qt::black);
|
||||
// 字体->曲线单位
|
||||
QFont oldFont = painter.font();
|
||||
painter.setFont(m_strUnitFont);
|
||||
// 显示单位
|
||||
painter.drawText(rect.left()+10, rect.top() + rect.height() * 2 / 3, rect.width(), rect.height() / 3, Qt::AlignCenter, m_strUnit);
|
||||
painter.setFont(oldFont);
|
||||
// 显示刻度
|
||||
if (m_bShowScale)
|
||||
|
||||
// 刻度的那条线
|
||||
int baseY = rect.top() + rect.height() * 2 / 3;
|
||||
int textH = rect.height() / 3;
|
||||
// 关键:线 Y 坐标 = 文字底部,但不超过 rect 底部
|
||||
int lineY = baseY + textH - 7;
|
||||
int x1 = rect.left() + 20;
|
||||
int x2 = rect.right() - 30;
|
||||
painter.drawLine(x1, lineY, x2, lineY);
|
||||
|
||||
// 字体->曲线刻度
|
||||
oldFont = painter.font();
|
||||
painter.setFont(m_cp_curveScale);
|
||||
// ========== 在这条线上画刻度 + 数字 ==========
|
||||
int minVal = this->m_cp_leftScale; // 最小值(可变)
|
||||
int maxVal = this->m_cp_rightScale; // 最大值(可变)
|
||||
if(this->m_cp_scaleDivisionsOrCustom <= 0)
|
||||
{
|
||||
painter.setFont(m_curveScaleFont);
|
||||
QFontMetrics fm1(m_curveScaleFont);
|
||||
QRect textRect = fm1.boundingRect(QString::number(m_vmax, 'f', 0));
|
||||
painter.drawText(rect.left() + 10, rect.top() + rect.height() * 2 / 3, rect.width(), rect.height() / 3, Qt::AlignLeft | Qt::AlignVCenter, QString::number(m_vmin));// +" ~ " + QString::number(m_vmax));
|
||||
painter.drawText(rect.left() + 10, rect.top() + rect.height() * 2 / 3, rect.width() - textRect.width(), rect.height() / 3, Qt::AlignRight | Qt::AlignVCenter, QString::number(m_vmax));
|
||||
this->m_cp_scaleDivisionsOrCustom = 1;
|
||||
}
|
||||
int tickCount = this->m_cp_scaleDivisionsOrCustom + 1; // 总刻度等分数(可变,比如 5/10/20)
|
||||
// 样式配置
|
||||
int tickHeight = 6; // 小刻度高度
|
||||
int textOffsetUp = 18; // 数字往上偏移量(解决被遮挡问题)
|
||||
// 计算总步长(自动等分)
|
||||
double step = (maxVal - minVal) * 1.0 / (tickCount - 1);
|
||||
// 开始画所有刻度 + 数字
|
||||
for (int i = 0; i < tickCount; ++i) {
|
||||
// 当前刻度值(自动计算)
|
||||
int val = minVal + qRound(step * i);
|
||||
// 计算在横线上的 X 坐标
|
||||
qreal ratio = (val - minVal) * 1.0 / (maxVal - minVal);
|
||||
int tickX = x1 + ratio * (x2 - x1);
|
||||
// 画向上的小刻度线
|
||||
painter.drawLine(tickX, lineY, tickX, lineY - tickHeight);
|
||||
// 画刻度数字(在线上方,不遮挡)
|
||||
painter.drawText(
|
||||
tickX - 12,
|
||||
lineY - tickHeight - textOffsetUp,
|
||||
24, 14,
|
||||
Qt::AlignCenter,
|
||||
QString::number(val)
|
||||
);
|
||||
}
|
||||
painter.setFont(oldFont);
|
||||
}
|
||||
|
||||
QWidget::paintEvent(event);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -225,10 +225,10 @@ public:
|
|||
Qt::PenStyle m_cp_lineStyle; // 线型
|
||||
double m_cp_leftScale = 0; // 左刻度
|
||||
double m_cp_rightScale = 100; // 右刻度
|
||||
int m_cp_scaleDivisionsOrCustom = 2; // 等分刻度数或自定序列
|
||||
int m_cp_scaleDivisionsOrCustom = 1; // 等分刻度数或自定序列
|
||||
int m_cp_scaleType = 0; // 刻度类型
|
||||
QFont m_cp_curveUnit; // 曲线单位
|
||||
QFont m_cp_curveScale; // 曲线刻度
|
||||
QFont m_cp_curveUnit = QFont("微软雅黑", 7); // 曲线单位
|
||||
QFont m_cp_curveScale = QFont("微软雅黑", 7); // 曲线刻度
|
||||
bool m_cp_drawAsBar = true; // 杆状
|
||||
bool m_cp_leftBoundary = true; // 左界
|
||||
bool m_cp_skipZeroInvalidValues = false; // 不绘零等无效值
|
||||
|
|
|
|||
|
|
@ -681,11 +681,11 @@ void FormTrack::s_AddTableLine(QString strSlfName, QString strWellName, QString
|
|||
formInfo->m_strAliasName = listOtherProperty[3];
|
||||
// 线宽
|
||||
formInfo->m_cp_lineWidth = listOtherProperty[4].toInt();
|
||||
QVariantList listCond;
|
||||
listCond.append(listOtherProperty[4].toInt());
|
||||
QVariantMap variantMap;
|
||||
variantMap["lineWidth"] = listOtherProperty[4].toInt();
|
||||
// 线条颜色
|
||||
formInfo->m_cp_lineColor = listOtherProperty[5];
|
||||
listCond.append(listOtherProperty[5]);
|
||||
variantMap["lineColor"] = listOtherProperty[5];
|
||||
// 线型
|
||||
Qt::PenStyle newStyle = Qt::SolidLine;
|
||||
int iStyle = listOtherProperty[6].toInt();
|
||||
|
|
@ -719,7 +719,7 @@ void FormTrack::s_AddTableLine(QString strSlfName, QString strWellName, QString
|
|||
break;
|
||||
}
|
||||
formInfo->m_cp_lineStyle = newStyle;
|
||||
listCond.append(listOtherProperty[6].toInt());
|
||||
variantMap["lineStyle"] = (listOtherProperty[6].toInt());
|
||||
// 左刻度
|
||||
formInfo->m_cp_leftScale = listOtherProperty[7].toInt();
|
||||
formInfo->m_vmin = listOtherProperty[7].toInt();
|
||||
|
|
@ -764,36 +764,36 @@ void FormTrack::s_AddTableLine(QString strSlfName, QString strWellName, QString
|
|||
}
|
||||
// 杆状
|
||||
formInfo->m_cp_drawAsBar = (listOtherProperty[15] == "1");
|
||||
listCond.append(formInfo->m_cp_drawAsBar);
|
||||
variantMap["drawAsBar"] = (formInfo->m_cp_drawAsBar);
|
||||
// 左界
|
||||
formInfo->m_cp_leftBoundary = (listOtherProperty[16] == "1");
|
||||
listCond.append(formInfo->m_cp_leftBoundary);
|
||||
variantMap["leftBoundary"] = (formInfo->m_cp_leftBoundary);
|
||||
// 不绘零等无效值
|
||||
formInfo->m_cp_skipZeroInvalidValues = (listOtherProperty[17] == "1");
|
||||
listCond.append(formInfo->m_cp_skipZeroInvalidValues);
|
||||
variantMap["skipZeroInvalidValues"] = (formInfo->m_cp_skipZeroInvalidValues);
|
||||
// 绘制包络线
|
||||
formInfo->m_cp_drawEnvelope = (listOtherProperty[18] == "1");
|
||||
listCond.append(formInfo->m_cp_drawEnvelope);
|
||||
variantMap["drawEnvelope"] = (formInfo->m_cp_drawEnvelope);
|
||||
// 点状
|
||||
formInfo->m_cp_drawAsDot = (listOtherProperty[19] == "1");
|
||||
listCond.append(formInfo->m_cp_drawAsDot);
|
||||
variantMap["drawAsDot"] = (formInfo->m_cp_drawAsDot);
|
||||
// 符号类型
|
||||
formInfo->m_cp_symbolType = listOtherProperty[20].toInt();
|
||||
listCond.append(formInfo->m_cp_symbolType);
|
||||
variantMap["symbolType"] = (formInfo->m_cp_symbolType);
|
||||
// 边框颜色
|
||||
formInfo->m_cp_symbolBorderColor = listOtherProperty[21];
|
||||
listCond.append(formInfo->m_cp_symbolBorderColor);
|
||||
variantMap["symbolBorderColor"] = formInfo->m_cp_symbolBorderColor;
|
||||
// 大小
|
||||
formInfo->m_cp_symbolSize = listOtherProperty[22].toInt();
|
||||
listCond.append(formInfo->m_cp_symbolSize);
|
||||
variantMap["symbolSize"] = (formInfo->m_cp_symbolSize);
|
||||
// 填充颜色
|
||||
formInfo->m_cp_symbolFillColor = listOtherProperty[23];
|
||||
listCond.append(formInfo->m_cp_symbolFillColor);
|
||||
variantMap["symbolFillColor"] = (formInfo->m_cp_symbolFillColor);
|
||||
// 字段名称
|
||||
formInfo->m_cp_fieldName = listOtherProperty[24].toInt();
|
||||
listCond.append(formInfo->m_cp_fieldName);
|
||||
variantMap["fieldName"] = (formInfo->m_cp_fieldName);
|
||||
|
||||
emit CallManage::getInstance()->sig_changeCorePhysicsProperty(listCond);
|
||||
emit CallManage::getInstance()->sig_changeCorePhysicsProperty(variantMap);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -438,11 +438,11 @@ void FormWell::slot_NewTrack_No_Line(QString strUuid, QJsonObject topObj, QJsonO
|
|||
}
|
||||
}
|
||||
|
||||
int nW = 0;
|
||||
double nW = 0;
|
||||
if (topObj.contains("TrackW"))
|
||||
{
|
||||
QJsonValue value = topObj.value("TrackW");
|
||||
nW = value.toInt();
|
||||
nW = value.toDouble();
|
||||
}
|
||||
|
||||
QStringList listdt;
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@ MainWindowCurve::MainWindowCurve(QWidget *parent) :
|
|||
// 连接信号和槽
|
||||
connect(ui->tableWidget_2, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slotContextMenu(QPoint)));
|
||||
|
||||
connect(this, SIGNAL(sig_NewTrackChangeWidth(QString, int)), this, SLOT(s_NewTrackChangeWidth(QString, int)));
|
||||
connect(this, SIGNAL(sig_NewTrackChangeWidth(QString, double)), this, SLOT(s_NewTrackChangeWidth(QString, double)));
|
||||
//connect(this, SIGNAL(sig_NewWell(QString, QString)), this, SLOT(s_NewWell(QString, QString)));
|
||||
|
||||
connect(CallManage::getInstance(), SIGNAL(sig_mouseWheel(QWheelEvent*)), this, SLOT(s_mouseWheel(QWheelEvent*)));
|
||||
|
|
@ -2611,7 +2611,7 @@ void MainWindowCurve::onItemClicked(QTableWidgetItem* item)
|
|||
|
||||
PropertyService()->initWellProperty(m_strUuid, strSlfName, strWellName, m_iY1, m_iY2);
|
||||
//取消所有选中单元格
|
||||
emit CallManage::getInstance()->sig_Raise(m_strUuid, strSlfName, strWellName, "", "", 0, "");
|
||||
emit CallManage::getInstance()->sig_Raise(m_strUuid, strSlfName, strWellName, "", "", 1, "");
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -3365,7 +3365,7 @@ void MainWindowCurve::s_NewTDT()
|
|||
emit CallManage::getInstance()->sig_NewCol(dt);
|
||||
}
|
||||
|
||||
void MainWindowCurve::s_NewTrackChangeWidth(QString strWellName, int nW)
|
||||
void MainWindowCurve::s_NewTrackChangeWidth(QString strWellName, double nW)
|
||||
{
|
||||
qDebug() << "MainWindowCurve s_NewTrackChangeWidth";
|
||||
|
||||
|
|
@ -3419,7 +3419,7 @@ void MainWindowCurve::s_AddLine_Property(QString strSlfName, QString strWellName
|
|||
//新建井+道+曲线(首条)
|
||||
void MainWindowCurve::NewWellAndTrack(QString strWellName, QString strSlfName, QString strLineName, QString strType)
|
||||
{
|
||||
int nW = 0;
|
||||
double nW = 0;
|
||||
if(strType=="SantuyibiaoObject")
|
||||
{
|
||||
//斜井三图一表
|
||||
|
|
@ -4024,7 +4024,7 @@ void MainWindowCurve::DisplayTracks(QJsonArray tracksArray)
|
|||
QJsonObject trackObj = trackValue.toObject();
|
||||
//
|
||||
QString strTrackName = "";
|
||||
int nTrackW = 0;
|
||||
double nTrackW = 0;
|
||||
if (trackObj.contains("topinfo") && trackObj.contains("info"))
|
||||
{
|
||||
QJsonValue topVal = trackObj.value("topinfo");
|
||||
|
|
@ -4037,7 +4037,7 @@ void MainWindowCurve::DisplayTracks(QJsonArray tracksArray)
|
|||
DisplayTrack_Top(id, topObj, infoObj);
|
||||
|
||||
strTrackName = topObj.value("TrackName").toString();
|
||||
nTrackW = topObj.value("TrackW").toInt();
|
||||
nTrackW = topObj.value("TrackW").toDouble();
|
||||
}
|
||||
}
|
||||
// if (trackObj.contains("info"))
|
||||
|
|
@ -4057,7 +4057,7 @@ void MainWindowCurve::DisplayTrack_Top(int id, QJsonObject trackTop, QJsonObject
|
|||
{
|
||||
//新建道+曲线
|
||||
s_NewTrack_No_Line(trackTop, trackInfo);//新建空白道,没有曲线
|
||||
if(id>0)
|
||||
//if(id>0)
|
||||
{
|
||||
QString strWellName = "";
|
||||
if (trackTop.contains("WellName"))
|
||||
|
|
@ -4068,14 +4068,22 @@ void MainWindowCurve::DisplayTrack_Top(int id, QJsonObject trackTop, QJsonObject
|
|||
qDebug() << "WellName:" << strWellName;
|
||||
}
|
||||
}
|
||||
int nW = 0;
|
||||
double nW = 0;
|
||||
if (trackTop.contains("TrackW"))
|
||||
{
|
||||
QJsonValue value = trackTop.value("TrackW");
|
||||
nW = value.toInt();
|
||||
nW = value.toDouble();
|
||||
}
|
||||
//改变井宽
|
||||
s_NewTrackChangeWidth(strWellName, nW * static_cast<int>(g_dPixelPerCm));
|
||||
if(id==0)
|
||||
{
|
||||
//第一道,默认减掉空井宽g_iOneWidth
|
||||
s_NewTrackChangeWidth(strWellName, nW * g_dPixelPerCm - g_iOneWidth);
|
||||
}
|
||||
else
|
||||
{
|
||||
s_NewTrackChangeWidth(strWellName, nW * g_dPixelPerCm);
|
||||
}
|
||||
//mainWindowCurve->s_NewTrackChangeWidth(strWellName);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -136,7 +136,7 @@ public:
|
|||
QStringList getLineList(QString strWellName, QString strTrackName);
|
||||
|
||||
signals:
|
||||
void sig_NewTrackChangeWidth(QString strWellName, int nW=0);//新建道后,改变井宽
|
||||
void sig_NewTrackChangeWidth(QString strWellName, double nW=0);//新建道后,改变井宽
|
||||
void sig_NewWell(QString strWellName);
|
||||
|
||||
public slots:
|
||||
|
|
@ -168,7 +168,7 @@ public slots:
|
|||
|
||||
public slots:
|
||||
void s_NewWell(QString strWellName, QString strSlfName);//新建井
|
||||
void s_NewTrackChangeWidth(QString strWellName, int nW=0);//新建道后,改变井宽
|
||||
void s_NewTrackChangeWidth(QString strWellName, double nW=0);//新建道后,改变井宽
|
||||
void s_NewTrack_No_Line(QString strWellName, QString strTrackName);//新建空白道,没有曲线
|
||||
|
||||
void s_NewTrack_No_Line(QJsonObject topObj, QJsonObject infoObj);//新建空白道,没有曲线
|
||||
|
|
|
|||
|
|
@ -144,7 +144,7 @@ QMyCustomPlot::QMyCustomPlot(QWidget *parent, QString strSlfName, QString strWel
|
|||
|
||||
connect(CallManage::getInstance(), SIGNAL(sig_changeDrawProperty(QVariantList)), this, SLOT(s_changeDrawProperty(QVariantList)));
|
||||
// 岩心分析
|
||||
connect(CallManage::getInstance(), SIGNAL(sig_changeCorePhysicsProperty(QVariantList)), this, SLOT(s_changeCorePhysicsProperty(QVariantList)));
|
||||
connect(CallManage::getInstance(), SIGNAL(sig_changeCorePhysicsProperty(QVariantMap)), this, SLOT(s_changeCorePhysicsProperty(QVariantMap)));
|
||||
|
||||
//改变固井曲线名
|
||||
connect(CallManage::getInstance(), SIGNAL(sig_changeGujingLine(QString, QString, QString, QString, QString, QString)), this, SLOT(s_changeGujingLine(QString, QString, QString, QString, QString, QString)));
|
||||
|
|
@ -1999,8 +1999,48 @@ void QMyCustomPlot::addItemsImage(){
|
|||
//属性清空
|
||||
PropertyService()->InitCurrentViewInfo();
|
||||
}
|
||||
void QMyCustomPlot::deleteItemsImage(){}
|
||||
void QMyCustomPlot::refreshItemsImage(){}
|
||||
void QMyCustomPlot::deleteItemsImage()
|
||||
{
|
||||
if(QMessageBox::information(NULL,QObject::tr("提示"),QObject::tr("该功能将清除当前组件展示的全部信息,清除后无法恢复,但会备份到对应的\"_BAK\"中,确定清除吗?"),QMessageBox::Yes|QMessageBox::No)!=QMessageBox::Yes) return;
|
||||
QString obj = m_strLineName + "BAK";
|
||||
CopyToSLFFile(m_strSlfName, false, (char *)obj.toStdString().c_str());
|
||||
AddTableToWellRound();
|
||||
|
||||
//删除对象
|
||||
TransparentDraggableImage *pDraggableRect =NULL;
|
||||
QMap<QString,QObject *>::Iterator it = m_mapDraggable_Image.begin();
|
||||
while( it != m_mapDraggable_Image.end() )
|
||||
{
|
||||
pDraggableRect = (TransparentDraggableImage*)it.value();
|
||||
it++;
|
||||
pDraggableRect->deleteRect();
|
||||
}
|
||||
this->replot();
|
||||
|
||||
//保存
|
||||
SaveToSLFImage();
|
||||
m_mapDraggable_Image.clear();
|
||||
//属性清空
|
||||
PropertyService()->InitCurrentViewInfo();
|
||||
}
|
||||
void QMyCustomPlot::refreshItemsImage()
|
||||
{
|
||||
//删除对象
|
||||
TransparentDraggableImage *pDraggableRect =NULL;
|
||||
QMap<QString,QObject *>::Iterator it = m_mapDraggable_Image.begin();
|
||||
while( it != m_mapDraggable_Image.end() )
|
||||
{
|
||||
pDraggableRect = (TransparentDraggableImage*)it.value();
|
||||
it++;
|
||||
pDraggableRect->deleteRect();
|
||||
}
|
||||
|
||||
//重新加载
|
||||
this->LoadFromIMAGE_SLF(m_strSlfName, m_strLineName);
|
||||
this->replot();
|
||||
//属性清空
|
||||
PropertyService()->InitCurrentViewInfo();
|
||||
}
|
||||
|
||||
// 增加
|
||||
void QMyCustomPlot::addCorePhysics()
|
||||
|
|
@ -2012,6 +2052,10 @@ void QMyCustomPlot::addCorePhysics()
|
|||
|
||||
void QMyCustomPlot::addCorePhysicsWithParam(int Order, double Depth, double CorrDepth, double CoreValue)
|
||||
{
|
||||
// qDebug() << Order << "=====";
|
||||
// qDebug() << Depth << "=====";
|
||||
// qDebug() << CorrDepth << "=====";
|
||||
// qDebug() << CoreValue << "=====";
|
||||
QtCommonClass *qtCommon = new QtCommonClass(this);
|
||||
QString strUuid = qtCommon->getUUid();
|
||||
TransparentDraggableCorePhysics *dragRect = new TransparentDraggableCorePhysics(this, strUuid);
|
||||
|
|
@ -2030,10 +2074,48 @@ void QMyCustomPlot::pasteCorePhysics()
|
|||
{}
|
||||
//全部清空
|
||||
void QMyCustomPlot::deleteCorePhysics()
|
||||
{}
|
||||
{
|
||||
if(QMessageBox::information(NULL,QObject::tr("提示"),QObject::tr("该功能将清除当前组件展示的全部信息,清除后无法恢复,但会备份到对应的\"_BAK\"中,确定清除吗?"),QMessageBox::Yes|QMessageBox::No)!=QMessageBox::Yes) return;
|
||||
QString obj = m_strLineName + "BAK";
|
||||
CopyToSLFFile(m_strSlfName, false, (char *)obj.toStdString().c_str());
|
||||
AddTableToWellRound();
|
||||
|
||||
//删除对象
|
||||
TransparentDraggableCorePhysics *pDraggableRect =NULL;
|
||||
QMap<QString,QObject *>::Iterator it = m_mapDraggable_CorePhysics.begin();
|
||||
while( it != m_mapDraggable_CorePhysics.end() )
|
||||
{
|
||||
pDraggableRect = (TransparentDraggableCorePhysics*)it.value();
|
||||
it++;
|
||||
pDraggableRect->deleteRect();
|
||||
}
|
||||
m_SelectShiftLine = nullptr;
|
||||
this->replot();
|
||||
|
||||
//保存
|
||||
saveToSLFCorePhysics();
|
||||
m_mapDraggable_CorePhysics.clear();
|
||||
//属性清空
|
||||
PropertyService()->InitCurrentViewInfo();
|
||||
}
|
||||
//刷新数据
|
||||
void QMyCustomPlot::refreshCorePhysics()
|
||||
{}
|
||||
{
|
||||
//删除对象
|
||||
TransparentDraggableCorePhysics *pDraggableRect =NULL;
|
||||
QMap<QString,QObject *>::Iterator it = m_mapDraggable_CorePhysics.begin();
|
||||
while( it != m_mapDraggable_CorePhysics.end() )
|
||||
{
|
||||
pDraggableRect = (TransparentDraggableCorePhysics*)it.value();
|
||||
it++;
|
||||
pDraggableRect->deleteRect();
|
||||
}
|
||||
//重新加载
|
||||
this->loadFromSLFCorePhysics(m_strSlfName, m_strLineName);
|
||||
this->replot();
|
||||
//属性清空
|
||||
PropertyService()->InitCurrentViewInfo();
|
||||
}
|
||||
|
||||
//右键--添加录井剖面
|
||||
void QMyCustomPlot::onEditGeoLith()
|
||||
|
|
@ -3088,10 +3170,10 @@ void QMyCustomPlot::addItem_SWallCore()
|
|||
int CoreColor=0;
|
||||
if (liths.size()>=CoreLith)
|
||||
{
|
||||
LithologyImage=::GetSymbolDir()+"/取心岩性符号/"+liths[CoreLith-1]+".svg";
|
||||
LithologyImage=::GetSymbolDir()+"取心岩性符号/"+liths[CoreLith-1]+".svg";
|
||||
QDir ss(LithologyImage);
|
||||
if(!ss.exists()) {
|
||||
LithologyImage=::GetSymbolDir()+"/取心岩性符号/"+liths[CoreLith-1]+".png";
|
||||
LithologyImage=::GetSymbolDir()+"取心岩性符号/"+liths[CoreLith-1]+".png";
|
||||
}
|
||||
}
|
||||
if (CoreOil>0&&oils.size()>=CoreOil)
|
||||
|
|
@ -3252,10 +3334,10 @@ void QMyCustomPlot::AddItem_SWallCore(QStringList lists)
|
|||
}
|
||||
else if (liths_SWallCore.size()>=m_Result.CoreLith)
|
||||
{
|
||||
LithologyImage=::GetSymbolDir()+"/取心岩性符号/"+liths_SWallCore[m_Result.CoreLith-1]+".svg";
|
||||
LithologyImage=::GetSymbolDir()+"取心岩性符号/"+liths_SWallCore[m_Result.CoreLith-1]+".svg";
|
||||
QDir ss(LithologyImage);
|
||||
if(!ss.exists()) {
|
||||
LithologyImage=::GetSymbolDir()+"/取心岩性符号/"+liths_SWallCore[m_Result.CoreLith-1]+".png";
|
||||
LithologyImage=::GetSymbolDir()+"取心岩性符号/"+liths_SWallCore[m_Result.CoreLith-1]+".png";
|
||||
}
|
||||
}
|
||||
if (m_Result.CoreOil>0&&oils_SWallCore.size()>=m_Result.CoreOil)
|
||||
|
|
@ -3678,6 +3760,148 @@ void QMyCustomPlot::RefreshItems_GeoLith()
|
|||
PropertyService()->InitCurrentViewInfo();
|
||||
}
|
||||
|
||||
bool QMyCustomPlot::LoadFromIMAGE_SLF(QString strSlfName, QString strLineName)
|
||||
{
|
||||
{
|
||||
QString ss=strSlfName;
|
||||
CMemRdWt *logio=new CMemRdWt();
|
||||
if(ss==""||!logio->Open(ss.toStdString().c_str(),CSlfIO::modeRead))
|
||||
{
|
||||
delete logio;
|
||||
// QMessageBox::information(NULL,"提示","SLF文件打开失败,请检查!!",QMessageBox::Yes);
|
||||
return false;
|
||||
}
|
||||
int iIndex=logio->OpenTable(strLineName.toStdString().c_str());
|
||||
if(iIndex>-1) {
|
||||
int len=logio->GetTableRecordLength(iIndex);
|
||||
if(len<sizeof(IMAGE_DATA)) len=sizeof(IMAGE_DATA);
|
||||
char*buf=new char[len+1];
|
||||
IMAGE_DATA *m_Result=(IMAGE_DATA *)buf;
|
||||
|
||||
int count=logio->GetTableRecordCount(iIndex);
|
||||
for(int i=0;i<count;i++) {
|
||||
memset(m_Result,0,sizeof(IMAGE_DATA));
|
||||
logio->ReadTable(iIndex,i+1,m_Result);
|
||||
// WelllogItem* item=AddItem(m_Result->StartDepth,m_Result->EndDepth);
|
||||
// if(!item) continue;
|
||||
// OGWordsResultItem* pResult = dynamic_cast<OGWordsResultItem*>(item);
|
||||
//logio->GetTableFieldData(iIndex,(char*)FieldName.toStdString().c_str(),m_Result->Image,i+1);
|
||||
|
||||
|
||||
// SetCharacters(m_Result->Words);
|
||||
|
||||
// fontColor=QColor(0,0,0,255);
|
||||
// backgroundColor=QColor(255,255,255,255);
|
||||
// wordfont.setFamily("黑体");
|
||||
// wordfont.setPointSize(10);
|
||||
|
||||
//显示图片Image
|
||||
QString filename=QString::fromLocal8Bit(m_Result->Image);
|
||||
int pos=filename.lastIndexOf("\\");
|
||||
int pos1=filename.lastIndexOf("/");
|
||||
if(pos1>pos) pos=pos1;
|
||||
if(filename.lastIndexOf(".")>-1) {
|
||||
int aa=filename.lastIndexOf(".");
|
||||
if(aa<pos) {
|
||||
filename="";
|
||||
}
|
||||
}
|
||||
this->addImageToPlot(-m_Result->EndDepth, -m_Result->StartDepth, filename, static_cast<double>(m_Result->Left), static_cast<double>(m_Result->Width));
|
||||
}
|
||||
logio->CloseTable(iIndex);
|
||||
delete buf;
|
||||
}
|
||||
delete logio;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool QMyCustomPlot::loadFromSLFCorePhysics(QString strSlfName, QString strLineName)
|
||||
{
|
||||
float vmax = 100;
|
||||
float vmin = 0;
|
||||
// 加载slf文件 开始
|
||||
QVector<double> x, y;
|
||||
Slf_CORE_PHYSICS *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(strLineName.toStdString().c_str());
|
||||
if(iIndex>-1) {
|
||||
int FieldNo=0;
|
||||
int count=logio->GetTableRecordCount(iIndex);
|
||||
|
||||
QString FieldName = "AC";
|
||||
|
||||
if(!FieldName.isEmpty()) {
|
||||
static int err=0;
|
||||
FieldNo=logio->GetTableFieldNo(iIndex,(char *)FieldName.toStdString().c_str());
|
||||
if(FieldNo<0) {
|
||||
if(!err)QMessageBox::information(nullptr, "提示", "岩心试验数据模块初始加载数据不成功,因为隐含"+FieldName+"字段在实际数据表中不存在,稍后请您重新选择有效字段!");
|
||||
err++;
|
||||
delete logio;
|
||||
return false;
|
||||
}
|
||||
else err=0;
|
||||
}
|
||||
else {
|
||||
delete logio;
|
||||
return false;
|
||||
}
|
||||
int len=logio->GetTableRecordLength(iIndex);
|
||||
m_pResult=(Slf_CORE_PHYSICS *)new char[len+1];
|
||||
char buf[100];
|
||||
for(int i=0;i<count;i++) {
|
||||
logio->GetTableFieldData(iIndex,1,buf,i+1);
|
||||
sscanf(buf,"%f",&m_pResult->Depth);
|
||||
logio->GetTableFieldData(iIndex,2,buf,i+1);
|
||||
sscanf(buf,"%f",&m_pResult->CorrDepth);
|
||||
// logio->ReadTable(iIndex,i+1,m_pResult);
|
||||
|
||||
int Order = m_pResult->Order;
|
||||
float depth = m_pResult->Depth;
|
||||
float CorrDepth = m_pResult->CorrDepth;
|
||||
float CoreValue = m_pResult->CoreValue;
|
||||
logio->GetTableFieldData(iIndex,FieldNo,buf,i+1);
|
||||
|
||||
CoreValue=0;
|
||||
sscanf(buf,"%f",&CoreValue);
|
||||
//
|
||||
|
||||
if(i==0)
|
||||
{
|
||||
//最大值,最小值默认采用第一个有效值
|
||||
//vmax = vmin = CoreValue;
|
||||
|
||||
//默认采用0-100范围
|
||||
if(vmax<CoreValue)vmax=CoreValue;
|
||||
if(vmin>CoreValue)vmin=CoreValue;
|
||||
}
|
||||
else
|
||||
{
|
||||
//
|
||||
if(vmax<CoreValue)vmax=CoreValue;
|
||||
if(vmin>CoreValue)vmin=CoreValue;
|
||||
}
|
||||
//
|
||||
x.append(-CorrDepth);
|
||||
y.append(CoreValue);
|
||||
// 已经加载了slf文件内容 显示界面上
|
||||
this->addCorePhysicsWithParam(Order, static_cast<double>(-depth), static_cast<double>(-CorrDepth), static_cast<double>(-CoreValue));
|
||||
}
|
||||
logio->CloseTable(iIndex);
|
||||
delete m_pResult;
|
||||
}
|
||||
delete logio;
|
||||
// 加载slf文件结束
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool QMyCustomPlot::LoadFromSLF_SwallCore(QString strSlfName, QString strLineName)
|
||||
{
|
||||
WALLCORE_DATA m_Result;
|
||||
|
|
@ -3739,10 +3963,10 @@ bool QMyCustomPlot::LoadFromSLF_SwallCore(QString strSlfName, QString strLineNam
|
|||
}
|
||||
else if (liths_SWallCore.size()>=m_Result.CoreLith)
|
||||
{
|
||||
LithologyImage=::GetSymbolDir()+"/取心岩性符号/"+liths_SWallCore[m_Result.CoreLith-1]+".svg";
|
||||
LithologyImage=::GetSymbolDir()+"取心岩性符号/"+liths_SWallCore[m_Result.CoreLith-1]+".svg";
|
||||
QDir ss(LithologyImage);
|
||||
if(!ss.exists()) {
|
||||
LithologyImage=::GetSymbolDir()+"/取心岩性符号/"+liths_SWallCore[m_Result.CoreLith-1]+".png";
|
||||
LithologyImage=::GetSymbolDir()+"取心岩性符号/"+liths_SWallCore[m_Result.CoreLith-1]+".png";
|
||||
}
|
||||
}
|
||||
if (m_Result.CoreOil>0&&oils_SWallCore.size()>=m_Result.CoreOil)
|
||||
|
|
@ -4923,76 +5147,123 @@ void QMyCustomPlot::s_changeDepthProperty(QVariantList vlist)
|
|||
}
|
||||
|
||||
// 岩心分析
|
||||
void QMyCustomPlot::s_changeCorePhysicsProperty(QVariantList vlist)
|
||||
void QMyCustomPlot::s_changeCorePhysicsProperty(QVariantMap variantMap)
|
||||
{
|
||||
int lineWidth = vlist.at(0).toInt();
|
||||
QColor lineColor = vlist[1].value<QColor>();
|
||||
int iStyle = vlist.at(2).toInt();
|
||||
Qt::PenStyle newStyle = Qt::SolidLine;
|
||||
switch(iStyle)
|
||||
{
|
||||
case 0:
|
||||
//无
|
||||
newStyle = Qt::NoPen;
|
||||
break;
|
||||
case 1:
|
||||
//实线
|
||||
newStyle = Qt::SolidLine;
|
||||
break;
|
||||
case 2:
|
||||
//虚线
|
||||
newStyle = Qt::DashLine;
|
||||
break;
|
||||
case 3:
|
||||
//点线
|
||||
newStyle = Qt::DotLine;
|
||||
break;
|
||||
case 4:
|
||||
//虚点线
|
||||
newStyle = Qt::DashDotLine;
|
||||
break;
|
||||
case 5:
|
||||
//虚点点线
|
||||
newStyle = Qt::DashDotDotLine;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
// 杆状
|
||||
bool drawAsBar = vlist.at(3).toBool();
|
||||
// 左界
|
||||
bool leftBoundary = vlist.at(4).toBool();
|
||||
// 不绘零等无效值
|
||||
bool skipZeroInvalidValues = vlist.at(5).toBool();
|
||||
// 绘制包络线
|
||||
bool drawEnvelope = vlist.at(6).toBool();
|
||||
// 点状
|
||||
bool drawAsDot = vlist.at(7).toBool();
|
||||
// 符号类型
|
||||
int symbolType = vlist.at(8).toInt();
|
||||
// 边框颜色
|
||||
QColor symbolBorderColor = vlist[9].value<QColor>();
|
||||
// 大小
|
||||
int symbolSize = vlist.at(10).toInt();
|
||||
// 填充颜色
|
||||
QColor symbolFillColor = vlist[11].value<QColor>();
|
||||
|
||||
TransparentDraggableCorePhysics *pDraggableRect =NULL;
|
||||
TransparentDraggableCorePhysics *tdCorePhysics = NULL;
|
||||
for (QMap<QString,QObject *>::Iterator iter = m_mapDraggable_CorePhysics.begin(); iter != m_mapDraggable_CorePhysics.end(); iter++)
|
||||
{
|
||||
pDraggableRect = (TransparentDraggableCorePhysics*)iter.value();
|
||||
pDraggableRect->setCpLineWidth(lineWidth);
|
||||
pDraggableRect->setCpLineColor(lineColor);
|
||||
pDraggableRect->setCpLineStyle(newStyle);
|
||||
pDraggableRect->setCpDrawAsBar(drawAsBar);
|
||||
pDraggableRect->setCpLeftBoundary(leftBoundary);
|
||||
pDraggableRect->setCpDrawAsDot(drawAsDot);
|
||||
pDraggableRect->setCpSymbolType(symbolType);
|
||||
pDraggableRect->setCpSymbolBorderColor(symbolBorderColor);
|
||||
pDraggableRect->setCpSymbolSize(symbolSize);
|
||||
pDraggableRect->setCpSymbolFillColor(symbolFillColor);
|
||||
tdCorePhysics = (TransparentDraggableCorePhysics*)iter.value();
|
||||
// 线宽
|
||||
if(variantMap["lineWidth"].isValid())
|
||||
{
|
||||
tdCorePhysics->setCpLineWidth(variantMap["lineWidth"].toInt());
|
||||
}
|
||||
// 颜色
|
||||
if(variantMap["lineColor"].isValid())
|
||||
{
|
||||
tdCorePhysics->setCpLineColor(variantMap["lineColor"].value<QColor>());
|
||||
}
|
||||
// 线形
|
||||
if(variantMap["lineStyle"].isValid())
|
||||
{
|
||||
int lineStyle = variantMap["lineStyle"].toInt();
|
||||
Qt::PenStyle penStyle = Qt::SolidLine;
|
||||
switch(lineStyle)
|
||||
{
|
||||
case 0:
|
||||
//无
|
||||
penStyle = Qt::NoPen;
|
||||
break;
|
||||
case 1:
|
||||
//实线
|
||||
penStyle = Qt::SolidLine;
|
||||
break;
|
||||
case 2:
|
||||
//虚线
|
||||
penStyle = Qt::DashLine;
|
||||
break;
|
||||
case 3:
|
||||
//点线
|
||||
penStyle = Qt::DotLine;
|
||||
break;
|
||||
case 4:
|
||||
//虚点线
|
||||
penStyle = Qt::DashDotLine;
|
||||
break;
|
||||
case 5:
|
||||
//虚点点线
|
||||
penStyle = Qt::DashDotDotLine;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
tdCorePhysics->setCpLineStyle(penStyle);
|
||||
}
|
||||
// 杆状
|
||||
if(variantMap["drawAsBar"].isValid())
|
||||
{
|
||||
tdCorePhysics->setCpDrawAsBar(variantMap["drawAsBar"].toBool());
|
||||
}
|
||||
// 左界
|
||||
if(variantMap["leftBoundary"].isValid())
|
||||
{
|
||||
bool aa = variantMap["leftBoundary"].toBool();
|
||||
tdCorePhysics->setCpLeftBoundary(aa);
|
||||
}
|
||||
// 不绘零等无效值
|
||||
if(variantMap["skipZeroInvalidValues"].isValid())
|
||||
{
|
||||
tdCorePhysics->setCpSkipZeroInvalidValues(variantMap["skipZeroInvalidValues"].toBool());
|
||||
}
|
||||
// 绘制包络线
|
||||
if(variantMap["drawEnvelope"].isValid())
|
||||
{
|
||||
tdCorePhysics->setCpDrawEnvelope(variantMap["drawEnvelope"].toBool());
|
||||
}
|
||||
// 点状
|
||||
if(variantMap["drawAsDot"].isValid())
|
||||
{
|
||||
tdCorePhysics->setCpDrawAsDot(variantMap["drawAsDot"].toBool());
|
||||
}
|
||||
|
||||
// 符号类型
|
||||
if(variantMap["symbolType"].isValid())
|
||||
{
|
||||
tdCorePhysics->setCpSymbolType(variantMap["symbolType"].toInt());
|
||||
}
|
||||
// 边框颜色
|
||||
if(variantMap["symbolBorderColor"].isValid())
|
||||
{
|
||||
tdCorePhysics->setCpSymbolBorderColor(variantMap["symbolBorderColor"].value<QColor>());
|
||||
}
|
||||
// 大小
|
||||
if(variantMap["symbolSize"].isValid())
|
||||
{
|
||||
tdCorePhysics->setCpSymbolSize(variantMap["symbolSize"].toInt());
|
||||
}
|
||||
// 填充颜色
|
||||
if(variantMap["symbolFillColor"].isValid())
|
||||
{
|
||||
tdCorePhysics->setCpSymbolFillColor(variantMap["symbolFillColor"].value<QColor>());
|
||||
}
|
||||
// 左刻度
|
||||
if(variantMap["leftScale"].isValid())
|
||||
{
|
||||
tdCorePhysics->setCpLeftScale(variantMap["leftScale"].toDouble());
|
||||
}
|
||||
// 右刻度
|
||||
if(variantMap["rightScale"].isValid())
|
||||
{
|
||||
tdCorePhysics->setCpRightScale(variantMap["rightScale"].toDouble());
|
||||
}
|
||||
// 刻度类型
|
||||
if(variantMap["scaleType"].isValid())
|
||||
{
|
||||
tdCorePhysics->setCpScaleType(variantMap["scaleType"].toInt());
|
||||
}
|
||||
|
||||
}
|
||||
this->replot();
|
||||
this->replot();
|
||||
}
|
||||
|
||||
//校深线段
|
||||
|
|
@ -6870,7 +7141,7 @@ void QMyCustomPlot::DrawTubing()
|
|||
}
|
||||
if(m_bDrawTubing_Tubing)
|
||||
{
|
||||
QString shotimgfile=GetSymbolDir()+"\\管柱组件\\管柱.png";
|
||||
QString shotimgfile=GetSymbolDir()+"管柱组件\\管柱.png";
|
||||
|
||||
double lY1 = 0;//this->yAxis->range().lower;//+10
|
||||
double lY2 = m_OutD_Tubing;//this->yAxis->range().upper - this->yAxis->range().lower; //this->yAxis->range().upper;
|
||||
|
|
@ -9028,7 +9299,7 @@ bool QMyCustomPlot::LoadFromSLF_Tubing(QString strSlfName, QString csCurve)
|
|||
{
|
||||
m_pResultList_Tubing.clear();
|
||||
|
||||
cclimgpath_Tubing=GetSymbolDir()+"\\管柱组件\\";
|
||||
cclimgpath_Tubing=GetSymbolDir()+"管柱组件\\";
|
||||
//先删除
|
||||
if(mPixmap_Tubing)
|
||||
{
|
||||
|
|
@ -9169,7 +9440,7 @@ void QMyCustomPlot::drawOne_Tubing(Slf_JIEGUPOS result)
|
|||
|
||||
bool QMyCustomPlot::LoadFromSLF_ReDrawTubing(QString strSlfName, QString csCurve)
|
||||
{
|
||||
cclimgpath_Tubing=GetSymbolDir()+"\\管柱组件\\";
|
||||
cclimgpath_Tubing=GetSymbolDir()+"管柱组件\\";
|
||||
|
||||
Slf_JIEGUPOS *m_pResult=NULL;
|
||||
CMemRdWt *logio=new CMemRdWt();
|
||||
|
|
|
|||
|
|
@ -227,10 +227,12 @@ public:
|
|||
// 岩心图片
|
||||
QMap<QString,QString> zoneOrderImage;
|
||||
bool SaveToSLFImage();
|
||||
bool LoadFromIMAGE_SLF(QString strSlfName, QString strLineName);
|
||||
|
||||
// 岩心分析
|
||||
QMap<QString,QString> zoneOrderCorePhysics;
|
||||
bool saveToSLFCorePhysics();
|
||||
bool loadFromSLFCorePhysics(QString strSlfName, QString strLineName);
|
||||
|
||||
//井壁取心
|
||||
QStringList liths_SWallCore;
|
||||
|
|
@ -551,7 +553,7 @@ public slots:
|
|||
void s_changeDepthProperty(QVariantList vlist);
|
||||
|
||||
// 岩心分析
|
||||
void s_changeCorePhysicsProperty(QVariantList vlist);
|
||||
void s_changeCorePhysicsProperty(QVariantMap vlist);
|
||||
|
||||
void onAddRect();
|
||||
|
||||
|
|
|
|||
|
|
@ -216,6 +216,7 @@ void QtProjectWidgets::s_loadTreeWidget(QString fileFull)
|
|||
|
||||
//展开树图
|
||||
ui->treeWidget->expandItem(parent);
|
||||
itemIndex->setExpanded(true);
|
||||
}
|
||||
|
||||
void QtProjectWidgets::loadIndexSysTree(QTreeWidgetItem *parent, QString fileFull, QString prjname)
|
||||
|
|
@ -1286,21 +1287,37 @@ void QtProjectWidgets::onImportSingleWellLogData()
|
|||
QTreeWidgetItem *wellItem = *ui->treeWidget->selectedItems().begin();
|
||||
|
||||
QString wellname = wellItem->text(0);
|
||||
if (wellname == "井组")
|
||||
QString wellroundname = wellname;
|
||||
QString strTreeTag = wellItem->data(0, Qt::UserRole).toString();
|
||||
if (strTreeTag == "wells") //井组
|
||||
{
|
||||
QFileInfo temDir(file_name);
|
||||
QString tempWellName=temDir.completeBaseName();
|
||||
tempWellName.replace(" ","");//whp add 2020.3.3 删除井名中的空格
|
||||
//m_WellLogRoundInfo->SetName(tempWellName.toStdString());
|
||||
wellname = tempWellName;
|
||||
wellroundname = wellname;
|
||||
}
|
||||
QString wellroundname = wellname;
|
||||
else if (strTreeTag == "wellname") //井名
|
||||
{
|
||||
|
||||
}
|
||||
else if (strTreeTag == "wellItem") //井次
|
||||
{
|
||||
wellname = wellItem->parent()->text(0);
|
||||
}
|
||||
ImportDataDialog *pDialog = new ImportDataDialog(NULL,wellname,wellroundname);
|
||||
QTreeWidgetItem rootItem = *ui->treeWidget->topLevelItem(0);
|
||||
pDialog->SetProjectname(rootItem.text(0));
|
||||
pDialog->DisplayFileInformationAreaData(vConvertor,listFiles[0]);
|
||||
if ( pDialog->exec() == QDialog::Accepted )
|
||||
{
|
||||
QString strProjectFolder = GetProjectFolder();
|
||||
QString strProjectFile = strProjectFolder + g_prjname;
|
||||
strProjectFile += ".wwl";
|
||||
s_OpenProject(strProjectFile);
|
||||
return ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user