Подсчёт кол-ва одинаковых типоразмеров на виде

Автор Тема: Подсчёт кол-ва одинаковых типоразмеров на виде  (Прочитано 5117 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн DilLemonАвтор темы

  • ADN OPEN
  • Сообщений: 7
  • Карма: 0
Привет всем!
Есть задача небольшая, не выходит решить.
Хочу посчитать кол-во типоразмеров семейства с одинаковым именем, и записать получившееся число в параметр другого семейства
Есть такой кусок кода, но он не видит ничего, и постоянно выводит условие в else
Надо чтоб в метки a,b,c,d записались кол-ва посчитанные
Надеюсь понятно объяснил проблему

Код - C# [Выбрать]
  1.             FilteredElementCollector collector = new FilteredElementCollector(Doc, view.Id);
  2.             List<Element> elementsOnSheet = collector.ToElements().ToList();
  3.  
  4.             List<FamilyInstance> familyInstancesOnSheet = new List<FamilyInstance>();
  5.             foreach (Element element in elementsOnSheet)
  6.             {
  7.                 FamilyInstance familyInstance = element as FamilyInstance;
  8.                 if (familyInstance != null)
  9.                 {
  10.                     familyInstancesOnSheet.Add(familyInstance);
  11.                 }
  12.             }
  13.  
  14.             Dictionary<string, int> familyCounts = new Dictionary<string, int>();
  15.  
  16.             foreach (FamilyInstance familyInstance in familyInstancesOnSheet)
  17.             {
  18.                 string familyName = familyInstance.Symbol.Family.Name;
  19.                 if (familyCounts.ContainsKey(AI))
  20.                 {
  21.                     familyCounts[familyName]++;
  22.                     a = a + 1;
  23.                     Autodesk.Revit.DB.Parameter Analog_In = familyInstance.LookupParameter("Кол-во AI");
  24.                     Analog_In.Set(a);
  25.                 }
  26.                 else if (familyCounts.ContainsKey(DI))
  27.                 {
  28.                     familyCounts[familyName]++;
  29.                     b = b + 1;
  30.                     Autodesk.Revit.DB.Parameter Discrete_In = familyInstance.LookupParameter("Кол-во DI");
  31.                     Discrete_In.Set(b);
  32.                 }
  33.  
  34.                 else if (familyCounts.ContainsKey(DO))
  35.                 {
  36.                     familyCounts[familyName]++;
  37.                     c = c + 1;
  38.                     Autodesk.Revit.DB.Parameter Discrete_Out = familyInstance.LookupParameter("Кол-во DO");
  39.                     Discrete_Out.Set(c);
  40.                 }
  41.  
  42.                 else if (familyCounts.ContainsKey(AO))
  43.                 {
  44.                     familyCounts[familyName]++;
  45.                     d = d + 1;
  46.                     Autodesk.Revit.DB.Parameter Analog_Out = familyInstance.LookupParameter("Кол-во AO");
  47.                     Analog_Out.Set(d);
  48.                 }
  49.  
  50.                 else
  51.                 {
  52.                     TaskDialog.Show("Null value", string.Format("Нет таких семейств"));
  53.                 }
  54.             }
  55.  

« Последнее редактирование: 03-06-2023, 18:01:12 от Александр Ривилис »

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Во-первых у вас в во всех условиях проверяется, что в словаре должны находиться некие AI, DI, D0, A0. Что это? Какие-то переменные? Откуда они возьмутся в словаре, если словарь вы создали непосредственно перед началом итерации и ничем его не заполняли?!
Во-вторых - при вставке кода делайте ему правильное форматирование!


Оффлайн DilLemonАвтор темы

  • ADN OPEN
  • Сообщений: 7
  • Карма: 0
у вас в во всех условиях проверяется, что в словаре должны находиться некие AI, DI, D0, A0. Что это?
Это названия типоразмеров в семействе, которые надо посчитать
То есть, есть таблица, и надо посчитать кол-во одинаковых сигналов (сколько кружочков в каждой строке по большему счёту)



Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Это названия типоразмеров в семействе, которые надо посчитать
То есть, есть таблица, и надо посчитать кол-во одинаковых сигналов (сколько кружочков в каждой строке по большему счёту)

Так вы сообщение мое еще раз прочитайте - вы в каждом условии проверяете, что эти ваши названия типоразмеров находятся в словаре. Естественно, у вас ни одно условие не срабатывает, так как в словарь вы ничего не добавляли