private static DataStorage GetSettingsDataStorage(Document doc) { // Retrieve all data storages from project FilteredElementCollector collector = new FilteredElementCollector(doc); var dataStorages = collector.OfClass(typeof(DataStorage)); // Find setting data storage foreach (DataStorage dataStorage in dataStorages) { Entity settingIdEntity = dataStorage.GetEntity(DSUniqueSchemaClientsStorage.GetSchema()); if (!settingIdEntity.IsValid()) { continue; } var id = settingIdEntity.Get <Guid>("Id"); if (!id.Equals(ID)) { continue; } return(dataStorage); } return(null); }
/// <summary> /// Writes the clients to the current document. /// </summary> /// <param name="doc"></param> /// <param name="wrap"></param> public static void WriteClients(Document doc, SpeckleClientsWrapper wrap) { var ds = GetSettingsDataStorage(doc); if (ds == null) { ds = DataStorage.Create(doc); } Entity speckleClientsEntity = new Entity(SpeckleClientsSchema.GetSchema()); speckleClientsEntity.Set("clients", wrap.GetStringList() as IList <string>); Entity idEntity = new Entity(DSUniqueSchemaClientsStorage.GetSchema()); idEntity.Set("Id", ID); ds.SetEntity(idEntity); ds.SetEntity(speckleClientsEntity); }