private static IList <Workset> GetAllWorksets(Document doc)
        {
            string message = string.Empty;
            FilteredWorksetCollector collector = new FilteredWorksetCollector(doc);

            collector.OfKind(WorksetKind.FamilyWorkset);
            IList <Workset> worksets = collector.ToWorksets();

            //if (worksets.Count == 0)
            //    TaskDialog.Show("Worksets", " No Worksets in project");
            foreach (Workset workset in worksets)
            {
                message += "Workset : " + workset.Name;
                message += "\nUnique Id : " + workset.UniqueId;
                message += "\nOwner : " + workset.Owner;
                message += "\nKind : " + workset.Kind;
                message += "\nIs default : " + workset.IsDefaultWorkset;
                message += "\nIs editable : " + workset.IsEditable;
                message += "\nIs open : " + workset.IsOpen;
                message += "\nIs visible by default : " + workset.IsVisibleByDefault + "\n";
                message += "\n\n";
                //TaskDialog.Show("GetWorksetsInfo", message);
            }
            return(worksets);
        }
Exemple #2
0
    internal static IList <Autodesk.Revit.DB.Workset> UserWorksets(Document doc)
    {
        IList <Autodesk.Revit.DB.Workset> elements;

        using (FilteredWorksetCollector fwc = new FilteredWorksetCollector(doc).OfKind(WorksetKind.UserWorkset))
        {
            elements = fwc.ToWorksets();
        }
        return(elements);
    }
