//判断波形是否可删除,参数只能是字符串"wave"和"antenna"之一 //public static bool WaveOrAntennaInUse(string waveOrAntennaName, string filePath,string str) //{ // bool b = false; // if (!File.Exists(filePath)) // { // return false; // } // using (StreamReader sr = new StreamReader(filePath, System.Text.Encoding.Default)) // { // try // { // string strTem = null; // while (!sr.EndOfStream) // { // strTem = sr.ReadLine(); // switch (str) // { // case "wave": // char[] sep1 = { '#', '\r' }; // string[] strArr1 = strTem.Split(sep1); // //每一行的第三个是波形的名字 // if (strArr1[1].Equals(waveOrAntennaName)) // { // b = true; // //break; // } // break; // case "antenna": // char[] sep2 = { '*', '\r' }; // string[] strArr2 = strTem.Split(sep2); // //每一行的第二个是波形的名字 // if (strArr2[1].Equals(waveOrAntennaName)) // { // b = true; // //break; // } // break; // default: // LogFileManager.ObjLog.debug("参数" + str + "不是函数WaveOrAntennaInUse()的合法参数"); // break; // } // if (b) // break; // } // } // catch (Exception exc) // { // LogFileManager.ObjLog.debug(exc.Message); // return false; // } // return b; // } //} public static bool WaveOrAntennaInUse(string waveOrAntennaName, string indStr) { bool b = false; try { string matchStr = FileOperation.ReadFile(MainWindow.relationOfAntAndWavePath); string temp = null; switch (indStr) { case "wave": temp = "#" + waveOrAntennaName + "\r\n"; break; case "antenna": temp = "*" + waveOrAntennaName + "\r\n"; break; default: LogFileManager.ObjLog.debug("参数" + indStr + "不是函数WaveOrAntennaInUse()的合法参数"); break; } if (matchStr.IndexOf(temp) != -1) { return(true); } } catch (Exception e) { LogFileManager.ObjLog.fatal(e.Message, e); b = false; } return(b); }
//从waveinfo文件中将接收机的信息删除 private static bool ReceiverDelOfWaveInfo(TreeNode currentNode) { bool b = false; try { string receiverAllInfo = FileOperation.ReadFile(MainWindow.waveinfoFilePath); string beginStr = null; switch (currentNode.Parent.Text) { case "点状分布": beginStr = SetupContent.pointReceiverOfRxStr0 + " " + currentNode.Text + "\r\n"; break; case "区域分布": beginStr = SetupContent.gridReceiverOfRxStr0 + " " + currentNode.Text + "\r\n"; break; } //只能用IndexOf(receiverName)函数,因为"END" + receiverName也含有receiverName int delStart = receiverAllInfo.IndexOf(beginStr); int delEnd = receiverAllInfo.LastIndexOf("END" + beginStr) + ("END" + beginStr).Length; receiverAllInfo = receiverAllInfo.Remove(delStart, delEnd - delStart); FileOperation.WriteFile(receiverAllInfo, MainWindow.waveinfoFilePath, false); //删除match文件中有关辐射源的信息 //StringFound.DelBackIndStr(SetupContent.pointReceiverOfRxStr0 + " " + currentNode.Text+"*"); b = true; } catch (Exception ex) { LogFileManager.ObjLog.fatal(ex.Message, ex); //b = false; //throw ex; } return(b); }
public AddTransmitterWindow() { InitializeComponent(); transLib = new TransmitterLib(); client = new ServiceReference1.Service1Client(); addTransimtter = new ServiceReference1.Transmitter(); if (File.Exists(MainWindow.nodeInfoFullPath)) { //向窗口中添加经纬度信息 addTransmitterLongitude_textBox2.Text = MainWindow.longitudeStr; addTransmitterLatitude_textBox3.Text = MainWindow.latitudeStr; string waveNamesOfCombox = FileOperation.ReadFile(MainWindow.nodeInfoFullPath); addTransmitterWaveformName_comboBox1.Items.Clear(); ArrayList waveNamesArr = new ArrayList(); //向工程树中添加波形节点 waveNamesArr = ProjectTreeMatchString.MatchStr(waveNamesOfCombox, SetupContent.waveIndeStr, SetupContent.waveIndeStr.Length); foreach (string s in waveNamesArr) { addTransmitterWaveformName_comboBox1.Items.Add(s); } } }
private void terrainOfProjectTreeView_ContextMenuStrip_ItemClicked(object sender, ToolStripItemClickedEventArgs e) { switch (e.ClickedItem.ToString()) { case "更改": //单击右键菜单的更改后,右键菜单便消失 terrainOfProjectTreeView_ContextMenuStrip.Hide(); //执行更改操作 AddTerrainWindow w = new AddTerrainWindow(); w.Show(); break; case "删除": terrainOfProjectTreeView_ContextMenuStrip.Hide(); //执行删除操作 DialogResult result = MessageBox.Show("您确定要删除原来添加的地形吗?删除将不可恢复!", "提醒", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); if (result == DialogResult.OK) { string nodeNamesStr = FileOperation.ReadFile(MainWindow.nodeInfoFullPath); if (!TerrainOperation.DeleteTerrain(nodeNamesStr)) { MessageBox.Show("对不起,发生错误,删除失败", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } break; default: break; } }
//将单击确定按钮后新插入的接收机的编号替换为原来的编号,并利用原来保存的位置信息写到相应的文件中 private static bool rxStrRecoverInitReceiverNum(TreeNode currentNode, string initReceiverNum, int initialReceiverBlockSite, int initialReceiverNodeSite) { bool b = false; //将单击新建接收机窗口中确定按钮后rx文件中新插入的接收机块提取出来 放在newInsertReceiverBlock try { string rxFilePath = MainWindow.projectRealPath + "\\" + MainWindow.onlyProjectName + ".rx"; string rxFileStr = FileOperation.ReadFile(rxFilePath); string beginStr = null; string endStr = null; switch (currentNode.Parent.Text) { case "点状分布": beginStr = SetupContent.pointReceiverOfRxStr0; endStr = SetupContent.transmitterStr24OfTr; break; case "区域分布": beginStr = SetupContent.gridReceiverOfRxStr0; endStr = SetupContent.gridReceiverOfRxStr11; break; } int start = rxFileStr.LastIndexOf(beginStr); int end = rxFileStr.LastIndexOf(endStr) + endStr.Length + 2; //提取出来单击新建接收机确定按钮后的新添加的相应的接收机块 string newInsertReceiverBlock = rxFileStr.Substring(start, end - start); //将新增加的接收机块删除 rxFileStr = rxFileStr.Remove(start, end - start); string receiverName = StringFound.FoundBackStr(beginStr, newInsertReceiverBlock, true); //获得新增加接收机的编号 string newReceiverNum = GetReceiverNumLine(beginStr, receiverName, newInsertReceiverBlock); //用原来接收机的编号去代替新加接收机的编号 newInsertReceiverBlock = newInsertReceiverBlock.Replace(newReceiverNum, initReceiverNum); //将修改了接收机编号后的接收机块插入到setupStr中 rxFileStr = rxFileStr.Insert(initialReceiverBlockSite, newInsertReceiverBlock); FileOperation.WriteFile(rxFileStr, rxFilePath, false); string receiverNodeInfo = FileOperation.ReadFile(MainWindow.nodeInfoFullPath); //将更改后的接收机信息插入到原来的位置 receiverNodeInfo = receiverNodeInfo.Insert(initialReceiverNodeSite, beginStr + " " + receiverName + "\r\n"); //在info文件中删除增加的接收机结点信息 receiverNodeInfo = receiverNodeInfo.Remove(receiverNodeInfo.LastIndexOf(beginStr)); FileOperation.WriteFile(receiverNodeInfo, MainWindow.nodeInfoFullPath, false); b = true; } catch (Exception e) { LogFileManager.ObjLog.fatal(e.Message, e); //return false; } return(b); }
//写tr文件中有关天线的那一段 public static string GetAntennaStr(string path, ComboBox c) { string antennaOfTrStr = FileOperation.ReadFile(path); string startStr = SetupContent.antennaStr1 + " " + c.Text + "\r\n"; string endStr = SetupContent.antennaStr3 + " " + c.Text + "\r\n"; int startSite = antennaOfTrStr.LastIndexOf(startStr); int endSite = antennaOfTrStr.LastIndexOf(endStr); antennaOfTrStr = antennaOfTrStr.Substring(startSite, endSite - startSite); return(antennaOfTrStr); }
//选中天线后,波形自动加载 private void newTransmitterAntennaName_comboBox3_SelectedValueChanged(object sender, EventArgs e) { if (File.Exists(MainWindow.relationOfAntAndWavePath)) { string antennaAndWaveStr = FileOperation.ReadFile(MainWindow.relationOfAntAndWavePath); string waveOfAntenna = StringFound.FoundBackStr(SetupContent.antennaIndeStr + " " + (string)newTransmitterAntennaName_comboBox3.SelectedItem + "#", antennaAndWaveStr); //char[] sep = { '#' }; //string[] waveStr = waveOfAntenna.Split(sep); //newTransmitterWaveformName_textBox1.Text = waveStr[1]; newTransmitterWaveformName_textBox1.Text = waveOfAntenna; } }
//判断在新建辐射源之前是否添加了地形和新建了天线 public static bool ConditionIsAll(string path) { string str = FileOperation.ReadFile(path); if ((str.LastIndexOf("<antenna>") != -1) && (str.IndexOf("<terrain>") != -1)) { return(true); } else { return(false); } }
//写tr文件中有关天线的那一段 public static string GetAntennaStr(string path, string antennaname) { string antennaOfTrStr = FileOperation.ReadFile(path); string startStr = SetupContent.antennaStr1 + " " + antennaname + "\r\n"; string endStr = SetupContent.antennaStr3 + " " + antennaname + "\r\n"; int startSite = antennaOfTrStr.LastIndexOf(startStr); int endSite = antennaOfTrStr.LastIndexOf(endStr); antennaOfTrStr = antennaOfTrStr.Substring(startSite, endSite - startSite); return(antennaOfTrStr); //string antennaOfTrStr = FileOperation.ReadFile(path); //string startStr = "begin_<antenna> " +antennaname; //int startSite = antennaOfTrStr.IndexOf(startStr) + startStr.Length + 2; //int endSite = antennaOfTrStr.IndexOf("ENDbegin_<antenna> " + antennaname); //antennaOfTrStr = antennaOfTrStr.Substring(startSite, endSite - startSite); //return antennaOfTrStr; }
//将相应的辐射源信息从Tx文件和info文件中删除 private static bool TransmitterDelOfTrAndInfoFile(TreeNode currentNode) { bool b = false; string trFilePath = MainWindow.projectRealPath + "\\" + MainWindow.onlyProjectName + ".tx"; string trFileStr = FileOperation.ReadFile(trFilePath); int start = trFileStr.IndexOf(SetupContent.transmitterStr1OfTr + " " + currentNode.Text + "\r\n"); //只能用LastIndexOf(nextNodeStr) 因为当删除的辐射源结点是树种同一级的最后一个时,只能查找end_<points> int end; //工程树种删除的结点后面有没有结点,索引的辐射源结束字符串不一样 //当删除结点后面还有结点时,索引begin_<points> currentNode.Text字符串 if (currentNode.NextNode != null) { end = trFileStr.LastIndexOf(SetupContent.transmitterStr1OfTr + " " + currentNode.NextNode.Text + "\r\n"); } //当删除结点后面没有辐射源结点时,索引end_<points> else { //end = trFileStr.LastIndexOf(SetupContent.transmitterStr24OfTr + "\r\n") + (SetupContent.transmitterStr24OfTr+"\r\n").Length ; end = trFileStr.LastIndexOf("MHZ\r\n") + ("MHZ\r\n").Length; } try { //从tr文件中删除辐射源的信息 trFileStr = trFileStr.Remove(start, end - start); //删除后保存到tr文件中 FileOperation.WriteFile(trFileStr, trFilePath, false); string infoStr = FileOperation.ReadFile(MainWindow.nodeInfoFullPath); infoStr = infoStr.Remove(infoStr.IndexOf(SetupContent.transmitterStr1Ofsetup + " " + currentNode.Text + "\r\n"), (SetupContent.transmitterStr1Ofsetup + " " + currentNode.Text + "\r\n").Length); //还要从.info文件中将波形的信息删除 FileOperation.WriteFile(infoStr, MainWindow.nodeInfoFullPath, false); b = true; } catch (Exception e) { LogFileManager.ObjLog.fatal(e.Message, e); //b = false; //throw e; } return(b); }
private static bool setupStrRecoverInitWaveformNum(TreeNode currentNode, string initWaveformNum, int initialWaveformBlockSite, int initialWaveformNodeSite) { bool b = false; //将单击新建波形窗口中确定按钮后插入的新波形块提取出来 放在newInsertAntennaBlock try { int start = MainWindow.setupStr.LastIndexOf(SetupContent.waveFormStr1); int end = MainWindow.setupStr.LastIndexOf(SetupContent.waveFormStr2 + "\r\n") + (SetupContent.waveFormStr2 + "\r\n").Length; //提取出来单击新建天线确定按钮后的心添加的相应的天线块 string newInsertWaveformBlock = MainWindow.setupStr.Substring(start, end - start); //将新增加的天线块删除 MainWindow.setupStr = MainWindow.setupStr.Remove(start, end - start); string waveformName = StringFound.FoundBackStr(SetupContent.waveFormStr1, newInsertWaveformBlock, true); //获得新增加天线的编号 string newAntennaNum = GetWaveformNumLine(waveformName, newInsertWaveformBlock); //用原来天线的编号去代替新加天线的编号 newInsertWaveformBlock = newInsertWaveformBlock.Replace(newAntennaNum, initWaveformNum); //将修改了天线编号后的天线块插入到setupStr中 MainWindow.setupStr = MainWindow.setupStr.Insert(initialWaveformBlockSite, newInsertWaveformBlock); FileOperation.WriteFile(MainWindow.setupStr, MainWindow.mProjectFullName, false); if (System.IO.File.Exists(MainWindow.relationOfAntAndWavePath)) { string updatedWaveformAndAntennaMatch = FileOperation.ReadFile(MainWindow.relationOfAntAndWavePath); updatedWaveformAndAntennaMatch = updatedWaveformAndAntennaMatch.Replace("#" + currentNode.Text + "\r\n", "#" + waveformName + "\r\n"); FileOperation.WriteFile(updatedWaveformAndAntennaMatch, MainWindow.relationOfAntAndWavePath, false); } string waveformNodeInfo = FileOperation.ReadFile(MainWindow.nodeInfoFullPath); //在info文件中先删除增加的天线结点信息 waveformNodeInfo = waveformNodeInfo.Remove(waveformNodeInfo.LastIndexOf(SetupContent.waveFormStr1)); //将更改后的天线信息插入到原来的位置 waveformNodeInfo = waveformNodeInfo.Insert(initialWaveformNodeSite, SetupContent.waveFormStr1 + " " + waveformName + "\r\n"); FileOperation.WriteFile(waveformNodeInfo, MainWindow.nodeInfoFullPath, false); b = true; } catch (Exception e) { LogFileManager.ObjLog.fatal(e.Message, e); } return(b); }
//返回TxSet后面的编号 public static string GetTransmitterNum(string path, string indexStr) { if (!File.Exists(path)) { return("1"); } else { string trConStr = FileOperation.ReadFile(path); string transmitterStr = null; int transmitterSite = trConStr.LastIndexOf("\n" + indexStr) + indexStr.Length + 1;//7是\nTxSet (还有一空格)的长度 while (trConStr[transmitterSite] != '\r') { transmitterStr = transmitterStr + trConStr[transmitterSite++]; } int b = int.Parse(transmitterStr) + 1; transmitterStr = string.Format("{0:##}", b); return(transmitterStr); } }
//将更改后辐射源的编号调整为原来的编号 private static bool trStrRecoverInitTransmitterNum(string initTransmitterNum, int initialTransmitterBlockSite, int initialTransmitterNodeSite) { bool b = false; //将单击新建波形窗口中确定按钮后tr文件中新插入的辐射源块提取出来 放在newInsertTransmitterBlock try { string trFilePath = MainWindow.projectRealPath + "\\" + MainWindow.onlyProjectName + ".tx"; string trFileStr = FileOperation.ReadFile(trFilePath); int start = trFileStr.LastIndexOf(SetupContent.transmitterStr1OfTr); //int end = trFileStr.LastIndexOf(SetupContent.transmitterStr24OfTr + "\r\n") +( SetupContent.transmitterStr24OfTr + "\r\n").Length ; int end = trFileStr.LastIndexOf("MHZ\r\n") + ("MHZ\r\n").Length; //提取出来单击新建辐射源确定按钮后的新添加的相应的天线块 string newInsertTransmitterBlock = trFileStr.Substring(start, end - start); //将新增加的辐射源块删除 trFileStr = trFileStr.Remove(start, end - start); //在更改时可能会改变辐射源的名字,因此需要在提取出辐射源的名字 string transmitterName = StringFound.FoundBackStr(SetupContent.transmitterStr1OfTr, newInsertTransmitterBlock, true); //获得新增加辐射源的编号 string newTransmitterNum = GetTransmitterNumLine(transmitterName, newInsertTransmitterBlock); //用原来天线的编号去代替新加辐射源的编号 newInsertTransmitterBlock = newInsertTransmitterBlock.Replace(newTransmitterNum, initTransmitterNum); //将修改了辐射源编号后的天线块写入到tr文件中 trFileStr = trFileStr.Insert(initialTransmitterBlockSite, newInsertTransmitterBlock); FileOperation.WriteFile(trFileStr, trFilePath, false); string transmitterNodeInfo = FileOperation.ReadFile(MainWindow.nodeInfoFullPath); //将更改后的辐射源信息插入到原来的位置 transmitterNodeInfo = transmitterNodeInfo.Insert(initialTransmitterNodeSite, SetupContent.transmitterStr1Ofsetup + " " + transmitterName + "\r\n"); //在info文件中先删除增加的辐射源节点信息 transmitterNodeInfo = transmitterNodeInfo.Remove(transmitterNodeInfo.LastIndexOf(SetupContent.transmitterStr1Ofsetup)); FileOperation.WriteFile(transmitterNodeInfo, MainWindow.nodeInfoFullPath, false); b = true; } catch (Exception e) { LogFileManager.ObjLog.fatal(e.Message, e); } return(b); }
private static bool WaveformDelOfWaveInfo(TreeNode currentNode) { bool b = false; try { string waveformAllInfo = FileOperation.ReadFile(MainWindow.waveinfoFilePath); //只能用IndexOf(waveName)函数,因为"END" + antennaName也含有antennaName int delStart = waveformAllInfo.IndexOf(SetupContent.waveFormStr1 + " " + currentNode.Text + "\r\n"); int delEnd = waveformAllInfo.LastIndexOf("END" + SetupContent.waveFormStr1 + " " + currentNode.Text + "\r\n") + ("END" + SetupContent.waveFormStr1 + " " + currentNode.Text + "\r\n").Length; waveformAllInfo = waveformAllInfo.Remove(delStart, delEnd - delStart); FileOperation.WriteFile(waveformAllInfo, MainWindow.waveinfoFilePath, false); b = true; } catch (Exception ex) { LogFileManager.ObjLog.fatal(ex.Message, ex); } return(b); }
//删除辐射源后应及时更新setup文件中关于辐射源的信息 private static bool TransmitterUpdateOfSetup() { bool b = false; string trFilePath = MainWindow.projectRealPath + "\\" + MainWindow.onlyProjectName + ".tx"; string trFileStr = FileOperation.ReadFile(trFilePath); try { //当tr文件中的辐射源全部被删除时 if (trFileStr.Length <= 0) { //辐射源全部被删除时,要删除tr文件 File.Delete(trFilePath); //辐射源全部被删除时,setup文件中关于辐射源的信息也要被删除 int start = MainWindow.setupStr.IndexOf(SetupContent.transmitterStr1Ofsetup + "\r\n"); int end = MainWindow.setupStr.IndexOf(SetupContent.transmitterStr4Ofsetup + "\r\n") + SetupContent.transmitterStr4Ofsetup.Length; MainWindow.setupStr = MainWindow.setupStr.Remove(start, end - start); //将删除辐射源后的setupStr保存到setup文件中 FileOperation.WriteFile(MainWindow.setupStr, MainWindow.mProjectFullName, false); } //当tr文件中的辐射源没有全部被删除时 else { //使setup文件中辐射源的数量减1 string transmitterCountStr = StringFound.FoundBackStr("\nFirstAvailableTxNumber", MainWindow.setupStr, true); string transmitterCountLineOld = "\nFirstAvailableTxNumber " + transmitterCountStr + "\r\n"; int transmitterCount = int.Parse(transmitterCountStr); transmitterCount = transmitterCount - 1; string transmitterCountLineNew = "\nFirstAvailableTxNumber " + transmitterCount.ToString() + "\r\n"; MainWindow.setupStr = MainWindow.setupStr.Replace(transmitterCountLineOld, transmitterCountLineNew); FileOperation.WriteFile(MainWindow.setupStr, MainWindow.mProjectFullName, false); } b = true; } catch (Exception e) { LogFileManager.ObjLog.fatal(e.Message, e); } return(b); }
//从waveinfo文件中删除相应的天线信息 private static bool AntennaDelOfWaveInfo(TreeNode currentNode) { bool b = false; try { string antennaAllInfo = FileOperation.ReadFile(MainWindow.waveinfoFilePath); //只能用IndexOf(waveName)函数,因为"END" + antennaName也含有antennaName int delStart = antennaAllInfo.IndexOf(SetupContent.antennaStr1 + " " + currentNode.Text + "\r\n"); int delEnd = antennaAllInfo.LastIndexOf("END" + SetupContent.antennaStr1 + " " + currentNode.Text + "\r\n") + ("END" + SetupContent.antennaStr1 + " " + currentNode.Text + "\r\n").Length; antennaAllInfo = antennaAllInfo.Remove(delStart, delEnd - delStart); FileOperation.WriteFile(antennaAllInfo, MainWindow.waveinfoFilePath, false); //从match文件中删除天线的相关信息 //StringFound.DelBackIndStr(SetupContent.antennaStr1 + " " + currentNode.Text); b = true; } catch (Exception ex) { LogFileManager.ObjLog.fatal(ex.Message, ex); } return(b); }
public static bool DelBackIndStr(string indStr) { bool b = false; try { string initStr = FileOperation.ReadFile(MainWindow.relationOfAntAndWavePath); int site = initStr.IndexOf(indStr); while (initStr[site] != '\r') { initStr = initStr.Remove(site, 1); } initStr = initStr.Remove(site, 2); FileOperation.WriteFile(initStr, MainWindow.relationOfAntAndWavePath, false); b = true; } catch (Exception e) { LogFileManager.ObjLog.fatal(e.Message, e); } return(b); }
public static bool WaveformDelOfSetupAndInfo(TreeNode currentNode) { bool b = false; string indStr = SetupContent.waveFormStr1 + " " + currentNode.Text + "\r\n"; int start = MainWindow.setupStr.IndexOf(indStr); //只能用LastIndexOf(nextNodeStr) 因为当删除的波形结点是树中同一级的最后一个时,只能查找end_<Waveform> int end; //删除的结点后面有没有结点,索引的天线结束字符串不一样 //当删除结点后面没有结点时,索引end_<antenna> if (currentNode.NextNode != null) { end = MainWindow.setupStr.LastIndexOf(SetupContent.waveFormStr1 + " " + currentNode.NextNode.Text + "\r\n"); } //当删除结点后面还有结点时,索引begin_<antenna> currentNode.Text字符串 else { end = MainWindow.setupStr.LastIndexOf(SetupContent.waveFormStr2 + "\r\n") + (SetupContent.waveFormStr2 + "\r\n").Length; } try { MainWindow.setupStr = MainWindow.setupStr.Remove(start, end - start); //删除后保存到setup文件中 FileOperation.WriteFile(MainWindow.setupStr, MainWindow.mProjectFullName, false); //还要从.info文件中将天线的信息删除 string infoStr = FileOperation.ReadFile(MainWindow.nodeInfoFullPath); infoStr = infoStr.Remove(infoStr.IndexOf(SetupContent.waveFormStr1 + " " + currentNode.Text + "\r\n"), (SetupContent.waveFormStr1 + " " + currentNode.Text + "\r\n").Length); FileOperation.WriteFile(infoStr, MainWindow.nodeInfoFullPath, false); b = true; } catch (Exception e) { LogFileManager.ObjLog.fatal(e.Message, e); } return(b); }
//从waveinfo文件中删除相应的辐射源信息 private static bool TransmitterDelOfWaveInfo(TreeNode currentNode) { bool b = false; try { string transmitterAllInfo = FileOperation.ReadFile(MainWindow.waveinfoFilePath); //只能用IndexOf(transmitterName)函数,因为"END" + antennaName也含有antennaName string indStr = SetupContent.transmitterStr1Ofsetup + " " + currentNode.Text + "\r\n"; int delStart = transmitterAllInfo.IndexOf(indStr); int delEnd = transmitterAllInfo.LastIndexOf("END" + indStr) + ("END" + indStr).Length; transmitterAllInfo = transmitterAllInfo.Remove(delStart, delEnd - delStart); FileOperation.WriteFile(transmitterAllInfo, MainWindow.waveinfoFilePath, false); StringFound.DelBackIndStr(SetupContent.transmitterStr1Ofsetup + " " + currentNode.Text); b = true; } catch (Exception ex) { LogFileManager.ObjLog.fatal(ex.Message, ex); } return(b); }
//删除接收机时要更新setup文件中接收机的数目 private static bool ReceiverUpdateOfSetup() { bool b = false; string rxFilePath = MainWindow.projectRealPath + "\\" + MainWindow.onlyProjectName + ".rx"; string rxFileStr = FileOperation.ReadFile(rxFilePath); try { //如果接收机全部被删除 if (rxFileStr.Length <= 0)//删除后 { File.Delete(rxFilePath); int start = MainWindow.setupStr.IndexOf(SetupContent.receiverOfSetupStr0 + "\r\n"); int end = MainWindow.setupStr.IndexOf(SetupContent.receiverOfSetupStr3 + "\r\n") + (SetupContent.receiverOfSetupStr3 + "\r\n").Length; MainWindow.setupStr = MainWindow.setupStr.Remove(start, end - start); FileOperation.WriteFile(MainWindow.setupStr, MainWindow.mProjectFullName, false); } //接收机没有全部被删除 else { string receiverCountStr = StringFound.FoundBackStr("\nFirstAvailableRxNumber", MainWindow.setupStr, true); string receiverCountLineOld = "\nFirstAvailableRxNumber " + receiverCountStr + "\r\n"; int receiverCount = int.Parse(receiverCountStr); receiverCount = receiverCount - 1; string receiverCountLineNew = "\nFirstAvailableRxNumber " + receiverCount.ToString() + "\r\n"; MainWindow.setupStr = MainWindow.setupStr.Replace(receiverCountLineOld, receiverCountLineNew); FileOperation.WriteFile(MainWindow.setupStr, MainWindow.mProjectFullName, false); } b = true; } catch (Exception e) { LogFileManager.ObjLog.fatal(e.Message, e); } return(b); }
public NewTransmitterWindow() { InitializeComponent(); if (MainWindow.mProjectFullName == null) { return; } if (File.Exists(MainWindow.nodeInfoFullPath)) { antennaNamesOfCombox = FileOperation.ReadFile(MainWindow.nodeInfoFullPath); } if (MainWindow.nodeInfoFullPath != null) { newTransmitterLongitude_textBox1.Text = MainWindow.longitudeStr; newTransmitterLatitude_textBox3.Text = MainWindow.latitudeStr; ArrayList antennaNamesArr = new ArrayList(); //向工程树中添加波形节点 antennaNamesArr = ProjectTreeMatchString.MatchStr(antennaNamesOfCombox, SetupContent.antennaIndeStr, SetupContent.antennaIndeStr.Length); foreach (string s in antennaNamesArr) { newTransmitterAntennaName_comboBox3.Items.Add(s); } } }
//单击更新菜单时,执行下面的操作 public static bool AntennaUpdateMenu(TreeNode currentNode) { bool b = false; //保存setup文件中的字符串 string setupStrTemp = MainWindow.setupStr; int initialAntennaBlockSite; string initAntennaNum = null; string antennaNodeInfoTemp = null; int initialAntennaNodeSite; string antennaParStrTemp = null; try { //保存天线在setup文件中的位置 initialAntennaBlockSite = MainWindow.setupStr.IndexOf(SetupContent.antennaStr1 + " " + currentNode.Text + "\r\n"); //保存info文件中的所有字符串,原来天线的编号也要保存下来 initAntennaNum = GetAntennaNumLine(currentNode.Text, MainWindow.setupStr); antennaNodeInfoTemp = FileOperation.ReadFile(MainWindow.nodeInfoFullPath); //保存天线在waveinfo文件中的位置信息 initialAntennaNodeSite = antennaNodeInfoTemp.IndexOf(SetupContent.antennaStr1 + " " + currentNode.Text + "\r\n"); antennaParStrTemp = FileOperation.ReadFile(MainWindow.waveinfoFilePath); } catch (Exception e) { return(false); } NewAntennaWindow newAntennaWin = new NewAntennaWindow(); //newAntennaWin.newdipolewaveformname_comboBox2.DropDownStyle = ComboBoxStyle.DropDown; AntennaDataRecoverOfProjectTree.AlterationAntennaPar(currentNode, antennaParStrTemp, newAntennaWin); //newAntennaWin.newdipolewaveformname_comboBox2.DropDownStyle = ComboBoxStyle.DropDownList; if (!(AntennaDelOfSetupAndInfo(currentNode) && AntennaDelOfWaveInfo(currentNode))) { MessageBox.Show("文件被破坏,导致错误,原工程不可再用!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Stop); return(false); } MainWindow.creatSuccMesDisp = false; MainWindow.newFuncSign = false; newAntennaWin.Text = "更改天线"; newAntennaWin.ShowDialog(); switch (newAntennaWin.DialogResult) { case DialogResult.OK: if (MainWindow.IsReturnMidwayInNewProcess) { FileOperation.WriteFile(setupStrTemp, MainWindow.mProjectFullName, false); MainWindow.setupStr = setupStrTemp; FileOperation.WriteFile(antennaParStrTemp, MainWindow.waveinfoFilePath, false); FileOperation.WriteFile(antennaNodeInfoTemp, MainWindow.nodeInfoFullPath, false); MainWindow.IsReturnMidwayInNewProcess = false; return(false); } StringFound.DelBackIndStr(SetupContent.antennaStr1 + " " + currentNode.Text + "#"); if (!setupStrRecoverInitAntennaNum(currentNode, initAntennaNum, initialAntennaBlockSite, initialAntennaNodeSite)) { MessageBox.Show("程序内部发生错误!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Stop); FileOperation.WriteFile(setupStrTemp, MainWindow.mProjectFullName, false); MainWindow.setupStr = setupStrTemp; FileOperation.WriteFile(antennaParStrTemp, MainWindow.waveinfoFilePath, false); FileOperation.WriteFile(antennaNodeInfoTemp, MainWindow.nodeInfoFullPath, false); return(false); } MainWindow.staticTreeView.SelectedNode.Text = MainWindow.staticTreeView.Nodes[0].Nodes[0].Nodes[2].LastNode.Text; MainWindow.staticTreeView.Nodes[0].Nodes[0].Nodes[2].LastNode.Remove(); b = true; break; default: FileOperation.WriteFile(setupStrTemp, MainWindow.mProjectFullName, false); MainWindow.setupStr = setupStrTemp; FileOperation.WriteFile(antennaParStrTemp, MainWindow.waveinfoFilePath, false); FileOperation.WriteFile(antennaNodeInfoTemp, MainWindow.nodeInfoFullPath, false); b = false; break; } //b = true; return(b); }
public static bool WaveformUpdateMenu(TreeNode currentNode) { //先将setupStr保存在一个字符串setupStrTemp中 string setupStrTemp = MainWindow.setupStr; //将waveinfo文件中的内容保存在字符串waveAllInfoTemp中 string waveformParStrTemp = FileOperation.ReadFile(MainWindow.waveinfoFilePath); //将info文件的内容保存到字符串allNodesInfoTemp中 string waveformNodeInfoTemp = FileOperation.ReadFile(MainWindow.nodeInfoFullPath); int initialWaveformNodeSite = waveformNodeInfoTemp.IndexOf(SetupContent.waveFormStr1 + " " + currentNode.Text + "\r\n"); int initialWaveformBlockSite = MainWindow.setupStr.IndexOf(SetupContent.waveFormStr1 + " " + currentNode.Text + "\r\n"); NewWaveformWindow wfw = new NewWaveformWindow(); //向窗体中的控件填写以前的内容 WaveformDataRecoverOfProjectTree.AlterationWavePar(currentNode, waveformParStrTemp, wfw); //int siteOfUpdateWave = setupStr.IndexOf(SetupContent.waveFormStr1 + " " + currentNode.Text); //保存波形编号的那一行 string initWaveformNum = GetWaveformNumLine(currentNode.Text, MainWindow.setupStr); //先删除需要更改的波形,否则同名的波形不能写到setup文件中 if (!(WaveformDelOfSetupAndInfo(currentNode) && WaveformDelOfWaveInfo(currentNode))) { MessageBox.Show("文件被破坏,导致错误,原工程不可再用!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Stop); return(false); } MainWindow.creatSuccMesDisp = false; MainWindow.newFuncSign = false; wfw.Text = "更改波形"; //新建波形窗口可见,只能用showDialog() wfw.ShowDialog(); //判断在新建波形窗口中单击的是哪个按钮 switch (wfw.DialogResult) { case DialogResult.OK: //删除单击确定按钮后新添加的波形结点 //在新建波形窗口中单击确定按钮后,会在工程树波形结点的最后添加更改的波形,将其的名字赋给选中的结点, //再将确定按钮增加的波形删除掉 if (MainWindow.IsReturnMidwayInNewProcess) { //myEventArgs e = new myEventArgs( setupStrTemp, waveformParStrTemp, waveformNodeInfoTemp); //wfw.newsinusoidcancel_button2.Click -= new System.EventHandler(wfw.newSinusoidCancel_button2_Click); //wfw.newsinusoidcancel_button2.Click +=e.A ; //wfw.ShowDialog(); FileOperation.WriteFile(setupStrTemp, MainWindow.mProjectFullName, false); MainWindow.setupStr = setupStrTemp; FileOperation.WriteFile(waveformParStrTemp, MainWindow.waveinfoFilePath, false); FileOperation.WriteFile(waveformNodeInfoTemp, MainWindow.nodeInfoFullPath, false); MainWindow.IsReturnMidwayInNewProcess = false; return(false); } //if (cancelOfUpdate) //{ // return true; //} if (!setupStrRecoverInitWaveformNum(currentNode, initWaveformNum, initialWaveformBlockSite, initialWaveformNodeSite)) { MessageBox.Show("程序内部发生错误!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Stop); FileOperation.WriteFile(setupStrTemp, MainWindow.mProjectFullName, false); MainWindow.setupStr = setupStrTemp; FileOperation.WriteFile(waveformParStrTemp, MainWindow.waveinfoFilePath, false); FileOperation.WriteFile(waveformNodeInfoTemp, MainWindow.nodeInfoFullPath, false); return(false); } MainWindow.staticTreeView.SelectedNode.Text = MainWindow.staticTreeView.Nodes[0].Nodes[0].Nodes[1].LastNode.Text; MainWindow.staticTreeView.Nodes[0].Nodes[0].Nodes[1].LastNode.Remove(); return(true); default: FileOperation.WriteFile(setupStrTemp, MainWindow.mProjectFullName, false); MainWindow.setupStr = setupStrTemp; FileOperation.WriteFile(waveformParStrTemp, MainWindow.waveinfoFilePath, false); FileOperation.WriteFile(waveformNodeInfoTemp, MainWindow.nodeInfoFullPath, false); //b= false; return(false); } //return b; }
private void addTransmitterOk_button1_Click(object sender, EventArgs e) { client = new ServiceReference1.Service1Client(); matchAntenna = new ServiceReference1.Antenna(); string matchAntennaName = null; if (MainWindow.mProjectFullName == null) { this.Close(); return; } //判断添加辐射源之前是否添加了地形 if (!ConditionIsAll(MainWindow.nodeInfoFullPath)) { MessageBox.Show("请先添加地形之后再添加辐射源!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); MainWindow.IsReturnMidwayInNewProcess = true; return; } //判断工程波形中是否添加波形 if (addTransmitterWaveformName_comboBox1.Items.Count > 0) { if (addTransmitterWaveformName_comboBox1.SelectedItem == null) { MessageBox.Show("辐射源未设置波形", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); MainWindow.IsReturnMidwayInNewProcess = true; return; } } else { MessageBox.Show("请先在工程中添加波形!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); MainWindow.IsReturnMidwayInNewProcess = true; return; } if (addTransmitterName_comboBox4.SelectedItem == null || addTransmitterCoordinateSystem_comboBox1.SelectedItem == null || addTransmitterLongitude_textBox2.Text == "" || addTransmitterLatitude_textBox3.Text == "" || addTransimtterReferencePlane_comboBox2.SelectedItem == null || addTransmitterInputPower_textBox11.Text == "" || addTransmitterAntennaName_textBox1.Text == "" || addTransmitterWaveformName_comboBox1.SelectedItem == null || addTransmitterAntennaRotateX_textBox7.Text == "" || addTransmitterAntennaRotateY_textBox6.Text == "" || addTransmitterAntennaRotateZ_textBox5.Text == "") { MessageBox.Show("窗口中有未设置的信息", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); MainWindow.IsReturnMidwayInNewProcess = true; return; } if (!BoudingLimition.IsScienceFigure(addTransmitterInputPower_textBox11.Text)) { MessageBox.Show("发射功率值输入必须是实数", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); MainWindow.IsReturnMidwayInNewProcess = true; return; } if (double.Parse(addTransmitterInputPower_textBox11.Text) < 0.000) { MessageBox.Show("发射功率值需大于0.000", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); MainWindow.IsReturnMidwayInNewProcess = true; return; } if (!BoudingLimition.IsScienceFigure(addTransmitterAntennaRotateX_textBox7.Text)) { MessageBox.Show("天线关于X轴旋转角度值输入必须是实数", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); MainWindow.IsReturnMidwayInNewProcess = true; return; } if (!BoudingLimition.IsScienceFigure(addTransmitterAntennaRotateY_textBox6.Text)) { MessageBox.Show("天线关于Y轴旋转角度值输入必须是实数", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); MainWindow.IsReturnMidwayInNewProcess = true; return; } if (!BoudingLimition.IsScienceFigure(addTransmitterAntennaRotateZ_textBox5.Text)) { MessageBox.Show("天线关于Z轴旋转角度值输入必须是实数", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); MainWindow.IsReturnMidwayInNewProcess = true; return; } if (BoudingLimition.RotationLimition(addTransmitterAntennaRotateX_textBox7)) { MessageBox.Show("天线关于X轴旋转角度值需在0度至360度之间", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); MainWindow.IsReturnMidwayInNewProcess = true; return; } if (BoudingLimition.RotationLimition(addTransmitterAntennaRotateY_textBox6)) { MessageBox.Show("天线关于Y轴旋转角度值需在0度至360度之间", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); MainWindow.IsReturnMidwayInNewProcess = true; return; } if (BoudingLimition.RotationLimition(addTransmitterAntennaRotateZ_textBox5)) { MessageBox.Show("天线关于Z轴旋转角度值需在0度至360度之间", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); MainWindow.IsReturnMidwayInNewProcess = true; return; } //判断是否存在.tx文件 if (File.Exists(MainWindow.projectRealPath + "\\" + MainWindow.onlyProjectName + ".tx")) { WaveformWriting transm = new WaveformWriting(FileOperation.ReadFile(MainWindow.nodeInfoFullPath)); //注意 新建的辐射源个数不能超过1000 string[] transmitterNames = new string[1000]; //判断是否存在重名的辐射源 transmitterNames = transm.waveformNames(SetupContent.transmitterIndeStr); if (transm.judge((string)addTransmitterName_comboBox4.SelectedItem, transmitterNames)) { MessageBox.Show("此辐射源已存在", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } //将数据库中与辐射源匹配的天线写入setupStr中 try { matchAntenna = client.iGetAntenna(addTransmitterAntennaName_textBox1.Text); //与辐射源匹配的天线名称 matchAntennaName = matchAntenna.Name + "_DB" + (string)addTransmitterName_comboBox4.SelectedItem; //准备好插入的内容 string[] AntennaStr = new string[8]; AntennaStr[0] = SetupContent.antennaStr1 + " " + matchAntennaName + "\r\n"; AntennaStr[1] = matchAntenna.Type + "\r\n"; AntennaStr[3] = "power_threshold " + matchAntenna.RecieveThrehold + "\r\n"; AntennaStr[4] = "cable_loss " + matchAntenna.TransmissionLoss + "\r\n"; AntennaStr[5] = "VSWR " + matchAntenna.VSWR + "\r\n"; AntennaStr[6] = "temperature " + matchAntenna.Temperature + "\r\n"; switch (matchAntenna.Type) { case "type HalfWaveDipole": { AntennaStr[2] = "polarization " + matchAntenna.Polarization + "\r\n"; AntennaStr[7] = SetupContent.antennaStr2 + "\r\n" + SetupContent.antennaStr3 + "\r\n"; //将天线信息存储到.waveinfo文件中 string antennaInfoStr = SetupContent.antennaStr1 + " " + matchAntennaName + "\r\n" + Translate.KeyWordsDictionary_DB(matchAntenna.Type) + "\r\n" //+ (string)addTransmitterWaveformName_comboBox1.SelectedItem + "\r\n" + matchAntenna.MaxGain + "\r\n" + matchAntenna.Polarization + "\r\n" + matchAntenna.RecieveThrehold + "\r\n" + matchAntenna.TransmissionLoss + "\r\n" + matchAntenna.VSWR + "\r\n" + matchAntenna.Temperature + "\r\n" + "END" + SetupContent.antennaStr1 + " " + matchAntennaName + "\r\n"; FileOperation.WriteFile(antennaInfoStr, MainWindow.waveinfoFilePath, true); } break; case "type linear_monopole": { AntennaStr[2] = ""; AntennaStr[7] = SetupContent.antennaStr2 + "\r\n" + "length " + matchAntenna.Length + "\r\n" + SetupContent.antennaStr3 + "\r\n"; //将单极天线的参数按相应的顺序记录到waveinfo文件中 string antennaInfoStr = SetupContent.antennaStr1 + " " + matchAntennaName + "\r\n" + Translate.KeyWordsDictionary_DB(matchAntenna.Type) + "\r\n" + (string)addTransmitterWaveformName_comboBox1.SelectedItem + "\r\n" + matchAntenna.Length + "\r\n" + matchAntenna.MaxGain + "\r\n" + matchAntenna.RecieveThrehold + "\r\n" + matchAntenna.TransmissionLoss + "\r\n" + matchAntenna.VSWR + "\r\n" + matchAntenna.Temperature + "\r\n" + "END" + SetupContent.antennaStr1 + " " + matchAntennaName + "\r\n"; FileOperation.WriteFile(antennaInfoStr, MainWindow.waveinfoFilePath, true); } break; case "type Helical": { AntennaStr[2] = "polarization " + matchAntenna.Polarization + "\r\n"; AntennaStr[7] = SetupContent.antennaStr2 + "\r\n" + "radius " + matchAntenna.Radius + "\r\n" + "length " + matchAntenna.Length + "\r\n" + "pitch " + matchAntenna.Pitch + "\r\n" + SetupContent.antennaStr3 + "\r\n"; string antennaInfoStr = SetupContent.antennaStr1 + " " + matchAntennaName + "\r\n" + Translate.KeyWordsDictionary_DB(matchAntenna.Type) + "\r\n" + (string)addTransmitterWaveformName_comboBox1.SelectedItem + "\r\n" + matchAntenna.Polarization + "\r\n" + matchAntenna.MaxGain + "\r\n" + matchAntenna.Radius + "\r\n" + matchAntenna.Length + "\r\n" + matchAntenna.Pitch + "\r\n" + matchAntenna.RecieveThrehold + "\r\n" + matchAntenna.TransmissionLoss + "\r\n" + matchAntenna.VSWR + "\r\n" + matchAntenna.Temperature + "\r\n" + "END" + SetupContent.antennaStr1 + " " + matchAntennaName + "\r\n"; FileOperation.WriteFile(antennaInfoStr, MainWindow.waveinfoFilePath, true); } break; case "type ParabolicReflector": { AntennaStr[2] = "polarization " + matchAntenna.Polarization + "\r\n"; AntennaStr[7] = SetupContent.antennaStr2 + "\r\n" + "radius " + matchAntenna.Radius + "\r\n" + "blockageradius " + matchAntenna.BlockageRadius + "\r\n" + "EFieldDistribution " + matchAntenna.ApertureDistribution + "\r\n" + "EdgeTaper " + matchAntenna.EdgeTeper + "\r\n" + SetupContent.antennaStr3 + "\r\n"; //将抛物线天线相应的参数按控件顺序记录到waveinfo文件中 string antennaInfoStr = SetupContent.antennaStr1 + " " + matchAntennaName + "\r\n" + Translate.KeyWordsDictionary_DB(matchAntenna.Type) + "\r\n" + (string)addTransmitterWaveformName_comboBox1.SelectedItem + "\r\n" + matchAntenna.Polarization + "\r\n" + matchAntenna.Radius + "\r\n" + matchAntenna.BlockageRadius + "\r\n" + matchAntenna.ApertureDistribution + "\r\n" + matchAntenna.EdgeTeper + "\r\n" + matchAntenna.RecieveThrehold + "\r\n" + matchAntenna.TransmissionLoss + "\r\n" + matchAntenna.VSWR + "\r\n" + matchAntenna.Temperature + "\r\n" + "END" + SetupContent.antennaStr1 + " " + matchAntennaName + "\r\n"; FileOperation.WriteFile(antennaInfoStr, MainWindow.waveinfoFilePath, true); } break; case "对数周期天线": { } break; default: break; } WaveformWriting Annt = new WaveformWriting(MainWindow.setupStr); MainWindow.setupStr = Annt.InsertAntenna8(AntennaStr, (string)addTransmitterWaveformName_comboBox1.SelectedItem, SetupContent.antennaStr3, SetupContent.waveFormStr3); //将与辐射源匹配的天线添加到工程树子节点 MainWindow.staticTreeView.Nodes[0].Nodes[0].Nodes[2].Nodes.Add(matchAntennaName); //将天线的信息存储到.setup.info文件中 FileOperation.WriteLineFile(SetupContent.antennaIndeStr + " " + matchAntennaName, MainWindow.nodeInfoFullPath, true); } catch (System.TimeoutException ex) { MessageBox.Show(ex.Message); LogFileManager.ObjLog.fatal(ex.Message, ex); client.Abort(); } catch (FaultException <WcfException> ex) { MessageBox.Show(ex.Detail.message); LogFileManager.ObjLog.fatal(ex.Message, ex); client.Abort(); } catch (CommunicationException ex) { MessageBox.Show(ex.Message); LogFileManager.ObjLog.fatal(ex.Message, ex); client.Abort(); } catch (Exception exm) { MessageBox.Show(exm.Message); LogFileManager.ObjLog.fatal(exm.Message, exm); client.Abort(); } string transmitterCount = GetTransmitterNum(MainWindow.projectRealPath + "\\" + MainWindow.onlyProjectName + ".tx", SetupContent.transmitterStr2OfTr); string sourceStr = FileOperation.ReadFile(MainWindow.waveinfoFilePath); string trFileStr = SetupContent.transmitterStr1OfTr + " " + (string)addTransmitterName_comboBox4.SelectedItem + "\r\n" + SetupContent.transmitterStr2OfTr + transmitterCount + "\r\n" + SetupContent.transmitterStr3OfTr + "\r\n" + SetupContent.transmitterStr4OfTr + "\r\n" + SetupContent.transmitterStr5OfTr + "\r\n" + SetupContent.transmitterStr6OfTr + "\r\n" + SetupContent.transmitterStr7OfTr + "\r\n" + SetupContent.transmitterStr8OfTr + "\r\n" + SetupContent.transmitterStr9OfTr + "\r\n" + SetupContent.transmitterStr10OfTr + "\r\n" + SetupContent.transmitterStr11OfTr + "\r\n" + SetupContent.transmitterStr12OfTr + MainWindow.longitudeStr + "\r\n" + SetupContent.transmitterStr13OfTr + MainWindow.latitudeStr + "\r\n" + SetupContent.transmitterStr14OfTr + "\r\n" + Translate.KeyWordsDictionary(addTransimtterReferencePlane_comboBox2) + "\r\n" + SetupContent.transmitterStr15OfTr + "\r\n" + SetupContent.transmitterStr16OfTr + "\r\n" //+ SetupContent.transmitterStr17OfTr + "\r\n" + GetAntennaStr(MainWindow.transInfoFullPath, matchAntennaName) + SetupContent.transmitterStr18OfTr + addTransmitterAntennaRotateX_textBox7.Text + "\r\n" + SetupContent.transmitterStr19OfTr + addTransmitterAntennaRotateY_textBox6.Text + "\r\n" + SetupContent.transmitterStr20OfTr + addTransmitterAntennaRotateZ_textBox5.Text + "\r\n" + SetupContent.transmitterStr21OfTr + addTransmitterInputPower_textBox11.Text + "\r\n" + SetupContent.transmitterStr22OfTr + "\r\n" + SetupContent.transmitterStr23OfTr + "\r\n" + SetupContent.transmitterStr24OfTr + " " + WaveformNodeOfConMenu.GetWaveformNumLine((string)addTransmitterWaveformName_comboBox1.SelectedItem, sourceStr) + "MHZ" + "\r\n"; FileOperation.WriteFile(trFileStr, MainWindow.projectRealPath + "\\" + MainWindow.onlyProjectName + ".tx", true); //写到setup文件中 string sourceStrOfTr = FileOperation.ReadFile(MainWindow.projectRealPath + "\\" + MainWindow.onlyProjectName + ".tx"); //找出辐射源的个数 int transmitCount = WaveformWriting.GetCountOfMatchStr("begin_<points>", sourceStrOfTr); //如果已经存在了transmitter块,则先删除 if (MainWindow.setupStr.LastIndexOf("end_<transmitter>") != -1) { MainWindow.setupStr = MainWindow.setupStr.Remove(MainWindow.setupStr.IndexOf("begin_<transmitter>"), MainWindow.setupStr.IndexOf("end_<transmitter>") - MainWindow.setupStr.IndexOf("begin_<transmitter>") + 19); } //将.tx路径信息插入到全局字符串setupStr中 int insertSiteOfTr = MainWindow.setupStr.LastIndexOf("end_<feature>") + 15;//15是end_<feature>\r\n后的第一个字符 string insertStr = SetupContent.transmitterStr1Ofsetup + "\r\n" + SetupContent.transmitterStr2Ofsetup + MainWindow.projectRealPath + "\\" + MainWindow.onlyProjectName + ".tx" + "\r\n" + SetupContent.transmitterStr3Ofsetup + transmitCount.ToString() + "\r\n" + SetupContent.transmitterStr4Ofsetup + "\r\n"; MainWindow.setupStr = MainWindow.setupStr.Insert(insertSiteOfTr, insertStr); FileOperation.WriteFile(MainWindow.setupStr, MainWindow.mProjectFullName, false); //向工程树中添加结点信息 MainWindow.staticTreeView.Nodes[0].Nodes[0].Nodes[3].Nodes.Add((string)addTransmitterName_comboBox4.SelectedItem); //将辐射源的信息存储到.setup.info文件中 FileOperation.WriteLineFile(SetupContent.transmitterIndeStr + " " + (string)addTransmitterName_comboBox4.SelectedItem, MainWindow.nodeInfoFullPath, true); //将辐射源和天线的匹配关系记录到.match文件中 FileOperation.WriteLineFile(SetupContent.transmitterIndeStr + " " + (string)addTransmitterName_comboBox4.SelectedItem + "*" + matchAntennaName, MainWindow.relationOfAntAndWavePath, true); //将辐射源的信息存储到.waveinfo文件中 string transmitterInfoStr = SetupContent.transmitterStr1Ofsetup + " " + (string)addTransmitterName_comboBox4.SelectedItem + "\r\n" + addTransimtterReferencePlane_comboBox2.Text + "\r\n" + addTransmitterInputPower_textBox11.Text + "\r\n" + matchAntennaName + "\r\n" + (string)addTransmitterWaveformName_comboBox1.SelectedItem + "\r\n" + addTransmitterAntennaRotateX_textBox7.Text + "\r\n" + addTransmitterAntennaRotateY_textBox6.Text + "\r\n" + addTransmitterAntennaRotateZ_textBox5.Text + "\r\n" + "END" + SetupContent.transmitterStr1Ofsetup + " " + (string)addTransmitterName_comboBox4.SelectedItem + "\r\n"; FileOperation.WriteFile(transmitterInfoStr, MainWindow.waveinfoFilePath, true); if (MainWindow.creatSuccMesDisp) { MessageBox.Show("辐射源" + (string)addTransmitterName_comboBox4.SelectedItem + "创建成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
private void OpenToolStripMenuItem_Click(object sender, EventArgs e) { LogFileManager.ObjLog.info("Begin"); if (mProjectFullName != null) { DialogResult result = MessageBox.Show("您是否要打开一个新的工程?若是则原工程将被关闭。", "提醒", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); if (DialogResult.OK == result) { MainWindow.staticTreeView.Nodes[0].Nodes[0].Remove(); } else { MainWindow.mProjectFullName = null; //王佳修改 MainWindow.setupStr = null; return; } } openProject.Filter = "setup文件(*.setup)|*.setup|所有文件|*.*"; DialogResult dr = openProject.ShowDialog(); if (dr == DialogResult.OK) { //在新建一个工程时,又打开这个工程则什么也不做 否则执行下面的操作 if (mProjectFullName != openProject.FileName) { setupStr = FileOperation.ReadFile(openProject.FileName); //.setup文件的包括路径的名字 mProjectFullName = openProject.FileName; //.setup.info文件的包含路径的名字 nodeInfoFullPath = openProject.FileName + ".info"; transInfoFullPath = openProject.FileName + ".transinfo"; relationOfAntAndWavePath = openProject.FileName + ".match"; waveinfoFilePath = openProject.FileName + ".waveinfo"; //工程的路径 不包括文件 MainWindow.projectRealPath = openProject.FileName.Substring(0, openProject.FileName.LastIndexOf("\\")); staticTreeView.Nodes.Clear(); //从信息文件中找出工程树中工程的名字将其加载到工程树中 string nodeNamesStr = FileOperation.ReadFile(nodeInfoFullPath); string projectNameStr = StringFound.FoundBackStr(SetupContent.projectIndeStr, nodeNamesStr, true); MainWindow.onlyProjectName = projectNameStr; longitudeStr = StringFound.FoundBackStr(SetupContent.longitudeIndeStr, nodeNamesStr, true); latitudeStr = StringFound.FoundBackStr(SetupContent.latitudeIndeStr, nodeNamesStr, true); staticTreeView.Nodes.Add("工程名字"); staticTreeView.Nodes[0].Nodes.Add(projectNameStr); staticTreeView.Nodes[0].Nodes[0].Nodes.Add("地形"); MainWindow.staticTreeView.Nodes[0].Nodes[0].Nodes.Add("波形"); MainWindow.staticTreeView.Nodes[0].Nodes[0].Nodes.Add("天线"); MainWindow.staticTreeView.Nodes[0].Nodes[0].Nodes.Add("辐射源"); MainWindow.staticTreeView.Nodes[0].Nodes[0].Nodes.Add("接收机"); MainWindow.staticTreeView.Nodes[0].Nodes[0].Nodes[4].Nodes.Add("点状分布"); MainWindow.staticTreeView.Nodes[0].Nodes[0].Nodes[4].Nodes.Add("区域分布"); MainWindow.staticTreeView.Nodes[0].Nodes[0].Nodes.Add("仿真结果设定"); ArrayList nodeNamesArr = new ArrayList(); //向工程树中添加波形节点 nodeNamesArr = ProjectTreeMatchString.MatchStr(nodeNamesStr, SetupContent.waveIndeStr, SetupContent.waveIndeStr.Length); foreach (string s in nodeNamesArr) { staticTreeView.Nodes[0].Nodes[0].Nodes[1].Nodes.Add(s); } //向工程树中添加地形节点 nodeNamesArr = ProjectTreeMatchString.MatchStr(nodeNamesStr, SetupContent.terrainIndeStr, SetupContent.terrainIndeStr.Length); foreach (string s in nodeNamesArr) { staticTreeView.Nodes[0].Nodes[0].Nodes[0].Nodes.Add(s); } //向工程树种添加天线结点 nodeNamesArr = ProjectTreeMatchString.MatchStr(nodeNamesStr, SetupContent.antennaIndeStr, SetupContent.antennaIndeStr.Length); foreach (string s in nodeNamesArr) { staticTreeView.Nodes[0].Nodes[0].Nodes[2].Nodes.Add(s); } //向工程树种添加辐射源结点 nodeNamesArr = ProjectTreeMatchString.MatchStr(nodeNamesStr, SetupContent.transmitterIndeStr, SetupContent.transmitterIndeStr.Length); foreach (string s in nodeNamesArr) { staticTreeView.Nodes[0].Nodes[0].Nodes[3].Nodes.Add(s); } //向工程树种添加点状接收机 nodeNamesArr = ProjectTreeMatchString.MatchStr(nodeNamesStr, SetupContent.pointReceiverIndeStr, SetupContent.pointReceiverIndeStr.Length); foreach (string s in nodeNamesArr) { staticTreeView.Nodes[0].Nodes[0].Nodes[4].Nodes[0].Nodes.Add(s); } //向工程树种添加线状接收机 nodeNamesArr = ProjectTreeMatchString.MatchStr(nodeNamesStr, SetupContent.gridReceiverIndeStr, SetupContent.gridReceiverIndeStr.Length); foreach (string s in nodeNamesArr) { staticTreeView.Nodes[0].Nodes[0].Nodes[4].Nodes[1].Nodes.Add(s); } //向工程树中加载结果设定的相应信息 string pathsResultStr = StringFound.FoundBackStr(SetupContent.resultSetIndeStr1, nodeNamesStr, false); //若结果设定中的复选框被选中 if (GetResultSetStr(pathsResultStr)) { //将复选框的状态保存到结果设定窗口中 PathsCheck.Checked = true; //在工程树中加载结果设定结点中加载相应的信息 staticTreeView.Nodes[0].Nodes[0].Nodes[5].Nodes.Add(SetupContent.resultSetOfTreeIndeStr1); } string pathlossResultStr = StringFound.FoundBackStr(SetupContent.resultSetIndeStr2, nodeNamesStr, false); if (GetResultSetStr(pathlossResultStr)) { PathlossCheck.Checked = true; staticTreeView.Nodes[0].Nodes[0].Nodes[5].Nodes.Add(SetupContent.resultSetOfTreeIndeStr2); } string eFieldResultStr = StringFound.FoundBackStr(SetupContent.resultSetIndeStr3, nodeNamesStr, false); if (GetResultSetStr(eFieldResultStr)) { EFieldCheck.Checked = true; staticTreeView.Nodes[0].Nodes[0].Nodes[5].Nodes.Add(SetupContent.resultSetOfTreeIndeStr3); } string eFieldTotalResultStr = StringFound.FoundBackStr(SetupContent.resultSetIndeStr4, nodeNamesStr, false); if (GetResultSetStr(eFieldTotalResultStr)) { EFieldTotalCheck.Checked = true; staticTreeView.Nodes[0].Nodes[0].Nodes[5].Nodes.Add(SetupContent.resultSetOfTreeIndeStr4); } string powerResultStr = StringFound.FoundBackStr(SetupContent.resultSetIndeStr5, nodeNamesStr, false); if (GetResultSetStr(powerResultStr)) { PowerCheck.Checked = true; staticTreeView.Nodes[0].Nodes[0].Nodes[5].Nodes.Add(SetupContent.resultSetOfTreeIndeStr5); } //判断用户是否关闭WI Process pro = null; try { pro = Process.GetProcessById(wiProcessID); } catch (ArgumentException) { //如果ID所对应的WI进程已被关闭,则再重新开启WI Process wiProcess = Process.Start(exePath, openProject.FileName); this.WindowState = FormWindowState.Normal; this.Activate(); MainWindow.wiProcessID = wiProcess.Id; return; } if (pro == null) { //如果WI进程还存在,则先将其关闭再打开重新加载工程 pro.Kill(); } else { Process wiProcess = Process.Start(exePath, openProject.FileName); //Process wiProcess = Process.Start(exePath, openProject.FileName); this.WindowState = FormWindowState.Normal; //this.TopMost = true; this.Activate(); this.WindowState = FormWindowState.Maximized; MainWindow.wiProcessID = wiProcess.Id; } } else { MessageBox.Show("该工程已经打开!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } else { mProjectFullName = null; } }
private void newTransmitterOK_Click(object sender, EventArgs e) { if (MainWindow.mProjectFullName == null) { this.Close(); return; } if (!ConditionIsAll(MainWindow.nodeInfoFullPath)) { MessageBox.Show("请先创建天线和添加波形之后再新建辐射源!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); MainWindow.IsReturnMidwayInNewProcess = true; return; } if (newTransmitterName_textBox2.Text == "" || newTransmitterLongitude_textBox1.Text == "" || newTransmitterLatitude_textBox3.Text == "" || newTransimtterReferencePlane_comboBox2.SelectedItem == null || newTransmitterPower_textBox11.Text == "" || newTransmitterAntennaName_comboBox3.SelectedItem == null || newTransmitterWaveformName_textBox1.Text == "" || newTransmitterAntennaRotationX_textBox4.Text == "" || newTransmitterAntennaRotationY_textBox6.Text == "" || newTransmitterAntennaRotationZ_textBox5.Text == "") { MessageBox.Show("窗口中有未设置的信息,请您设置完整", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); MainWindow.IsReturnMidwayInNewProcess = true; return; } if (!BoudingLimition.IsScienceFigure(newTransmitterPower_textBox11.Text)) { MessageBox.Show("发射功率值输入必须是实数", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); MainWindow.IsReturnMidwayInNewProcess = true; return; } if (double.Parse(newTransmitterPower_textBox11.Text) < 0.000) { MessageBox.Show("发射功率值需大于0.000", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); MainWindow.IsReturnMidwayInNewProcess = true; return; } if (!BoudingLimition.IsScienceFigure(newTransmitterAntennaRotationX_textBox4.Text)) { MessageBox.Show("天线关于X轴旋转角度值输入必须是实数", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); MainWindow.IsReturnMidwayInNewProcess = true; return; } if (!BoudingLimition.IsScienceFigure(newTransmitterAntennaRotationY_textBox6.Text)) { MessageBox.Show("天线关于Y轴旋转角度值输入必须是实数", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); MainWindow.IsReturnMidwayInNewProcess = true; return; } if (!BoudingLimition.IsScienceFigure(newTransmitterAntennaRotationZ_textBox5.Text)) { MessageBox.Show("天线关于Z轴旋转角度值输入必须是实数", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); MainWindow.IsReturnMidwayInNewProcess = true; return; } if (BoudingLimition.RotationLimition(newTransmitterAntennaRotationX_textBox4)) { MessageBox.Show("天线关于X轴旋转角度值需在0度至360度之间", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); MainWindow.IsReturnMidwayInNewProcess = true; return; } if (BoudingLimition.RotationLimition(newTransmitterAntennaRotationY_textBox6)) { MessageBox.Show("天线关于Y轴旋转角度值需在0度至360度之间", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); MainWindow.IsReturnMidwayInNewProcess = true; return; } if (BoudingLimition.RotationLimition(newTransmitterAntennaRotationZ_textBox5)) { MessageBox.Show("天线关于Z轴旋转角度值需在0度至360度之间", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); MainWindow.IsReturnMidwayInNewProcess = true; return; } //先判断是否存在.tx文件 if (File.Exists(MainWindow.projectRealPath + "\\" + MainWindow.onlyProjectName + ".tx")) { WaveformWriting transm = new WaveformWriting(FileOperation.ReadFile(MainWindow.nodeInfoFullPath)); //注意 新建的辐射源个数不能超过1000 string[] transmitterNames = new string[1000]; //判断是否存在重名的辐射源 transmitterNames = transm.waveformNames(SetupContent.transmitterIndeStr); if (transm.judge(newTransmitterName_textBox2.Text, transmitterNames)) { MessageBox.Show("此辐射源已存在,请您换一个辐射源名称!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); MainWindow.IsReturnMidwayInNewProcess = true; return; } } string transmitterCount = GetTransmitterNum(MainWindow.projectRealPath + "\\" + MainWindow.onlyProjectName + ".tx", SetupContent.transmitterStr2OfTr); string sourceStr = FileOperation.ReadFile(MainWindow.waveinfoFilePath); string trFileStr = SetupContent.transmitterStr1OfTr + " " + newTransmitterName_textBox2.Text + "\r\n" + SetupContent.transmitterStr2OfTr + transmitterCount + "\r\n" + SetupContent.transmitterStr3OfTr + "\r\n" + SetupContent.transmitterStr4OfTr + "\r\n" + SetupContent.transmitterStr5OfTr + "\r\n" + SetupContent.transmitterStr6OfTr + "\r\n" + SetupContent.transmitterStr7OfTr + "\r\n" + SetupContent.transmitterStr8OfTr + "\r\n" + SetupContent.transmitterStr9OfTr + "\r\n" + SetupContent.transmitterStr10OfTr + "\r\n" + SetupContent.transmitterStr11OfTr + "\r\n" + SetupContent.transmitterStr12OfTr + MainWindow.longitudeStr + "\r\n" + SetupContent.transmitterStr13OfTr + MainWindow.latitudeStr + "\r\n" + SetupContent.transmitterStr14OfTr + "\r\n" + Translate.KeyWordsDictionary(newTransimtterReferencePlane_comboBox2) + "\r\n" + SetupContent.transmitterStr15OfTr + "\r\n" + SetupContent.transmitterStr16OfTr + "\r\n" //+ SetupContent.transmitterStr17OfTr + "\r\n" + GetAntennaStr(MainWindow.transInfoFullPath, newTransmitterAntennaName_comboBox3) + SetupContent.transmitterStr18OfTr + newTransmitterAntennaRotationX_textBox4.Text + "\r\n" + SetupContent.transmitterStr19OfTr + newTransmitterAntennaRotationY_textBox6.Text + "\r\n" + SetupContent.transmitterStr20OfTr + newTransmitterAntennaRotationZ_textBox5.Text + "\r\n" + SetupContent.transmitterStr21OfTr + newTransmitterPower_textBox11.Text + "\r\n" + SetupContent.transmitterStr22OfTr + "\r\n" + SetupContent.transmitterStr23OfTr + "\r\n" + SetupContent.transmitterStr24OfTr + " " + WaveformNodeOfConMenu.GetWaveformNumLine(newTransmitterWaveformName_textBox1.Text, sourceStr) + "MHZ" + "\r\n"; FileOperation.WriteFile(trFileStr, MainWindow.projectRealPath + "\\" + MainWindow.onlyProjectName + ".tx", true); //写到setup文件中 string sourceStrOfTr = FileOperation.ReadFile(MainWindow.projectRealPath + "\\" + MainWindow.onlyProjectName + ".tx"); //找出辐射源的个数 int transmitCount = WaveformWriting.GetCountOfMatchStr("begin_<points>", sourceStrOfTr); //如果已经存在了transmitter块,则先删除 if (MainWindow.setupStr.LastIndexOf("end_<transmitter>") != -1) { MainWindow.setupStr = MainWindow.setupStr.Remove(MainWindow.setupStr.IndexOf("begin_<transmitter>"), MainWindow.setupStr.IndexOf("end_<transmitter>") - MainWindow.setupStr.IndexOf("begin_<transmitter>") + 19); } int insertSiteOfTr = MainWindow.setupStr.LastIndexOf("end_<feature>") + 15;//15是end_<feature>\r\n后的第一个字符 string insertStr = SetupContent.transmitterStr1Ofsetup + "\r\n" + SetupContent.transmitterStr2Ofsetup + MainWindow.projectRealPath + "\\" + MainWindow.onlyProjectName + ".tx" + "\r\n" + SetupContent.transmitterStr3Ofsetup + transmitCount.ToString() + "\r\n" + SetupContent.transmitterStr4Ofsetup + "\r\n"; //将字符串插入到全局字符串setupStr中 MainWindow.setupStr = MainWindow.setupStr.Insert(insertSiteOfTr, insertStr); FileOperation.WriteFile(MainWindow.setupStr, MainWindow.mProjectFullName, false); //向工程树中添加结点信息 MainWindow.staticTreeView.Nodes[0].Nodes[0].Nodes[3].Nodes.Add(newTransmitterName_textBox2.Text); //将辐射源的信息存储到.setup.info文件中 FileOperation.WriteLineFile(SetupContent.transmitterIndeStr + " " + newTransmitterName_textBox2.Text, MainWindow.nodeInfoFullPath, true); //将辐射源和天线的匹配关系记录到.match文件中 FileOperation.WriteLineFile(SetupContent.transmitterIndeStr + " " + newTransmitterName_textBox2.Text + "*" + newTransmitterAntennaName_comboBox3.SelectedItem, MainWindow.relationOfAntAndWavePath, true); //将辐射源的信息存储到.waveinfo文件中 string transmitterInfoStr = SetupContent.transmitterStr1Ofsetup + " " + newTransmitterName_textBox2.Text + "\r\n" + newTransimtterReferencePlane_comboBox2.Text + "\r\n" + newTransmitterPower_textBox11.Text + "\r\n" + newTransmitterAntennaName_comboBox3.Text + "\r\n" + newTransmitterWaveformName_textBox1.Text + "\r\n" + newTransmitterAntennaRotationX_textBox4.Text + "\r\n" + newTransmitterAntennaRotationY_textBox6.Text + "\r\n" + newTransmitterAntennaRotationZ_textBox5.Text + "\r\n" + "END" + SetupContent.transmitterStr1Ofsetup + " " + newTransmitterName_textBox2.Text + "\r\n"; FileOperation.WriteFile(transmitterInfoStr, MainWindow.waveinfoFilePath, true); if (MainWindow.creatSuccMesDisp) { MessageBox.Show("\"" + newTransmitterName_textBox2.Text + "\"辐射源创建成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
private void newTerrainWindowOk_button1_Click(object sender, EventArgs e) { addTerrain = client.iGetTer((string)newTerrainName_comboBox1.SelectedItem); LogFileManager.ObjLog.info((string)newTerrainName_comboBox1.SelectedItem); //确保先创建工程。否则插入数据将会出错 if (MainWindow.mProjectFullName == null) { MessageBox.Show("请先创建一个工程之后再从本地添加地形!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); this.Close(); } else { //必须先选择地形,再单击确定 if ((string)newTerrainName_comboBox1.SelectedItem != "") { string t = addTerrain.path; //将经纬度存储到.setup.info文件中 FileOperation.WriteLineFile(SetupContent.longitudeIndeStr + " " + addTerrain.originX, MainWindow.nodeInfoFullPath, true); FileOperation.WriteLineFile(SetupContent.latitudeIndeStr + " " + addTerrain.originY, MainWindow.nodeInfoFullPath, true); if (File.Exists(t) == false) { MessageBox.Show("数据库中已不存在此地图", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } //查找begin_<project>后面的字符串temp string temp = StringFound.FoundBackStr("begin_<project>", MainWindow.setupStr, true); if (temp == null) { MessageBox.Show("程序内部发生错误!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } else { //查找begin_<project>后面的字符串temp string nodeNamesStr = FileOperation.ReadFile(MainWindow.nodeInfoFullPath); //若信息文件中已经添加了地形,再次添加时要从setup文件先删除原来的地形,从从工程树中删除原来的地形 if (nodeNamesStr.LastIndexOf("<terrain>") != -1) { DialogResult result = MessageBox.Show("您确定要替换原来添加的地形吗?", "提醒", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); if (result == DialogResult.OK) { if (!TerrainOperation.DeleteTerrain(nodeNamesStr)) { MessageBox.Show("对不起,程序内部发生错误,删除失败", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } MessageBox.Show("前一个地图已被替换", "提醒", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { return; } } //向全局字符串setupStr插入<global>段 int startPosiGlobal = MainWindow.setupStr.IndexOf("begin_<project>") + 15 + temp.Length + 3; string globalStr = SetupContent.terrainGlobalFixedStr1 + newTerrainLongtitude_textBox2.Text + "\r\n" + SetupContent.terrainGlobalFixedStr2 + newTerrainLatitude_textBox3.Text + "\r\n" + SetupContent.terrainGlobalFixedStr3 + "\r\n"; MainWindow.setupStr = MainWindow.setupStr.Insert(startPosiGlobal, globalStr); ////向全局字符串插入<studyarea>段 其中zmin zmax及地图顶点先设为默认值 int startPosiStudyArea = MainWindow.setupStr.IndexOf("FirstAvailableStudyAreaNumber") + 33; string studyAreaStr = SetupContent.terrainStudyAreaStr1 + "\r\n" + SetupContent.terrainStudyAreaStr2 + newTerrainLongtitude_textBox2.Text + "\r\n" + SetupContent.terrainGlobalFixedStr2 + newTerrainLatitude_textBox3.Text + "\r\n" + SetupContent.terrainStudyAreaStr3 + addTerrain.Zmin.ToString() + "\r\n" + SetupContent.terrainStudyAreaStr4 + addTerrain.Zmax.ToString() + "\r\n" + SetupContent.terrainStudyAreaStr5 + "\r\n" + addTerrain.Vertex1X + " " + addTerrain.Vertex1Y + " " + addTerrain.Vertex1Z + "\r\n" + addTerrain.Vertex2X + " " + addTerrain.Vertex2Y + " " + addTerrain.Vertex2Z + "\r\n" + addTerrain.Vertex3X + " " + addTerrain.Vertex3Y + " " + addTerrain.Vertex3Z + "\r\n" + addTerrain.Vertex4X + " " + addTerrain.Vertex4Y + " " + addTerrain.Vertex4Z + "\r\n" + SetupContent.terrainStudyAreaStr6 + "\r\n"; MainWindow.setupStr = MainWindow.setupStr.Insert(startPosiStudyArea, studyAreaStr); //向全局字符串插入<feature>段 int startPosiFeature = MainWindow.setupStr.IndexOf("end_<studyarea>") + 17; string featureStr = SetupContent.terrainFeatureFixedStr1 + "\r\n" + SetupContent.terrainFeatureFixedStr2 + "0" + "\r\n" + SetupContent.terrainFeatureFixedStr3 + "\r\n" + SetupContent.terrainFeatureFixedStr4 + MainWindow.projectRealPath + "\\" + (string)newTerrainName_comboBox1.SelectedItem + "\r\n" + SetupContent.terrainFeatureFixedStr5 + "\r\n"; MainWindow.setupStr = MainWindow.setupStr.Insert(startPosiFeature, featureStr); string terFileName = t.Substring(t.LastIndexOf('\\') + 1, t.Length - 1 - t.LastIndexOf('\\')); //将ter文件拷贝到工程目录下 FileCopyUI.FileCopy(addTerrain.path, MainWindow.projectRealPath + "\\" + terFileName); FileCopyUI.FileCopy(addTerrain.path + ".terinfo", MainWindow.projectRealPath + "\\" + terFileName + ".terinfo"); string terainStr = FileOperation.ReadFile(MainWindow.nodeInfoFullPath); if (terainStr.IndexOf(SetupContent.terrainIndeStr) != -1) { terainStr = terainStr.Remove(terainStr.IndexOf(SetupContent.terrainIndeStr), SetupContent.terrainIndeStr.Length + 2); FileOperation.WriteFile(terainStr, MainWindow.nodeInfoFullPath, false); } //将工程树的节点信息写到.info文件中 FileOperation.WriteLineFile(SetupContent.terrainIndeStr + " " + terFileName, MainWindow.nodeInfoFullPath, true); FileOperation.WriteFile(MainWindow.setupStr, MainWindow.mProjectFullName, false); MainWindow.staticTreeView.Nodes[0].Nodes[0].Nodes[0].Nodes.Add(terFileName); } } } this.Close(); }
//单击更改时执行此函数 public static bool TransmitterUpdateMenu(TreeNode currentNode) { //bool b = false; string trFilePath = MainWindow.projectRealPath + "\\" + MainWindow.onlyProjectName + ".tx"; //将Tr文件中的字符串保护起来 string trFileStrTemp = FileOperation.ReadFile(trFilePath); //将辐射源在tr文件中的位置保护起来 int initialTransmitterBlockSite = trFileStrTemp.IndexOf(SetupContent.transmitterStr1OfTr + " " + currentNode.Text + "\r\n"); //tx文件中原来辐射源的编号也要保存下来 string initTransmitterNum = GetTransmitterNumLine(currentNode.Text, trFileStrTemp); //保存info文件中的所有字符串 string transmitterNodeInfoTemp = FileOperation.ReadFile(MainWindow.nodeInfoFullPath); //保存辐射源在info文件中的位置信息 int initialTransmitterNodeSite = transmitterNodeInfoTemp.IndexOf(SetupContent.transmitterStr1Ofsetup + " " + currentNode.Text + "\r\n"); //保存waveinfo文件中有关辐射源的信息 string transmitterParStrTemp = FileOperation.ReadFile(MainWindow.waveinfoFilePath); NewTransmitterWindow newTransmitterWin = new NewTransmitterWindow(); //将原来辐射源设置的参数信息恢复到窗口中 if (!TransmitterDataRecoverOfProjectTreeView.RecoverTransmitterParOfWin(currentNode, transmitterParStrTemp, newTransmitterWin)) { MessageBox.Show("程序运行发生错误, 更改失败!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Stop); FileOperation.RecoverOldRevision(trFileStrTemp, trFilePath, transmitterParStrTemp, transmitterNodeInfoTemp); return(false); } //TransmitterDataRecoverOfProjectTreeView.RecoverTransmitterParOfWin(currentNode, transmitterParStrTemp, newTransmitterWin); //在单击确定之前应先删除需更改的辐射源的全部信息 if (!(TransmitterDelOfTrAndInfoFile(currentNode) && TransmitterDelOfWaveInfo(currentNode) && TransmitterUpdateOfSetup())) { MessageBox.Show("程序运行发生错误, 工程文件可能被破坏,更改失败!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Stop); FileOperation.RecoverOldRevision(trFileStrTemp, trFilePath, transmitterParStrTemp, transmitterNodeInfoTemp); return(false); } MainWindow.creatSuccMesDisp = false; MainWindow.newFuncSign = false; newTransmitterWin.Text = "更改辐射源"; newTransmitterWin.ShowDialog(); switch (newTransmitterWin.DialogResult) { case DialogResult.OK: //如果在更改过程中出现了中途返回的情况,则应把原来的信息写到相应的文件中 if (MainWindow.IsReturnMidwayInNewProcess) { //FileOperation.WriteFile(trFileStrTemp , trFilePath , false); //FileOperation.WriteFile(transmitterParStrTemp, MainWindow.waveinfoFilePath, false); //FileOperation.WriteFile(transmitterNodeInfoTemp, MainWindow.nodeInfoFullPath, false); FileOperation.RecoverOldRevision(trFileStrTemp, trFilePath, transmitterParStrTemp, transmitterNodeInfoTemp); //将”全局变量“置为初始值 MainWindow.IsReturnMidwayInNewProcess = false; return(false); } if (!trStrRecoverInitTransmitterNum(initTransmitterNum, initialTransmitterBlockSite, initialTransmitterNodeSite)) { MainWindow.staticTreeView.Nodes[0].Nodes[0].Nodes[3].LastNode.Remove(); MessageBox.Show("程序运行发生错误,更改操作失败!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Stop); //FileOperation.WriteFile(trFileStrTemp, trFilePath, false); //FileOperation.WriteFile(transmitterParStrTemp, MainWindow.waveinfoFilePath, false); //FileOperation.WriteFile(transmitterNodeInfoTemp, MainWindow.nodeInfoFullPath, false); FileOperation.RecoverOldRevision(trFileStrTemp, trFilePath, transmitterParStrTemp, transmitterNodeInfoTemp); return(false); } MainWindow.staticTreeView.SelectedNode.Text = MainWindow.staticTreeView.Nodes[0].Nodes[0].Nodes[3].LastNode.Text; MainWindow.staticTreeView.Nodes[0].Nodes[0].Nodes[3].LastNode.Remove(); return(true); //break; default: //FileOperation.WriteFile(trFileStrTemp , trFilePath , false); //FileOperation.WriteFile(transmitterParStrTemp, MainWindow.waveinfoFilePath, false); //FileOperation.WriteFile(transmitterNodeInfoTemp, MainWindow.nodeInfoFullPath, false); FileOperation.RecoverOldRevision(trFileStrTemp, trFilePath, transmitterParStrTemp, transmitterNodeInfoTemp); return(false); //break; } //return b; }
//单击更改时执行此方法 public static bool ReceiverUpdateMenu(TreeNode currentNode) { //bool b = false; string rxFilePath = MainWindow.projectRealPath + "\\" + MainWindow.onlyProjectName + ".rx"; //保存Tr文件中的字符串 string rxFileStrTemp = FileOperation.ReadFile(rxFilePath); string indStr = null; switch (currentNode.Parent.Text) { case "点状分布": indStr = SetupContent.pointReceiverOfRxStr0; break; case "区域分布": indStr = SetupContent.gridReceiverOfRxStr0; break; } //将接收机在rx文件中的位置保护起来 int initialReceiverBlockSite = rxFileStrTemp.IndexOf(indStr + " " + currentNode.Text + "\r\n"); //rx文件中原来接收机的编号也要保存下来 string initReceiverNum = GetReceiverNumLine(indStr, currentNode.Text, rxFileStrTemp); //保存info文件中的所有字符串 string receiverNodeInfoTemp = FileOperation.ReadFile(MainWindow.nodeInfoFullPath); //保存接收机在info文件中的位置信息 int initialReceiverNodeSite = receiverNodeInfoTemp.IndexOf(indStr + " " + currentNode.Text + "\r\n"); //保存waveinfo文件中有关接收机的信息 string receiverParStrTemp = FileOperation.ReadFile(MainWindow.waveinfoFilePath); NewReceiverWindow newReceiverWin = new NewReceiverWindow(); //将接收机原来的参数信息装载到窗口中 if (!ReceiverDataRecoverOfProjectTreeView.RecoverReceiverParOfWin(currentNode, receiverParStrTemp, newReceiverWin)) { MessageBox.Show("程序内部发生错误!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Stop); FileOperation.RecoverOldRevision(rxFileStrTemp, rxFilePath, receiverParStrTemp, receiverNodeInfoTemp); return(false); } //ReceiverDataRecoverOfProjectTreeView.RecoverReceiverParOfWin(currentNode, receiverParStrTemp, newReceiverWin); //在单击确定按钮之前应将需更改的接收机的信息从各个文件中删除 if (!(ReceiverDelOfRxAndInfoFile(currentNode) && ReceiverDelOfWaveInfo(currentNode) && ReceiverUpdateOfSetup())) { MessageBox.Show("程序内部发生错误!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Stop); FileOperation.RecoverOldRevision(rxFileStrTemp, rxFilePath, receiverParStrTemp, receiverNodeInfoTemp); return(false); } MainWindow.creatSuccMesDisp = false; MainWindow.newFuncSign = false; newReceiverWin.Text = "更改接收机"; newReceiverWin.ShowDialog(); switch (newReceiverWin.DialogResult) { case DialogResult.OK: if (MainWindow.IsReturnMidwayInNewProcess) { //FileOperation.WriteFile(rxFileStrTemp, rxFilePath, false); //FileOperation.WriteFile(receiverParStrTemp, MainWindow.waveinfoFilePath, false); //FileOperation.WriteFile(receiverNodeInfoTemp, MainWindow.nodeInfoFullPath, false); FileOperation.RecoverOldRevision(rxFileStrTemp, rxFilePath, receiverParStrTemp, receiverNodeInfoTemp); MainWindow.IsReturnMidwayInNewProcess = false; return(false); } if (!rxStrRecoverInitReceiverNum(currentNode, initReceiverNum, initialReceiverBlockSite, initialReceiverNodeSite)) { if (currentNode.Parent.Text.Equals("点状分布")) { MainWindow.staticTreeView.Nodes[0].Nodes[0].Nodes[4].Nodes[0].LastNode.Remove(); } else { MainWindow.staticTreeView.Nodes[0].Nodes[0].Nodes[4].Nodes[1].LastNode.Remove(); } MessageBox.Show("程序内部发生错误,更改操作失败!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Stop); FileOperation.RecoverOldRevision(rxFileStrTemp, rxFilePath, receiverParStrTemp, receiverNodeInfoTemp); //FileOperation.WriteFile(rxFileStrTemp, rxFilePath, false); //FileOperation.WriteFile(receiverParStrTemp, MainWindow.waveinfoFilePath, false); //FileOperation.WriteFile(receiverNodeInfoTemp, MainWindow.nodeInfoFullPath, false); return(false); } switch (currentNode.Parent.Text) { case "点状分布": MainWindow.staticTreeView.SelectedNode.Text = MainWindow.staticTreeView.Nodes[0].Nodes[0].Nodes[4].Nodes[0].LastNode.Text; MainWindow.staticTreeView.Nodes[0].Nodes[0].Nodes[4].Nodes[0].LastNode.Remove(); break; case "区域分布": MainWindow.staticTreeView.SelectedNode.Text = MainWindow.staticTreeView.Nodes[0].Nodes[0].Nodes[4].Nodes[1].LastNode.Text; MainWindow.staticTreeView.Nodes[0].Nodes[0].Nodes[4].Nodes[1].LastNode.Remove(); break; } return(true); //break; default: FileOperation.RecoverOldRevision(rxFileStrTemp, rxFilePath, receiverParStrTemp, receiverNodeInfoTemp); //FileOperation.WriteFile(rxFileStrTemp, rxFilePath, false); //FileOperation.WriteFile(receiverParStrTemp, MainWindow.waveinfoFilePath, false); //FileOperation.WriteFile(receiverNodeInfoTemp, MainWindow.nodeInfoFullPath, false); return(false); //break; } //b = true; //return b; }
private void newTerrainOk__Click(object sender, EventArgs e) { //确保先创建工程。否则插入数据将会出错 if (MainWindow.mProjectFullName == null) { //MessageBox.Show("请先创建一个工程之后再从本地添加地形!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); this.Close(); return; } else { //必须先浏览地形,再单击确定 if (openTerrainDialog.FileName != "") { //查找begin_<project>后面的字符串temp string temp = StringFound.FoundBackStr("begin_<project>", MainWindow.setupStr, true); if (temp == null) { MessageBox.Show("文件被破坏,产生错误错误!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } else { //从信息文件中读取信息 string nodeNamesStr = FileOperation.ReadFile(MainWindow.nodeInfoFullPath); //若信息文件中已经添加了地形,再次添加时要从setup文件先删除原来的地形,从从工程树中删除原来的地形 if (nodeNamesStr.LastIndexOf("<terrain>") != -1) { DialogResult result = MessageBox.Show("您确定要替换原来添加的地形吗?", "提醒", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); if (result == DialogResult.OK) { if (!TerrainOperation.DeleteTerrain(nodeNamesStr)) { MessageBox.Show("对不起,发生错误,删除失败", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } MessageBox.Show("前一个地图已被替换", "提醒", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { return; } } //向全局字符串setupStr插入<global>段 int startPosiGlobal = MainWindow.setupStr.IndexOf("begin_<project>") + 15 + temp.Length + 3; string globalStr = SetupContent.terrainGlobalFixedStr1 + longtitude_textBox1.Text + "\r\n" + SetupContent.terrainGlobalFixedStr2 + latitude_textBox3.Text + "\r\n" + SetupContent.terrainGlobalFixedStr3 + "\r\n"; MainWindow.setupStr = MainWindow.setupStr.Insert(startPosiGlobal, globalStr); //向全局字符串插入<studyarea>段 int startPosiStudyArea = MainWindow.setupStr.IndexOf("FirstAvailableStudyAreaNumber") + 33; string studyAreaStr = SetupContent.terrainStudyAreaStr1 + "\r\n" + SetupContent.terrainStudyAreaStr2 + longtitude_textBox1.Text + "\r\n" + SetupContent.terrainGlobalFixedStr2 + latitude_textBox3.Text + "\r\n" + SetupContent.terrainStudyAreaStr3 + terrainValueStr[2] + "\r\n" + SetupContent.terrainStudyAreaStr4 + terrainValueStr[3] + "\r\n" + SetupContent.terrainStudyAreaStr5 + "\r\n" + terrainValueStr[4] + "\r\n" + terrainValueStr[5] + "\r\n" + terrainValueStr[6] + "\r\n" + terrainValueStr[7] + "\r\n" + SetupContent.terrainStudyAreaStr6 + "\r\n"; MainWindow.setupStr = MainWindow.setupStr.Insert(startPosiStudyArea, studyAreaStr); //向全局字符串插入<feature>段 int startPosiFeature = MainWindow.setupStr.IndexOf("end_<studyarea>") + 17; string featureStr = SetupContent.terrainFeatureFixedStr1 + "\r\n" + SetupContent.terrainFeatureFixedStr2 + "0" + "\r\n" + SetupContent.terrainFeatureFixedStr3 + "\r\n" + SetupContent.terrainFeatureFixedStr4 + MainWindow.projectRealPath + "\\" + terrainname_textBox4.Text + "\r\n" + SetupContent.terrainFeatureFixedStr5 + "\r\n"; MainWindow.setupStr = MainWindow.setupStr.Insert(startPosiFeature, featureStr); string t = openTerrainDialog.FileName; string terFileName = t.Substring(t.LastIndexOf('\\') + 1, t.Length - 1 - t.LastIndexOf('\\')); //将ter文件拷贝到工程目录下 FileCopyUI.FileCopy(openTerrainDialog.FileName, MainWindow.projectRealPath + "\\" + terFileName); FileCopyUI.FileCopy(openTerrainDialog.FileName + ".terinfo", MainWindow.projectRealPath + "\\" + terFileName + ".terinfo"); //将工程树的节点信息写到.info文件中 FileOperation.WriteLineFile(SetupContent.terrainIndeStr + " " + terFileName, MainWindow.nodeInfoFullPath, true); FileOperation.WriteFile(MainWindow.setupStr, MainWindow.mProjectFullName, false); MainWindow.staticTreeView.Nodes[0].Nodes[0].Nodes[0].Nodes.Add(terFileName); } this.Close(); } else { MessageBox.Show("请您从本地添加地形!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }