ADN Club > Revit API

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

(1/1)

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


--- Код - C# [Выбрать] ---            FilteredElementCollector collector = new FilteredElementCollector(Doc, view.Id);            List<Element> elementsOnSheet = collector.ToElements().ToList();             List<FamilyInstance> familyInstancesOnSheet = new List<FamilyInstance>();            foreach (Element element in elementsOnSheet)            {                FamilyInstance familyInstance = element as FamilyInstance;                if (familyInstance != null)                {                    familyInstancesOnSheet.Add(familyInstance);                }            }             Dictionary<string, int> familyCounts = new Dictionary<string, int>();             foreach (FamilyInstance familyInstance in familyInstancesOnSheet)            {                string familyName = familyInstance.Symbol.Family.Name;                if (familyCounts.ContainsKey(AI))                {                    familyCounts[familyName]++;                    a = a + 1;                    Autodesk.Revit.DB.Parameter Analog_In = familyInstance.LookupParameter("Кол-во AI");                    Analog_In.Set(a);                }                else if (familyCounts.ContainsKey(DI))                {                    familyCounts[familyName]++;                    b = b + 1;                    Autodesk.Revit.DB.Parameter Discrete_In = familyInstance.LookupParameter("Кол-во DI");                    Discrete_In.Set(b);                }                 else if (familyCounts.ContainsKey(DO))                {                    familyCounts[familyName]++;                    c = c + 1;                    Autodesk.Revit.DB.Parameter Discrete_Out = familyInstance.LookupParameter("Кол-во DO");                    Discrete_Out.Set(c);                }                 else if (familyCounts.ContainsKey(AO))                {                    familyCounts[familyName]++;                    d = d + 1;                    Autodesk.Revit.DB.Parameter Analog_Out = familyInstance.LookupParameter("Кол-во AO");                    Analog_Out.Set(d);                }                 else                {                    TaskDialog.Show("Null value", string.Format("Нет таких семейств"));                }            } 

Александр Пекшев aka Modis:
Во-первых у вас в во всех условиях проверяется, что в словаре должны находиться некие AI, DI, D0, A0. Что это? Какие-то переменные? Откуда они возьмутся в словаре, если словарь вы создали непосредственно перед началом итерации и ничем его не заполняли?!
Во-вторых - при вставке кода делайте ему правильное форматирование!

DilLemon:

--- Цитата: Александр Пекшев aka Modis от 02-06-2023, 09:16:39 ---у вас в во всех условиях проверяется, что в словаре должны находиться некие AI, DI, D0, A0. Что это?
--- Конец цитаты ---
Это названия типоразмеров в семействе, которые надо посчитать
То есть, есть таблица, и надо посчитать кол-во одинаковых сигналов (сколько кружочков в каждой строке по большему счёту)


Александр Пекшев aka Modis:

--- Цитата: DilLemon от 05-06-2023, 11:27:47 ---Это названия типоразмеров в семействе, которые надо посчитать
То есть, есть таблица, и надо посчитать кол-во одинаковых сигналов (сколько кружочков в каждой строке по большему счёту)

--- Конец цитаты ---

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

Навигация

[0] Главная страница сообщений

Перейти к полной версии