Exemple #3
0
        private void CollectSourceItems()
        {
            try
            {
                sourceItems = new List <ItemInfo>();

                //workset
                FilteredWorksetCollector worksetCollector = new FilteredWorksetCollector(m_doc);
                IList <Workset>          worksets         = worksetCollector.ToWorksets();
                var userWorksets = from ws in worksets where ws.Kind == WorksetKind.UserWorkset select ws;
                if (userWorksets.Count() > 0)
                {
                    foreach (Workset workset in userWorksets)
                    {
                        ItemInfo info = new ItemInfo(workset, ViewBy.Workset);
                        sourceItems.Add(info);
                    }
                }

                //phase
                PhaseArray phases = m_doc.Phases;
                if (phases.Size > 0)
                {
                    foreach (Phase phase in phases)
                    {
                        ItemInfo info = new ItemInfo(phase, ViewBy.Phase);
                        sourceItems.Add(info);
                    }
                }

                //design option
                FilteredElementCollector collector = new FilteredElementCollector(m_doc);
                IList <DesignOption>     options   = collector.OfClass(typeof(DesignOption)).ToElements().Cast <DesignOption>().ToList();
                foreach (DesignOption dOption in options)
                {
                    ItemInfo info = new ItemInfo(dOption, ViewBy.DesignOption);
                    sourceItems.Add(info);
                }

                //linked models
                collector = new FilteredElementCollector(m_doc);
                IList <RevitLinkType> types = collector.OfClass(typeof(RevitLinkType)).ToElements().Cast <RevitLinkType>().ToList();
                foreach (RevitLinkType linkType in types)
                {
                    ItemInfo info = new ItemInfo(linkType, ViewBy.Link);
                    sourceItems.Add(info);
                }

                sourceItems = sourceItems.OrderBy(o => o.ItemName).ToList();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Failed to collect source items.\n" + ex.Message, "Collect Source Items", MessageBoxButton.OK, MessageBoxImage.Warning);
            }
        }
        private static IList <Workset> GetAllWorksets(Document doc)
        {
            string message = string.Empty;

            FilteredWorksetCollector collector = new FilteredWorksetCollector(doc);

            collector.OfKind(WorksetKind.FamilyWorkset);

            IList <Workset> worksets = collector.ToWorksets();

            return(worksets);
        }
        public static ViewPlan CreateWorksetFloorPlan(Document doc, ItemInfo itemInfo, ViewFamilyType viewPlanFamilyType, Level planLevel, bool overwrite)
        {
            ViewPlan viewPlan = null;
            string   viewName = planLevel.Name + " - " + itemInfo.ItemName;

            using (TransactionGroup tg = new TransactionGroup(doc))
            {
                tg.Start("Create Floor Plan");
                try
                {
                    FilteredElementCollector collector = new FilteredElementCollector(doc);
                    List <ViewPlan>          viewPlans = collector.OfClass(typeof(ViewPlan)).ToElements().Cast <ViewPlan>().ToList();
                    var views = from view in viewPlans where view.Name == viewName select view;
                    if (views.Count() > 0)
                    {
                        if (overwrite)
                        {
                            viewPlan = views.First();
                        }
                        else
                        {
                            return(viewPlan);
                        }
                    }

                    if (null == viewPlan)
                    {
                        using (Transaction trans = new Transaction(doc))
                        {
                            trans.Start("Create Plan View");
                            try
                            {
                                viewPlan      = ViewPlan.Create(doc, viewPlanFamilyType.Id, planLevel.Id);
                                viewPlan.Name = viewName;
                                trans.Commit();
                            }
                            catch (Exception ex)
                            {
                                trans.RollBack();
                                MessageBox.Show("Failed to create plan view.\n" + ex.Message, "Create Plan View", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            }
                        }
                    }


                    using (Transaction trans = new Transaction(doc))
                    {
                        trans.Start("Set Visibility");
                        try
                        {
                            FilteredWorksetCollector worksetCollector = new FilteredWorksetCollector(doc);
                            IList <Workset>          worksetList      = worksetCollector.ToWorksets();
                            var worksets = from workset in worksetList where workset.Kind == WorksetKind.UserWorkset select workset;
                            foreach (Workset ws in worksets)
                            {
                                if (ws.Kind == WorksetKind.UserWorkset)
                                {
                                    if (ws.Id.IntegerValue == itemInfo.ItemId)
                                    {
                                        viewPlan.SetWorksetVisibility(ws.Id, WorksetVisibility.Visible);
                                    }
                                    else
                                    {
                                        viewPlan.SetWorksetVisibility(ws.Id, WorksetVisibility.Hidden);
                                    }
                                }
                            }
                            trans.Commit();
                        }
                        catch (Exception ex)
                        {
                            trans.RollBack();
                            MessageBox.Show("Failed to set visibility.\n" + ex.Message, "Set Visibility", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        }
                    }
                }
                catch (Exception ex)
                {
                    tg.RollBack();
                    MessageBox.Show("Failed to create floor plans by worksets.\n" + ex.Message, "Create Floor Plans by Worksets", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
                tg.Assimilate();
            }
            return(viewPlan);
        }
        public static View3D CreateWorkset3DView(Document doc, ItemInfo itemInfo, ViewFamilyType view3dFamilyType, bool overwrite)
        {
            View3D view3D = null;

            try
            {
                string viewName = "WS - 3D - " + itemInfo.ItemName;
                using (TransactionGroup tg = new TransactionGroup(doc))
                {
                    tg.Start("Create 3D View");
                    try
                    {
                        FilteredElementCollector collector = new FilteredElementCollector(doc);
                        List <View3D>            view3ds   = collector.OfClass(typeof(View3D)).ToElements().Cast <View3D>().ToList();
                        var views = from view in view3ds where view.Name == viewName select view;
                        if (views.Count() > 0)
                        {
                            if (overwrite)
                            {
                                view3D = views.First();
                            }
                            else
                            {
                                return(view3D);
                            }
                        }
                        if (null == view3D)
                        {
                            using (Transaction trans = new Transaction(doc))
                            {
                                trans.Start("Create Isometric");
                                try
                                {
                                    view3D      = View3D.CreateIsometric(doc, view3dFamilyType.Id);
                                    view3D.Name = viewName;
                                    if (view3D.CanModifyViewDiscipline())
                                    {
                                        view3D.Discipline = ViewDiscipline.Coordination;
                                    }
                                    trans.Commit();
                                }
                                catch (Exception ex)
                                {
                                    trans.RollBack();
                                    MessageBox.Show("Failed to create Isometric.\n" + ex.Message, "Create Isometric", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                                }
                            }
                        }

                        using (Transaction trans = new Transaction(doc))
                        {
                            trans.Start("Set Visibility");
                            try
                            {
                                FilteredWorksetCollector worksetCollector = new FilteredWorksetCollector(doc);
                                IList <Workset>          worksetList      = worksetCollector.ToWorksets();
                                var worksets = from workset in worksetList where workset.Kind == WorksetKind.UserWorkset select workset;
                                foreach (Workset ws in worksets)
                                {
                                    if (ws.Kind == WorksetKind.UserWorkset)
                                    {
                                        if (ws.Id.IntegerValue == itemInfo.ItemId)
                                        {
                                            view3D.SetWorksetVisibility(ws.Id, WorksetVisibility.Visible);
                                        }
                                        else
                                        {
                                            view3D.SetWorksetVisibility(ws.Id, WorksetVisibility.Hidden);
                                        }
                                    }
                                }
                                trans.Commit();
                            }
                            catch (Exception ex)
                            {
                                trans.RollBack();
                                MessageBox.Show("Failed to set visibility.\n" + ex.Message, "Set Visibility", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            }
                        }

                        using (Transaction trans = new Transaction(doc))
                        {
                            trans.Start("Set SectionBox");
                            try
                            {
                                collector = new FilteredElementCollector(doc, view3D.Id);
                                List <Element> elements = collector.ToElements().ToList();
                                if (elements.Count > 0)
                                {
                                    BoundingBoxXYZ boundingBox = GetBoundingBox(elements);
                                    if (null != boundingBox)
                                    {
                                        view3D.SetSectionBox(boundingBox);
                                    }
                                }
                                trans.Commit();
                            }
                            catch (Exception ex)
                            {
                                trans.RollBack();
                                MessageBox.Show("Failed to set sectionbox.\n" + ex.Message, "Set Sectionbox", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Failed to create 3d views by worksets.\n" + ex.Message, "Create 3D Views by Worksets", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        tg.RollBack();
                    }
                    tg.Assimilate();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Failed to create workset views.\n" + ex.Message, "Create Workset 3D View", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            return(view3D);
        }