Esempio n. 1
0
        public static SpeckleObject ToSpeckle(this GSA2DElementMesh dummyObject)
        {
            var meshes = new List <GSA2DElementMesh>();

            // Perform mesh merging
            var uniqueMembers = new List <string>(Initialiser.GSASenderObjects.Get <GSA2DElement>().Select(x => (x as GSA2DElement).Member).Where(m => Convert.ToInt32(m) > 0).Distinct());

            //This loop has been left as serial for now, considering the fact that the sender objects are retrieved and removed-from with each iteration
            foreach (var member in uniqueMembers)
            {
                try
                {
                    var all2dElements         = Initialiser.GSASenderObjects.Get <GSA2DElement>();
                    var matching2dElementList = all2dElements.Where(x => (x as GSA2DElement).Member == member).Cast <GSA2DElement>().ToList();
                    var mesh = new GSA2DElementMesh()
                    {
                        GSAId = Convert.ToInt32(member)
                    };
                    mesh.ParseGWACommand(matching2dElementList);
                    meshes.Add(mesh);

                    Initialiser.GSASenderObjects.RemoveAll(matching2dElementList);
                }
                catch { }
            }

            Initialiser.GSASenderObjects.AddRange(meshes);

            return(new SpeckleNull()); // Return null because ToSpeckle method for GSA2DElement will handle this change
        }
Esempio n. 2
0
        public static SpeckleObject ToSpeckle(this GSA2DElementMesh dummyObject)
        {
            var meshes   = new List <GSA2DElementMesh>();
            var typeName = dummyObject.GetType().Name;

            // Perform mesh merging
            var uniqueMembers = Initialiser.GsaKit.GSASenderObjects.Get <GSA2DElement>().Select(x => x.Member).Where(m => m > 0).Distinct().ToList();

            //This loop has been left as serial for now, considering the fact that the sender objects are retrieved and removed-from with each iteration
            foreach (var member in uniqueMembers)
            {
                try
                {
                    var all2dElements         = Initialiser.GsaKit.GSASenderObjects.Get <GSA2DElement>();
                    var matching2dElementList = all2dElements.Where(x => x.Member == member).Cast <GSA2DElement>().ToList();
                    var mesh = new GSA2DElementMesh()
                    {
                        GSAId = Convert.ToInt32(member)
                    };
                    mesh.ParseGWACommand(matching2dElementList);
                    meshes.Add(mesh);

                    Initialiser.GsaKit.GSASenderObjects.RemoveAll(matching2dElementList);
                }
                catch (Exception ex)
                {
                    Initialiser.AppResources.Messenger.CacheMessage(MessageIntent.Display, MessageLevel.Error, typeName, member.ToString());
                    Initialiser.AppResources.Messenger.CacheMessage(MessageIntent.TechnicalLog, MessageLevel.Error, ex, typeName, member.ToString());
                }
            }

            Initialiser.GsaKit.GSASenderObjects.AddRange(meshes);

            return(new SpeckleNull()); // Return null because ToSpeckle method for GSA2DElement will handle this change
        }
Esempio n. 3
0
        public static SpeckleObject ToSpeckle(this GSA2DElementMesh dummyObject)
        {
            if (!Initialiser.GSASenderObjects.ContainsKey(typeof(GSA2DElementMesh)))
            {
                Initialiser.GSASenderObjects[typeof(GSA2DElementMesh)] = new List <object>();
            }

            var meshes = new List <GSA2DElementMesh>();

            // Perform mesh merging
            var uniqueMembers = new List <string>(Initialiser.GSASenderObjects[typeof(GSA2DElement)].Select(x => (x as GSA2DElement).Member).Where(m => Convert.ToInt32(m) > 0).Distinct());

            foreach (var member in uniqueMembers)
            {
                try
                {
                    var elementList = Initialiser.GSASenderObjects[typeof(GSA2DElement)].Where(x => (x as GSA2DElement).Member == member).Cast <GSA2DElement>().ToList();
                    var mesh        = new GSA2DElementMesh()
                    {
                        GSAId = Convert.ToInt32(member)
                    };
                    mesh.ParseGWACommand(elementList);
                    meshes.Add(mesh);

                    Initialiser.GSASenderObjects[typeof(GSA2DElement)].RemoveAll(x => elementList.Contains(x));
                }
                catch { }
            }

            Initialiser.GSASenderObjects[typeof(GSA2DElementMesh)].AddRange(meshes);

            return(new SpeckleNull()); // Return null because ToSpeckle method for GSA2DElement will handle this change
        }
Esempio n. 4
0
        public static SpeckleObject ToSpeckle(this GSA2DElementMesh dummyObject)
        {
            var settings = Initialiser.AppResources.Settings;

            var anyElement2dResults = settings.ResultTypes != null && settings.ResultTypes.Any(rt => rt.ToString().ToLower().Contains("2d"));

            //Don't amalgamate into a mesh if embedded results are chosen and there actually are results to embed
            if (settings.TargetLayer == GSATargetLayer.Analysis &&
                (settings.StreamSendConfig == StreamContentConfig.ModelWithEmbeddedResults) &&
                anyElement2dResults)
            {
                return(new SpeckleNull());
            }

            var meshes   = new List <GSA2DElementMesh>();
            var typeName = dummyObject.GetType().Name;
            var keyword  = dummyObject.GetGSAKeyword();

            var all2dElements = Initialiser.GsaKit.GSASenderObjects.Get <GSA2DElement>();

            var uniqueMembers = all2dElements.Select(x => x.Member).Where(m => m > 0).Distinct().OrderBy(m => m).ToList();

            // Perform mesh merging
            //This loop has been left as serial for now, considering the fact that the sender objects are retrieved and removed-from with each iteration
            foreach (var member in uniqueMembers)
            {
                try
                {
                    var matching2dElementList = all2dElements.Where(x => x.Member == member).Cast <GSA2DElement>().OrderBy(e => e.GSAId).ToList();
                    var mesh = new GSA2DElementMesh()
                    {
                        GSAId = Convert.ToInt32(member)
                    };
                    mesh.ParseGWACommand(matching2dElementList);
                    meshes.Add(mesh);

                    Initialiser.GsaKit.GSASenderObjects.RemoveAll(matching2dElementList);
                }
                catch (Exception ex)
                {
                    Initialiser.AppResources.Messenger.Message(MessageIntent.TechnicalLog, MessageLevel.Error, ex,
                                                               "Keyword=" + keyword, "Index=" + member);
                }
            }

            if (meshes.Count() > 0)
            {
                Initialiser.GsaKit.GSASenderObjects.AddRange(meshes);
            }

            return(new SpeckleNull()); // Return null because ToSpeckle method for GSA2DElement will handle this change
        }