Как подсчитать количество экземпляров семейства в проекте?

Автор Тема: Как подсчитать количество экземпляров семейства в проекте?  (Прочитано 23382 раз)

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

Оффлайн miko

  • ADN OPEN
  • **
  • Сообщений: 55
  • Карма: 0
я не говорю что это велосипед , я просто изначально даже не знал про это , поэтому и подумал что это нечто сложное
А так вижу, что напрямую collector2.OfType(FamilySymbol) лучше не применять.
не спорю , это пока что мысли

Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
поэтому и подумал что это нечто сложное
В целом идея такова. Метода, который бы выдал нам количество экземпляров конкретного типа - нет. Но есть все, для того чтобы это посчитать.
Варианта 2.
1) Либо мы сначала берем все экземпляры, который нам нужны, затем группируем их по типу. Как группируем - с помощью LINQ или циклами - не важно.
2) Если у нас есть список типов, для которых мы хотим посчитать количество экземпляров, то с помощью FilteredElementCollector в цикле выбираем все экземпляры заданного типа и соответственно берем их количество.

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
В целом идея такова. Метода, который бы выдал нам количество экземпляров конкретного типа - нет. Но есть все, для того чтобы это посчитать.
Варианта 2.
1) Либо мы сначала берем все экземпляры, который нам нужны, затем группируем их по типу. Как группируем - с помощью LINQ или циклами - не важно.
2) Если у нас есть список типов, для которых мы хотим посчитать количество экземпляров, то с помощью FilteredElementCollector в цикле выбираем все экземпляры заданного типа и соответственно берем их количество.

Изначально так и думал делать.

Оффлайн miko

  • ADN OPEN
  • **
  • Сообщений: 55
  • Карма: 0
проблема в том что список не постоянный , туда может залетать "сам" любой тип семейства.


Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
проблема в том что список не постоянный , туда может залетать "сам" любой тип семейства.
Тогда вариант 1

Оффлайн miko

  • ADN OPEN
  • **
  • Сообщений: 55
  • Карма: 0
отсортировал используя
p=Parameter
p=windows.LookupParameter("номер типа")
    if (p == None):
        continue
a=p.GetType
далее в цикле заношу все значения типов в список и этот список сортирую методами Python и получаю список количества типов данного семейства из:
ElementCategoryFilter
правильно я понял ?

Оффлайн miko

  • ADN OPEN
  • **
  • Сообщений: 55
  • Карма: 0
теперь проблема другого порядка !
есть список типов каждого экземпляра [2, 3, 4, 5, 5, 5, 2, 2, 2, 1, 1, 2, 2]
всего 13 экземпляров и 5 типов
значения параметров типа:
например ширина=[4.79002624671916, 3.937007874015748, 5.905511811023622, 2.2965879265091864, 5.905511811023622]
например высота=  [3.838582677165354, 3.838582677165354, 3.838582677165354, 3.838582677165354, 3.838582677165354]
как связать количество экземпляров типа с параметрами каждого типа , ведь в данный момент 2 тип есть и в начале и в конце списка , если их отсортировать то не факт что первые значения параметров будут соответствовать 2 типу

Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
как связать количество экземпляров типа с параметрами каждого типа
Я абсолютно не понял зачем их связывать. Одинаковые типы имеют одинаковые параметры. Соответственно тот тип 2, который есть в начале, будет иметь те же самые параметры, что и типы 2 в самом конце. Потому что это один и тот же объект (тип)

Оффлайн miko

  • ADN OPEN
  • **
  • Сообщений: 55
  • Карма: 0
вы правы , пока писал понял как решить проблему, нужно просто для списка типов каждого экземпляра [2, 3, 4, 5, 5, 5, 2, 2, 2, 1, 1, 2, 2]
 написать алгоритм перебора данного списка с помощью for и def . Вопрос решен :)