private Dictionary <string, Dictionary <string, List <SpeckleObject> > > CreateStreamBuckets() { var buckets = new Dictionary <string, Dictionary <string, List <SpeckleObject> > >(); var currentObjects = GSA.GetAllConvertedGsaObjectsByType(); foreach (var t in currentObjects.Keys) { //var bucketName = GSA.App.Settings.SeparateStreams ? StreamMap[kvp.Key] : "Full Model"; var bucketName = (string)t.GetAttribute("Stream"); foreach (IGSASpeckleContainer obj in currentObjects[t]) { if (GSA.App.LocalSettings.SendOnlyMeaningfulNodes) { if (obj.GetType().Name == "GSANode" && !(bool)obj.GetType().GetField("ForceSend").GetValue(obj)) { continue; } } var insideVal = (SpeckleObject)obj.SpeckleObject; insideVal.GenerateHash(); if (!buckets.ContainsKey(bucketName)) { buckets[bucketName] = new Dictionary <string, List <SpeckleObject> >(); } if (buckets[bucketName].ContainsKey(insideVal.GetType().Name)) { buckets[bucketName][insideVal.GetType().Name].Add(insideVal); } else { buckets[bucketName][insideVal.GetType().Name] = new List <SpeckleObject>() { insideVal }; } } } return(buckets); }
private Dictionary <string, Dictionary <string, List <object> > > CreateStreamBuckets() { var streamBuckets = new Dictionary <string, Dictionary <string, List <object> > >(); var currentObjects = GSA.GetAllConvertedGsaObjectsByType(); foreach (var kvp in currentObjects) { var targetStream = GSA.Settings.SeparateStreams ? StreamMap[kvp.Key] : "Full Model"; foreach (object obj in kvp.Value) { if (GSA.Settings.SendOnlyMeaningfulNodes) { if (obj.GetType().Name == "GSANode" && !(bool)obj.GetType().GetField("ForceSend").GetValue(obj)) { continue; } } object insideVal = obj.GetType().GetProperty("Value").GetValue(obj); ((SpeckleObject)insideVal).GenerateHash(); if (!streamBuckets.ContainsKey(targetStream)) { streamBuckets[targetStream] = new Dictionary <string, List <object> >(); } if (streamBuckets[targetStream].ContainsKey(insideVal.GetType().Name)) { streamBuckets[targetStream][insideVal.GetType().Name].Add(insideVal); } else { streamBuckets[targetStream][insideVal.GetType().Name] = new List <object>() { insideVal }; } } } return(streamBuckets); }