/// <summary> /// 带4个参数的构造函数,用于编辑分层 /// </summary> /// <param name="_lastDepth">上一层层底深度</param> /// <param name="_number">分层编号</param> /// <param name="_depth">层底深度</param> /// <param name="_description">分层描述</param> public ZkLayerDetail(double _lastDepth, string _number, double _depth, string _description) { InitializeComponent(); // 重新赋值窗体标题 this.Title = "编辑钻孔分层"; // 赋值上一层层底深度 LastDepth = _lastDepth; // 赋值各选框的候选项 this.LayerNumberComboBox.ItemsSource = ProjectDataBase.ReadLayerNumberList(Program.currentProject); this.LayerNameComboBox.ItemsSource = ProjectDataBase.ReadLayerNameList(Program.currentProject); this.LayerGeoComboBox.ItemsSource = ProjectDataBase.ReadLayerGeoList(Program.currentProject); // 定义层底深度输入框的工具提示 DefineToolTip(); // 赋值 this.LayerNumberComboBox.SelectedValue = _number; this.LayerDepthTextBox.Text = _depth.ToString(); this.LayerDescriptionTextBox.Text = _description; }
/// <summary> /// 读取统计数据 /// </summary> /// <returns></returns> public static List <StatisticGAT> SelectStatisticData() { // 定义统计数据列表 List <StatisticGAT> _statisticList = new List <StatisticGAT>(); // 定义分层分层编号列表、分层岩土名称列表 List <string> layerNumberList = ProjectDataBase.ReadLayerNumberList(Program.currentProject); List <string> layerNameList = ProjectDataBase.ReadLayerNameList(Program.currentProject); // 在分层编号列表中循环,赋值统计数据列表 for (int i = 0; i < layerNumberList.Count; i++) { // 检查当前的分层编号下在数据库中是否有内容,并添加数据到统计列表 List <GrainAnalysisTest> gatList = GrainAnalysisTestDataBase.SelectByZkAndLayer(Program.currentProject, "", layerNumberList[i]); if (gatList.Count > 0) { StatisticGAT statistic = new StatisticGAT(layerNumberList[i], layerNameList[i], gatList); _statisticList.Add(statistic); } } // 返回 return(_statisticList); }
/// <summary> /// Save命令的Executed事件处理函数 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void CommandBindingSave_Executed(object sender, ExecutedRoutedEventArgs e) { // 新建项目的操作 if (isNew == true) { // 保存项目设置 projectSetting.Name = this.ProjectNameTextBox.Text; projectSetting.Province = this.ProjectProvinceTextBox.Text; projectSetting.City = this.ProjectCityTextBox.Text; // 检查项目名是否为空 if (string.IsNullOrEmpty(projectSetting.Name) || string.IsNullOrWhiteSpace(projectSetting.Name)) { return; } // 检测是否有同名项目 List <string> projectList = ProjectDataBase.ReadProjectList(); if (projectList != null && projectList.Contains(projectSetting.Name)) { MessageBox.Show("项目数据库中已存在名为\"" + projectSetting.Name + "\"的项目,无法新建项目。", "请检查项目名称", MessageBoxButton.OK, MessageBoxImage.Error); return; } // 创建项目数据库 ProjectDataBase.Create(projectSetting.Name); // 存储项目基本数据和公司数据 ProjectDataBase.EditProjectBasicInfo(projectSetting.Name, projectSetting.Name, projectSetting.Province, projectSetting.City); ProjectDataBase.EditProjectCompany(projectSetting.Name, projectSetting.CompanyName, projectSetting.CompanyCode, projectSetting.Drawer, projectSetting.Writer, projectSetting.Checker, projectSetting.Inspector, projectSetting.Approver, projectSetting.FinalApprover); // 删除旧分层数据,存储新分层数据 if (ProjectDataBase.ReadLayerNumberList(projectSetting.Name).Count > 0) { ProjectDataBase.DeleteAllLayer(projectSetting.Name); } if (projectSetting.LayerList != null) { for (int i = 0; i < projectSetting.LayerList.Count; i++) { string number = projectSetting.LayerList[i].Number; string name = projectSetting.LayerList[i].Name; string geo = projectSetting.LayerList[i].Geo; string description = projectSetting.LayerList[i].Description; ProjectDataBase.AddLayer(projectSetting.Name, number, name, geo, description); } } } // 非新建项目的操作 else { // 保存项目设置 string oldProjectName = projectSetting.Name; projectSetting.Name = this.ProjectNameTextBox.Text; projectSetting.Province = this.ProjectProvinceTextBox.Text; projectSetting.City = this.ProjectCityTextBox.Text; // 存储项目基本数据和公司数据 ProjectDataBase.EditProjectBasicInfo(oldProjectName, projectSetting.Name, projectSetting.Province, projectSetting.City); ProjectDataBase.EditProjectCompany(oldProjectName, projectSetting.CompanyName, projectSetting.CompanyCode, projectSetting.Drawer, projectSetting.Writer, projectSetting.Checker, projectSetting.Inspector, projectSetting.Approver, projectSetting.FinalApprover); // 删除旧分层数据,存储新分层数据 if (ProjectDataBase.ReadLayerNumberList(oldProjectName).Count > 0) { ProjectDataBase.DeleteAllLayer(oldProjectName); } if (projectSetting.LayerList != null) { for (int i = 0; i < projectSetting.LayerList.Count; i++) { string number = projectSetting.LayerList[i].Number; string name = projectSetting.LayerList[i].Name; string geo = projectSetting.LayerList[i].Geo; string description = projectSetting.LayerList[i].Description; ProjectDataBase.AddLayer(oldProjectName, number, name, geo, description); } } // 更改数据库文件名称,传递给主窗口更改数据文件名 oldFile = Program.ReadProgramPath() + "\\" + oldProjectName + ".gsygeo"; newFile = Program.ReadProgramPath() + "\\" + projectSetting.Name + ".gsygeo"; } // 关闭窗口 this.DialogResult = true; Program.currentProject = projectSetting.Name; this.Close(); }
/// <summary> /// 单击菜单"工具"-"导入旧版数据" /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ImportOldDataMenu_Click(object sender, RoutedEventArgs e) { // 检查是否关闭当前项目 if (Program.currentProject != null) { MessageBox.Show("您有正处于打开状态的项目,请关闭当前项目后再执行本操作。"); return; } // 选择输出目录 string folderPath; System.Windows.Forms.FolderBrowserDialog programPathBrowser = new System.Windows.Forms.FolderBrowserDialog(); if (programPathBrowser.ShowDialog() == System.Windows.Forms.DialogResult.OK) { folderPath = programPathBrowser.SelectedPath; } else { return; } if (folderPath.Substring(folderPath.LastIndexOf(@"\") + 1) != "金浪岩土") { MessageBox.Show("选择的文件夹不正确,请选择\"金浪岩土\"文件夹!"); return; } // 耐心等候提示 MessageBox.Show("导入过程可能需要15-30秒的时间,请耐心等候,点击\"确定\"继续。"); // 遍历项目文件夹 List <string> projectlist = new List <string>(); List <string> ignoreprojectlist = new List <string>(); DirectoryInfo dir = new DirectoryInfo(folderPath); foreach (DirectoryInfo dChild in dir.GetDirectories("*")) { // 获取项目名称 string projectName = dChild.ToString(); // 获取项目文件夹路径 string projectPath = folderPath + @"\" + dChild + @"\"; // 新建项目 if (!string.IsNullOrEmpty(projectName) && !string.IsNullOrWhiteSpace(projectName)) { ProjectDataBase.Create(projectName); } // 读取分层信息 StreamReader reader = new StreamReader(projectPath + "基本信息.txt"); int countLine = 0; while (true) { countLine++; string line = reader.ReadLine(); if (countLine <= 3) { continue; } if (line == null) { break; } string number = line.Substring(0, line.IndexOf("/")); line = line.Substring(line.IndexOf("/") + 1); string name = line.Substring(0, line.IndexOf("/")); line = line.Substring(line.IndexOf("/") + 1); string description = line; string geo = "Q4al"; ProjectDataBase.AddLayer(projectName, number, name, geo, description); } reader.Close(); // 读取钻孔信息 List <string> numlist = ProjectDataBase.ReadLayerNumberList(projectName); List <string> deslist = ProjectDataBase.ReadLayerDescriptionList(projectName); DirectoryInfo dirZk = new DirectoryInfo(projectPath + @"钻孔\"); foreach (FileInfo dZkFile in dirZk.GetFiles("*.txt")) { // 读取基本信息 StreamReader zkReader = new StreamReader(projectPath + @"钻孔\" + dZkFile.ToString()); zkReader.ReadLine(); string zkname = zkReader.ReadLine(); zkReader.ReadLine(); double zkaltitude = Convert.ToDouble(zkReader.ReadLine()); BoreholeDataBase.AddZkBasicInfo(projectName, zkname, zkaltitude, Constants.NullNumber, Constants.NullNumber, Constants.NullNumber, Constants.NullNumber); zkReader.ReadLine(); // 读取分层信息 List <string> zknumberlist = new List <string>(); List <string> zknamelist = new List <string>(); List <string> zkgeolist = new List <string>(); List <string> zkdescriptionlist = new List <string>(); List <double> zkdepthlist = new List <double>(); while (true) { string line = zkReader.ReadLine(); if (line == "===取样===") { break; } zknumberlist.Add(line.Substring(0, line.IndexOf("/"))); line = line.Substring(line.IndexOf("/") + 1); zknamelist.Add(line.Substring(0, line.IndexOf("/"))); line = line.Substring(line.IndexOf("/") + 1); zkdepthlist.Add(Convert.ToDouble(line)); zkgeolist.Add("Q4al"); int index = numlist.IndexOf(zknumberlist[zknumberlist.Count - 1]); zkdescriptionlist.Add(deslist[index]); } BoreholeDataBase.AddLayerListToZk(projectName, zkname, zknumberlist, zknamelist, zkgeolist, zkdescriptionlist, zkdepthlist); // 读取取样信息 List <string> spnumberlist = new List <string>(); List <double> spdepthlist = new List <double>(); List <int> spisdisturbedlist = new List <int>(); countLine = 0; while (true) { string line = zkReader.ReadLine(); if (line == "===标贯===") { break; } countLine++; spnumberlist.Add(countLine.ToString()); spdepthlist.Add(Convert.ToDouble(line.Substring(0, line.IndexOf("/")))); line = line.Substring(line.IndexOf("/") + 1); spisdisturbedlist.Add(line == "扰" ? 1 : 0); } BoreholeDataBase.AddSampleListToZk(projectName, zkname, spnumberlist, spdepthlist, spisdisturbedlist); // 读取标贯信息 List <string> ntnumberlist = new List <string>(); List <double> ntdepthlist = new List <double>(); List <double> ntvaluelist = new List <double>(); List <string> nttypelist = new List <string>(); countLine = 0; while (true) { string line = zkReader.ReadLine(); if (line == null) { break; } countLine++; ntnumberlist.Add(countLine.ToString()); ntdepthlist.Add(Convert.ToDouble(line.Substring(0, line.IndexOf("/")))); line = line.Substring(line.IndexOf("/") + 1); ntvaluelist.Add(Convert.ToDouble(line)); nttypelist.Add("N"); } BoreholeDataBase.AddNTestListToZk(projectName, zkname, ntnumberlist, ntdepthlist, ntvaluelist, nttypelist); zkReader.Close(); } // 读取静力触探信息 DirectoryInfo dirJk = new DirectoryInfo(projectPath + @"静力触探\"); foreach (FileInfo dJkFile in dirJk.GetFiles("*.txt")) { // 读取基本信息 StreamReader jkReader = new StreamReader(projectPath + @"静力触探\" + dJkFile.ToString()); jkReader.ReadLine(); string jkname = jkReader.ReadLine(); jkReader.ReadLine(); double jkaltitude = Convert.ToDouble(jkReader.ReadLine()); CPTDataBase.AddJkBasicInfo(projectName, jkname, jkaltitude, Constants.NullNumber, Constants.NullNumber); jkReader.ReadLine(); // 读取分层信息 List <string> jknumberlist = new List <string>(); List <string> jknamelist = new List <string>(); List <string> jkgeolist = new List <string>(); List <string> jkdescriptionlist = new List <string>(); List <double> jkdepthlist = new List <double>(); while (true) { string line = jkReader.ReadLine(); if (line == "===Ps值===") { break; } jknumberlist.Add(line.Substring(0, line.IndexOf("/"))); line = line.Substring(line.IndexOf("/") + 1); jknamelist.Add(line.Substring(0, line.IndexOf("/"))); line = line.Substring(line.IndexOf("/") + 1); jkdepthlist.Add(Convert.ToDouble(line)); jkgeolist.Add("Q4al"); int index = numlist.IndexOf(jknumberlist[jknumberlist.Count - 1]); jkdescriptionlist.Add(deslist[index]); } CPTDataBase.AddLayerListToJk(projectName, jkname, jknumberlist, jknamelist, jkgeolist, jkdescriptionlist, jkdepthlist); // 读取Ps值信息 List <double> pslist = new List <double>(); while (true) { string line = jkReader.ReadLine(); if (line == null) { break; } pslist.Add(Convert.ToDouble(line)); } CPTDataBase.AddPsListToJk(projectName, jkname, pslist); } // 读取土工试验 StreamReader rstReader = new StreamReader(projectPath + @"土工试验\NormalTest.txt"); List <RoutineSoilTest> rsts = new List <RoutineSoilTest>(); while (true) { string line = rstReader.ReadLine(); if (line == null) { break; } string zkNumber = line.Substring(0, line.IndexOf("/")); line = line.Substring(line.IndexOf("/") + 1); double sampleDepth = Convert.ToDouble(line.Substring(0, line.IndexOf("/"))); line = line.Substring(line.IndexOf("/") + 1); string sampleLayer = ProjectDataBase.ReadLayerNumberList(projectName)[0]; List <ZkLayer> layers = BoreholeDataBase.ReadZkLayer(projectName, zkNumber); for (int i = 0; i < layers.Count; i++) { if (sampleDepth <= layers[i].Depth) { sampleLayer = layers[i].Number; break; } } double waterLevel = Convert.ToDouble(line.Substring(0, line.IndexOf("/"))); line = line.Substring(line.IndexOf("/") + 1); double density = Convert.ToDouble(line.Substring(0, line.IndexOf("/"))); line = line.Substring(line.IndexOf("/") + 1); double specificGravity = Convert.ToDouble(line.Substring(0, line.IndexOf("/"))); line = line.Substring(line.IndexOf("/") + 1); double voidRatio = Convert.ToDouble(line.Substring(0, line.IndexOf("/"))); line = line.Substring(line.IndexOf("/") + 1); double saturation = Convert.ToDouble(line.Substring(0, line.IndexOf("/"))); line = line.Substring(line.IndexOf("/") + 1); double liquidLimit = Convert.ToDouble(line.Substring(0, line.IndexOf("/"))); line = line.Substring(line.IndexOf("/") + 1); double plasticLimit = Convert.ToDouble(line.Substring(0, line.IndexOf("/"))); line = line.Substring(line.IndexOf("/") + 1); double plasticIndex = Convert.ToDouble(line.Substring(0, line.IndexOf("/"))); line = line.Substring(line.IndexOf("/") + 1); double liquidityIndex = Convert.ToDouble(line.Substring(0, line.IndexOf("/"))); line = line.Substring(line.IndexOf("/") + 1); double compressibility = Convert.ToDouble(line.Substring(0, line.IndexOf("/"))); line = line.Substring(line.IndexOf("/") + 1); double modulus = Convert.ToDouble(line.Substring(0, line.IndexOf("/"))); line = line.Substring(line.IndexOf("/") + 1); double frictionAngle = Convert.ToDouble(line.Substring(0, line.IndexOf("/"))) == 0 ? Constants.NullNumber : Convert.ToDouble(line.Substring(0, line.IndexOf("/"))); line = line.Substring(line.IndexOf("/") + 1); double cohesion = Convert.ToDouble(line.Substring(0, line.IndexOf("/"))) == 0 ? Constants.NullNumber : Convert.ToDouble(line.Substring(0, line.IndexOf("/"))); line = line.Substring(line.IndexOf("/") + 1); double permeability = line.Substring(0, line.IndexOf("/")) == "0.000000E+000" ? Constants.NullNumber : Convert.ToDouble(line.Substring(0, line.IndexOf("/"))); RoutineSoilTest rst = new RoutineSoilTest(zkNumber, sampleDepth, sampleLayer, waterLevel, density, specificGravity, voidRatio, saturation, liquidLimit, plasticLimit, plasticIndex, liquidityIndex, compressibility, modulus, frictionAngle, cohesion, permeability); rsts.Add(rst); } rstReader.Close(); GC.Collect(); GC.WaitForPendingFinalizers(); RoutineSoilTestDataBase.Refresh(projectName, rsts); projectlist.Add(projectName); } // 成功提示 StringBuilder sb = new StringBuilder(); if (projectlist.Count > 0) { sb.AppendLine("已成功导入以下项目:"); for (int i = 0; i < projectlist.Count; i++) { sb.AppendLine((i + 1).ToString() + projectlist[i]); } } else { sb.AppendLine("没有导入任何项目。"); } MessageBox.Show(sb.ToString()); }
/// <summary> /// 计算统计结果 /// </summary> /// <param name="_dt">从土质类型窗口获取的DataTable</param> /// <param name="_rstStaList">试验指标统计列表</param> /// <param name="_cptStaList">静力触探摩阻力统计列表</param> /// <param name="_ntestStaList">标贯/动探统计列表</param> public static void CalcuOutput(DataTable _dt, List <StatisticRST> _rstStaList, List <StatisticCPT> _cptStaList, List <StatisticNTest> _ntestStaList) { // 清空统计列表结构体 statisticListOutput.Clear(); // 赋值统计结构体列表 for (int i = 0; i < _dt.Rows.Count; i++) { // 更新当前的分层编号和分层名称 LayerNumber = ProjectDataBase.ReadLayerNumberList(Program.currentProject)[i]; LayerName = ProjectDataBase.ReadLayerNameList(Program.currentProject)[i]; // 获取传递的土质参数 StatisticResult.layerInfo = _dt.Rows[i]["layerInfo"].ToString(); StatisticResult.CptType = _dt.Rows[i]["currentCptType"].ToString(); StatisticResult.NTestType = _dt.Rows[i]["currentNTestType"].ToString(); // 根据传递的土质类型重新计算参数 CalcuByRst(_rstStaList); CalcuByCpt(_cptStaList, StatisticResult.CptType); CalcuByNTest(_ntestStaList, StatisticResult.NTestType); // 赋值其他参数 StatisticResult.CptParameter = StatisticResult.CptParameter == "/" ? "/" : StatisticResult.CptParameter.Substring(StatisticResult.CptParameter.IndexOf("=") + 1); StatisticResult.NTestParameter = StatisticResult.NTestParameter == "/" ? "/" : StatisticResult.NTestParameter.Substring(StatisticResult.NTestParameter.IndexOf("=") + 1); double[] tmp = new double[3] { 9999, 9999, 9999 }; double num; if (double.TryParse(StatisticResult.FrictionByRst, out num)) { tmp[0] = num; } if (double.TryParse(StatisticResult.FrictionByCpt, out num)) { tmp[1] = num; } if (double.TryParse(StatisticResult.FrictionByNTest, out num)) { tmp[2] = num; } StatisticResult.FrictionFinal = tmp.Min() < 9999 ? tmp.Min().ToString("0") : "/"; for (int k = 0; k < 3; k++) { tmp[k] = 9999; } if (double.TryParse(StatisticResult.CohesionByRst, out num)) { tmp[0] = num; } if (double.TryParse(StatisticResult.CohesionByCpt, out num)) { tmp[1] = num; } if (double.TryParse(StatisticResult.CohesionByNTest, out num)) { tmp[2] = num; } StatisticResult.CohesionFinal = tmp.Min() < 9999 ? tmp.Min().ToString("0") : "/"; // 添加到列表 statisticListOutput.Add(StatisticResult); } }
/// <summary> /// 筛选统计数据 /// </summary> /// <returns></returns> public static List <StatisticRST> SelectStatisticData() { // 定义统计数据列表 List <StatisticRST> statisticList = new List <StatisticRST>(); // 定义分层编号列表、分层岩土名称列表、试验类型列表 List <string> layerNumberList = ProjectDataBase.ReadLayerNumberList(Program.currentProject); List <string> layerNameList = ProjectDataBase.ReadLayerNameList(Program.currentProject); // 在分层编号列表中循环,赋值统计数据列表 for (int i = 0; i < layerNumberList.Count; i++) { // 层号、岩土名称 string layerNumber = layerNumberList[i]; string layerName = layerNameList[i]; // 读取分层试验数据 List <RoutineSoilTest> rsts = RoutineSoilTestDataBase.SelectByZkAndLayer(Program.currentProject, "", layerNumber); List <double> datalist_waterLevel = new List <double>(); List <double> datalist_density = new List <double>(); List <double> datalist_specificGravity = new List <double>(); List <double> datalist_voidRatio = new List <double>(); List <double> datalist_saturation = new List <double>(); List <double> datalist_liquidLimit = new List <double>(); List <double> datalist_plasticLimit = new List <double>(); List <double> datalist_plasticIndex = new List <double>(); List <double> datalist_liquidityIndex = new List <double>(); List <double> datalist_compressibility = new List <double>(); List <double> datalist_modulus = new List <double>(); List <double> datalist_frictionAngle = new List <double>(); List <double> datalist_cohesion = new List <double>(); List <double> datalist_permeability = new List <double>(); for (int j = 0; j < rsts.Count; j++) { datalist_waterLevel.Add(rsts[j].waterLevel); datalist_density.Add(rsts[j].density); datalist_specificGravity.Add(rsts[j].specificGravity); datalist_voidRatio.Add(rsts[j].voidRatio); datalist_saturation.Add(rsts[j].saturation); datalist_liquidLimit.Add(rsts[j].liquidLimit); datalist_plasticLimit.Add(rsts[j].plasticLimit); datalist_plasticIndex.Add(rsts[j].plasticIndex); datalist_liquidityIndex.Add(rsts[j].liquidityIndex); datalist_compressibility.Add(rsts[j].compressibility); datalist_modulus.Add(rsts[j].modulus); datalist_frictionAngle.Add(rsts[j].frictionAngle); datalist_cohesion.Add(rsts[j].cohesion); datalist_permeability.Add(rsts[j].permeability); } // 赋值统计数据列表 statisticList.Add(new StatisticRST(layerNumber, layerName, typeList[0], datalist_waterLevel, 6)); statisticList.Add(new StatisticRST(layerNumber, layerName, typeList[1], datalist_density, 6)); statisticList.Add(new StatisticRST(layerNumber, layerName, typeList[2], datalist_specificGravity, 6)); statisticList.Add(new StatisticRST(layerNumber, layerName, typeList[3], datalist_voidRatio, 6)); statisticList.Add(new StatisticRST(layerNumber, layerName, typeList[4], datalist_saturation, 6)); statisticList.Add(new StatisticRST(layerNumber, layerName, typeList[5], datalist_liquidLimit, 6)); statisticList.Add(new StatisticRST(layerNumber, layerName, typeList[6], datalist_plasticLimit, 6)); statisticList.Add(new StatisticRST(layerNumber, layerName, typeList[7], datalist_plasticIndex, 6)); statisticList.Add(new StatisticRST(layerNumber, layerName, typeList[8], datalist_liquidityIndex, 6)); statisticList.Add(new StatisticRST(layerNumber, layerName, typeList[9], datalist_compressibility, 6)); statisticList.Add(new StatisticRST(layerNumber, layerName, typeList[10], datalist_modulus, 6)); statisticList.Add(new StatisticRST(layerNumber, layerName, typeList[11], datalist_frictionAngle, 6)); statisticList.Add(new StatisticRST(layerNumber, layerName, typeList[12], datalist_cohesion, 6)); statisticList.Add(new StatisticRST(layerNumber, layerName, typeList[13], datalist_permeability, 6)); } // 返回 return(statisticList); }
/// <summary> /// 查询某个分层的摩阻力列表,输出为StatisticPs列表形式 /// </summary> /// <param name="_projectName">项目名称</param> /// <param name="_layerNumber">分层编号</param> /// <returns></returns> public static List <StatisticPs> ReadLayerPsAsStatePs(string _projectName, string _layerNumber) { // 创建连接到项目信息数据库 string sql = "Data Source=" + Program.ReadProgramPath() + "\\" + _projectName + ".gsygeo"; using (SQLiteConnection conn = new SQLiteConnection(sql)) { // 打开连接 conn.Open(); // 定义要返回的列表 List <StatisticPs> psList = new List <StatisticPs>(); // 读取项目分层列表 List <string> layerList = ProjectDataBase.ReadLayerNumberList(_projectName); // 读取触探孔列表,在触探孔列表中循环 List <string> jkList = ReadJkList(_projectName); for (int i = 0; i < jkList.Count; i++) { // 读取该钻孔的摩阻力列表和分层列表 List <double> jkPsList = ReadJkPs(_projectName, jkList[i]); List <ZkLayer> jkLayerList = ReadJkLayer(_projectName, jkList[i]); // 计算输入的分层的深度范围 double oldLayerDepth, layerDepth; int layerIndex = -1; for (int j = 0; j < jkLayerList.Count; j++) { if (jkLayerList[j].Number == _layerNumber) { layerIndex = j; } } if (layerIndex != -1) { if (layerIndex == 0) { oldLayerDepth = 0; layerDepth = jkLayerList[layerIndex].Depth; } else { oldLayerDepth = jkLayerList[layerIndex - 1].Depth; layerDepth = jkLayerList[layerIndex].Depth; } } else { continue; } // 将当前触探孔中符合条件的摩阻力赋值要返回的列表 for (int j = (int)(oldLayerDepth * 10) + 1; j <= (int)(layerDepth * 10); j++) { psList.Add(new StatisticPs(jkList[i], (double)j / 10, jkPsList[j - 1])); } } // 返回赋值后的列表 return(psList); } }