Esempio n. 1
0
        //Sending to Speckle, search through a
        public static SpeckleObject ToSpeckle(this GSA0DSpring dummyObject)
        {
            var typeName       = dummyObject.GetType().Name;
            var newSpringLines = ToSpeckleBase <GSA0DSpring>();
            var newNodeLines   = ToSpeckleBase <GSANode>();
            var newLines       = new List <Tuple <int, string> >();

            foreach (var k in newSpringLines.Keys)
            {
                newLines.Add(new Tuple <int, string>(k, newSpringLines[k]));
            }
            foreach (var k in newNodeLines.Keys)
            {
                newLines.Add(new Tuple <int, string>(k, newNodeLines[k]));
            }

            var springsLock = new object();
            var springs     = new List <GSA0DSpring>();

            var nodes = Initialiser.GsaKit.GSASenderObjects.Get <GSANode>();

            foreach (var p in newLines.Select(nl => nl.Item2))
            {
                var pPieces = p.ListSplit(Initialiser.AppResources.Proxy.GwaDelimiter);
                if (pPieces[4] == "GRD_SPRING")
                {
                    var gsaId  = pPieces[1];
                    var spring = new GSA0DSpring()
                    {
                        GWACommand = p
                    };
                    try
                    {
                        spring.ParseGWACommand(nodes);
                        lock (springsLock)
                        {
                            springs.Add(spring);
                        }
                    }
                    catch (Exception ex)
                    {
                        Initialiser.AppResources.Messenger.CacheMessage(MessageIntent.Display, MessageLevel.Error, typeName, gsaId);
                        Initialiser.AppResources.Messenger.CacheMessage(MessageIntent.TechnicalLog, MessageLevel.Error, ex, typeName, gsaId);
                    }
                }
            }

            Initialiser.GsaKit.GSASenderObjects.AddRange(springs);

            return((springs.Count() > 0) ? new SpeckleObject() : new SpeckleNull());
        }
        //Sending to Speckle, search through a
        public static SpeckleObject ToSpeckle(this GSA0DSpring dummyObject)
        {
            var newSpringLines = ToSpeckleBase <GSA0DSpring>();
            var newNodeLines   = ToSpeckleBase <GSANode>();
            var newLines       = new List <Tuple <int, string> >();

            foreach (var k in newSpringLines.Keys)
            {
                newLines.Add(new Tuple <int, string>(k, newSpringLines[k]));
            }
            foreach (var k in newNodeLines.Keys)
            {
                newLines.Add(new Tuple <int, string>(k, newNodeLines[k]));
            }

            var springsLock = new object();
            var springs     = new List <GSA0DSpring>();

            var nodes = Initialiser.GSASenderObjects.Get <GSANode>();

            Parallel.ForEach(newLines.Select(nl => nl.Item2), p =>
            {
                var pPieces = p.ListSplit("\t");
                if (pPieces[4] == "GRD_SPRING")
                {
                    var spring = new GSA0DSpring()
                    {
                        GWACommand = p
                    };
                    spring.ParseGWACommand(nodes);
                    lock (springsLock)
                    {
                        springs.Add(spring);
                    }
                }
            });

            Initialiser.GSASenderObjects.AddRange(springs);

            return((springs.Count() > 0) ? new SpeckleObject() : new SpeckleNull());
        }