public void Execute(UpdaterData data) { Document doc = data.GetDocument(); if (!doc.IsFamilyDocument) { var Eles = data.GetModifiedElementIds().ToList(); foreach (var eid in Eles) { var ele = doc.GetElement(eid) as FamilySymbol; if (ele != null) { string name = ""; int MF = 0; try { name = ele.FamilyName; } catch (Exception e) { e.OutputError(); } if (name != "") { try { var output = MasterformatNetwork.Predict(name, new WriteToCMDLine(CMDLibrary.WriteNull)); MF = output.ToList().IndexOf(output.Max()); } catch (Exception e) { e.OutputError(); } } try { ele.Set(Params.Masterformat, MF.ToString()); } catch (Exception e) { e.OutputError(); } } } } }
public static void SetMasterformat(this UIApplication app, string text) //ExternalCommandData commandData, //ref string message, //ElementSet elements) { if (int.TryParse(text, out int numb)) { Document doc = app.ActiveUIDocument.Document; Selection sel = app.ActiveUIDocument.Selection; ISelectionFilter selectionFilter = new EleSelectionFilter(); Reference ChangedObject = sel.PickObject(ObjectType.Element, selectionFilter); FamilyInstance inst = doc.GetElement(ChangedObject.ElementId) as FamilyInstance; FamilySymbol symb = inst.Symbol; NeuralNetwork net = MasterformatNetwork.GetNetwork(CMDLibrary.WriteNull); Sample s = new Sample(CC_Library.Datatypes.Datatype.Masterformat); s.TextInput = symb.Family.Name; s.DesiredOutput = new double[net.Layers.Last().Biases.Count()]; s.DesiredOutput[numb] = 1; //MasterformatNetwork.Propogate(CMDLibrary.WriteNull); using (Transaction t = new Transaction(doc, "Set Param")) { t.Start(); symb.SetElementParam(Params.Masterformat, numb.ToString()); t.Commit(); } } }
public static void SaveFamily(this string fp, string prefix = "test") { string folder = "CC_Families".GetMyDocs().GetDir(); var div = MasterformatNetwork.Predict(fp.Split('\\').Last().Split('.').First(), new WriteToCMDLine(CMDLibrary.WriteNull)); string Division = "Division " + div.ToList().IndexOf(div.Max()); string SubDir = (folder + "\\Division " + div.ToList().IndexOf(div.Max())).GetDir(); string nf = !fp.Split('\\').Last().StartsWith(prefix + "_")? SubDir + "\\" + prefix + "_" + fp.Split('\\').Last().Split('.').First() + ".rfa": SubDir + "\\" + fp.Split('\\').Last().Split('.').First() + ".rfa"; File.Copy(fp, nf, true); }
public static void Run() { try { string mainfolder = System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments); string folder = mainfolder + "\\CC_Families"; Hashtable fnames = new Hashtable(); List <string> allfiles = new List <string>(); foreach (string dir in Directory.GetDirectories(folder)) { foreach (string file in Directory.GetFiles(dir)) { allfiles.Add(file); var key = file.Split('\\').Last().Split('.').First(); fnames[key] = fnames[key] == null ? file : DateTime.Compare(File.GetLastWriteTime((string)fnames[key]), File.GetLastWriteTime(file)) < 0 ? file : fnames[key]; } } foreach (var f in allfiles) { if (!fnames.ContainsValue(f)) { File.Delete(f); } else { string val = f.Split('\\').Last().Split('.').First(); var vals = MasterformatNetwork.Predict(val, CMDLibrary.WriteNull); int numb = vals.ToList().IndexOf(vals.Max()); string subfolder = folder + "\\Division " + numb; if (!Directory.Exists(subfolder)) { Directory.CreateDirectory(subfolder); } File.Move((string)fnames[val], subfolder + "\\" + val + ".rfa"); } } } catch (Exception e) { e.OutputError(); } }
public void Execute(UpdaterData data) { Document doc = data.GetDocument(); var Eles = data.GetAddedElementIds().ToList(); foreach (var eid in Eles) { var ele = doc.GetElement(eid) as FamilyInstance; if (ele != null) { var symb = ele.Symbol; if (symb != null) { string name = symb.FamilyName == null ? "preset" : symb.FamilyName; var p = MasterformatNetwork.Predict(name, new WriteToCMDLine(CMDLibrary.WriteNull)); var MF = p.ToList().IndexOf(p.Max()); try { ele.Set(Params.Masterformat, MF.ToString()); } catch (Exception e) { e.OutputError(); } } } } }