/// <summary>
        /// Конструктор
        /// </summary>
        /// <param name="uiApplication">UIApplication</param>
        /// <param name="skipFamilies">Список семейств, которые уже присутствуют в списке обработки</param>
        public SelectFamilyPairWindow(UIApplication uiApplication, List <string> skipFamilies)
        {
            InitializeComponent();
            Title = ModPlusAPI.Language.GetItem(ModPlusConnector.Instance.Name, "h6");

            Categories = new List <ExtCategoryForSelection>();

            var families = new FilteredElementCollector(uiApplication.ActiveUIDocument.Document)
                           .OfClass(typeof(Family))
                           .Cast <Family>()
                           .Where(f => f.FamilyCategory != null && !f.IsInPlace)
                           .ToList();

            Dictionary <int, Category> categories = families
                                                    .Select(f => f.FamilyCategory)
                                                    .GroupBy(f => f.Id.IntegerValue)
                                                    .ToDictionary(g => g.Key, g => g.First());

            var groupedByCategory = families.GroupBy(f => f.FamilyCategoryId.IntegerValue);

            foreach (IGrouping <int, Family> grouping in groupedByCategory)
            {
                var extCategoryForSelection = new ExtCategoryForSelection(categories[grouping.Key]);
                foreach (Family family in grouping)
                {
                    if (skipFamilies.Contains(family.Name))
                    {
                        continue;
                    }

                    var extFamilyForSelection = new ExtFamilyForSelection(extCategoryForSelection, family);
                    extCategoryForSelection.Families.Add(extFamilyForSelection);
                }

                if (extCategoryForSelection.Families.Count > 1)
                {
                    Categories.Add(extCategoryForSelection);
                }
            }

            TvAllFamilies.ItemsSource = Categories;
        }
Exemplo n.º 2
0
 /// <summary>
 /// Инициализация нового экземпляра <see cref="ExtFamily"/>
 /// </summary>
 /// <param name="extFamilyForSelection">Экземпляр <see cref="ExtFamilyForSelection"/></param>
 /// <param name="onlyOneSymbolCanBeSelected">Только один типоразмер может быть выбран</param>
 public ExtFamily(ExtFamilyForSelection extFamilyForSelection, bool onlyOneSymbolCanBeSelected)
     : this(onlyOneSymbolCanBeSelected)
 {
     Family = extFamilyForSelection.Family;
     FillDataFromFamily();
 }