频率统计图 属性
This commit is contained in:
parent
f3da99fea2
commit
7d8bd3480d
|
|
@ -182,8 +182,11 @@ signals:
|
||||||
//改变深度属性
|
//改变深度属性
|
||||||
void sig_changeDepthProperty(QVariantList vlist);
|
void sig_changeDepthProperty(QVariantList vlist);
|
||||||
|
|
||||||
|
//改变频率统计图属性
|
||||||
|
void sig_changePlObjectProperty(QVariantMap variantMap);
|
||||||
|
|
||||||
//改变岩心分析
|
//改变岩心分析
|
||||||
void sig_changeCorePhysicsProperty(QVariantMap vlist);
|
void sig_changeCorePhysicsProperty(QVariantMap variantMap);
|
||||||
|
|
||||||
//右键--添加分段线
|
//右键--添加分段线
|
||||||
void sig_AddShiftLine(QString strUuid, double left_Low, double right_Hight);
|
void sig_AddShiftLine(QString strUuid, double left_Low, double right_Hight);
|
||||||
|
|
|
||||||
|
|
@ -4076,7 +4076,7 @@ void PropertyWidget::initPlObjectProperty(FormInfo *formInfo)
|
||||||
_CreateVariantPropertyItem("控制曲线", "最大值", formInfo->m_pl_controlMaxValue, QVariant::Int);
|
_CreateVariantPropertyItem("控制曲线", "最大值", formInfo->m_pl_controlMaxValue, QVariant::Int);
|
||||||
|
|
||||||
_CreateVariantPropertyItem("方位频率", "扇形", formInfo->m_pl_sectorCount, QVariant::Int);
|
_CreateVariantPropertyItem("方位频率", "扇形", formInfo->m_pl_sectorCount, QVariant::Int);
|
||||||
_CreateVariantPropertyItem("方位频率", "圆半径", formInfo->m_pl_circleRadius, QVariant::Int);
|
_CreateVariantPropertyItem("方位频率", "圆半径(cm)", formInfo->m_pl_circleRadius, QVariant::Int);
|
||||||
_CreateVariantPropertyItem("方位频率", "圆线颜色", formInfo->m_pl_circleColor, QVariant::Color);
|
_CreateVariantPropertyItem("方位频率", "圆线颜色", formInfo->m_pl_circleColor, QVariant::Color);
|
||||||
_CreateVariantPropertyItem("方位频率", "圆线宽度", formInfo->m_pl_circleLineWidth, QVariant::Int);
|
_CreateVariantPropertyItem("方位频率", "圆线宽度", formInfo->m_pl_circleLineWidth, QVariant::Int);
|
||||||
_CreateVariantPropertyItem("方位频率", "是否填充", formInfo->m_pl_isFillEnabled, QVariant::Bool);
|
_CreateVariantPropertyItem("方位频率", "是否填充", formInfo->m_pl_isFillEnabled, QVariant::Bool);
|
||||||
|
|
@ -4117,21 +4117,35 @@ void PropertyWidget::initPlObjectProperty(FormInfo *formInfo)
|
||||||
|
|
||||||
void PropertyWidget::changedPlObjectProperty(QString strProperty, QVariant varVal)
|
void PropertyWidget::changedPlObjectProperty(QString strProperty, QVariant varVal)
|
||||||
{
|
{
|
||||||
|
bool flag = false;
|
||||||
if ("数据名称" == strProperty)
|
if ("数据名称" == strProperty)
|
||||||
{
|
{
|
||||||
m_formInfo->m_strAliasName = varVal.toString();
|
m_formInfo->m_strAliasName = varVal.toString();
|
||||||
this->m_formInfo->repaint();
|
this->m_formInfo->repaint();
|
||||||
}
|
}
|
||||||
if ("显示单位" == strProperty)
|
else if ("数据类型" == strProperty)
|
||||||
|
{
|
||||||
|
this->m_formInfo->m_pl_dataType = varVal.toInt();
|
||||||
|
}
|
||||||
|
else if ("显示单位" == strProperty)
|
||||||
{
|
{
|
||||||
this->m_formInfo->m_strUnit = varVal.toString();
|
this->m_formInfo->m_strUnit = varVal.toString();
|
||||||
this->m_formInfo->repaint();
|
this->m_formInfo->repaint();
|
||||||
}
|
}
|
||||||
|
else if ("方位曲线" == strProperty)
|
||||||
|
{
|
||||||
|
this->m_formInfo->m_pl_azimuthCurve = varVal.toString();
|
||||||
|
}
|
||||||
|
else if ("倾角曲线" == strProperty)
|
||||||
|
{
|
||||||
|
this->m_formInfo->m_pl_inclinationCurve = varVal.toString();
|
||||||
|
}
|
||||||
else if ("例区高度" == strProperty)
|
else if ("例区高度" == strProperty)
|
||||||
{
|
{
|
||||||
int temp = varVal.toInt();
|
int temp = varVal.toInt();
|
||||||
this->m_formInfo->m_headHeight = temp;
|
this->m_formInfo->m_headHeight = temp;
|
||||||
this->m_formInfo->setFixedHeight(temp);
|
this->m_formInfo->setFixedHeight(temp);
|
||||||
|
this->m_formInfo->repaint();
|
||||||
}
|
}
|
||||||
else if ("名称" == strProperty || "曲线名称" == strProperty)
|
else if ("名称" == strProperty || "曲线名称" == strProperty)
|
||||||
{
|
{
|
||||||
|
|
@ -4154,38 +4168,47 @@ void PropertyWidget::changedPlObjectProperty(QString strProperty, QVariant varVa
|
||||||
else if ("曲线名" == strProperty)
|
else if ("曲线名" == strProperty)
|
||||||
{
|
{
|
||||||
this->m_formInfo->m_pl_controlCurveName = varVal.toString();
|
this->m_formInfo->m_pl_controlCurveName = varVal.toString();
|
||||||
|
flag = true;
|
||||||
}
|
}
|
||||||
else if ("最小值" == strProperty)
|
else if ("最小值" == strProperty)
|
||||||
{
|
{
|
||||||
this->m_formInfo->m_pl_controlMinValue = varVal.toDouble();
|
this->m_formInfo->m_pl_controlMinValue = varVal.toDouble();
|
||||||
|
flag = true;
|
||||||
}
|
}
|
||||||
else if ("最大值" == strProperty)
|
else if ("最大值" == strProperty)
|
||||||
{
|
{
|
||||||
this->m_formInfo->m_pl_controlMaxValue = varVal.toDouble();
|
this->m_formInfo->m_pl_controlMaxValue = varVal.toDouble();
|
||||||
|
flag = true;
|
||||||
}
|
}
|
||||||
else if ("扇形" == strProperty)
|
else if ("扇形" == strProperty)
|
||||||
{
|
{
|
||||||
this->m_formInfo->m_pl_sectorCount = varVal.toInt();
|
this->m_formInfo->m_pl_sectorCount = varVal.toInt();
|
||||||
|
flag = true;
|
||||||
}
|
}
|
||||||
else if ("圆半径(cm)" == strProperty)
|
else if ("圆半径(cm)" == strProperty)
|
||||||
{
|
{
|
||||||
this->m_formInfo->m_pl_circleRadius = varVal.toInt();
|
this->m_formInfo->m_pl_circleRadius = varVal.toInt();
|
||||||
|
flag = true;
|
||||||
}
|
}
|
||||||
else if ("圆线颜色" == strProperty)
|
else if ("圆线颜色" == strProperty)
|
||||||
{
|
{
|
||||||
this->m_formInfo->m_pl_circleColor = varVal.value<QColor>();
|
this->m_formInfo->m_pl_circleColor = varVal.value<QColor>();
|
||||||
|
flag = true;
|
||||||
}
|
}
|
||||||
else if ("圆线宽度" == strProperty)
|
else if ("圆线宽度" == strProperty)
|
||||||
{
|
{
|
||||||
this->m_formInfo->m_pl_circleLineWidth = varVal.toInt();
|
this->m_formInfo->m_pl_circleLineWidth = varVal.toInt();
|
||||||
|
flag = true;
|
||||||
}
|
}
|
||||||
else if ("是否填充" == strProperty)
|
else if ("是否填充" == strProperty)
|
||||||
{
|
{
|
||||||
this->m_formInfo->m_pl_isFillEnabled = varVal.toBool();
|
this->m_formInfo->m_pl_isFillEnabled = varVal.toBool();
|
||||||
|
flag = true;
|
||||||
}
|
}
|
||||||
else if ("填充颜色" == strProperty)
|
else if ("填充颜色" == strProperty)
|
||||||
{
|
{
|
||||||
this->m_formInfo->m_pl_fillColor = varVal.value<QColor>();
|
this->m_formInfo->m_pl_fillColor = varVal.value<QColor>();
|
||||||
|
flag = true;
|
||||||
}
|
}
|
||||||
else if ("线数" == strProperty)
|
else if ("线数" == strProperty)
|
||||||
{
|
{
|
||||||
|
|
@ -4291,6 +4314,28 @@ void PropertyWidget::changedPlObjectProperty(QString strProperty, QVariant varVa
|
||||||
{
|
{
|
||||||
this->m_formInfo->m_pl_custom2 = varVal.toBool();
|
this->m_formInfo->m_pl_custom2 = varVal.toBool();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(flag)
|
||||||
|
{
|
||||||
|
QVariantMap variantMap;
|
||||||
|
variantMap["m_pl_controlCurveName"] = this->m_formInfo->m_pl_controlCurveName;
|
||||||
|
variantMap["m_pl_controlMinValue"] = this->m_formInfo->m_pl_controlMinValue;
|
||||||
|
variantMap["m_pl_controlMaxValue"] = this->m_formInfo->m_pl_controlMaxValue;
|
||||||
|
variantMap["m_pl_sectorCount"] = this->m_formInfo->m_pl_sectorCount;
|
||||||
|
variantMap["m_pl_circleRadius"] = this->m_formInfo->m_pl_circleRadius;
|
||||||
|
variantMap["m_pl_circleColor"] = this->m_formInfo->m_pl_circleColor;
|
||||||
|
variantMap["m_pl_circleLineWidth"] = this->m_formInfo->m_pl_circleLineWidth;
|
||||||
|
variantMap["m_pl_isFillEnabled"] = this->m_formInfo->m_pl_isFillEnabled;
|
||||||
|
variantMap["m_pl_fillColor"] = this->m_formInfo->m_pl_fillColor;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
emit CallManage::getInstance()->sig_changePlObjectProperty(variantMap);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void PropertyWidget::changedDepthProperty(QString strProperty, QVariant varVal)
|
void PropertyWidget::changedDepthProperty(QString strProperty, QVariant varVal)
|
||||||
|
|
|
||||||
|
|
@ -189,13 +189,12 @@ void FormDraw::setDrawData(QStringList listdt, QJsonObject objInfo)
|
||||||
initDepth(curv);
|
initDepth(curv);
|
||||||
|
|
||||||
// 在s_addDepth方法设置单位无效
|
// 在s_addDepth方法设置单位无效
|
||||||
// 读取json
|
// 读json后 重新设置样式
|
||||||
// 设置左侧显示属性 设置界面样式
|
// 设置左侧显示属性 设置界面样式
|
||||||
if(pInfo->m_strUnit.isEmpty()){
|
if(pInfo->m_strUnit.isEmpty()){
|
||||||
pInfo->m_strUnit = "(米)";
|
pInfo->m_strUnit = "(米)";
|
||||||
pInfo->m_strUnitFont = QFont("微软雅黑", 8);
|
pInfo->m_strUnitFont = QFont("微软雅黑", 8);
|
||||||
}
|
}
|
||||||
// 读json后 重新设置样式
|
|
||||||
// 头部高度
|
// 头部高度
|
||||||
pInfo->setFixedHeight(pInfo->m_headHeight);
|
pInfo->setFixedHeight(pInfo->m_headHeight);
|
||||||
// 标尺颜色
|
// 标尺颜色
|
||||||
|
|
@ -310,14 +309,84 @@ void FormDraw::setDrawData(QStringList listdt, QJsonObject objInfo)
|
||||||
curv->yAxis->setSubTickPen(tickPen);
|
curv->yAxis->setSubTickPen(tickPen);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if("plObject" == strType)
|
else if("plObject" == strType) // 频率统计图
|
||||||
{
|
{
|
||||||
|
initFgrq(curv);
|
||||||
|
|
||||||
|
// 读json后 重新设置样式
|
||||||
|
// 设置左侧显示属性 设置界面样式
|
||||||
if(pInfo->m_strUnit.isEmpty()){
|
if(pInfo->m_strUnit.isEmpty()){
|
||||||
pInfo->m_strUnit = "(°)";
|
pInfo->m_strUnit = "(°)";
|
||||||
pInfo->m_strUnitFont = QFont("微软雅黑", 8);
|
pInfo->m_strUnitFont = QFont("微软雅黑", 8);
|
||||||
}
|
}
|
||||||
|
// 例区高度
|
||||||
|
pInfo->setFixedHeight(pInfo->m_headHeight);
|
||||||
|
|
||||||
initFgrq(curv);
|
|
||||||
|
|
||||||
|
// // 数据
|
||||||
|
// int m_pl_dataType = 0; // 数据类型
|
||||||
|
// QString m_pl_azimuthCurve = "DDIR"; // 方位曲线
|
||||||
|
// QString m_pl_inclinationCurve = "DANG"; // 倾角曲线
|
||||||
|
// // 字体相关配置
|
||||||
|
// QFont m_pl_fontScale = QFont("微软雅黑", 7); // 刻度字体大小
|
||||||
|
// // 控制曲线参数
|
||||||
|
// QString m_pl_controlCurveName = "GRAD"; // 控制曲线名
|
||||||
|
// double m_pl_controlMinValue = 0; // 控制最小值
|
||||||
|
// double m_pl_controlMaxValue = 100; // 控制最大值
|
||||||
|
// // 方位频率绘图参数
|
||||||
|
// int m_pl_sectorCount = 36; // 扇形数量
|
||||||
|
// double m_pl_circleRadius = 1; // 圆半径(cm)
|
||||||
|
// QColor m_pl_circleColor = Qt::black; // 圆线颜色
|
||||||
|
// int m_pl_circleLineWidth = 2; // 圆线宽度
|
||||||
|
// bool m_pl_isFillEnabled = true; // 是否启用填充
|
||||||
|
// QColor m_pl_fillColor = Qt::black; // 填充颜色
|
||||||
|
// // 倾角频率绘图参数
|
||||||
|
// int m_pl_lineNumber = 9; // 线数
|
||||||
|
// double m_pl_lineHeight = 2; // 统计线高度
|
||||||
|
// int m_pl_lineThickness = 2; // 线粗细
|
||||||
|
// QColor m_pl_lineColor = Qt::black; // 线颜色
|
||||||
|
// bool m_pl_drawAnnotation = true; // 是否绘制标注
|
||||||
|
// bool m_pl_drawHistogram = true; // 是否绘制直方图
|
||||||
|
// // 基线参数
|
||||||
|
// int m_pl_baselineWidth = 2; // 基线宽度
|
||||||
|
// QColor m_pl_baselineColor = Qt::black; // 基线颜色
|
||||||
|
// // 统计参数
|
||||||
|
// int m_pl_statInterval = 20; // 统计间隔
|
||||||
|
// double m_pl_minInclination = 0; // 最小倾角
|
||||||
|
// double m_pl_maxInclination = 90; // 最大倾角
|
||||||
|
// // 地质要素分类开关
|
||||||
|
// bool m_pl_highGap = false; // 高导缝
|
||||||
|
// bool m_pl_highReservoir = false; // 高阻缝
|
||||||
|
// bool m_pl_reticularFracture = false; // 网状缝
|
||||||
|
// bool m_pl_inducedFracture = false; // 诱导缝
|
||||||
|
// bool m_pl_bedLayer = false; // 层理
|
||||||
|
// bool m_pl_erosionSurface = false; // 侵蚀面
|
||||||
|
// bool m_pl_pore = false; // 孔洞
|
||||||
|
// bool m_pl_vesicle = false; // 气孔
|
||||||
|
// bool m_pl_gravel = false; // 砾石
|
||||||
|
// bool m_pl_nodule = false; // 结核
|
||||||
|
// bool m_pl_lumps = false; // 团块
|
||||||
|
// bool m_pl_fault = false; // 断层
|
||||||
|
// bool m_pl_verticalFracture = false; // 垂直缝
|
||||||
|
// bool m_pl_custom1 = false; // 自定义1
|
||||||
|
// bool m_pl_custom2 = false; // 自定义2
|
||||||
|
|
||||||
|
|
||||||
|
double m_LeftVal3 = pInfo->m_pl_controlMinValue;
|
||||||
|
double m_RightVal3 = pInfo->m_pl_controlMaxValue;
|
||||||
|
|
||||||
|
|
||||||
|
QString csCurveGrad = "GRAD";
|
||||||
|
double LeftVal3 = 0;
|
||||||
|
double RightVal3 = 100;
|
||||||
|
int nArc = 36;
|
||||||
|
double nR = 50;
|
||||||
|
QColor crArc = Qt::black;
|
||||||
|
int nArcLineWidth = 1;
|
||||||
|
bool bFill = true;
|
||||||
|
QColor crFill = Qt::black;
|
||||||
|
curv->fgrqDraw(csCurveGrad, LeftVal3, RightVal3, nArc, nR, crArc, nArcLineWidth, bFill, crFill);
|
||||||
}
|
}
|
||||||
else if("roseObject" == strType)
|
else if("roseObject" == strType)
|
||||||
{
|
{
|
||||||
|
|
@ -476,7 +545,7 @@ void FormDraw::DisplayLines(QJsonArray linesArray)
|
||||||
}
|
}
|
||||||
else if (strType == "plObject")
|
else if (strType == "plObject")
|
||||||
{
|
{
|
||||||
// 斜井三图一表属性
|
// 频率统计图
|
||||||
displayPlObject(lineObjInfo);
|
displayPlObject(lineObjInfo);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -491,7 +560,17 @@ void FormDraw::DisplayLines(QJsonArray linesArray)
|
||||||
|
|
||||||
void FormDraw::displayPlObject(QJsonObject objInfo)
|
void FormDraw::displayPlObject(QJsonObject objInfo)
|
||||||
{
|
{
|
||||||
|
QString strType = objInfo.value("Type").toString();
|
||||||
|
QString strLineName = objInfo.value("LineName").toString();
|
||||||
|
|
||||||
|
QStringList dt;
|
||||||
|
dt << m_strUuid;
|
||||||
|
dt << m_strWellName;
|
||||||
|
dt << m_strSlfName;
|
||||||
|
dt << strLineName;
|
||||||
|
dt << strType;
|
||||||
|
dt << QString::number(m_nTrackW);
|
||||||
|
this->setDrawData(dt, objInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 深度
|
// 深度
|
||||||
|
|
@ -5929,255 +6008,251 @@ void FormDraw::initFgrq(QMyCustomPlot *widget)
|
||||||
QCPAxis *xAxis = widget->xAxis;
|
QCPAxis *xAxis = widget->xAxis;
|
||||||
widget->xAxis = yAxis;
|
widget->xAxis = yAxis;
|
||||||
widget->yAxis = xAxis;
|
widget->yAxis = xAxis;
|
||||||
|
|
||||||
this->fgrqDraw(widget);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void FormDraw::fgrqDraw(QMyCustomPlot *widget)
|
void FormDraw::fgrqDraw(QMyCustomPlot *widget, double m_LeftVal3, double m_RightVal3)
|
||||||
{
|
{
|
||||||
// widget->clearGraphs();
|
// widget->clearGraphs();
|
||||||
// widget->clearItems();
|
// widget->clearItems();
|
||||||
|
|
||||||
// if(m_Value == NULL)
|
// // if(m_Value == NULL)
|
||||||
{
|
// {
|
||||||
m_bTableData = false; // 表格 曲线
|
// m_bTableData = false; // 表格 曲线
|
||||||
m_csCurveDDIR = "DDIR"; // 方位 曲线名
|
// m_csCurveDDIR = "DDIR"; // 方位 曲线名
|
||||||
m_csCurveDANG = "DANG";//倾角
|
// m_csCurveDANG = "DANG";//倾角
|
||||||
m_csCurveGrad = "GRAD";
|
// m_csCurveGrad = "GRAD";
|
||||||
|
|
||||||
m_qsTable="FRAC_HOLE.TABLE";
|
// m_qsTable="FRAC_HOLE.TABLE";
|
||||||
m_qsDIR=("DDIR"); // 方位 曲线名
|
// m_qsDIR=("DDIR"); // 方位 曲线名
|
||||||
m_qsDIP=("DANG");//倾角
|
// m_qsDIP=("DANG");//倾角
|
||||||
m_qsDepth="DEPT";
|
// m_qsDepth="DEPT";
|
||||||
m_qsID = "ID";
|
// m_qsID = "ID";
|
||||||
|
|
||||||
Refurbish();
|
// Refurbish();
|
||||||
}
|
// }
|
||||||
|
|
||||||
double nR = 50;
|
// double nR = 50;
|
||||||
|
|
||||||
QPen wPen(Qt::black, 2);
|
// QPen wPen(Qt::black, 2);
|
||||||
double centerX = widget->m_iX2/2;
|
// double centerX = widget->m_iX2/2;
|
||||||
|
|
||||||
float flVal = 0.0f;
|
// float flVal = 0.0f;
|
||||||
float x,y,x1,y1,x2,y2;
|
// float x,y,x1,y1,x2,y2;
|
||||||
float ifdir[360];
|
// float ifdir[360];
|
||||||
int m_nArc = 36;
|
// int m_nArc = 36;
|
||||||
float m_LeftVal3 = 0;
|
// m_LeftVal = 0.0f;
|
||||||
float m_RightVal3 = 100.0;
|
// m_RightVal = 90.0f;
|
||||||
m_LeftVal = 0.0f;
|
// float mind=min(m_RightVal , m_LeftVal);
|
||||||
m_RightVal = 90.0f;
|
// float maxd=max(m_RightVal , m_LeftVal);
|
||||||
float mind=min(m_RightVal , m_LeftVal);
|
// float dirmax,dipmax,dr;
|
||||||
float maxd=max(m_RightVal , m_LeftVal);
|
|
||||||
float dirmax,dipmax,dr;
|
|
||||||
|
|
||||||
float deps;
|
// float deps;
|
||||||
|
|
||||||
float ftmpSdep = m_SDep;
|
// float ftmpSdep = m_SDep;
|
||||||
float ftmpEdep = m_EDep;
|
// float ftmpEdep = m_EDep;
|
||||||
if (m_bTableData)
|
// if (m_bTableData)
|
||||||
{
|
// {
|
||||||
ReadFracDef();
|
// ReadFracDef();
|
||||||
for (int i = 0 ; i < iFracType ; i++)
|
// for (int i = 0 ; i < iFracType ; i++)
|
||||||
{
|
// {
|
||||||
m_bTypeDraw[i] = true;
|
// m_bTypeDraw[i] = true;
|
||||||
}
|
// }
|
||||||
|
|
||||||
ftmpSdep = -m_iY2;
|
// ftmpSdep = -m_iY2;
|
||||||
ftmpEdep = -m_iY1;
|
// ftmpEdep = -m_iY1;
|
||||||
}
|
// }
|
||||||
|
|
||||||
int nPointNum = m_FracTabList.count();
|
// int nPointNum = m_FracTabList.count();
|
||||||
int n = m_FracDefList.count();
|
// int n = m_FracDefList.count();
|
||||||
int nstep = 5;
|
// int nstep = 5;
|
||||||
int tmp = ftmpSdep / nstep;
|
// int tmp = ftmpSdep / nstep;
|
||||||
float flDep = tmp * nstep;
|
// float flDep = tmp * nstep;
|
||||||
|
|
||||||
m_Curve.DepLevel = 0.5;
|
// m_Curve.DepLevel = 0.5;
|
||||||
while ( 1)
|
// while ( 1)
|
||||||
{
|
// {
|
||||||
if((flDep>=ftmpEdep+nstep)||flDep>=ftmpEdep)break;
|
// if((flDep>=ftmpEdep+nstep)||flDep>=ftmpEdep)break;
|
||||||
|
|
||||||
double tempf = flDep+(float)(nstep)/2.;
|
// double tempf = flDep+(float)(nstep)/2.;
|
||||||
double centerY = tempf * -1.0;
|
// double centerY = tempf * -1.0;
|
||||||
|
|
||||||
QCPItemEllipse* pEse = new QCPItemEllipse(widget);
|
// QCPItemEllipse* pEse = new QCPItemEllipse(widget);
|
||||||
pEse->setPen(wPen);
|
// pEse->setPen(wPen);
|
||||||
pEse->m_bCustom = true;
|
// pEse->m_bCustom = true;
|
||||||
pEse->m_nRadius = nR;
|
// pEse->m_nRadius = nR;
|
||||||
pEse->topLeft->setCoords(centerY, centerX);
|
// pEse->topLeft->setCoords(centerY, centerX);
|
||||||
pEse->bottomRight->setCoords(centerY, centerX);
|
// pEse->bottomRight->setCoords(centerY, centerX);
|
||||||
|
|
||||||
for(int k = 0; k < 4; k++)
|
// for(int k = 0; k < 4; k++)
|
||||||
{
|
// {
|
||||||
QCPItemLine* pLine1 = new QCPItemLine(widget);
|
// QCPItemLine* pLine1 = new QCPItemLine(widget);
|
||||||
pLine1->m_bCustom = true;
|
// pLine1->m_bCustom = true;
|
||||||
pLine1->m_dr = qDegreesToRadians(k*90.0);
|
// pLine1->m_dr = qDegreesToRadians(k*90.0);
|
||||||
pLine1->m_nRadius = 0;
|
// pLine1->m_nRadius = 0;
|
||||||
pLine1->m_nTailLen=nR;
|
// pLine1->m_nTailLen=nR;
|
||||||
pLine1->setPen(wPen);
|
// pLine1->setPen(wPen);
|
||||||
pLine1->start->setCoords(centerY,centerX);
|
// pLine1->start->setCoords(centerY,centerX);
|
||||||
pLine1->end->setCoords(centerY,centerX);
|
// pLine1->end->setCoords(centerY,centerX);
|
||||||
}
|
// }
|
||||||
|
|
||||||
for(int i=0;i<=m_nArc;i++) ifdir[i]=0.;
|
// for(int i=0;i<=m_nArc;i++) ifdir[i]=0.;
|
||||||
x1 = 360./m_nArc;
|
// x1 = 360./m_nArc;
|
||||||
|
|
||||||
int i = 0;
|
// int i = 0;
|
||||||
if (m_bTableData)
|
// if (m_bTableData)
|
||||||
{
|
// {
|
||||||
int m_nLine = 9;
|
// int m_nLine = 9;
|
||||||
y1 = (maxd-mind)/m_nLine;//线数
|
// y1 = (maxd-mind)/m_nLine;//线数
|
||||||
for (i=0; i<nPointNum; i++)
|
// for (i=0; i<nPointNum; i++)
|
||||||
{
|
// {
|
||||||
const FRAC_TABLE& frac = m_FracTabList.at(i);
|
// const FRAC_TABLE& frac = m_FracTabList.at(i);
|
||||||
if ( frac.DEP < 0 ) continue;
|
// if ( frac.DEP < 0 ) continue;
|
||||||
bool bDraw = false;
|
// bool bDraw = false;
|
||||||
for (int j=0; j<n; j++)
|
// for (int j=0; j<n; j++)
|
||||||
{
|
// {
|
||||||
const FRAC_DEF& fd = m_FracDefList.at(j);
|
// const FRAC_DEF& fd = m_FracDefList.at(j);
|
||||||
if ( (int)(frac.ID) == fd.iCode )
|
// if ( (int)(frac.ID) == fd.iCode )
|
||||||
{
|
// {
|
||||||
bDraw = m_bTypeDraw[j];//fd.bDraw;
|
// bDraw = m_bTypeDraw[j];//fd.bDraw;
|
||||||
break;
|
// break;
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
if ( !bDraw ) continue;
|
// if ( !bDraw ) continue;
|
||||||
|
|
||||||
deps =frac.DEP;
|
// deps =frac.DEP;
|
||||||
|
|
||||||
if ( deps >= flDep &&deps < (flDep+ nstep) )
|
// if ( deps >= flDep &&deps < (flDep+ nstep) )
|
||||||
{
|
// {
|
||||||
flVal = frac.DIR;//方位
|
// flVal = frac.DIR;//方位
|
||||||
int j = flVal/x1;
|
// int j = flVal/x1;
|
||||||
if ( j >= 0 && j< m_nArc+1 )
|
// if ( j >= 0 && j< m_nArc+1 )
|
||||||
ifdir[j] ++;
|
// ifdir[j] ++;
|
||||||
|
|
||||||
flVal = frac.DIPorS;//倾角
|
// flVal = frac.DIPorS;//倾角
|
||||||
//按倾角范围统计
|
// //按倾角范围统计
|
||||||
if(flVal> maxd || flVal < mind)
|
// if(flVal> maxd || flVal < mind)
|
||||||
{
|
// {
|
||||||
//i++;
|
// //i++;
|
||||||
continue;
|
// continue;
|
||||||
}
|
// }
|
||||||
// j = (flVal-mind)/y1;//j = flVal/y1+1;
|
// // j = (flVal-mind)/y1;//j = flVal/y1+1;
|
||||||
// if ( j >= 0 && j< m_nLine+1 )
|
// // if ( j >= 0 && j< m_nLine+1 )
|
||||||
// ifdir[j] ++;
|
// // ifdir[j] ++;
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
else
|
// else
|
||||||
{
|
// {
|
||||||
while ( 1 )
|
// while ( 1 )
|
||||||
{
|
// {
|
||||||
deps = flDep + i * m_Curve.DepLevel;
|
// deps = flDep + i * m_Curve.DepLevel;
|
||||||
|
|
||||||
tempf = (deps-m_Curve.StartDepth)/m_Curve.DepLevel+0.5;
|
// tempf = (deps-m_Curve.StartDepth)/m_Curve.DepLevel+0.5;
|
||||||
if (deps >= ftmpEdep||
|
// if (deps >= ftmpEdep||
|
||||||
deps > m_Curve.EndDepth||
|
// deps > m_Curve.EndDepth||
|
||||||
deps >=( flDep + nstep))
|
// deps >=( flDep + nstep))
|
||||||
break;
|
// break;
|
||||||
if(tempf<0)
|
// if(tempf<0)
|
||||||
{
|
// {
|
||||||
i++;
|
// i++;
|
||||||
continue;
|
// continue;
|
||||||
}
|
// }
|
||||||
|
|
||||||
if (m_Value3 !=NULL )// for 控制曲线
|
// if (m_Value3 !=NULL )// for 控制曲线
|
||||||
{
|
// {
|
||||||
float tempf3 = (deps-m_Curve3.StartDepth)/m_Curve3.DepLevel+0.5;
|
// float tempf3 = (deps-m_Curve3.StartDepth)/m_Curve3.DepLevel+0.5;
|
||||||
if(tempf3<0)
|
// if(tempf3<0)
|
||||||
{
|
// {
|
||||||
i++;
|
// i++;
|
||||||
continue;
|
// continue;
|
||||||
}
|
// }
|
||||||
double grad = GetData(m_Curve3.RepCode,(char *)&m_Value3[(int)(tempf3)*m_Curve3.CodeLen]);
|
// double grad = GetData(m_Curve3.RepCode,(char *)&m_Value3[(int)(tempf3)*m_Curve3.CodeLen]);
|
||||||
if(grad<m_LeftVal3||grad>m_RightVal3){i++;continue;}
|
// if(grad<m_LeftVal3||grad>m_RightVal3){i++;continue;}
|
||||||
}
|
// }
|
||||||
|
|
||||||
flVal = GetData(m_Curve.RepCode,(char *)&m_Value[(int)(tempf)*m_Curve.CodeLen]);
|
// flVal = GetData(m_Curve.RepCode,(char *)&m_Value[(int)(tempf)*m_Curve.CodeLen]);
|
||||||
flVal=fmod(flVal,360.f);
|
// flVal=fmod(flVal,360.f);
|
||||||
int j = flVal/x1;
|
// int j = flVal/x1;
|
||||||
if ( j >= 0 && j< m_nArc+1 )
|
// if ( j >= 0 && j< m_nArc+1 )
|
||||||
ifdir[j] ++;
|
// ifdir[j] ++;
|
||||||
|
|
||||||
tempf = (deps-m_Curve2.StartDepth)/m_Curve2.DepLevel+0.5;
|
// tempf = (deps-m_Curve2.StartDepth)/m_Curve2.DepLevel+0.5;
|
||||||
if(tempf<0 )
|
// if(tempf<0 )
|
||||||
{
|
// {
|
||||||
i++;
|
// i++;
|
||||||
continue;
|
// continue;
|
||||||
}
|
// }
|
||||||
|
|
||||||
//按倾角范围统计
|
// //按倾角范围统计
|
||||||
if(flVal> maxd || flVal < mind)
|
// if(flVal> maxd || flVal < mind)
|
||||||
{
|
// {
|
||||||
i++;
|
// i++;
|
||||||
continue;
|
// continue;
|
||||||
}
|
// }
|
||||||
i ++;
|
// i ++;
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
flVal = 3.1415926535 *2./ m_nArc ;
|
// flVal = 3.1415926535 *2./ m_nArc ;
|
||||||
dirmax=0; dipmax=0;
|
// dirmax=0; dipmax=0;
|
||||||
for(i=0;i<=m_nArc;i++)
|
// for(i=0;i<=m_nArc;i++)
|
||||||
if (dirmax<ifdir[i]) dirmax=ifdir[i];
|
// if (dirmax<ifdir[i]) dirmax=ifdir[i];
|
||||||
|
|
||||||
if (dirmax == 0 )
|
// if (dirmax == 0 )
|
||||||
dirmax=1;
|
// dirmax=1;
|
||||||
for(i=0;i<=m_nArc;i++)
|
// for(i=0;i<=m_nArc;i++)
|
||||||
ifdir[i]=ifdir[i]*(nR)/dirmax;//-m_nArcLineWidth/2.whp add 2016.10.21 for线粗时扇叶超界
|
// ifdir[i]=ifdir[i]*(nR)/dirmax;//-m_nArcLineWidth/2.whp add 2016.10.21 for线粗时扇叶超界
|
||||||
// ifdir[i]=ifdir[i]*(nRadius-GetLineWidth(pDC,m_nArcLineWidth/2.))/dirmax;//-m_nArcLineWidth/2.whp add 2016.10.21 for线粗时扇叶超界
|
// // ifdir[i]=ifdir[i]*(nRadius-GetLineWidth(pDC,m_nArcLineWidth/2.))/dirmax;//-m_nArcLineWidth/2.whp add 2016.10.21 for线粗时扇叶超界
|
||||||
ifdir[m_nArc+1]=ifdir[1];
|
// ifdir[m_nArc+1]=ifdir[1];
|
||||||
|
|
||||||
//方位频率
|
// //方位频率
|
||||||
float x0,y0;
|
// float x0,y0;
|
||||||
|
|
||||||
x = centerY;
|
// x = centerY;
|
||||||
y = centerX;
|
// y = centerX;
|
||||||
for(int i=0;i<=m_nArc;i++)
|
// for(int i=0;i<=m_nArc;i++)
|
||||||
{
|
// {
|
||||||
if(ifdir[i] <= 0.0f)
|
// if(ifdir[i] <= 0.0f)
|
||||||
continue;
|
// continue;
|
||||||
QCPItemPolygon* pol = new QCPItemPolygon(widget);
|
// QCPItemPolygon* pol = new QCPItemPolygon(widget);
|
||||||
pol->topLeft->setCoords(x, y);
|
// pol->topLeft->setCoords(x, y);
|
||||||
pol->bottomRight->setCoords(x, y);
|
// pol->bottomRight->setCoords(x, y);
|
||||||
|
|
||||||
// pol->setPloyVal(i,flVal, ifdir[i]);
|
// // pol->setPloyVal(i,flVal, ifdir[i]);
|
||||||
|
|
||||||
float dr=i*flVal;
|
// float dr=i*flVal;
|
||||||
float x1 = ifdir[i]*sin(dr);
|
// float x1 = ifdir[i]*sin(dr);
|
||||||
float y1 = ifdir[i]*cos(dr);
|
// float y1 = ifdir[i]*cos(dr);
|
||||||
dr=(i+1)*flVal;
|
// dr=(i+1)*flVal;
|
||||||
float x2 = ifdir[i]*sin(dr);
|
// float x2 = ifdir[i]*sin(dr);
|
||||||
float y2 = ifdir[i]*cos(dr);
|
// float y2 = ifdir[i]*cos(dr);
|
||||||
|
|
||||||
QPolygonF myPolygon;
|
// QPolygonF myPolygon;
|
||||||
myPolygon << QPointF(0, 0);
|
// myPolygon << QPointF(0, 0);
|
||||||
myPolygon << QPointF(x1, y1);
|
// myPolygon << QPointF(x1, y1);
|
||||||
myPolygon << QPointF(x2, y2);
|
// myPolygon << QPointF(x2, y2);
|
||||||
myPolygon << QPointF(0, 0);
|
// myPolygon << QPointF(0, 0);
|
||||||
pol->setPoints(myPolygon);
|
// pol->setPoints(myPolygon);
|
||||||
|
|
||||||
// QCPItemRect* prt = new QCPItemRect(widget);
|
// // QCPItemRect* prt = new QCPItemRect(widget);
|
||||||
// prt->topLeft->setCoords(x, y);
|
// // prt->topLeft->setCoords(x, y);
|
||||||
// prt->bottomRight->setCoords(x, y);
|
// // prt->bottomRight->setCoords(x, y);
|
||||||
|
|
||||||
// if(m_bFill)
|
// // if(m_bFill)
|
||||||
// {
|
// // {
|
||||||
// QPainterPath myPath;
|
// // QPainterPath myPath;
|
||||||
// myPath.addPolygon(myPolygon);
|
// // myPath.addPolygon(myPolygon);
|
||||||
// pDC->fillPath(myPath,textBrushFill);
|
// // pDC->fillPath(myPath,textBrushFill);
|
||||||
// }
|
// // }
|
||||||
// if(m_nArcLineWidth>=1)
|
// // if(m_nArcLineWidth>=1)
|
||||||
// {
|
// // {
|
||||||
// pDC->setPen(pPenArc);
|
// // pDC->setPen(pPenArc);
|
||||||
// // pDC->drawPolygon(myPolygon);
|
// // // pDC->drawPolygon(myPolygon);
|
||||||
// }
|
// // }
|
||||||
}
|
// }
|
||||||
|
|
||||||
flDep += nstep;
|
// flDep += nstep;
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -238,7 +238,7 @@ public:
|
||||||
|
|
||||||
//频率统计图
|
//频率统计图
|
||||||
void initFgrq(QMyCustomPlot *widget);
|
void initFgrq(QMyCustomPlot *widget);
|
||||||
void fgrqDraw(QMyCustomPlot *widget);
|
void fgrqDraw(QMyCustomPlot *widget, double m_LeftVal3, double m_RightVal3);
|
||||||
//玫瑰图
|
//玫瑰图
|
||||||
void initRose(QMyCustomPlot *widget);
|
void initRose(QMyCustomPlot *widget);
|
||||||
void addQCPItemLine(QMyCustomPlot *widget, float cx, float cy, const QPointF& p1, const QPointF& p2, const QPen& wPen);
|
void addQCPItemLine(QMyCustomPlot *widget, float cx, float cy, const QPointF& p1, const QPointF& p2, const QPen& wPen);
|
||||||
|
|
|
||||||
|
|
@ -254,7 +254,7 @@ public:
|
||||||
double m_pl_controlMaxValue = 100; // 控制最大值
|
double m_pl_controlMaxValue = 100; // 控制最大值
|
||||||
// 方位频率绘图参数
|
// 方位频率绘图参数
|
||||||
int m_pl_sectorCount = 36; // 扇形数量
|
int m_pl_sectorCount = 36; // 扇形数量
|
||||||
double m_pl_circleRadius = 1; // 圆半径(cm)
|
double m_pl_circleRadius = 50; // 圆半径(cm)
|
||||||
QColor m_pl_circleColor = Qt::black; // 圆线颜色
|
QColor m_pl_circleColor = Qt::black; // 圆线颜色
|
||||||
int m_pl_circleLineWidth = 2; // 圆线宽度
|
int m_pl_circleLineWidth = 2; // 圆线宽度
|
||||||
bool m_pl_isFillEnabled = true; // 是否启用填充
|
bool m_pl_isFillEnabled = true; // 是否启用填充
|
||||||
|
|
|
||||||
|
|
@ -142,6 +142,9 @@ QMyCustomPlot::QMyCustomPlot(QWidget *parent, QString strSlfName, QString strWel
|
||||||
// 深度属性修改
|
// 深度属性修改
|
||||||
connect(CallManage::getInstance(), SIGNAL(sig_changeDepthProperty(QVariantList)), this, SLOT(s_changeDepthProperty(QVariantList)));
|
connect(CallManage::getInstance(), SIGNAL(sig_changeDepthProperty(QVariantList)), this, SLOT(s_changeDepthProperty(QVariantList)));
|
||||||
|
|
||||||
|
// 深度属性修改
|
||||||
|
connect(CallManage::getInstance(), SIGNAL(sig_changePlObjectProperty(QVariantMap)), this, SLOT(s_changePlObjectProperty(QVariantMap)));
|
||||||
|
|
||||||
connect(CallManage::getInstance(), SIGNAL(sig_changeDrawProperty(QVariantList)), this, SLOT(s_changeDrawProperty(QVariantList)));
|
connect(CallManage::getInstance(), SIGNAL(sig_changeDrawProperty(QVariantList)), this, SLOT(s_changeDrawProperty(QVariantList)));
|
||||||
// 岩心分析
|
// 岩心分析
|
||||||
connect(CallManage::getInstance(), SIGNAL(sig_changeCorePhysicsProperty(QVariantMap)), this, SLOT(s_changeCorePhysicsProperty(QVariantMap)));
|
connect(CallManage::getInstance(), SIGNAL(sig_changeCorePhysicsProperty(QVariantMap)), this, SLOT(s_changeCorePhysicsProperty(QVariantMap)));
|
||||||
|
|
@ -10019,3 +10022,454 @@ void QMyCustomPlot::resetPosition()
|
||||||
//刷新
|
//刷新
|
||||||
replot();
|
replot();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QMyCustomPlot::s_changePlObjectProperty(QVariantMap variantMap)
|
||||||
|
{
|
||||||
|
QString csCurveGrad = variantMap["m_pl_controlCurveName"].toString();
|
||||||
|
double LeftVal3 = variantMap["m_pl_controlMinValue"].toDouble();
|
||||||
|
double RightVal3 = variantMap["m_pl_controlMaxValue"].toDouble();
|
||||||
|
int nArc = variantMap["m_pl_sectorCount"].toInt();
|
||||||
|
double nR = variantMap["m_pl_circleRadius"].toDouble();
|
||||||
|
QColor crArc = variantMap["m_pl_circleColor"].value<QColor>();
|
||||||
|
int nArcLineWidth = variantMap["m_pl_circleLineWidth"].toInt();
|
||||||
|
bool bFill = variantMap["m_pl_isFillEnabled"].toBool();
|
||||||
|
QColor crFill = variantMap["m_pl_fillColor"].value<QColor>();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
this->fgrqDraw(csCurveGrad, LeftVal3, RightVal3, nArc, nR, crArc, nArcLineWidth, bFill, crFill);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void QMyCustomPlot::fgrqDraw(QString csCurveGrad, double LeftVal3, double RightVal3, int nArc,
|
||||||
|
double nR, QColor crArc, int nArcLineWidth, bool bFill, QColor crFill)
|
||||||
|
{
|
||||||
|
this->clearGraphs();
|
||||||
|
this->clearItems();
|
||||||
|
|
||||||
|
// if(m_Value == NULL)
|
||||||
|
{
|
||||||
|
m_bTableData = false; // 表格 曲线
|
||||||
|
m_csCurveDDIR = "DDIR"; // 方位 曲线名
|
||||||
|
m_csCurveDANG = "DANG";//倾角
|
||||||
|
this->m_csCurveGrad = csCurveGrad;
|
||||||
|
|
||||||
|
m_qsTable="FRAC_HOLE.TABLE";
|
||||||
|
m_qsDIR=("DDIR"); // 方位 曲线名
|
||||||
|
m_qsDIP=("DANG");//倾角
|
||||||
|
m_qsDepth="DEPT";
|
||||||
|
m_qsID = "ID";
|
||||||
|
|
||||||
|
Refurbish();
|
||||||
|
}
|
||||||
|
|
||||||
|
// double nR = 50;
|
||||||
|
QPen wPen(crArc, nArcLineWidth);
|
||||||
|
double centerX = this->m_iX2/2;
|
||||||
|
float flVal = 0.0f;
|
||||||
|
float x,y,x1,y1,x2,y2;
|
||||||
|
float ifdir[360];
|
||||||
|
|
||||||
|
float m_LeftVal = 0.0f;
|
||||||
|
float m_RightVal = 90.0f;
|
||||||
|
float mind=min(m_RightVal , m_LeftVal);
|
||||||
|
float maxd=max(m_RightVal , m_LeftVal);
|
||||||
|
float dirmax,dipmax,dr;
|
||||||
|
float deps;
|
||||||
|
float ftmpSdep = m_SDep;
|
||||||
|
float ftmpEdep = m_EDep;
|
||||||
|
|
||||||
|
|
||||||
|
if (m_bTableData)
|
||||||
|
{
|
||||||
|
// ReadFracDef();
|
||||||
|
|
||||||
|
for (int i = 0 ; i < iFracType ; i++)
|
||||||
|
{
|
||||||
|
m_bTypeDraw[i] = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
ftmpSdep = -m_iY2;
|
||||||
|
ftmpEdep = -m_iY1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int nPointNum = m_FracTabList.count();
|
||||||
|
int n = m_FracDefList.count();
|
||||||
|
int nstep = 5;
|
||||||
|
int tmp = ftmpSdep / nstep;
|
||||||
|
float flDep = tmp * nstep;
|
||||||
|
|
||||||
|
m_Curve.DepLevel = 0.5;
|
||||||
|
while ( 1)
|
||||||
|
{
|
||||||
|
if((flDep>=ftmpEdep+nstep)||flDep>=ftmpEdep)break;
|
||||||
|
|
||||||
|
double tempf = flDep+(float)(nstep)/2.;
|
||||||
|
double centerY = tempf * -1.0;
|
||||||
|
|
||||||
|
// 圆
|
||||||
|
QCPItemEllipse* pEse = new QCPItemEllipse(this);
|
||||||
|
pEse->setPen(wPen);
|
||||||
|
pEse->m_bCustom = true;
|
||||||
|
pEse->m_nRadius = nR;
|
||||||
|
pEse->topLeft->setCoords(centerY, centerX);
|
||||||
|
pEse->bottomRight->setCoords(centerY, centerX);
|
||||||
|
|
||||||
|
for(int k = 0; k < 4; k++)
|
||||||
|
{
|
||||||
|
// 圆里面的十字
|
||||||
|
QCPItemLine* pLine1 = new QCPItemLine(this);
|
||||||
|
pLine1->m_bCustom = true;
|
||||||
|
pLine1->m_dr = qDegreesToRadians(k*90.0);
|
||||||
|
pLine1->m_nRadius = 0;
|
||||||
|
pLine1->m_nTailLen=nR;
|
||||||
|
pLine1->setPen(wPen);
|
||||||
|
pLine1->start->setCoords(centerY,centerX);
|
||||||
|
pLine1->end->setCoords(centerY,centerX);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(int i=0;i<=nArc;i++) ifdir[i]=0.;
|
||||||
|
x1 = 360./nArc;
|
||||||
|
|
||||||
|
int i = 0;
|
||||||
|
if (m_bTableData)
|
||||||
|
{
|
||||||
|
int m_nLine = 9;
|
||||||
|
y1 = (maxd-mind)/m_nLine;//线数
|
||||||
|
for (i=0; i<nPointNum; i++)
|
||||||
|
{
|
||||||
|
const FRAC_TABLE& frac = m_FracTabList.at(i);
|
||||||
|
if ( frac.DEP < 0 ) continue;
|
||||||
|
bool bDraw = false;
|
||||||
|
for (int j=0; j<n; j++)
|
||||||
|
{
|
||||||
|
const FRAC_DEF& fd = m_FracDefList.at(j);
|
||||||
|
if ( (int)(frac.ID) == fd.iCode )
|
||||||
|
{
|
||||||
|
bDraw = m_bTypeDraw[j];//fd.bDraw;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ( !bDraw ) continue;
|
||||||
|
|
||||||
|
deps =frac.DEP;
|
||||||
|
|
||||||
|
if ( deps >= flDep &&deps < (flDep+ nstep) )
|
||||||
|
{
|
||||||
|
flVal = frac.DIR;//方位
|
||||||
|
int j = flVal/x1;
|
||||||
|
if ( j >= 0 && j< nArc+1 )
|
||||||
|
ifdir[j] ++;
|
||||||
|
|
||||||
|
flVal = frac.DIPorS;//倾角
|
||||||
|
//按倾角范围统计
|
||||||
|
if(flVal> maxd || flVal < mind)
|
||||||
|
{
|
||||||
|
//i++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// j = (flVal-mind)/y1;//j = flVal/y1+1;
|
||||||
|
// if ( j >= 0 && j< m_nLine+1 )
|
||||||
|
// ifdir[j] ++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
while ( 1 )
|
||||||
|
{
|
||||||
|
deps = flDep + i * m_Curve.DepLevel;
|
||||||
|
|
||||||
|
tempf = (deps-m_Curve.StartDepth)/m_Curve.DepLevel+0.5;
|
||||||
|
if (deps >= ftmpEdep||
|
||||||
|
deps > m_Curve.EndDepth||
|
||||||
|
deps >=( flDep + nstep))
|
||||||
|
break;
|
||||||
|
if(tempf<0)
|
||||||
|
{
|
||||||
|
i++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_Value3 !=NULL )// for 控制曲线
|
||||||
|
{
|
||||||
|
float tempf3 = (deps-m_Curve3.StartDepth)/m_Curve3.DepLevel+0.5;
|
||||||
|
if(tempf3<0)
|
||||||
|
{
|
||||||
|
i++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
double grad = GetData(m_Curve3.RepCode,(char *)&m_Value3[(int)(tempf3)*m_Curve3.CodeLen]);
|
||||||
|
if(grad<LeftVal3||grad>RightVal3){i++;continue;}
|
||||||
|
}
|
||||||
|
|
||||||
|
flVal = GetData(m_Curve.RepCode,(char *)&m_Value[(int)(tempf)*m_Curve.CodeLen]);
|
||||||
|
flVal=fmod(flVal,360.f);
|
||||||
|
int j = flVal/x1;
|
||||||
|
if ( j >= 0 && j< nArc+1 )
|
||||||
|
ifdir[j] ++;
|
||||||
|
|
||||||
|
tempf = (deps-m_Curve2.StartDepth)/m_Curve2.DepLevel+0.5;
|
||||||
|
if(tempf<0 )
|
||||||
|
{
|
||||||
|
i++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//按倾角范围统计
|
||||||
|
if(flVal> maxd || flVal < mind)
|
||||||
|
{
|
||||||
|
i++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
i ++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
flVal = 3.1415926535 *2./ nArc ;
|
||||||
|
dirmax=0; dipmax=0;
|
||||||
|
for(i=0;i<=nArc;i++)
|
||||||
|
if (dirmax<ifdir[i]) dirmax=ifdir[i];
|
||||||
|
|
||||||
|
if (dirmax == 0 )
|
||||||
|
dirmax=1;
|
||||||
|
for(i=0;i<=nArc;i++)
|
||||||
|
ifdir[i]=ifdir[i]*(nR)/dirmax;//-m_nArcLineWidth/2.whp add 2016.10.21 for线粗时扇叶超界
|
||||||
|
// ifdir[i]=ifdir[i]*(nRadius-GetLineWidth(pDC,m_nArcLineWidth/2.))/dirmax;//-m_nArcLineWidth/2.whp add 2016.10.21 for线粗时扇叶超界
|
||||||
|
ifdir[nArc+1]=ifdir[1];
|
||||||
|
|
||||||
|
//方位频率
|
||||||
|
float x0,y0;
|
||||||
|
|
||||||
|
x = centerY;
|
||||||
|
y = centerX;
|
||||||
|
for(int i=0;i<=nArc;i++)
|
||||||
|
{
|
||||||
|
if(ifdir[i] <= 0.0f)
|
||||||
|
continue;
|
||||||
|
if(bFill)
|
||||||
|
{
|
||||||
|
// 圆里面的折线
|
||||||
|
QCPItemPolygon* pol = new QCPItemPolygon(this);
|
||||||
|
pol->topLeft->setCoords(x , y );
|
||||||
|
pol->bottomRight->setCoords(x , y );
|
||||||
|
pol->setBrushColor(crFill);
|
||||||
|
|
||||||
|
// pol->setPloyVal(i,flVal, ifdir[i]);
|
||||||
|
float dr=i*flVal;
|
||||||
|
float x1 = ifdir[i]*sin(dr);
|
||||||
|
float y1 = ifdir[i]*cos(dr);
|
||||||
|
dr=(i+1)*flVal;
|
||||||
|
float x2 = ifdir[i]*sin(dr);
|
||||||
|
float y2 = ifdir[i]*cos(dr);
|
||||||
|
QPolygonF myPolygon;
|
||||||
|
|
||||||
|
myPolygon << QPointF(0, 0);
|
||||||
|
myPolygon << QPointF(x1, y1);
|
||||||
|
myPolygon << QPointF(x2, y2);
|
||||||
|
myPolygon << QPointF(0, 0);
|
||||||
|
pol->setPoints(myPolygon);
|
||||||
|
}
|
||||||
|
|
||||||
|
// QCPItemRect* prt = new QCPItemRect(this);
|
||||||
|
// prt->topLeft->setCoords(x, y);
|
||||||
|
// prt->bottomRight->setCoords(x, y);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
flDep += nstep;
|
||||||
|
}
|
||||||
|
|
||||||
|
this->drawDipAngle(0, 0);
|
||||||
|
this->replot();
|
||||||
|
}
|
||||||
|
|
||||||
|
void QMyCustomPlot::drawDipAngle(double centerX, double centerY)
|
||||||
|
{
|
||||||
|
// 2. 开启 QCustomPlot 的绘制层
|
||||||
|
this->setBackground(Qt::white);
|
||||||
|
this->axisRect()->setBackground(Qt::white);
|
||||||
|
|
||||||
|
// 3. 获取绘制对象(关键!直接拿到 painter)
|
||||||
|
QPainter painter(this);
|
||||||
|
painter.setRenderHint(QPainter::Antialiasing);
|
||||||
|
|
||||||
|
// 4. 获取绘制区域
|
||||||
|
QRect drawRect = this->axisRect()->rect();
|
||||||
|
|
||||||
|
// 5. 画测试线:左上角 → 右下角(红色粗线,看得清)
|
||||||
|
QPen pen(Qt::red);
|
||||||
|
pen.setWidth(2);
|
||||||
|
painter.setPen(pen);
|
||||||
|
painter.drawLine(drawRect.topLeft(), drawRect.bottomRight());
|
||||||
|
|
||||||
|
// 6. 标记文字
|
||||||
|
painter.setPen(Qt::black);
|
||||||
|
painter.drawText(drawRect, Qt::AlignTop|Qt::AlignLeft, "左上角");
|
||||||
|
painter.drawText(drawRect, Qt::AlignBottom|Qt::AlignRight, "右下角");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// // 拿到 QCustomPlot 的画布区域
|
||||||
|
// QRect rect = this->axisRect()->rect(); // 绘制区域(和你原来的 rect 一致)
|
||||||
|
|
||||||
|
//// rect.getRect();
|
||||||
|
|
||||||
|
// // 你原来的所有坐标逻辑 1:1 保留
|
||||||
|
// int baseY = rect.top() + rect.height() * 2 / 3;
|
||||||
|
// int textH = rect.height() / 3;
|
||||||
|
// int lineY = baseY + textH - 7;
|
||||||
|
// int x1 = rect.left() + 20;
|
||||||
|
// int x2 = rect.right() - 30;
|
||||||
|
|
||||||
|
// // 开始在 QCustomPlot 上绘制
|
||||||
|
// QPainter painter(this);
|
||||||
|
// painter.setRenderHint(QPainter::Antialiasing);
|
||||||
|
|
||||||
|
// // 1. 画底部刻度主线(完全不变)
|
||||||
|
// painter.drawLine(0, 0, 100, 100);
|
||||||
|
|
||||||
|
// // 2. 字体
|
||||||
|
//// QFont oldFont = painter.font();
|
||||||
|
//// painter.setFont(m_cp_curveScale);
|
||||||
|
|
||||||
|
// // 3. 你的参数(完全不变)
|
||||||
|
// int minVal = 0;
|
||||||
|
// int maxVal = 100;
|
||||||
|
//// if(m_cp_scaleDivisionsOrCustom <= 0)
|
||||||
|
//// m_cp_scaleDivisionsOrCustom = 1;
|
||||||
|
// int tickCount = 9 + 1;
|
||||||
|
// int tickHeight = 6;
|
||||||
|
// int textOffsetUp = 18;
|
||||||
|
|
||||||
|
// // 4. 计算步长(完全不变)
|
||||||
|
// double step = (maxVal - minVal) * 1.0 / (tickCount - 1);
|
||||||
|
|
||||||
|
// // 5. 循环画刻度 + 文字(完全不变)
|
||||||
|
// for (int i = 0; i < tickCount; ++i) {
|
||||||
|
// int val = minVal + qRound(step * i);
|
||||||
|
// 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);
|
||||||
|
}
|
||||||
|
|
||||||
|
void QMyCustomPlot::Refurbish()
|
||||||
|
{
|
||||||
|
if (m_bTableData)
|
||||||
|
{
|
||||||
|
// ReadData(m_strSlfName, "");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this->ReadData(m_strSlfName, m_csCurveDDIR, 0, &m_Curve);
|
||||||
|
this->ReadData(m_strSlfName, m_csCurveDANG, 1, &m_Curve2);
|
||||||
|
this->ReadData(m_strSlfName, m_csCurveGrad, 2, &m_Curve3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//曲线
|
||||||
|
//read curve
|
||||||
|
void QMyCustomPlot::ReadData(QString strSlfName, QString strLineName, int iCurve, Slf_CURVE *curve)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
if(strSlfName.isEmpty())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 读曲线数值
|
||||||
|
CMemRdWt mrw;
|
||||||
|
m_PointNum = 0 ;
|
||||||
|
if ( iCurve== 0 )
|
||||||
|
{
|
||||||
|
if(m_Value) delete []m_Value;
|
||||||
|
m_Value = 0;
|
||||||
|
}
|
||||||
|
if ( iCurve== 1 )
|
||||||
|
{
|
||||||
|
if(m_Value2) delete []m_Value2;
|
||||||
|
m_Value2 = 0;
|
||||||
|
}
|
||||||
|
if ( iCurve== 2 )
|
||||||
|
{
|
||||||
|
if(m_Value3) delete []m_Value3;
|
||||||
|
m_Value3 = 0;
|
||||||
|
}
|
||||||
|
DWORD byte;
|
||||||
|
//CString wellname(sFilePath);
|
||||||
|
if ( mrw.Open(strSlfName.toStdString().c_str()) ) // 打开井文件
|
||||||
|
{
|
||||||
|
int iIndex=mrw.OpenCurve(strLineName.toStdString().c_str());
|
||||||
|
if (iIndex >= 0)
|
||||||
|
{
|
||||||
|
mrw.GetCurveInfo(iIndex,curve);
|
||||||
|
if(curve->DepLevel==0) return;
|
||||||
|
m_PointNum = (float)(fabs((curve->EndDepth - curve->StartDepth)/curve->DepLevel+0.5));
|
||||||
|
m_SDep=curve->StartDepth;
|
||||||
|
m_EDep=curve->EndDepth;
|
||||||
|
m_Rlev=curve->DepLevel;
|
||||||
|
|
||||||
|
if ( iCurve== 0 )
|
||||||
|
{
|
||||||
|
m_Value=new char[m_PointNum*curve->CodeLen+4];
|
||||||
|
if(m_Value)
|
||||||
|
{
|
||||||
|
byte = mrw.ReadCurve(iIndex,m_SDep,m_PointNum,(void *)m_Value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ( iCurve == 1 )
|
||||||
|
{
|
||||||
|
m_Value2=new char[m_PointNum*curve->CodeLen+4];
|
||||||
|
if(m_Value2){
|
||||||
|
byte = mrw.ReadCurve(iIndex,m_SDep,m_PointNum,(void *)m_Value2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_Value3=new char[m_PointNum*curve->CodeLen+4];
|
||||||
|
if(m_Value3){
|
||||||
|
byte = mrw.ReadCurve(iIndex,m_SDep,m_PointNum,(void *)m_Value3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mrw.CloseCurve(iIndex);
|
||||||
|
}
|
||||||
|
mrw.Close(); //关闭井文件
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -552,8 +552,11 @@ public slots:
|
||||||
// 深度
|
// 深度
|
||||||
void s_changeDepthProperty(QVariantList vlist);
|
void s_changeDepthProperty(QVariantList vlist);
|
||||||
|
|
||||||
|
// 频率统计图
|
||||||
|
void s_changePlObjectProperty(QVariantMap variantMap);
|
||||||
|
|
||||||
// 岩心分析
|
// 岩心分析
|
||||||
void s_changeCorePhysicsProperty(QVariantMap vlist);
|
void s_changeCorePhysicsProperty(QVariantMap variantMap);
|
||||||
|
|
||||||
void onAddRect();
|
void onAddRect();
|
||||||
|
|
||||||
|
|
@ -600,6 +603,49 @@ public:
|
||||||
|
|
||||||
virtual void contextMenuEvent(QContextMenuEvent *event);
|
virtual void contextMenuEvent(QContextMenuEvent *event);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct FRACTABLE
|
||||||
|
{
|
||||||
|
float DEP; //深度
|
||||||
|
float AorX;
|
||||||
|
float XETAorH;
|
||||||
|
float W;
|
||||||
|
float DIPorS; //倾角
|
||||||
|
float DIR; //方位
|
||||||
|
float ID; //裂缝代码/可信度
|
||||||
|
float NUM;
|
||||||
|
float X[16],Y[16];//X0,Y0,X1,Y1,X2,Y2,X3,Y3,X4,Y4,X5,Y5,X6,Y6,X7,Y7,X8,Y8,X9,Y9;
|
||||||
|
}FRAC_TABLE;
|
||||||
|
//蝌蚪图
|
||||||
|
typedef struct FRACDEF
|
||||||
|
{
|
||||||
|
int iCode; //代码
|
||||||
|
QString csName; // 名称
|
||||||
|
int iType; //形状代码(1:正弦曲线 2:连线 3:封闭区域)
|
||||||
|
QColor crColor; //颜色(红 绿 蓝)
|
||||||
|
int nLineWidth; //线宽度
|
||||||
|
int bDraw; // 是否显示
|
||||||
|
}FRAC_DEF;
|
||||||
|
QList<FRAC_TABLE> m_FracTabList; // --
|
||||||
|
QList<FRAC_DEF> m_FracDefList;
|
||||||
|
bool m_bTypeDraw[iFracType]; // --
|
||||||
|
int m_bTableData = 0;
|
||||||
|
QString m_csCurveDDIR,m_csCurveDANG,m_csCurveGrad;
|
||||||
|
Slf_CURVE m_Curve,m_Curve2,m_Curve3;
|
||||||
|
QString m_qsWellName,m_qsTable;
|
||||||
|
QString m_qsDepth,m_qsDIP,m_qsDIR,m_qsID,m_qsProperty; // 控制曲线
|
||||||
|
float m_SDep,m_EDep,m_Rlev;
|
||||||
|
// csCurveGrad曲线名 LeftVal3最小值 RightVal3最大值 nArc扇形 nR圆半径 crArc圆颜色 nArcLineWidth圆线宽度 bFill是否填充
|
||||||
|
void fgrqDraw(QString csCurveGrad, double LeftVal3, double RightVal3, int nArc, double nR, QColor crArc, int nArcLineWidth, bool bFill, QColor crFill);
|
||||||
|
// 绘制倾角
|
||||||
|
void drawDipAngle(double centerX, double centerY);
|
||||||
|
|
||||||
|
void Refurbish();
|
||||||
|
|
||||||
|
int m_PointNum;
|
||||||
|
char *m_Value = NULL,*m_Value2 = NULL,*m_Value3 = NULL;
|
||||||
|
void ReadData(QString strSlfName, QString strLineName, int iCurve, Slf_CURVE *curve);
|
||||||
private:
|
private:
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user