/// <summary> /// Constructor /// </summary> public SketchbasedForm(List <FamilySymbol> symbolList) { InitializeComponent(); m_placementOptions = new PromptForFamilyInstancePlacementOptions(); m_placementOptions.SketchGalleryOptions = SketchGalleryOptions.SGO_Line; m_familySymbolList = symbolList; List <String> nameList = new List <string>(); foreach (FamilySymbol symbol in m_familySymbolList) { nameList.Add(symbol.Name); } comboBoxFamilySymbol.DataSource = nameList; comboBoxFamilySymbol.SelectedIndex = 0; m_selectedSymbol = m_familySymbolList[comboBoxFamilySymbol.SelectedIndex]; }
/// <summary> /// Constructor /// </summary> public FacebasedForm(List <FamilySymbol> symbolList) { InitializeComponent(); radioButtonFace.Checked = true; m_placementOptions = new PromptForFamilyInstancePlacementOptions(); m_placementOptions.FaceBasedPlacementType = FaceBasedPlacementType.PlaceOnFace; m_familySymbolList = symbolList; List <String> nameList = new List <string>(); foreach (FamilySymbol symbol in m_familySymbolList) { nameList.Add(symbol.Name); } comboBoxFamilySymbol.DataSource = nameList; comboBoxFamilySymbol.SelectedIndex = 0; m_selectedSymbol = m_familySymbolList[comboBoxFamilySymbol.SelectedIndex]; }
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { var dfdf = Directory.GetFiles(@"C:\ProgramData\Autodesk\Revit\Addins\2019\FamilyPalette.xml"); UIApplication uiapp = commandData.Application; UIDocument uidoc = uiapp.ActiveUIDocument; Autodesk.Revit.DB.Document doc = uidoc.Document; Autodesk.Revit.ApplicationServices.Application app = uiapp.Application; Selection sel = uiapp.ActiveUIDocument.Selection; ICollection <Autodesk.Revit.DB.ElementId> selectedIds = uidoc.Selection.GetElementIds(); //Reference annotation = sel.PickObject(ObjectType.Element, "Select item"); FamilyInstance elem = doc.GetElement(selectedIds.FirstOrDefault()) as FamilyInstance; //Reference annotation = sel.PickObject(ObjectType.Element, "Select item"); //FamilyInstance elem = doc.GetElement(annotation) as FamilyInstance; FamilySymbol familySymbol = elem.Symbol; PromptForFamilyInstancePlacementOptions promptForFamilyInstancePlacementOptions = new PromptForFamilyInstancePlacementOptions(); try { uidoc.PromptForFamilyInstancePlacement(familySymbol); } catch { } return(Result.Succeeded); }
public void Execute(UIApplication uiappp) { uiapp = uiappp; UIDocument uidoc = uiapp.ActiveUIDocument; Document doc = uidoc.Document; /// TECHNIQUE 06 OF 19 (EE06_PlaceAFamily_OnDoubleClick.cs) ///↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ PLACING A FAMILY THEN RELEASING THE COMMMAND ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ /// /// Interfaces and ENUM's: /// BuiltInParameter.FAMILY_WORK_PLANE_BASED /// using System.Runtime.InteropServices (namespace) /// /// Demonstrates classes: /// DocumentChangedEventArgs* /// PromptForFamilyInstancePlacementOptions /// SketchPlane /// /// /// Key methods: /// SketchPlane.Create(doc, myLevel.GetPlaneReference()); /// uidoc.PromptForFamilyInstancePlacement(myFamilySymbol); /// SetForegroundWindow( /// keybd_event( /// /// /// * class is actually part of the .NET framework (not Revit API) /// /// /// /// https://github.com/joshnewzealand/Revit-API-Playpen-CSharp /// uidoc.Application.Application.DocumentChanged += new EventHandler <DocumentChangedEventArgs>(OnDocumentChanged); PromptForFamilyInstancePlacementOptions myPromptForFamilyInstancePlacementOptions = new PromptForFamilyInstancePlacementOptions(); if (uidoc.ActiveView.SketchPlane.Name != "Level 1") { Level myLevel = new FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Levels).WhereElementIsNotElementType().First() as Level; using (Transaction y = new Transaction(doc, "SetDefaultPlane")) { y.Start(); uidoc.ActiveView.SketchPlane = SketchPlane.Create(doc, myLevel.GetPlaneReference()); y.Commit(); } } myPromptForFamilyInstancePlacementOptions.FaceBasedPlacementType = FaceBasedPlacementType.Default; SetForegroundWindow(uidoc.Application.MainWindowHandle); //this is an excape event try { if (myFamilySymbol.Family.get_Parameter(BuiltInParameter.FAMILY_WORK_PLANE_BASED).AsInteger() == 0) { uidoc.PromptForFamilyInstancePlacement(myFamilySymbol); } else { uidoc.PromptForFamilyInstancePlacement(myFamilySymbol, myPromptForFamilyInstancePlacementOptions); //<-- decided not to use this late in the project } } #region catch and finally catch (Exception ex) { if (ex.Message != "The user aborted the pick operation.") { _952_PRLoogleClassLibrary.DatabaseMethods.writeDebug("EE01_Part1_PlaceAFamily" + Environment.NewLine + ex.Message + Environment.NewLine + ex.InnerException, true); } else { uidoc.Application.Application.DocumentChanged -= new EventHandler <DocumentChangedEventArgs>(OnDocumentChanged); } } finally { } #endregion }
public override int Execute(ref ScriptRuntime runtime) { #if (REVIT2013 || REVIT2014) TaskDialog.Show(PyRevitLabsConsts.ProductName, NotSupportedFeatureException.NotSupportedMessage); return(ScriptExecutorResultCodes.NotSupportedFeatureException); #else if (runtime.UIApp != null && runtime.UIApp.ActiveUIDocument != null) { string familySourceFile = runtime.ScriptSourceFile; UIDocument uidoc = runtime.UIApp.ActiveUIDocument; Document doc = uidoc.Document; // find or load family first Family contentFamily = null; // attempt to find previously loaded family Element existingFamily = null; string familyName = Path.GetFileNameWithoutExtension(familySourceFile); var currentFamilies = new FilteredElementCollector(doc).OfClass(typeof(Family)).Where(q => q.Name == familyName); if (currentFamilies.Count() > 0) { existingFamily = currentFamilies.First(); } if (existingFamily != null) { contentFamily = (Family)existingFamily; } // if not found, attemt to load if (contentFamily == null) { try { var txn = new Transaction(doc, "Load pyRevit Content"); txn.Start(); doc.LoadFamily( familySourceFile, new ContentLoaderOptions(), out contentFamily ); txn.Commit(); } catch (Exception loadEx) { var dialog = new TaskDialog(PyRevitLabsConsts.ProductName); dialog.MainInstruction = "Failed loading content."; dialog.ExpandedContent = string.Format("{0}\n{1}", loadEx.Message, loadEx.StackTrace); dialog.Show(); return(ScriptExecutorResultCodes.FailedLoadingContent); } } if (contentFamily == null) { TaskDialog.Show(PyRevitLabsConsts.ProductName, string.Format("Failed finding or loading bundle content at:\n{0}", familySourceFile)); return(ScriptExecutorResultCodes.FailedLoadingContent); } // now ask ui to place an instance ElementId firstSymbolId = contentFamily.GetFamilySymbolIds().First(); if (firstSymbolId != null && firstSymbolId != ElementId.InvalidElementId) { FamilySymbol firstSymbol = (FamilySymbol)doc.GetElement(firstSymbolId); if (firstSymbol != null) { try { var placeOps = new PromptForFamilyInstancePlacementOptions(); uidoc.PromptForFamilyInstancePlacement(firstSymbol, placeOps); return(ScriptExecutorResultCodes.Succeeded); } catch (Autodesk.Revit.Exceptions.OperationCanceledException) { // user cancelled placement return(ScriptExecutorResultCodes.Succeeded); } }