public SkirtingBoardControl(UIDocument UIDoc, SkirtingBoardSetup skirtingBoardSetup) { InitializeComponent(); _doc = UIDoc.Document; _UIDoc = UIDoc; SkirtingBoardSetup = skirtingBoardSetup; //Fill out Text in form this.Title = Tools.LangResMan.GetString("roomFinishes_TaskDialogName", Tools.Cult); this.all_rooms_radio.Content = Tools.LangResMan.GetString("roomFinishes_all_rooms_radio", Tools.Cult); this.board_height_label.Content = Tools.LangResMan.GetString("roomFinishes_board_height_label", Tools.Cult); this.select_wall_label.Content = Tools.LangResMan.GetString("roomFinishes_select_wall_label", Tools.Cult); this.selected_rooms_radio.Content = Tools.LangResMan.GetString("roomFinishes_selected_rooms_radio", Tools.Cult); this.Cancel_Button.Content = Tools.LangResMan.GetString("roomFinishes_Cancel_Button", Tools.Cult); this.Ok_Button.Content = Tools.LangResMan.GetString("roomFinishes_OK_Button", Tools.Cult); this.join_checkbox_label.Content = Tools.LangResMan.GetString("roomFinishes_joinWalls", Tools.Cult); this.Height_TextBox.Text = "100.0"; //Select the wall type in the document _wallTypes = from elem in new FilteredElementCollector(_doc).OfClass(typeof(WallType)) let type = elem as WallType where type.Kind == WallKind.Basic select type; _wallTypes = _wallTypes.OrderBy(wallType => wallType.Name); // Bind ArrayList with the ListBox WallTypeListBox.ItemsSource = _wallTypes; WallTypeListBox.SelectedItem = WallTypeListBox.Items[0]; }
public void CreateSkirtingBoard(Document doc, Transaction tx, SkirtingBoardSetup skirtingBoardSetup) { tx.Start(Tools.LangResMan.GetString("roomFinishes_transactionName", Tools.Cult)); WallType duplicatedWallType = DuplicateWallType(skirtingBoardSetup.SelectedWallType, doc); Dictionary <ElementId, ElementId> skirtingDictionary = CreateWalls(doc, skirtingBoardSetup.SelectedRooms, skirtingBoardSetup.BoardHeight, duplicatedWallType); FailureHandlingOptions options = tx.GetFailureHandlingOptions(); options.SetFailuresPreprocessor(new PlintePreprocessor()); // Now, showing of any eventual mini-warnings will be postponed until the following transaction. tx.Commit(options); TransactionStatus transactionStatus = tx.GetStatus(); if (transactionStatus != TransactionStatus.RolledBack) { tx.Start(Tools.LangResMan.GetString("roomFinishes_transactionName", Tools.Cult)); List <ElementId> addedIds = new List <ElementId>(skirtingDictionary.Keys); foreach (ElementId addedSkirtingId in addedIds) { if (doc.GetElement(addedSkirtingId) == null) { skirtingDictionary.Remove(addedSkirtingId); } } Element.ChangeTypeId(doc, skirtingDictionary.Keys, skirtingBoardSetup.SelectedWallType.Id); //Join both wall if (skirtingBoardSetup.JoinWall) { JoinGeometry(doc, skirtingDictionary); } doc.Delete(duplicatedWallType.Id); tx.Commit(); } }
private void RoomFinish(UIDocument uiDoc, Transaction tx) { Document doc = uiDoc.Document; SkirtingBoardSetup skirtingBoardSetup = new SkirtingBoardSetup(); //Load the selection form SkirtingBoardControl userControl = new SkirtingBoardControl(uiDoc, skirtingBoardSetup); userControl.InitializeComponent(); if (userControl.ShowDialog() == true) { CreateSkirtingBoard(doc, tx, skirtingBoardSetup); } else { if (tx.HasStarted()) { tx.RollBack(); } } }