示例#1
0
        /***************************************************/
        /****              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);
        }
示例#3
0
        /***************************************************/
        /****              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);
        }
示例#4
0
        /***************************************************/
        /****              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;
        }
示例#6
0
        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);
        }