a
This commit is contained in:
@@ -0,0 +1,157 @@
|
||||
# 2D项目创建
|
||||
|
||||
<cite>
|
||||
**本文档引用的文件**
|
||||
- [DialNew2DTask.cpp](file://cpp/Views/DialNew2DTask.cpp)
|
||||
- [DialNew2DTask.h](file://h/DialNew2DTask.h)
|
||||
- [TaskDataOper.cpp](file://cpp/Operator/TaskDataOper.cpp)
|
||||
- [TaskDataOper.h](file://h/TaskDataOper.h)
|
||||
</cite>
|
||||
|
||||
## 目录
|
||||
1. [简介](#简介)
|
||||
2. [参数配置](#参数配置)
|
||||
3. [控件交互逻辑](#控件交互逻辑)
|
||||
4. [跨孔测量模式约束](#跨孔测量模式约束)
|
||||
5. [测试脚本选择机制](#测试脚本选择机制)
|
||||
6. [接地电阻测试选项](#接地电阻测试选项)
|
||||
|
||||
## 简介
|
||||
2D项目创建功能是Geomative Studio软件中的核心功能之一,用于配置和创建二维地球物理勘探任务。该功能通过`DialNew2DTask`对话框实现,允许用户设置任务的各种参数,包括装置类型、电缆布线方式、电极间距、孔间距(跨孔测量)、起始/结束电极、采样间隔等。本文档详细说明了该功能的实现细节和交互逻辑。
|
||||
|
||||
**Section sources**
|
||||
- [DialNew2DTask.cpp](file://cpp/Views/DialNew2DTask.cpp#L1-L665)
|
||||
- [DialNew2DTask.h](file://h/DialNew2DTask.h#L1-L92)
|
||||
|
||||
## 参数配置
|
||||
2D项目创建对话框提供了多个参数的配置选项,主要包括:
|
||||
|
||||
- **任务名称**:用户定义的任务标识名称
|
||||
- **测试地点**:勘探任务的地理位置描述
|
||||
- **测试方式**:包括电阻率(RES)、激电(IP)和自电(SP)三种模式
|
||||
- **装置类型**:定义电极排列方式,如温纳、施伦贝谢等
|
||||
- **测试脚本**:预定义的测量序列和参数配置
|
||||
- **迭代次数**:测量数据的叠加次数,用于提高信噪比
|
||||
- **发射周期**:电流发射的时间周期
|
||||
- **电缆布线方式**:电缆的连接和部署方式
|
||||
- **电极间距**:相邻电极之间的距离
|
||||
- **采样间隔**:数据采集的时间间隔(毫秒)
|
||||
|
||||
这些参数共同定义了2D勘探任务的测量配置,确保数据采集的准确性和一致性。
|
||||
|
||||
**Section sources**
|
||||
- [DialNew2DTask.cpp](file://cpp/Views/DialNew2DTask.cpp#L80-L237)
|
||||
- [TaskDataOper.h](file://h/TaskDataOper.h#L40-L82)
|
||||
|
||||
## 控件交互逻辑
|
||||
`DialNew2DTask`对话框中的控件具有复杂的交互逻辑,特别是装置类型变化时对脚本和电缆布线方式的动态过滤机制。
|
||||
|
||||
### 装置类型变化事件
|
||||
当用户选择不同的装置类型时,系统会触发`OnSelchangeCombo2dArray`事件处理函数,该函数执行以下操作:
|
||||
|
||||
1. 清空测试脚本下拉框
|
||||
2. 根据选定的装置类型查询可用的测试脚本
|
||||
3. 动态填充测试脚本下拉框
|
||||
4. 根据装置类型显示或隐藏孔间距输入框
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[用户选择装置类型] --> B{装置类型为跨孔测量?}
|
||||
B --> |是| C[显示孔间距输入框]
|
||||
B --> |否| D[隐藏孔间距输入框]
|
||||
E[查询对应装置类型的测试脚本] --> F[填充测试脚本下拉框]
|
||||
G{装置类型为Geomative跨孔?} --> |是| H[禁用起始/结束电极输入]
|
||||
G --> |否| I[启用起始/结束电极输入]
|
||||
```
|
||||
|
||||
**Diagram sources**
|
||||
- [DialNew2DTask.cpp](file://cpp/Views/DialNew2DTask.cpp#L239-L274)
|
||||
|
||||
### 测试方式变化事件
|
||||
当测试方式(电阻率、激电、自电)发生变化时,系统会动态过滤电缆布线方式和发射周期选项:
|
||||
|
||||
- 电阻率模式:过滤掉激电专用的布线方式
|
||||
- 激电模式:过滤掉电阻率专用的布线方式
|
||||
- 自电模式:显示所有布线方式但禁用发射周期
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[用户选择测试方式] --> B{测试方式为激电?}
|
||||
B --> |是| C[过滤电阻率布线方式]
|
||||
B --> |否| D{测试方式为电阻率?}
|
||||
D --> |是| E[过滤激电布线方式]
|
||||
D --> |否| F[显示所有布线方式]
|
||||
G[更新发射周期选项] --> H[根据测试方式启用/禁用]
|
||||
```
|
||||
|
||||
**Diagram sources**
|
||||
- [DialNew2DTask.cpp](file://cpp/Views/DialNew2DTask.cpp#L312-L411)
|
||||
|
||||
## 跨孔测量模式约束
|
||||
在跨孔测量模式下,系统对孔间距与电极间距存在严格的约束关系:
|
||||
|
||||
1. 当装置类型为跨孔测量(AR_CROSS_HOLE_TYPE)时,孔间距输入框会被显示
|
||||
2. 系统会验证孔间距必须大于电极间距
|
||||
3. 如果孔间距小于或等于电极间距,系统会弹出错误提示
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A["用户选择跨孔装置类型"] --> B["显示孔间距输入框"]
|
||||
C["用户输入孔间距和电极间距"] --> D{"孔间距 > 电极间距?"}
|
||||
D --> |是| E["参数有效,继续"]
|
||||
D --> |否| F["显示错误提示: \"孔间距必须大于电极间距\""]
|
||||
```
|
||||
|
||||
这种约束确保了跨孔测量的物理可行性,防止用户配置不合理的参数。
|
||||
|
||||
**Section sources**
|
||||
- [DialNew2DTask.cpp](file://cpp/Views/DialNew2DTask.cpp#L530-L560)
|
||||
|
||||
## 测试脚本选择机制
|
||||
当用户选择测试脚本后,系统会自动填充电极范围和层数,实现原理如下:
|
||||
|
||||
1. 调用`Query2DSptInfo`函数查询脚本的最小和最大层
|
||||
2. 调用`QuerySptElecTpMount`函数查询脚本的电极数量和测量点数
|
||||
3. 自动设置起始电极为1,结束电极为最大电极数
|
||||
4. 填充起始层和结束层的值
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant User as 用户
|
||||
participant Dialog as DialNew2DTask对话框
|
||||
participant TaskOper as CTaskDataOper
|
||||
User->>Dialog : 选择测试脚本
|
||||
Dialog->>TaskOper : Query2DSptInfo(iSptID)
|
||||
TaskOper-->>Dialog : 返回最小/最大层
|
||||
Dialog->>TaskOper : QuerySptElecTpMount(iSptID)
|
||||
TaskOper-->>Dialog : 返回电极数量
|
||||
Dialog->>Dialog : 设置起始电极为1
|
||||
Dialog->>Dialog : 设置结束电极为最大电极数
|
||||
Dialog->>Dialog : 填充层范围
|
||||
```
|
||||
|
||||
**Diagram sources**
|
||||
- [DialNew2DTask.cpp](file://cpp/Views/DialNew2DTask.cpp#L276-L309)
|
||||
- [TaskDataOper.cpp](file://cpp/Operator/TaskDataOper.cpp#L986-L1019)
|
||||
|
||||
## 接地电阻测试选项
|
||||
接地电阻测试选项具有以下默认行为和可配置性:
|
||||
|
||||
- **默认行为**:默认启用接地电阻测试(`((CButton*)GetDlgItem(IDC_IF_TEST_GR))->SetCheck(TRUE);`)
|
||||
- **用户可配置性**:用户可以通过复选框启用或禁用接地电阻测试
|
||||
- **参数传递**:选中状态会作为`ucTestGRFlag`参数传递给任务创建函数
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[对话框初始化] --> B[默认选中接地电阻测试]
|
||||
C[用户操作] --> D{用户取消选中?}
|
||||
D --> |是| E[ucTestGRFlag = 0]
|
||||
D --> |否| F[ucTestGRFlag = 1]
|
||||
G[创建任务] --> H[将ucTestGRFlag写入任务参数]
|
||||
```
|
||||
|
||||
这种设计既保证了常规情况下进行接地电阻测试,又允许用户根据实际需求关闭该功能。
|
||||
|
||||
**Section sources**
|
||||
- [DialNew2DTask.cpp](file://cpp/Views/DialNew2DTask.cpp#L233-L235)
|
||||
- [TaskDataOper.h](file://h/TaskDataOper.h#L66-L80)
|
||||
Reference in New Issue
Block a user