void DrawStatementCabeles(XYZ start, Document doc, ViewDrafting view, ARKModule ark) { FamilySymbol famToPlace = new FilteredElementCollector(doc).OfClass(typeof(FamilySymbol)).Cast <FamilySymbol>().Where(x => x.Name == "STATEMENTCABELS").FirstOrDefault(); Transaction trans = new Transaction(doc); trans.Start("Помещен на рисунок"); FamilyInstance next = doc.Create.NewFamilyInstance(new XYZ(start.X, start.Y - 0.2, 0), famToPlace, view); double len = 0; foreach (MEPSystem mep in ark.systems) { len += getNormalCount(Double.Parse(mep.LookupParameter("Длина").AsValueString()) / 1000); } foreach (MEPSystem mep in ark.alertSystems) { len += getNormalCount(Double.Parse(mep.LookupParameter("Длина").AsValueString()) / 1000); } next.LookupParameter("Внешняя длина").Set(len); SettingSections s = settings.getByIndex(settings.loadSettingByARK(ark.mark)); next.LookupParameter("Внешняя марка").Set(s.GetStrForDrawing()); string[] st = File.ReadAllLines("C://ProgramData//Autodesk//Revit//Addins//2019//Linear//intocabin.set"); next.LookupParameter("Внутришкафная марка").Set(st[0] + "-" + st[2]); next.LookupParameter("Внутришкафная длина").Set(Double.Parse(st[1])); trans.Commit(); }
/*private void button4_Click(object sender, EventArgs e) * { * settings.writeToFile(); * }*/ private void button5_Click(object sender, EventArgs e) { if (textBox4.Text == "" || textBox6.Text == "" || textBox7.Text == "" || textBox3.Text == "" || textBox8.Text == "") { MessageBox.Show("Заполните все поля!"); return; } try { int index = settings.loadSettingByARK(listBox1.SelectedItem.ToString()); if (index < settings.Count()) { settings.getByIndex(index).SettingSectionsFromForm(listBox1.SelectedItem.ToString(), textBox4.Text, textBox6.Text, textBox7.Text, textBox3.Text, textBox8.Text); } else { SettingSections s = new SettingSections(); s.SettingSectionsFromForm(listBox1.SelectedItem.ToString(), textBox4.Text, textBox6.Text, textBox7.Text, textBox3.Text, textBox8.Text); settings.Add(s); } List <string> namesARK = new List <string>(); foreach (Object str in listBox1.Items) { namesARK.Add(str.ToString()); } settings.deleteIfNot(namesARK); MessageBox.Show("Настройки сохранены."); } catch (Exception ex) { MessageBox.Show("Ошибка сохранения настроек внешнего соединения. Проверьте правильность введенных данных."); } settings.writeToFile(); }
void DrawShleifs(XYZ point, Document doc, ViewDrafting view) { //соответствие арк //settings.loadSettings(); ARKModule ark = null; XYZ end = null; FamilyInstance f = new FilteredElementCollector(doc, view.Id).OfClass(typeof(FamilyInstance)).Cast <FamilyInstance>().Where(x => arkmoduleIds.Contains(x.Id)).FirstOrDefault(); foreach (ARKModule module in ARKBLocks) { if (module.revitModule.Id == f.Id) { ark = module; } } //добавление экземпляров на виды по точке double len = 0; int index = 0; FamilyInstance next = null; foreach (MEPSystem mep in ark.systems) { FamilySymbol famToPlace = new FilteredElementCollector(doc).OfClass(typeof(FamilySymbol)).Cast <FamilySymbol>().Where(x => x.Name == "ARKRIGHTOUTPUT").FirstOrDefault(); Transaction trans = new Transaction(doc); trans.Start("Помещен на рисунок"); next = doc.Create.NewFamilyInstance(new XYZ(point.X, point.Y - index * len * 10, 0), famToPlace, view); trans.Commit(); trans.Start("добавление параметров"); next.LookupParameter("ark").Set(Int32.Parse(ark.mark.Remove(ark.mark.IndexOf("ARK"), 3))); next.LookupParameter("номер шлейфа").Set(Double.Parse(mep.Name)); double rr = mep.LookupParameter("Длина").AsDouble(); next.LookupParameter("Длина кабеля").Set(getNormalCount(Double.Parse(mep.LookupParameter("Длина").AsValueString()) / 1000)); SettingSections s = settings.getByIndex(settings.loadSettingByARK(ark.mark)); next.LookupParameter("Вид кабеля").Set(s.GetStrForDrawing()); trans.Commit(); DrawSensors(new XYZ(point.X + next.LookupParameter("Длина").AsDouble() * 10, point.Y - index * len * 10, 0), mep, Int32.Parse(ark.mark.Remove(ark.mark.IndexOf("ARK"), 3)), view, doc); end = new XYZ(point.X + next.LookupParameter("Длина").AsDouble() * 10, point.Y - index * len * 10, 0); len = next.LookupParameter("Ширина").AsDouble(); ++index; } if (ark.systems.Count <= ark.revitModule.Symbol.LookupParameter("Количество шлейфов справа").AsInteger()) { end = DrawRemain(new XYZ(point.X, point.Y - (index * len * 10) + 0.08, 0), doc, view, ark.revitModule.Symbol.LookupParameter("Количество шлейфов справа").AsInteger(), ark); } else { throw new Exception("Ошибка! Количество шлейфов в выбранном семействе меньше, чем в Revit-модели!"); } DrawStatementCabeles(end, doc, view, ark); mainTirePoints.Add(new XYZ(point.X, point.Y - index * len * 10, 0)); mainTirePoints.Add(new XYZ(end.X, end.Y - 0.08, 0)); geometry.AddLines(doc, view, geometry.ConnectLinesByPoints(mainTirePoints)); mainTirePoints.Clear(); }
public void loadSettings() { string[] str = File.ReadAllLines("C://ProgramData//Autodesk//Revit//Addins//2019//Linear//sections.set"); foreach (string s in str) { string[] arrSet = s.Split('&'); string op = arrSet[1]; string ark = arrSet[0]; arrSet = arrSet[2].Split(';'); SettingSections set = new SettingSections(); set.SettingSectionsFromFile(ark, arrSet[0], arrSet[1]); set.op = op; settings.Add(set); } }
private void listBox1_SelectedIndexChanged(object sender, EventArgs e) { try { comboBox1.Items.Clear(); int selectedind = listBox1.SelectedIndex; ARKModule ark = blocks[selectedind]; MEPSystem mep = null; foreach (MEPSystem m in ark.systems) { if (m.Name.Contains("1")) { mep = m; } } double len = getL(mep, ark.systems.Count); len = getNormalCount(len); double I = 0; I = getI(mep); //label23.Text = len.ToString(); // label24.Text = I.ToString(); foreach (MEPSystem m in ark.systems) { string name = m.Name + "-й шлейф"; double s = getS(getI(mep), getL(m, ark.systems.Count)); comboBox1.Items.Add(name + ": " + s.ToString()); } try { int set_index = settings.loadSettingByARK(listBox1.SelectedItem.ToString()); SettingSections set = settings.getByIndex(set_index); string[] sections = set.section.Split('x'); textBox4.Text = set.mark; textBox6.Text = sections[0]; textBox7.Text = sections[1]; textBox3.Text = sections[2]; textBox8.Text = set.op; } catch { } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } }
XYZ DrawShleifsAlert(XYZ point, Document doc, ViewDrafting view) { mainTirePoints.Add(new XYZ(point.X, point.Y + 0.08, 0)); //соответствие арк settings.loadSettings(); XYZ pointToReturn = point; ARKModule ark = null; FamilyInstance f = new FilteredElementCollector(doc, view.Id).OfClass(typeof(FamilyInstance)).Cast <FamilyInstance>().Where(x => arkmoduleIds.Contains(x.Id)).FirstOrDefault(); foreach (ARKModule module in ARKBLocks) { if (module.revitModule.Id == f.Id) { ark = module; } } //добавление экземпляров на виды по точке double len = 0; int index = 0; FamilyInstance next = null; foreach (MEPSystem mep in ark.alertSystems) { FamilySymbol famToPlace = new FilteredElementCollector(doc).OfClass(typeof(FamilySymbol)).Cast <FamilySymbol>().Where(x => x.Name == "ARKRIGHTOUTPUTOP").FirstOrDefault(); Transaction trans = new Transaction(doc); trans.Start("Помещен на рисунок"); pointToReturn = new XYZ(point.X, point.Y - index * len * 10 - index * 0.2, 0); next = doc.Create.NewFamilyInstance(pointToReturn, famToPlace, view); trans.Commit(); trans.Start("добавление параметров"); next.LookupParameter("ark").Set(Int32.Parse(ark.mark.Remove(ark.mark.IndexOf("ARK"), 3))); next.LookupParameter("номер шлейфа").Set(Double.Parse((index + 1).ToString()) /*Double.Parse(mep.LookupParameter("Комментарии").AsString().Remove(0,1))/*+Double.Parse(ark.revitModule.Symbol.LookupParameter("Количество шлейфов справа").AsInteger().ToString())*/);//ввести новый параметр double countShleifs = Double.Parse(ark.revitModule.Symbol.LookupParameter("Количество шлейфов справа").AsInteger().ToString()); next.LookupParameter("Количество шлейфов справа").Set(countShleifs); next.LookupParameter("Длина кабеля").Set(getNormalCount(Double.Parse(mep.LookupParameter("Длина").AsValueString()) / 1000)); SettingSections s = settings.getByIndex(settings.loadSettingByARK(ark.mark)); next.LookupParameter("type").Set(s.op); next.LookupParameter("Вид кабеля").Set(s.GetStrForDrawing()); trans.Commit(); DrawSensorsAlert(new XYZ(point.X + next.LookupParameter("Длина").AsDouble() * 10, point.Y - index * len * 10 - index * 0.2, 0), mep, Int32.Parse(ark.mark.Remove(ark.mark.IndexOf("ARK"), 3)), view, doc); len = next.LookupParameter("Ширина").AsDouble(); ++index; } return(new XYZ(point.X, point.Y - index * len * 10 - index * 0.2, 0)); }
public void Add(SettingSections s) { settings.Add(s); }