/***************************************************/ /**** Public methods ****/ /***************************************************/ public static FamilySymbol LoadFamilySymbol(this FamilyLoadSettings familyLoadSettings, Document document, string categoryName, string familyName, string familyTypeName) { if (familyLoadSettings?.FamilyLibrary == null || document == null) { return(null); } IEnumerable <string> paths = familyLoadSettings.FamilyLibrary.Paths(categoryName, familyName, familyTypeName); string path = paths?.FirstOrDefault(); if (path == null) { return(null); } FamilySymbol familySymbol; if (document.LoadFamilySymbol(path, familyTypeName, new FamilyLoadOptions(familyLoadSettings), out familySymbol)) { if (!familySymbol.IsActive) { familySymbol.Activate(); } } return(familySymbol); }
public static FamilyLoadSettings FamilyLoadSettings(FamilyLibrary familyLibrary = null, bool overwriteFamily = true, bool overwriteParameterValues = true) { FamilyLoadSettings familyLoadSettings = new FamilyLoadSettings() { OverwriteFamily = overwriteFamily, OverwriteParameterValues = overwriteParameterValues }; if (familyLibrary != null) { familyLoadSettings.FamilyLibrary = familyLibrary; } return(familyLoadSettings); }
/***************************************************/ /**** Public methods ****/ /***************************************************/ public static Family LoadFamily(this FamilyLoadSettings familyLoadSettings, Document document, string categoryName, string familyName) { if (familyLoadSettings?.FamilyLibrary == null || document == null) { return(null); } IEnumerable <string> paths = familyLoadSettings.FamilyLibrary.Paths(categoryName, familyName, null); string path = paths?.FirstOrDefault(); if (path == null) { return(null); } Family family; document.LoadFamily(path, new FamilyLoadOptions(familyLoadSettings), out family); return(family); }
/***************************************************/ /**** Public methods ****/ /***************************************************/ public static Family Family(this oM.Adapters.Revit.Elements.Family family, Document document, IEnumerable <BuiltInCategory> builtInCategories, FamilyLoadSettings familyLoadSettings = null) { if (family == null || string.IsNullOrWhiteSpace(family.Name) || document == null) { return(null); } //Find Existing Family in Document FilteredElementCollector collector = new FilteredElementCollector(document).OfClass(typeof(Family)); if (builtInCategories != null && builtInCategories.Any(x => x != Autodesk.Revit.DB.BuiltInCategory.INVALID)) { collector = collector.WherePasses(new LogicalOrFilter(builtInCategories.Where(x => x != Autodesk.Revit.DB.BuiltInCategory.INVALID).Select(x => new ElementCategoryFilter(x) as ElementFilter).ToList())); } Family revitFamily = collector.FirstOrDefault(x => x.Name == family.Name) as Family; if (revitFamily != null) { return(revitFamily); } //Find ElementType in FamilyLibrary if (familyLoadSettings != null) { if (builtInCategories != null && builtInCategories.Any(x => x != Autodesk.Revit.DB.BuiltInCategory.INVALID)) { foreach (BuiltInCategory builtInCategory in builtInCategories) { if (builtInCategory == Autodesk.Revit.DB.BuiltInCategory.INVALID) { continue; } revitFamily = familyLoadSettings.LoadFamily(document, builtInCategory.CategoryName(document), family.Name); if (revitFamily != null) { return(revitFamily); } } } else { return(familyLoadSettings.LoadFamily(document, null, family.Name)); } } return(null); }
/***************************************************/ /**** Public methods ****/ /***************************************************/ public FamilyLoadOptions(FamilyLoadSettings familyLoadSettings) { m_OverwriteParameterValues = familyLoadSettings.OverwriteParameterValues; m_OverwriteFamily = familyLoadSettings.OverwriteFamily; }
public static RevitSettings RevitSettings(ConnectionSettings connectionSettings = null, FamilyLoadSettings familyLoadSettings = null, ParameterSettings parameterSettings = null, double distanceTolerance = BH.oM.Geometry.Tolerance.Distance, double angleTolerance = BH.oM.Geometry.Tolerance.Angle) { RevitSettings settings = new RevitSettings(); if (connectionSettings != null) { settings.ConnectionSettings = connectionSettings; } if (familyLoadSettings != null) { settings.FamilyLoadSettings = familyLoadSettings; } if (parameterSettings != null) { settings.ParameterSettings = parameterSettings; } if (!double.IsNaN(distanceTolerance)) { settings.DistanceTolerance = distanceTolerance; } if (!double.IsNaN(distanceTolerance)) { settings.AngleTolerance = angleTolerance; } return(settings); }