示例#1
0
        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(); }
                    }
                }
            }
        }
示例#2
0
        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();
                }
            }
        }
示例#3
0
        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);
        }
示例#4
0
 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(); }
 }
示例#5
0
        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(); }
                    }
                }
            }
        }