コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
 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);
 }
コード例 #4
0
ファイル: Form2.cs プロジェクト: haidubogdan/Gsm-To-Xml-C-
        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");
            }
        }