Example #1
0
        private DB.Transform GetTransform()
        {
            if (InternalElement.Document.GetHashCode() == DocumentManager.Instance.CurrentDBDocument.GetHashCode())
            {
                return(DB.Transform.Identity);
            }
            else
            {
                //Find the revit instance where we find the room
                DB.FilteredElementCollector collector        = new DB.FilteredElementCollector(DocumentManager.Instance.CurrentDBDocument);
                List <DB.RevitLinkInstance> linkInstances    = collector.OfCategory(DB.BuiltInCategory.OST_RvtLinks).WhereElementIsNotElementType().ToElements().Cast <DB.RevitLinkInstance>().ToList();
                DB.RevitLinkInstance        roomLinkInstance = linkInstances.FirstOrDefault();

                foreach (DB.RevitLinkInstance linkInstance in linkInstances)
                {
                    if (linkInstance.GetLinkDocument().GetHashCode() == InternalElement.Document.GetHashCode())
                    {
                        roomLinkInstance = linkInstance;
                        break;
                    }
                }

                return(roomLinkInstance.GetTotalTransform());
            }
        }
Example #2
0
        private FamilySymbol GetStructuralSymbol(Document doc, BuiltInCategory category, string symbolName)
        {
            var fec    = new Autodesk.Revit.DB.FilteredElementCollector(doc);
            var symbol = fec.OfCategory(category)
                         .OfClass(typeof(Autodesk.Revit.DB.FamilySymbol))
                         .Cast <Autodesk.Revit.DB.FamilySymbol>()
                         .FirstOrDefault(x => x.Name == symbolName);

            if (symbol == null)
            {
                throw new Exception($"The family symbol, {symbolName}, could not be found.");
            }
            return(symbol);
        }
Example #3
0
        /// <summary>
        /// Find the nearest level in the active document
        /// </summary>
        /// <param name="point">The reference point</param>
        /// <returns></returns>
        private static DB.Level GetNearestLevel(DB.XYZ point)
        {
            //find all level in the active document
            DB.Document doc = DocumentManager.Instance.CurrentDBDocument;

            DB.FilteredElementCollector collector    = new DB.FilteredElementCollector(doc);
            List <DB.Level>             activeLevels = collector.OfCategory(DB.BuiltInCategory.OST_Levels).WhereElementIsNotElementType().ToElements().Cast <DB.Level>().ToList();

            DB.Level nearestLevel = activeLevels.FirstOrDefault();
            double   delta        = Math.Abs(nearestLevel.ProjectElevation - point.Z);

            foreach (DB.Level currentLevel in activeLevels)
            {
                if (Math.Abs(currentLevel.ProjectElevation - point.Z) < delta)
                {
                    nearestLevel = currentLevel;
                    delta        = Math.Abs(currentLevel.ProjectElevation - point.Z);
                }
            }

            return(nearestLevel);
        }
Example #4
0
 public ADSK.FilteredElementCollector AddElementFilters(ADSK.FilteredElementCollector collector)
 {
     return(collector.OfCategory(ADSK.BuiltInCategory.OST_Mass));
 }
Example #5
0
 public DB.FilteredElementCollector AddElementFilters(DB.FilteredElementCollector collector)
 {
     return(collector.OfCategory(DB.BuiltInCategory.OST_Areas));
 }
Example #6
0
        private DB.Transform GetTransform()
        {
            if (InternalElement.Document.GetHashCode() == DocumentManager.Instance.CurrentDBDocument.GetHashCode())
            {
                return DB.Transform.Identity;
            }
            else
            {
                //Find the revit instance where we find the room
                DB.FilteredElementCollector collector = new DB.FilteredElementCollector(DocumentManager.Instance.CurrentDBDocument);
                List<DB.RevitLinkInstance> linkInstances = collector.OfCategory(DB.BuiltInCategory.OST_RvtLinks).WhereElementIsNotElementType().ToElements().Cast<DB.RevitLinkInstance>().ToList();
                DB.RevitLinkInstance roomLinkInstance = linkInstances.FirstOrDefault();

                foreach (DB.RevitLinkInstance linkInstance in linkInstances)
                {
                    if (linkInstance.GetLinkDocument().GetHashCode() == InternalElement.Document.GetHashCode())
                    {
                        roomLinkInstance = linkInstance;
                        break;
                    }
                }

                return roomLinkInstance.GetTotalTransform();
            }
        }
Example #7
0
        /// <summary>
        /// Find the nearest level in the active document
        /// </summary>
        /// <param name="point">The reference point</param>
        /// <returns></returns>
        private static DB.Level GetNearestLevel(DB.XYZ point)
        {
            //find all level in the active document
            DB.Document doc = DocumentManager.Instance.CurrentDBDocument;

            DB.FilteredElementCollector collector = new DB.FilteredElementCollector(doc);
            List<DB.Level> activeLevels = collector.OfCategory(DB.BuiltInCategory.OST_Levels).WhereElementIsNotElementType().ToElements().Cast<DB.Level>().ToList();

            DB.Level nearestLevel = activeLevels.FirstOrDefault();
            double delta = Math.Abs(nearestLevel.ProjectElevation - point.Z);

            foreach (DB.Level currentLevel in activeLevels)
            {
                if (Math.Abs(currentLevel.ProjectElevation - point.Z) < delta)
                {
                    nearestLevel = currentLevel;
                    delta = Math.Abs(currentLevel.ProjectElevation - point.Z);
                }
            }

            return nearestLevel;
        }