Example #1
0
        static void Main(string[] args)
        {
            string appDataPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
            string packagePath = appDataPath + "\\" + "Dynamo" + "\\" + "Dynamo Revit" + "\\" + "2.1" + "\\" + "packages";

            // DYNAMO PACKAGES PARSE
            ParseDYF      dyfObj = new ParseDYF();
            List <string> paths  = dyfObj.GetDyfsInDir(packagePath);

            dyfObj.ExportCSV();

            // DYNAMO GRAPH PARSE
            ParseJSON jsonObj = new ParseJSON();

            jsonObj.ParseJSONs(dyfObj);
            Console.ReadKey();

            GraphDataParse.ReadGraphCSV();
        }
Example #2
0
        public void ParseJSONs(ParseDYF dyfObj)
        {
            // DEFINE GLOBALS
            GraphDataParse           csvParser           = new GraphDataParse();
            NodeDataContainer        nodeDataContainer   = new NodeDataContainer();
            GraphDataParseFeaturized csvParserFeaturized = new GraphDataParseFeaturized();

            onsole.WriteLine("Enter Directory Path"); //Prompt user to enter directory to search for files
            string dirPath = Console.ReadLine();      //Read user input

            //string dirPath = "C:\\Users\\pmitev\\Desktop\\graphs";
            string[] fileEntries = Directory.GetFiles(dirPath); //Get all the files of the input directory

            foreach (var filepath in fileEntries)
            {
                Console.WriteLine(filepath);

                using (StreamReader reader = File.OpenText(filepath))
                {
                    // Read JSON file, and get a JToken from it for iterating
                    try
                    {
                        JObject jObject         = (JObject)JToken.ReadFrom(new JsonTextReader(reader));
                        JToken  nodeObject      = jObject["Nodes"];
                        JToken  connectorObject = jObject["Connectors"];

                        //Define Dictionaries for the node and the In / Out
                        Dictionary <string, string> NodeDictionary = new Dictionary <string, string>();
                        Dictionary <string, string> IODictionary   = new Dictionary <string, string>();

                        //Create dictionary for ID and node name
                        foreach (var node in nodeObject)
                        {
                            string stringnodeID   = node["Id"].ToString();
                            string stringnodename = "NONE";

                            try
                            {
                                stringnodename = node["FunctionSignature"].ToString();
                                Console.WriteLine(stringnodename);
                            }
                            catch
                            {
                                Console.WriteLine("MISSING FUNCTION SIGNATURE");
                            }

                            if (stringnodename != "NONE")
                            {
                                NodeDictionary.Add(stringnodeID, stringnodename);


                                JToken outputObject = node["Outputs"];

                                foreach (var output in outputObject)
                                {
                                    string outputID = output["Id"].ToString();
                                    IODictionary.Add(outputID, stringnodeID);
                                }

                                JToken inputObject = node["Inputs"];

                                foreach (var inputs in inputObject)
                                {
                                    string inputID = inputs["Id"].ToString();
                                    IODictionary.Add(inputID, stringnodeID);
                                }

                                //Console.WriteLine(IODictionary);
                            }
                        }

                        foreach (var connector in connectorObject)
                        {
                            string inputID  = connector["Start"].ToString();
                            string outputID = connector["End"].ToString();

                            try
                            {
                                string NodeAID = IODictionary[inputID];
                                string NodeBID = IODictionary[outputID];

                                string NodeASig = NodeDictionary[NodeAID];
                                string NodeBSig = NodeDictionary[NodeBID];


                                if (dyfObj.customPackageMappings.Keys.Contains(NodeASig))
                                {
                                    var result = dyfObj.customPackageMappings[NodeASig];
                                    NodeASig = result;
                                }

                                if (dyfObj.customPackageMappings.Keys.Contains(NodeBSig))
                                {
                                    var result = dyfObj.customPackageMappings[NodeBSig];
                                    NodeBSig = result;
                                }

                                if (nodeDataContainer.DataModels.Count > 0)
                                {
                                    IEnumerable <NodeDataModel> existingRecords = from record in nodeDataContainer.DataModels
                                                                                  where record.NodeAId == NodeAID
                                                                                  select record;

                                    // CHECK IF NODE HAS BEEN ADDED TO RECORD
                                    if (existingRecords.Any())
                                    {
                                        NodeDataModel exisingRecord = existingRecords.First();
                                        exisingRecord.TotalConnectionsCount = +1;

                                        if (exisingRecord.NodeBId != NodeBID)
                                        {
                                            exisingRecord.UniqueConnectionsCount = +1;
                                        }
                                    }
                                    else
                                    {
                                    }
                                }
                                else
                                {
                                    NodeDataModel newModel = NodeDataModel.CreateNewDataModel(NodeASig, NodeBSig, NodeBID, NodeAID);
                                    nodeDataContainer.AppendToDataContainer(newModel);
                                }

                                // ADD TO CSV
                                NodeDataModel.ParseNodeDataModels(DataModels);
                                csvParser.AppendToCsv(NodeASig, NodeBSig, NodeAID, NodeBID);
                            }
                            catch (Exception) {}
                        }
                    }
                    catch
                    {
                        Console.WriteLine("NOT JSON");
                    }

                    // WRIE TO CSV
                    csvParser.ExportCSV();
                    Console.WriteLine("EXPORT COMPLETE");
                }
            }
        }