예제 #1
0
        public List <QLFabricationService> GetFabServices(IResolveFieldContext context, string[] nameFilter = null)
        {
            Document _doc = ResolverEntry.Doc;

            var stuff = ResolverEntry.aRevitTask.Run <List <QLFabricationService> >(app =>
            {
                var fabricationConfiguration = FabricationConfiguration.GetFabricationConfiguration(_doc);
                var objectList = fabricationConfiguration.GetAllServices();

                var nameFilterStrings       = nameFilter != null ? nameFilter.ToList() : new List <string>();
                var qlFabricationPartsField = GraphQlHelpers.GetFieldFromContext(context, "qlFabricationParts");


                var returnObject = new ConcurrentBag <QLFabricationService>();

                //Parallel.ForEach(stringList, aFamilyCategoryName =>
                foreach (var aFabricationService in objectList)
                {
                    if (nameFilterStrings.Count == 0 || nameFilterStrings.Contains(aFabricationService.Name))
                    {
                        var qlFabricationService = new QLFabricationServiceResolve(aFabricationService, qlFabricationPartsField);
                        returnObject.Add(qlFabricationService);
                    }
                }
                return(returnObject.OrderBy(x => x.name).ToList());
            }).Result;

            return(stuff);
        }
예제 #2
0
        public List <QLAssembly> GetAssemblies(IResolveFieldContext context, string[] nameFilter = null)
        {
            Document _doc = ResolverEntry.Doc;

            //https://github.com/jeremytammik/TraverseAllSystems/blob/master/TraverseAllSystems/Command.cs
            var objectList = new FilteredElementCollector(_doc).OfClass(typeof(AssemblyInstance)); //.Select(x=>x as MEPSystem).ToList<MEPSystem>();

            var nameFilterStrings = nameFilter != null?nameFilter.ToList() : new List <string>();

            var qlFieldViews             = GraphQlHelpers.GetFieldFromContext(context, "hasViews");
            var qlElementCollectionField = GraphQlHelpers.GetFieldFromContext(context, "qlElementCollection");

            List <View> viewListing = null;

            if (qlFieldViews != null)
            {
                viewListing = new FilteredElementCollector(ResolverEntry.Doc)
                              .OfCategory(BuiltInCategory.OST_Views)
                              .WhereElementIsNotElementType()
                              .Cast <View>().ToList();
            }

            var returnObject = new ConcurrentBag <QLAssembly>();

            //Parallel.ForEach(stringList, aFamilyCategoryName =>
            foreach (AssemblyInstance aAssembly in objectList)
            {
                if (nameFilterStrings.Count == 0 || nameFilterStrings.Contains(aAssembly.Name))
                {
                    var qlMepSystem = new QLAssemblyResolve(aAssembly, qlFieldViews, viewListing, qlElementCollectionField);
                    returnObject.Add(qlMepSystem);
                }
            }
            return(returnObject.OrderBy(x => x.name).ToList());
        }
예제 #3
0
        public List <QLFamilyCategory> GetCategories(IResolveFieldContext context, string[] nameFilter = null)
        {
            Document _doc = ResolverEntry.Doc;

            List <Category> objectList = new FilteredElementCollector(_doc).OfClass(typeof(Family)).Select(x => (x as Family).FamilyCategory).GroupBy(x => x.Id.ToString()).Select(x => x.First()).ToList();
            //var stringList = objectList.Select(x => x.Name).OrderBy(x => x).Distinct().ToList();
            //https://thebuildingcoder.typepad.com/blog/2010/05/categories.html
            //var objectList = _doc.Settings.Categories;

            var nameFilterStrings = nameFilter != null?nameFilter.ToList() : new List <string>();

            var qlFamiliesField        = GraphQlHelpers.GetFieldFromContext(context, "qlFamilies");
            var qlFamilyInstancesField = GraphQlHelpers.GetFieldFromContext(context, "qlFamilyInstances");


            var returnObject = new ConcurrentBag <QLFamilyCategory>();

            //Parallel.ForEach(stringList, aFamilyCategoryName =>
            foreach (Category aCategory in objectList)
            {
                if (nameFilterStrings.Count == 0 || nameFilterStrings.Contains(aCategory.Name))
                {
                    var qlFamilyCategory = new QLFamilyCategoryResolve(aCategory, qlFamiliesField, qlFamilyInstancesField);
                    returnObject.Add(qlFamilyCategory);
                }
            }
            return(returnObject.OrderBy(x => x.name).ToList());
        }
예제 #4
0
        public QLElementCollection GetSelection(IResolveFieldContext context, string[] nameFilter = null)
        {
            Document   _doc   = ResolverEntry.Doc;
            UIDocument _uidoc = ResolverEntry.UiDoc;

            Selection selection = _uidoc.Selection;
            var       qlFamilyInstancesField  = GraphQlHelpers.GetFieldFromContext(context, "qlFamilyInstances");
            var       qlFabricationPartsField = GraphQlHelpers.GetFieldFromContext(context, "qlFabricationParts");

            ICollection <ElementId> elementIds          = selection.GetElementIds();
            QLElementCollection     qlElementCollection = new QLElementCollectionResolve(elementIds, qlFamilyInstancesField, qlFabricationPartsField);

            return(qlElementCollection);
        }
예제 #5
0
        public List <QLViewSchedule> GetViewSchedules(IResolveFieldContext context, string[] nameFilter = null)
        {
            Document _doc         = ResolverEntry.Doc;
            var      scheduleList = new FilteredElementCollector(_doc).OfClass(typeof(ViewSchedule)).Select(p => (ViewSchedule)p).Where(x => !x.Name.Contains("Revision Schedule")).ToList();

            var nameFilterStrings = nameFilter != null?nameFilter.ToList() : new List <string>();

            var qlViewScheduleData = GraphQlHelpers.GetFieldFromContext(context, "qlViewScheduleData");

            var returnObject = new ConcurrentBag <QLViewSchedule>();

            //Parallel.ForEach(objectList, aFamily =>
            foreach (var aViewSchedule in scheduleList)
            {
                if (nameFilterStrings.Count == 0 || nameFilterStrings.Contains(aViewSchedule.Name))
                {
                    var qlViewScheudle = new QLViewScheduleResolve(aViewSchedule, qlViewScheduleData);
                    returnObject.Add(qlViewScheudle);
                }
            }
            return(returnObject.OrderBy(x => x.name).ToList());
        }
예제 #6
0
        public List <QLFamily> GetFamilies(IResolveFieldContext context, string[] nameFilter = null)
        {
            Document _doc = ResolverEntry.Doc;

            List <Family> objectList = new FilteredElementCollector(_doc).OfClass(typeof(Family)).Select(x => (x as Family)).ToList();

            var nameFilterStrings = nameFilter != null?nameFilter.ToList() : new List <string>();

            var qlFamilySymbolsField   = GraphQlHelpers.GetFieldFromContext(context, "qlFamilySymbols");
            var qlFamilyInstancesField = GraphQlHelpers.GetFieldFromContext(context, "qlFamilyInstances");

            var returnObject = new ConcurrentBag <QLFamily>();

            //Parallel.ForEach(objectList, aFamily =>
            foreach (var aFamily in objectList)
            {
                if (nameFilterStrings.Count == 0 || nameFilterStrings.Contains(aFamily.Name))
                {
                    var qlFamily = new QLFamilyResolve(aFamily, qlFamilySymbolsField, qlFamilyInstancesField);
                    returnObject.Add(qlFamily);
                }
            }
            return(returnObject.OrderBy(x => x.name).ToList());
        }