public void MergeTestGSA_WithMerger() { var ls1 = new object[] { "PROP_SPR.4:{speckle_app_id:gh/a}", 1, "LSPxGeneral", "NO_RGB", "GENERAL", 0, 16, 0, 17, 0, 18, 0, 19, 0, 20, 0, 21, 0.21 }; var gwa1 = string.Join(GSAProxy.GwaDelimiter.ToString(), ls1.Select(l => l.ToString())); PrepareInterfacerForGwaToSpeckle <GSASpringProperty>(gwa1, "PROP_SPR", "gh/a"); //Call the ToSpeckle method, which just adds to the GSASenderObjects collection- GsaPropSprToSpeckle.ToSpeckle(new GsaPropSpr()); var existing = (StructuralSpringProperty)Initialiser.GsaKit.GSASenderObjects.Get <GSASpringProperty>().First().Value; var newToMerge = new StructuralSpringProperty() { DampingRatio = 1.5 }; var speckleTypes = SpeckleUtil.Helper.GetLoadedSpeckleTypes(); var mappingTypes = new List <Type>(); var assemblies = AppDomain.CurrentDomain.GetAssemblies().Where(a => a.GetTypes().Any(t => typeof(ISpeckleInitializer).IsAssignableFrom(t))).ToList(); var relevantAssemblies = assemblies.Where(a => a.FullName.Contains("GSA")); foreach (var assembly in relevantAssemblies) { foreach (var t in speckleTypes) { var methods = SpeckleUtil.Helper.GetExtensionMethods(assembly, t, "ToNative"); if (methods != null && methods.Count() > 0) { mappingTypes.Add(t); } if (t.BaseType != null) { if (!mappingTypes.Contains(t.BaseType)) { mappingTypes.Add(t.BaseType); } } } } var merger = new SpeckleObjectMerger(); merger.Initialise(mappingTypes); var resultingObject = merger.Merge(newToMerge, existing); }
public void MergeTestGSA() { var ls1 = new object[] { "PROP_SPR.4:{speckle_app_id:gh/a}", 1, "LSPxGeneral", "NO_RGB", "GENERAL", 0, 16, 0, 17, 0, 18, 0, 19, 0, 20, 0, 21, 0.21 }; var gwa1 = string.Join(GSAProxy.GwaDelimiter.ToString(), ls1.Select(l => l.ToString())); PrepareInterfacerForGwaToSpeckle <GSASpringProperty>(gwa1, "PROP_SPR", "gh/a"); //Call the ToSpeckle method, which just adds to the GSASenderObjects collection GsaPropSprToSpeckle.ToSpeckle(new GsaPropSpr()); var existing = (StructuralSpringProperty)Initialiser.GsaKit.GSASenderObjects.Get <GSASpringProperty>().First().Value; var newToMerge = new StructuralSpringProperty() { DampingRatio = 1.5 }; var m = SetupGSAMerger(); var resultingObject = m.Map(newToMerge, existing); }