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()); } }
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); }
/// <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); }
public ADSK.FilteredElementCollector AddElementFilters(ADSK.FilteredElementCollector collector) { return(collector.OfCategory(ADSK.BuiltInCategory.OST_Mass)); }
public DB.FilteredElementCollector AddElementFilters(DB.FilteredElementCollector collector) { return(collector.OfCategory(DB.BuiltInCategory.OST_Areas)); }
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(); } }
/// <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; }