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(); }
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(); }
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)); }