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 }
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 }
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 }
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 }