This commit is contained in:
coco
2026-07-03 16:05:30 +08:00
commit df489d5640
1101 changed files with 779140 additions and 0 deletions
@@ -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)