Пример #1
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");
            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);
                    returnObject.Add(qlMepSystem);
                }
            }
            return(returnObject.OrderBy(x => x.name).ToList());
        }
Пример #2
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());
        }
Пример #3
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);
        }
Пример #4
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());
        }
Пример #5
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());
        }