protected SheetItem GetSheetItem(OpenXmlElement source, IEnumerable <string> nameCells, int nameIndex, int dataStartIndex, int step) { var cells = GetCellFromRow(source, 0).ToArray(); var name = GeneralParsing.GetCellValue(WorkbookPart, cells.Skip(nameIndex).First()); var data = nameCells.Select( (x, i) => new { Name = x, Data = cells.Skip(dataStartIndex) .Where((y, j) => j % step == i) .Select(z => GeneralParsing.GetCellValue(WorkbookPart, z)) .ToArray() }).ToDictionary(dataKey => dataKey.Name, dataCheck => dataCheck.Data); var item = new SheetItem { Name = name, Data = data }; return(item); }
public SheetGradeWindow(SheetItem sheet) { InitializeComponent(); Sheet = sheet; Grades = _repo.GetGradeBySheetId(sheet.Id); DataContext = this; }
public SheetTaskWrapper(SheetItem element, SheetTask task) { Element = element; Task = task; }
/// <summary> /// Submits request to create new sheet. /// </summary> /// <param name="app"></param> private void CreateSheet(UIApplication app) { var doc = app.ActiveUIDocument.Document; CentralPath = FileInfoUtil.GetCentralFilePath(doc); IsUpdatingSheet = true; app.Application.FailuresProcessing += FailureProcessing; using (var trans = new Transaction(doc, "CreateSheet")) { trans.Start(); try { ViewSheet sheet; if (SheetTask.IsPlaceholder) { sheet = ViewSheet.CreatePlaceholder(doc); } else { // TODO: This should be exposed to user in Mission Control. var titleblock = new FilteredElementCollector(doc).OfClass(typeof(FamilySymbol)).FirstOrDefault(x => x.Category.Name == "Title Blocks"); if (titleblock == null) { IsUpdatingSheet = false; Messenger.Default.Send(new SheetTaskCompletedMessage { Completed = false, Message = "Could not find a valid TitleBlock.", CentralPath = CentralPath }); return; } sheet = ViewSheet.Create(doc, titleblock.Id); } sheet.get_Parameter(BuiltInParameter.SHEET_NUMBER)?.Set(SheetTask.Number); sheet.get_Parameter(BuiltInParameter.SHEET_NAME)?.Set(SheetTask.Name); // (Konrad) We can set this here and pick up in the UI before sending off to MongoDB. var newSheetItem = new SheetItem(sheet, CentralPath) { Tasks = SheetItem.Tasks, CollectionId = SheetItem.CollectionId, Id = SheetItem.Id, IsNewSheet = true // this was overriden to false by default constructor }; SheetItem = newSheetItem; trans.Commit(); IsUpdatingSheet = false; } catch (Exception e) { trans.RollBack(); IsUpdatingSheet = false; Log.AppendLog(LogMessageType.EXCEPTION, "Failed to create sheet."); Messenger.Default.Send(new SheetTaskCompletedMessage { Completed = false, Message = e.Message, CentralPath = CentralPath }); } } // (Konrad) We don't want Revit to keep triggering this even when we are not processing updates. app.Application.FailuresProcessing -= FailureProcessing; }
/// <summary> /// Firest external command to set active view in Revit. /// </summary> /// <param name="sheet">Sheet item with reference to view.</param> public void OpenView(SheetItem sheet) { AppCommand.CommunicatorHandler.SheetItem = sheet; AppCommand.CommunicatorHandler.Request.Make(RequestId.OpenView); AppCommand.CommunicatorEvent.Raise(); }