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);
        }
示例#2
0
        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);
        }