public GsmXmlReader getParameters() { XmlNode Parameters = xmlDoc.SelectSingleNode("/Symbol/ParamSection/Parameters"); parametersList = Parameters.ChildNodes; XmlNode PreviousNode = null; foreach (XmlNode parameter in parametersList) { if (parameter != null && parameter.Name != "#comment") { XmlAttribute param_name = parameter.Attributes["Name"]; string p_name = param_name.Value; string p_type = parameter.Name; string p_label = getParamLabelFromXml(parameter); XmlNode ParameterValue = parameter.LastChild; string p_value = ParameterValue.InnerText.Replace('"', ' ').Trim(); string p_inner_xml = parameter.InnerXml.ToString(); var parameterContainer = new GsmXmlParameter(p_name, p_type, p_label, p_value, p_inner_xml); if (PreviousNode != null) { parameterContainer.setXmlPosition(PreviousNode); } xml_parameters[param_name.Value] = parameterContainer; PreviousNode = parameter; } } return(this); }
public GsmXmlReader insertParameter2(GsmXmlParameter parameter) { if (parameter.prev_xml_node != null) { XmlElement xmlElement = xmlDoc.CreateElement(parameter.parameter_type); xmlElement.SetAttribute("Name", parameter.parameter_name); xmlElement.InnerXml = parameter.inner_xml; var ParameterList = xmlElement.ChildNodes; //XmlCDataSection CData = xmlDoc.CreateCDataSection(text); //Script3dNode.InnerText = ""; //Script3dNode.AppendChild(CData); foreach (XmlNode paramDescrElement in ParameterList) { if (paramDescrElement != null && paramDescrElement.Name == "Description") { XmlCDataSection CData = xmlDoc.CreateCDataSection("\"" + parameter.parameter_label + "\""); paramDescrElement.InnerText = ""; paramDescrElement.AppendChild(CData); } if (paramDescrElement != null && paramDescrElement.Name == "Value") { paramDescrElement.InnerText = parameter.parameter_value; } } XmlNode Parameters = xmlDoc.SelectSingleNode("/Symbol/ParamSection/Parameters"); if (!added_parameters.ContainsKey(parameter.parameter_name)) { Parameters.InsertAfter(xmlElement, parameter.prev_xml_node); added_parameters[parameter.parameter_name] = 1; MessageBox.Show("Added " + parameter.parameter_name); } } return(this); }
public GsmXmlReader insertParameter(GsmXmlParameter parameter) { if (parameter.prev_xml_node != null) { XmlElement xmlElement = xmlDoc.CreateElement(parameter.parameter_type); xmlElement.SetAttribute("Name", parameter.parameter_name); xmlElement.InnerXml = parameter.inner_xml; XmlNode Parameters = xmlDoc.SelectSingleNode("/Symbol/ParamSection/Parameters"); if (!added_parameters.ContainsKey(parameter.parameter_name)) { Parameters.InsertAfter(xmlElement, parameter.prev_xml_node); added_parameters[parameter.parameter_name] = 1; MessageBox.Show("Added " + parameter.parameter_name); } } return(this); }
public void mix_files() { var i = 0; bool foundMain = false; string elementsScript3D = ""; script3dList.Clear(); materials.Clear(); foreach (DataGridViewRow r in file_list_table.Rows) { if (r.Cells["type_list"].Value != null) { string fileName = r.Cells["file_name"].Value.ToString(); string filePath = currentXmlFolder + "\\" + fileName; if (r.Cells["type_list"].Value.ToString() == "Main") { mainFileIndex = i; foundMain = true; mainScript3D = get3dScript2(filePath, i) + "\r\nEND"; } else if (fileName.IndexOf("_mixed") < 0) { string indexName = Path.GetFileNameWithoutExtension(fileName); elementsScript3D += "\r\n\"" + indexName + "\":\r\n"; script3dList[indexName] = get3dScript2(filePath, i); materials[indexName] = r.Cells["material"].Value.ToString(); foreach (var parameter in ParamList[mainFileIndex]) { if (parameter.Key == "materialAttribute_2") { output(parameter.Key.ToString()); GsmXmlParameter matParameter1 = new GsmXmlParameter("mat_" + materials[indexName], "Material", "mat_" + materials[indexName], "20", parameter.Value.inner_xml); matParameter1.prev_xml_node = mainXmlDoc.getSimilarParameterXmlNode(parameter.Value.prev_xml_node); mainXmlDoc.insertParameter2(matParameter1); } //if (!mainParamList.ContainsKey(parameter.Key)) //{ // console_output.Text += "key " + parameter.Key + "doesn't exist\r\n"; // missingParamList[parameter.Key] = parameter.Value; // parameter.Value.prev_xml_node = mainXmlDoc.getSimilarParameterXmlNode(parameter.Value.prev_xml_node); // mainXmlDoc.insertParameter(parameter.Value); // //console_output.Text += "value is " + parameter.Value.inner_xml + "doesn't exist\r\n"; //} } elementsScript3D += script3dList[indexName].Replace("hotspot 0, 0 ,0, 1", ""); elementsScript3D += "\r\nRETURN\r\n"; //text3dScript += "\"Routine " + i.ToString() + "\":\r\n"; //text3dScript += get3dScript(i).Replace("hotspot 0, 0 ,0, 1", ""); //text3dScript += "\r\nRETURN\r\n"; } } i++; } int nFiles = i; int cc = 0; groupList.Clear(); string[] elements = script3dList.Keys.ToArray(); if (mainScript3D != null) { output("Make some grouping"); foreach (Match m in Regex.Matches(mainScript3D, "\"(group(.*?))\"\r\n")) { if (m.Index > nFiles) { groupList[elements[i + cc]] = m.Value.ToString(); output(m.Value.ToString()); cc++; } } output("done grouping"); } if (!foundMain) { MessageBox.Show("No main file selected!. Select a file to be main!"); } else { string pattern = "(.*?)(?:(endgroup))"; //var mm = false; foreach (KeyValuePair <string, string> scriptus3d in script3dList) { //output(scriptus3d.Key); //mm = Regex.IsMatch(mainScript3D, scriptus3d.Key+ pattern, RegexOptions.Singleline); Regex rgx = new Regex(scriptus3d.Key + pattern, RegexOptions.Singleline); mainScript3D = rgx.Replace(mainScript3D, "gosub \"" + scriptus3d.Key + "\"\r\nendgroup\r\n"); //if (mm) //{ // var result = Regex.Match(mainScript3D, scriptus3d.Key + pattern, RegexOptions.Singleline).Value; // mainScript3D= //} } int p = 0; foreach (Match m in Regex.Matches(mainScript3D, @"creategroupwithmaterial\s\(\""group_[A-z0-9]+\""\,[\s]+\d+\,[\s]+\d+,[\s]+(\d+)\)")) { string routineName = elements[p].ToString(); string materialName = materials[routineName]; string originalString = (m.Value.ToString()); string toReplace = originalString.Replace((m.Groups[1].ToString()), "mat_" + materialName); mainScript3D = mainScript3D.Replace(m.Value.ToString(), toReplace); p++; } //var mm = Regex.IsMatch(mainScript3D, "Rhino_Object_1(.*?)(?:(\r\n){ 2,}| (endgroup) |$)", RegexOptions.Singleline); // var mm = Regex.IsMatch(mainScript3D, @"\Rhino_Object_1(.*?)(?:(\r\n){ 2,}| (endgroup) |$)", RegexOptions.Singleline); //MessageBox.Show(mm.ToString()); mainScript3D = mainScript3D.Replace(" call \"", ""); string fullText = mainScript3D + elementsScript3D; fullText = fullText.Replace("rh_nurbsbody_smoothness = rh_nurbsbodySmoothnessLevel[gs_iSmoothnessLevel]", "rh_surface_mat = materialAttribute_1\r\nrh_show_edges_3d=0\r\nrh_smoothe_edges_3d=0\r\nrh_show_edges_2d=0\r\nrh_nurbsbody_smoothness=10\r\nrh_show_hotlines_3d=0"); fullText = fullText.Replace("xform rh_xform[1][1]", "dim rh_xform[3][3]\r\nrh_xform = tmp_rh_xform\r\nxform rh_xform[1][1]"); mainXmlDoc.set3dScript(fullText); string ui_path = Environment.CurrentDirectory + @"\files\interface_sample.txt"; output("the folder is " + ui_path); string uiScriptText = System.IO.File.ReadAllText(ui_path); mainXmlDoc.setInterface(uiScriptText); string newPath = mainXmlDoc.filePath.Replace(".xml", "_mixed.xml"); mainXmlDoc.saveXml(newPath); convertToGsm(newPath, newPath.Replace("xml", "gsm")); MessageBox.Show(newPath + " was succesfully created and mixed"); } }