Esempio n. 1
0
        public static bool SaveInternal(string targetFilePath, CSharpCommonGraph.CommonGraph cg)
        {
            // Create the xml document to write to.
            var document = new XmlDocument();

            document.CreateXmlDeclaration("1.0", null, null);
            document.AppendChild(document.CreateElement("Workspace"));

            // Utils.SetDocumentXmlPath(document, targetFilePath);

            if (!PopulateXmlDocument(document, cg))
            {
                return(false);
            }

            try
            {
                document.Save(targetFilePath);
            }
            catch (IOException)
            {
                return(false);
            }


            return(true);
        }
Esempio n. 2
0
        static void Main(string[] args)
        {
            Console.WriteLine("hello!");

            try
            {
                var    path = args[0];
                string dest = path.Replace(Path.GetExtension(path), "_Generated.ghx");
                if (args.Length > 1)
                {
                    dest = args[1];
                }

                CSharpCommonGraph.CommonGraph graphFromFile = DeserializeCG(path);

                Console.WriteLine("now attempting to convert back to a new .gh");

                GH_FileComposer composer = new GH_FileComposer(graphFromFile);
                composer.SaveFile(dest);
                // Console.ReadKey();
            }


            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                Console.WriteLine(e.StackTrace);
            }
        }
Esempio n. 3
0
        public static bool PopulateXmlDocument(XmlDocument xmlDoc, CSharpCommonGraph.CommonGraph cg)
        {
            try
            {
                //TODO read this stuff from the metadata from the cg
                var root = xmlDoc.DocumentElement;
                root.SetAttribute("Version", ("0.8.3.1212"));
                root.SetAttribute("X", 0.ToString(CultureInfo.InvariantCulture));
                root.SetAttribute("Y", 0.ToString(CultureInfo.InvariantCulture));
                root.SetAttribute("zoom", 1.0.ToString(CultureInfo.InvariantCulture));
                root.SetAttribute("Home", "a diff file");
                root.SetAttribute("Description", "a diff");
                root.SetAttribute("RunType", "Manual");
                root.SetAttribute("RunPeriod", "1000");
                root.SetAttribute("HasRunWithoutCrash", "false");


                var elementList = xmlDoc.CreateElement("Elements");
                //write the root element
                root.AppendChild(elementList);

                foreach (var dynEl in cg.Nodes.Select(el => el.MetaData.Inspect))
                {
                    var doc = new XmlDocument();
                    doc.LoadXml(dynEl);

                    //necessary for crossing XmlDocument contexts
                    XmlNode importNode = elementList.OwnerDocument.ImportNode(doc.DocumentElement, true);

                    elementList.AppendChild(importNode);
                }


                //write only the output connectors
                var connectorList = xmlDoc.CreateElement("Connectors");
                //write the root element
                root.AppendChild(connectorList);

                foreach (var el in cg.Nodes)
                {
                    if (el.InstanceGuid == "e4444840-eaab-4092-92da-a5d401ba077a")
                    {
                    }
                    foreach (var port in el.Ports.Where(x => x.MetaData.Inspect.Contains("start")).ToList())
                    {
                        foreach (
                            var edge in cg.Edges.Where(edge => edge.SrcGuid.Contains(port.InstanceGuid.Split('_').First())).ToList())
                        {
                            var connector = xmlDoc.CreateElement("Dynamo.Models.ConnectorModel");
                            connectorList.AppendChild(connector);
                            connector.SetAttribute("start", edge.SrcGuid.Split('_').First());
                            connector.SetAttribute("start_index", edge.SrcGuid.Split('_').ToList()[1].Replace("OUT", ""));
                            connector.SetAttribute("end", edge.DestGuid.Split('_').First());
                            connector.SetAttribute("end_index", edge.DestGuid.Split('_').ToList()[1].Replace("IN", ""));

                            if (port.MetaData.Inspect == "end")
                            {
                                connector.SetAttribute("portType", "0");
                            }
                        }
                    }
                }

                //save the annotation

                /* var annotationList = xmlDoc.CreateElement("Annotations");
                 * root.AppendChild(annotationList);
                 * foreach (var n in annotations)
                 * {
                 *   var annotation = n.Serialize(xmlDoc, SaveContext.File);
                 *   annotationList.AppendChild(annotation);
                 * }
                 *
                 */
                return(true);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Console.WriteLine(ex.StackTrace);
                return(false);
            }
        }