/** * Copyright (c) 2011-2018 by Andrew Mustun. All rights reserved. * * This file is part of the QCAD project. * * QCAD is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * QCAD is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with QCAD. */ include("scripts/EAction.js"); include("scripts/File/File.js"); SetArguments.readmeFile = "readme.txt"; function SetArguments(guiAction) { EAction.call(this, guiAction); // var lastOpenFile = RSettings.getStringValue("OpenProject/Current", RSettings.getDocumentsLocation()); // var lastOpenFileDir = SetArguments.includeBasePath + "/../../../project/" + lastOpenFile + "/para.ini"; } SetArguments.prototype = new EAction(); SetArguments.includeBasePath = includeBasePath; SetArguments.prototype.beginEvent = function() { EAction.prototype.beginEvent.call(this); // EAction.handleUserMessage("start show widget"); var appWin = EAction.getMainWindow(); if(RSettings.getStringValue("OpenProject/Current","") == ""){ QMessageBox.critical(appWin, qsTr("提示"), qsTr("请先选择工程路径")); return; } var lastOpenFileDir = RSettings.getStringValue("OpenProject/Current", RSettings.getDocumentsLocation()) + "/para.ini"; // EAction.handleUserMessage(lastOpenFileDir); var file = new QFile(lastOpenFileDir); if(!file.exists()){ QMessageBox.critical(EAction.getMainWindow(), qsTr("提示"), RSettings.getStringValue("OpenProject/Current","") + qsTr(" 工程下没有参数文件")); return; } this.iniFile = new QSettings(lastOpenFileDir, QSettings.IniFormat); // this.iniFile = new QSettings("D:/Project/para.ini", QSettings.IniFormat); this.standard_type = new Array(); this.dialog = this.createWidget(SetArguments.includeBasePath + "/SetArgumentsDialog.ui", appWin); WidgetFactory.restoreState(this.dialog); var pbs = this.dialog.findChild("horizontal_containing_vertical"); pbs.setChecked(false); //设置不可用 // this.resetClicked(); var iniConf = []; iniConf = this.readNormalIniFile(); this.setNormalBox(iniConf); var childs = this.iniFile.childGroups(); for(var i = 0; i < childs.length; i++){ if(childs[i].indexOf("standard") != -1){ this.standard_type.push(childs[i]); this.standard_type.push(this.iniFile.value("/" + childs[i].toString() + "/design_speed").replace(/(\s*)+/g,"").replace(/#(\S*)/,"")); // EAction.handleUserMessage(this.iniFile.value("/" + childs[i] + "/design_speed").replace(/(\s*)+/g,"").replace(/#(\S*)/,"")); // EAction.handleUserMessage(childs[i]); } } // 速度 this.select_type = this.standard_type[0]; var design_speed = this.dialog.findChild("comboBox"); for(var i = 1; i < this.standard_type.length; i += 2){ design_speed.addItem(this.standard_type[i]); } design_speed["currentIndexChanged(int)"].connect(this, this.selectSpeed); var speedCfg = []; speedCfg = this.readSpeedCfg(); this.setSpeedBox(speedCfg); // 恢复默认 var resetBtn = this.dialog.findChild("resetBtn"); resetBtn.clicked.connect(this, this.resetClicked); // 重置参数 var setBtn = this.dialog.findChild("setBtn"); setBtn.clicked.connect(this, this.setClicked); if (!this.dialog.exec()) { EAction.handleUserMessage("clicked~"); destr(this.dialog); EAction.activateMainWindow(); return undefined; } WidgetFactory.saveState(this.dialog); }; SetArguments.prototype.setClicked = function() { // var iniFile = new QSettings("D:/Project/para.ini", QSettings.IniFormat); // var iniFile = this.iniFile; // EAction.handleUserMessage("start Save File"); this.iniFile.setValue("/parameter/batch_sizes",this.dialog.findChild("batch_sizes").text); this.iniFile.setValue("/parameter/learning_rate0",this.dialog.findChild("learning_rate0").text); this.iniFile.setValue("/parameter/learning_rate1",this.dialog.findChild("learning_rate1").text); this.iniFile.setValue("/parameter/iteration_times",this.dialog.findChild("iteration_times").text); this.iniFile.setValue("/parameter/discount_factor",this.dialog.findChild("discount_factor").text); this.iniFile.setValue("/parameter/d_k",this.dialog.findChild("d_k").text); this.iniFile.setValue("/parameter/d_line",this.dialog.findChild("d_line").text); this.iniFile.setValue("/parameter/forward_step",this.dialog.findChild("forward_step").text); this.iniFile.setValue("/parameter/learning_rate0",this.dialog.findChild("learning_rate0").text); this.iniFile.setValue("/parameter/range_p",this.dialog.findChild("range_p_x").text); this.iniFile.setValue("/parameter/range_g",this.dialog.findChild("range_g").text); this.iniFile.setValue("/parameter/range_k",this.dialog.findChild("range_k").text); this.iniFile.setValue("/parameter/range_c",this.dialog.findChild("range_c").text); this.iniFile.setValue("/parameter/range_v",this.dialog.findChild("range_v").text); this.iniFile.setValue("/parameter/range_e",this.dialog.findChild("range_e").text); this.iniFile.setValue("/cost/beam0",this.dialog.findChild("beam0").text); this.iniFile.setValue("/cost/beam1",this.dialog.findChild("beam1").text); this.iniFile.setValue("/cost/bridge_pier",this.dialog.findChild("bridge_pier").text); this.iniFile.setValue("/cost/tunnel0",this.dialog.findChild("tunnel0").text); this.iniFile.setValue("/cost/tunnel1",this.dialog.findChild("tunnel1").text); this.iniFile.setValue("/cost/tunnel2",this.dialog.findChild("tunnel2").text); this.iniFile.setValue("/cost/tunnel_entrance",this.dialog.findChild("tunnel_entrance").text); this.iniFile.setValue("/cost/railway_tracks",this.dialog.findChild("railway_tracks").text); this.iniFile.setValue("/cost/road_right_fee",this.dialog.findChild("road_right_fee").text); this.iniFile.setValue("/cost/filling_cost",this.dialog.findChild("filling_cost").text); this.iniFile.setValue("/cost/excavation_cost",this.dialog.findChild("excavation_cost").text); this.iniFile.setValue("/cost/arable_land_occupation",this.dialog.findChild("arable_land_occupation").text); this.iniFile.setValue("/cost/house_demolition",this.dialog.findChild("house_demolition").text); this.iniFile.setValue("/cost/farmland_layer_name",this.dialog.findChild("farmland_layer_name").text); this.iniFile.setValue("/cost/demolition_layer_name",this.dialog.findChild("demolition_layer_name").text); if(this.dialog.findChild("replace_radio").isChecked) { this.iniFile.setValue("/cost/replace_railway_by_bridge","1"); } else { this.iniFile.setValue("/cost/replace_railway_by_bridge","0"); } // iniFile.setValue("/standard0/design_speed",this.dialog.findChild("design_speed").text); EAction.handleUserMessage("ddddd : " + this.select_type); this.iniFile.setValue("/" + this.select_type + "/minimum_curve_radius",this.dialog.findChild("minimum_curve_radius").text); this.iniFile.setValue("/" + this.select_type + "/minimum_circular_length",this.dialog.findChild("minimum_circular_length").text); this.iniFile.setValue("/" + this.select_type + "/minimal_longitudinal_length",this.dialog.findChild("minimal_longitudinal_length").text); this.iniFile.setValue("/" + this.select_type + "/maximum_gradient",this.dialog.findChild("maximum_gradient").text); this.iniFile.setValue("/" + this.select_type + "/maximum_slope_difference",this.dialog.findChild("maximum_slope_difference").text); this.iniFile.setValue("/" + this.select_type + "/maximum_bridge_height",this.dialog.findChild("maximum_bridge_height").text); this.iniFile.setValue("/" + this.select_type + "/maximum_tunnel_length",this.dialog.findChild("maximum_tunnel_length").text); this.iniFile.setValue("/" + this.select_type + "/filling_height_lbb",this.dialog.findChild("filling_height_lbb").text); this.iniFile.setValue("/" + this.select_type + "/digging_deep_ltb",this.dialog.findChild("digging_deep_ltb").text); this.iniFile.setValue("/" + this.select_type + "/minimum_transition_curve_length",this.dialog.findChild("minimum_transition_curve_length").text); this.iniFile.setValue("/" + this.select_type + "/minimum_clip_line_length",this.dialog.findChild("minimum_clip_line_length").text); this.iniFile.setValue("/" + this.select_type + "/minimum_radius_of_convex_vertical_curve",this.dialog.findChild("minimum_radius_of_convex_vertical_curve").text); this.iniFile.setValue("/" + this.select_type + "/minimum_radius_of_concave_vertical_curve",this.dialog.findChild("minimum_radius_of_concave_vertical_curve").text); this.iniFile.setValue("/" + this.select_type + "/minimum_length_of_vertical_curve",this.dialog.findChild("minimum_length_of_vertical_curve").text); if(true == this.dialog.findChild("horizontal_containing_vertical").checked) { this.iniFile.setValue("/" + this.select_type + "/horizontal_containing_vertical","1"); // EAction.handleUserMessage("ddddd 111: "); } else { this.iniFile.setValue("/" + this.select_type + "/horizontal_containing_vertical","0"); // EAction.handleUserMessage("ddddd 0000: "); } // destr(this.iniFile); EAction.handleUserMessage("Save File"); }; // 修改文件中的数据,保留注释 SetArguments.prototype.saveData = function(){ var file = new QFile(this.iniFile); var flags = makeQIODeviceOpenMode(QIODevice.WriteOnly, QIODevice.Text); if (file.open(flags)) { var textStream = new QTextStream(file); setUtf8Codec(textStream); // textStream.writeString(str); file.close(); } }; SetArguments.prototype.resetClicked = function(){ var iniConf = []; iniConf = this.readNormalIniFile(); this.setNormalBox(iniConf); var speedCfg = []; speedCfg = this.readSpeedCfg(); this.setSpeedBox(speedCfg); }; SetArguments.prototype.selectSpeed = function(index){ // EAction.handleUserMessage("index: " + index); // index*2 得到child的名字 this.select_type = this.standard_type[index*2]; // EAction.handleUserMessage("type:" + this.select_type); var special_speed = this.getStandardInfo(this.standard_type[index*2]); this.setSpeedBox(special_speed); } SetArguments.prototype.readNormalIniFile = function(){ var ret = []; //#region 优化模型参数设置 ret["batch_sizes"] = this.iniFile.value("/parameter/batch_sizes").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); ret["learning_rate0"] = this.iniFile.value("/parameter/learning_rate0").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); ret["learning_rate1"] = this.iniFile.value("/parameter/learning_rate1").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); ret["iteration_times"] = this.iniFile.value("/parameter/iteration_times").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); ret["discount_factor"] = this.iniFile.value("/parameter/discount_factor").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); ret["d_k"] = this.iniFile.value("/parameter/d_k").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); ret["forward_step"] = this.iniFile.value("/parameter/forward_step").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); ret["range_p"] = this.iniFile.value("/parameter/range_p").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); ret["range_g"] = this.iniFile.value("/parameter/range_g").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); ret["range_k"] = this.iniFile.value("/parameter/range_k").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); ret["d_line"] = this.iniFile.value("/parameter/d_line").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); ret["range_c"] = this.iniFile.value("/parameter/range_c").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); ret["range_v"] = this.iniFile.value("/parameter/range_v").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); ret["range_e"] = this.iniFile.value("/parameter/range_e").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); //#endregion //#region 铁路单位造价设置 ret["beam0"] = this.iniFile.value("/cost/beam0").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); ret["beam1"] = this.iniFile.value("/cost/beam1").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); ret["bridge_pier"] = this.iniFile.value("/cost/bridge_pier").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); ret["tunnel0"] = this.iniFile.value("/cost/tunnel0").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); ret["tunnel1"] = this.iniFile.value("/cost/tunnel1").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); ret["tunnel2"] = this.iniFile.value("/cost/tunnel2").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); ret["tunnel_entrance"] = this.iniFile.value("/cost/tunnel_entrance").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); ret["railway_tracks"] = this.iniFile.value("/cost/railway_tracks").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); ret["road_right_fee"] = this.iniFile.value("/cost/road_right_fee").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); ret["filling_cost"] = this.iniFile.value("/cost/filling_cost").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); ret["excavation_cost"] = this.iniFile.value("/cost/excavation_cost").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); ret["arable_land_occupation"] = this.iniFile.value("/cost/arable_land_occupation").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); ret["house_demolition"] = this.iniFile.value("/cost/house_demolition").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); ret["farmland_layer_name"] = this.iniFile.value("/cost/farmland_layer_name").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); ret["demolition_layer_name"] = this.iniFile.value("/cost/demolition_layer_name").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); ret["replace_railway_by_bridge"] = this.iniFile.value("/cost/replace_railway_by_bridge").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); //#endregion EAction.handleUserMessage("read ini finish"); return ret; }; SetArguments.prototype.setNormalBox = function(iniConf){ var batch_sizes = this.dialog.findChild("batch_sizes"); var learning_rate0 = this.dialog.findChild("learning_rate0"); var learning_rate1 = this.dialog.findChild("learning_rate1"); var iteration_times = this.dialog.findChild("iteration_times"); var discount_factor = this.dialog.findChild("discount_factor"); var range_p_x = this.dialog.findChild("range_p_x"); var range_p_y = this.dialog.findChild("range_p_y"); var range_g = this.dialog.findChild("range_g"); var range_k = this.dialog.findChild("range_k"); var range_c = this.dialog.findChild("range_c"); var range_v = this.dialog.findChild("range_v"); var range_e = this.dialog.findChild("range_e"); var d_k= this.dialog.findChild("d_k"); var d_line= this.dialog.findChild("d_line"); var forward_step= this.dialog.findChild("forward_step"); batch_sizes.setText(iniConf["batch_sizes"]); learning_rate0.setText(iniConf["learning_rate0"]); learning_rate1.setText(iniConf["learning_rate1"]); iteration_times.setText(iniConf["iteration_times"]); discount_factor.setText(iniConf["discount_factor"]); range_p_x.setText(iniConf["range_p"]); range_p_y.setText(iniConf["range_p"]); range_g.setText(iniConf["range_g"]); range_k.setText(iniConf["range_k"]); range_c.setText(iniConf["range_c"]); range_v.setText(iniConf["range_v"]); range_e.setText(iniConf["range_e"]); d_k.setText(iniConf["d_k"]); d_line.setText(iniConf["d_line"]); forward_step.setText(iniConf["forward_step"]); range_p_x.textChanged.connect( function(){ range_p_y.setText(range_p_x.text); }); range_p_y.textChanged.connect( function(){ range_p_x.setText(range_p_y.text); }); // range_g_x.textChanged.connect( // function(){ // range_g_y.setText(range_g_x.text); // }); // range_g_y.textChanged.connect( // function(){ // range_g_x.setText(range_g_y.text); // }); var beam0 = this.dialog.findChild("beam0"); var beam1 = this.dialog.findChild("beam1"); var bridge_pier = this.dialog.findChild("bridge_pier"); var tunnel0 = this.dialog.findChild("tunnel0"); var tunnel1 = this.dialog.findChild("tunnel1"); var tunnel2 = this.dialog.findChild("tunnel2"); var tunnel_entrance = this.dialog.findChild("tunnel_entrance"); var railway_tracks = this.dialog.findChild("railway_tracks"); var road_right_fee = this.dialog.findChild("road_right_fee"); var filling_cost = this.dialog.findChild("filling_cost"); var excavation_cost = this.dialog.findChild("excavation_cost"); var arable_land_occupation = this.dialog.findChild("arable_land_occupation"); var house_demolition = this.dialog.findChild("house_demolition"); var farmland_layer_name = this.dialog.findChild("farmland_layer_name"); var demolition_layer_name = this.dialog.findChild("demolition_layer_name"); var replace_radio = this.dialog.findChild("replace_radio"); var not_replace_radio = this.dialog.findChild("not_replace_radio"); beam0.setText(iniConf["beam0"]); beam1.setText(iniConf["beam1"]); bridge_pier.setText(iniConf["bridge_pier"]); tunnel0.setText(iniConf["tunnel0"]); tunnel1.setText(iniConf["tunnel1"]); tunnel2.setText(iniConf["tunnel2"]); tunnel_entrance.setText(iniConf["tunnel_entrance"]); railway_tracks.setText(iniConf["railway_tracks"]); road_right_fee.setText(iniConf["road_right_fee"]); filling_cost.setText(iniConf["filling_cost"]); excavation_cost.setText(iniConf["excavation_cost"]); arable_land_occupation.setText(iniConf["arable_land_occupation"]); house_demolition.setText(iniConf["house_demolition"]); farmland_layer_name.setText(iniConf["farmland_layer_name"]); demolition_layer_name.setText(iniConf["demolition_layer_name"]); if(0 == iniConf["replace_railway_by_bridge"].toInt()) { not_replace_radio.setChecked(1); } else { replace_radio.setChecked(1); } }; SetArguments.prototype.readSpeedCfg = function(){ // EAction.handleUserMessage(this.iniFile.value("/" + this.standard_type[0] + "/design_speed").replace(/(\s*)+/g,"").replace(/#(\S*)/,"")); // return this.getStandardInfo(this.standard_type[0]); return this.getStandardInfo(this.select_type); }; SetArguments.prototype.setSpeedBox = function(iniConf){ // var design_speed = this.dialog.findChild("comboBox"); var minimum_curve_radius = this.dialog.findChild("minimum_curve_radius"); var minimum_circular_length = this.dialog.findChild("minimum_circular_length"); var minimal_longitudinal_length = this.dialog.findChild("minimal_longitudinal_length"); var maximum_gradient = this.dialog.findChild("maximum_gradient"); var maximum_slope_difference = this.dialog.findChild("maximum_slope_difference"); var maximum_bridge_height = this.dialog.findChild("maximum_bridge_height"); var maximum_tunnel_length = this.dialog.findChild("maximum_tunnel_length"); var filling_height_lbb = this.dialog.findChild("filling_height_lbb"); var digging_deep_ltb = this.dialog.findChild("digging_deep_ltb"); var minimum_transition_curve_length = this.dialog.findChild("minimum_transition_curve_length"); var minimum_clip_line_length = this.dialog.findChild("minimum_clip_line_length"); var minimum_radius_of_convex_vertical_curve = this.dialog.findChild("minimum_radius_of_convex_vertical_curve"); var minimum_radius_of_concave_vertical_curve = this.dialog.findChild("minimum_radius_of_concave_vertical_curve"); var minimum_length_of_vertical_curve = this.dialog.findChild("minimum_length_of_vertical_curve"); var horizontal_containing_vertical = this.dialog.findChild("horizontal_containing_vertical"); // for(var i = 1; i < this.standard_type.length; i += 2){ // design_speed.addItem(this.standard_type[i]); // } // design_speed["currentIndexChanged(int)"].connect(this, this.selectSpeed); // design_speed.setText(iniConf["design_speed"]); minimum_curve_radius.setText(iniConf["minimum_curve_radius"]); minimum_circular_length.setText(iniConf["minimum_circular_length"]); minimal_longitudinal_length.setText(iniConf["minimal_longitudinal_length"]); maximum_gradient.setText(iniConf["maximum_gradient"]); maximum_slope_difference.setText(iniConf["maximum_slope_difference"]); maximum_bridge_height.setText(iniConf["maximum_bridge_height"]); maximum_tunnel_length.setText(iniConf["maximum_tunnel_length"]); filling_height_lbb.setText(iniConf["filling_height_lbb"]); digging_deep_ltb.setText(iniConf["digging_deep_ltb"]); minimum_transition_curve_length.setText(iniConf["minimum_transition_curve_length"]); minimum_clip_line_length.setText(iniConf["minimum_clip_line_length"]); minimum_radius_of_convex_vertical_curve.setText(iniConf["minimum_radius_of_convex_vertical_curve"]); minimum_radius_of_concave_vertical_curve.setText(iniConf["minimum_radius_of_concave_vertical_curve"]); minimum_length_of_vertical_curve.setText(iniConf["minimum_length_of_vertical_curve"]); if("1" == iniConf["horizontal_containing_vertical"]) { horizontal_containing_vertical.setChecked(true); } else { horizontal_containing_vertical.setChecked(false); } }; SetArguments.prototype.getStandardInfo = function(childName){ var speedInfo = []; speedInfo["design_speed"] = this.iniFile.value("/" + childName + "/design_speed").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); speedInfo["minimum_curve_radius"] = this.iniFile.value("/" + childName + "/minimum_curve_radius").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); speedInfo["minimum_circular_length"] = this.iniFile.value("/" + childName + "/minimum_circular_length").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); speedInfo["minimal_longitudinal_length"] = this.iniFile.value("/" + childName + "/minimal_longitudinal_length").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); speedInfo["maximum_gradient"] = this.iniFile.value("/" + childName + "/maximum_gradient").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); speedInfo["maximum_slope_difference"] = this.iniFile.value("/" + childName + "/maximum_slope_difference").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); speedInfo["maximum_bridge_height"] = this.iniFile.value("/" + childName + "/maximum_bridge_height").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); speedInfo["maximum_tunnel_length"] = this.iniFile.value("/" + childName + "/maximum_tunnel_length").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); speedInfo["filling_height_lbb"] = this.iniFile.value("/" + childName + "/filling_height_lbb").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); speedInfo["digging_deep_ltb"] = this.iniFile.value("/" + childName + "/digging_deep_ltb").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); speedInfo["minimum_transition_curve_length"] = this.iniFile.value("/" + childName + "/minimum_transition_curve_length").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); speedInfo["minimum_clip_line_length"] = this.iniFile.value("/" + childName + "/minimum_clip_line_length").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); speedInfo["minimum_radius_of_convex_vertical_curve"] = this.iniFile.value("/" + childName + "/minimum_radius_of_convex_vertical_curve").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); speedInfo["minimum_radius_of_concave_vertical_curve"] = this.iniFile.value("/" + childName + "/minimum_radius_of_concave_vertical_curve").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); speedInfo["minimum_length_of_vertical_curve"] = this.iniFile.value("/" + childName + "/minimum_length_of_vertical_curve").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); speedInfo["horizontal_containing_vertical"] = this.iniFile.value("/" + childName + "/horizontal_containing_vertical").replace(/(\s*)+/g,"").replace(/#(\S*)/,""); return speedInfo; };