internal void ShowBeamsFromColumnsUI() { if (beamsFromColumnsWindow == null || beamsFromColumnsWindow.isShowned == false) { //Implements the viewChange(view activated) event if (uiApp != null) { uiApp.ViewActivated += BeamsFromColumns_ViewActivated; } //Implements the create (Beams from columns) event requestBeamsFromColumnsHandler = new RequestBeamsFromColumnsHandler(); externalBeamFromColumnsEvent = ExternalEvent.Create(requestBeamsFromColumnsHandler); //Implements the BeamsFromColumns UI Window //Pass the external event and the event handler to the instance of the UI beamsFromColumnsWindow = new BeamsFromColumnsUI(externalBeamFromColumnsEvent, requestBeamsFromColumnsHandler); beamsFromColumnsWindow.Show(); beamsFromColumnsWindow.isShowned = true; } }
private void CreateBeams() { FamilyInstance firstColumn = null; FamilyInstance secondColumn = null; FamilyInstance createdBeam = null; FamilyInstance lastSelectedBeam = null; FamilyInstance lastSelectedColumn = null; //TODO if is not 3d view, ask user to go to a 3d view try { while (true) { //Create a reference copy of the Window so we can refer to it easily on the code currentUI = ONBOXAppl.ONBOXApplication.onboxApp.beamsFromColumnsWindow; View currentView = ONBOXApplication.onboxApp.uiApp.ActiveUIDocument.ActiveView; View currentGraphicalView = ONBOXApplication.onboxApp.uiApp.ActiveUIDocument.ActiveGraphicalView; if (currentView.Id != currentGraphicalView.Id) { TaskDialog.Show(Properties.Messages.Common_Error, Properties.Messages.BeamsFromColumns_NotGraphicalView); return; } if (currentView as View3D == null) { TaskDialog.Show(Properties.Messages.Common_Error, Properties.Messages.BeamsFromColumns_Not3dView); return; } if (createdBeam != null) { FamilyInstance currentSelection = doc.GetElement(sel.PickObject(ObjectType.Element, new ColumnAndBeamSelectionFilter(createdBeam), Properties.Messages.BeamsFromColumns_SelectFirstColumnOrBeam)) as FamilyInstance; if (currentSelection.Category.Id.IntegerValue == BuiltInCategory.OST_StructuralColumns.GetHashCode()) { if (currentUI.IsChain() == false || lastSelectedColumn == null) { firstColumn = doc.GetElement(currentSelection.Id) as FamilyInstance; secondColumn = doc.GetElement(sel.PickObject(ObjectType.Element, new ColumnSelectionFilter(), Properties.Messages.BeamsFromColumns_SelectSecondColumn)) as FamilyInstance; createdBeam = CreateBeam(ref firstColumn, ref secondColumn); lastSelectedColumn = doc.GetElement(secondColumn.Id) as FamilyInstance; } else { firstColumn = doc.GetElement(lastSelectedColumn.Id) as FamilyInstance; secondColumn = doc.GetElement(currentSelection.Id) as FamilyInstance; createdBeam = CreateBeam(ref firstColumn, ref secondColumn); lastSelectedColumn = doc.GetElement(secondColumn.Id) as FamilyInstance; } } else { lastSelectedBeam = AdjustBeam(currentSelection, lastSelectedBeam); } } else { if (currentUI.IsChain() == false || lastSelectedColumn == null) { firstColumn = doc.GetElement(sel.PickObject(ObjectType.Element, new ColumnSelectionFilter(), Properties.Messages.BeamsFromColumns_SelectFirstColumn)) as FamilyInstance; secondColumn = doc.GetElement(sel.PickObject(ObjectType.Element, new ColumnSelectionFilter(), Properties.Messages.BeamsFromColumns_SelectSecondColumn)) as FamilyInstance; createdBeam = CreateBeam(ref firstColumn, ref secondColumn); lastSelectedColumn = doc.GetElement(secondColumn.Id) as FamilyInstance; } else { firstColumn = doc.GetElement(lastSelectedColumn.Id) as FamilyInstance; secondColumn = doc.GetElement(sel.PickObject(ObjectType.Element, new ColumnSelectionFilter(), Properties.Messages.BeamsFromColumns_SelectSecondColumn)) as FamilyInstance; createdBeam = CreateBeam(ref firstColumn, ref secondColumn); lastSelectedColumn = doc.GetElement(secondColumn.Id) as FamilyInstance; } } } } catch (Exception excep) { ExceptionManager eManager = new ExceptionManager(excep); } finally { currentUI.UnFreezeCreateButton(); } }