public static void SetOLF(this UIApplication app, string text) //ExternalCommandData commandData, //ref string message, //ElementSet elements) { var Factors = Enum.GetNames(typeof(OccLoadFactor)).ToList(); if (Factors.Any(x => x == "A" + text)) { int numb = Factors.IndexOf("A" + text); Document doc = app.ActiveUIDocument.Document; Selection sel = app.ActiveUIDocument.Selection; ISelectionFilter selectionFilter = new RoomSelectionFilter(); Reference ChangedObject = sel.PickObject(ObjectType.Element, selectionFilter); Room r = doc.GetElement(ChangedObject.ElementId) as Room; NeuralNetwork net = OLFNetwork.GetNetwork(CMDLibrary.WriteNull); Sample s = new Sample(CC_Library.Datatypes.Datatype.OccupantLoadFactor); s.TextInput = r.Name; s.DesiredOutput = new double[net.Layers.Last().Biases.Count()]; s.DesiredOutput[numb] = 1; OLFNetwork.Propogate(CMDLibrary.WriteNull); using (Transaction t = new Transaction(doc, "Set Param")) { t.Start(); Element e = r as Element; e.Set(Params.OccupantLoadFactor, text); t.Commit(); } } }
public static void UpdateLoadFactor(this Element ele) { try { Room r = ele as Room; var name = r.Name; var pred = OLFNetwork.Predict(name, CMDLibrary.WriteNull); var numb = pred.ToList().IndexOf(pred.Max()); var loadfactor = Enum.GetNames(typeof(OccLoadFactor)).ToList()[numb].Remove(0, 1); r.SetIntParam( Params.OccupantLoadFactor, loadfactor); } catch (Exception e) { e.OutputError(); } }