コード例 #1
0
        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];
        }
コード例 #2
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();
            }
        }
コード例 #3
0
        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();
                }
            }
        }