Exemple #1
0
        /// <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];
        }
Exemple #2
0
        /// <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];
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
                        }
                    }