Перемножение списков.
Главная › Форумы › Задать вопрос › Перемножение списков.
- В этой теме 14 ответов, 5 участников, последнее обновление 5 лет, 3 месяца назад сделано Ренат Я..
-
АвторСообщения
-
Дмитрий (Dgrov)Участник
Привет всем! Как перемножить список элементов на соответствующее им числовое значение параметра?
То есть имеем сгруппированный список помещений, надо перемножить их на параметр количества типовых этажей.
Если просто перемножать получаю нули. Надо как-то из списка помещений сделать единицы.
Привет. Если не сложно – можно приложить скрин из динамо?
полагаю string надо перевести в integer
Дмитрий (Dgrov)УчастникКак перевести?
А как вы себе представляете конечный результат? Если даже создать новый параметр помещений, который будет равняться единице и умножить первый список на второй, в итоге все равно получится второй список. Что-то я не понимаю смысл задачи. А на скрине вы пытаетесь умножить килограммы на километры.
Дмитрий (Dgrov)УчастникДа, похоже немного не туда )) . Нужно чтобы у помещений появился параметр в котором указывалось сколько всего уникальных квартир используется в трех корпусах здания, где каждый корпус имеет разное количество типовых этажей. Спецификацией это легко, но стоит задача не плодить их, а сделать скрипт. За уникальность отвечает параметр “ADSK_Индекс квартиры”, количество типовых этажей – тоже отдельным параметром.
“Нужно чтобы у помещений появился параметр в котором указывалось сколько всего уникальных квартир используется в трех корпусах здания, где каждый корпус имеет разное количество типовых этажей” – думаю, необходимо для себя решить каким образом высчитывается этот параметр. И если необходима помощь в динамо, хорошо было бы на скринах показать что есть и откуда что берется, пока что не совсем ясно.
Дмитрий (Dgrov)УчастникЕсть три корпуса разной этажности, в каждом из них присутствуют одинаковые квартиры. Задача посчитать сколько всего одинаковых квартир.
К примеру, в корпусе 1 (10 этажей) на типовом этаже три уникальные квартиры, в корпусе 2 (15 этажей) – их уже 4, а в в корпусе 3 (20 этажей) – 5 квартир. Тогда всего (3*10)+(4*15)+(5*20)=190 квартир. Вот это число и должно попадать в новый общий параметр помещения.
Смоделирован только типовой этаж.
Решение с помощью спецификаций ревита: Из всех помещений выбираем только по одному от квартиры (фильтруем по параметр “имя”), заполняем параметр “количество типовых этажей”, перемножаем и сортируем по уникальности (параметр “индекс квартиры”). Хорошо, но получается много спецификаций.
В динамо: также отфильтровываю по одному от квартиры, а вот после не совсем понятно. Надо как-то сгруппировать по корпусам, потом каждый список умножить на количество этажей, получить общее количество по уникальности и занести в новый общий параметр.
Попытался сделать как-то так
В чем суть? Достаем параметры номер квартиры, секция(корпус) и этаж (уровень). Для всех помещений внутри каждой квартиры параметр “номер квартиры” будет одинаковым, потому собираем в одну строчку три параметра и отбираем уникальные, получаемое количество записываем в новый параметр.
Дмитрий (Dgrov)УчастникАнатолий, спасибо за участие! Попытаюсь разобраться на вашем примере, хотя если бы было нодами, мне будет значительно легче )). Если я правильно понял, то вы просто вытащили по одному помещению из квартиры и сосчитали сумму. Не хватает данных – сколько у вас в расчете этажей и секций? Хорошо бы вы смоделировали хотя бы две секции с разной этажностью.
Плохо понимаю питон, что делает строчки [s=i+” “+j+” “+k] и [DsCore.List.UniqueItems(List)]?
И еще у вас все помещения физически раскинуты по этажам, а у нас моделируется только один этаж. За количество этажей отвечает отдельный параметр.
Дмитрий, в таких задачах намного удобнее было работать бы с тем файлом, в котором необходим расчет, или, конечно, с его подобием (правильным примером), иначе такие вопросы возникать и будут. Сам смоделировал две секции с разными типовыми этажами. Пытался максимально приблизить свой файл к необходимым данным поставленной задачи насколько возможно.
На питоне мне намного проще написать код чем позволяют это сделать ноды, хотя знатоки возможно разложат все нодами быстро и правильно.
Строчка s=i+” “+j+” “+k суммирует каждую последовательную строчку каждого списка и суммирует в одном, это видно на скрине, в первом Watch,
[DsCore.List.UniqueItems(List)] – это нод UniqueItems на питоне.
Дмитрий (Dgrov)УчастникВот, прикладываю фрагмент проекта. Цель – данные из колонки “ИТОГО” спецификации должны попасть в новый параметр помещений. Если возможно, лучше нодами или с применением дизайн скрипта. Тогда дальше сам смогу. Спасибо.
https://www.dropbox.com/sh/f366wg7uf4gdffp/AAA9fQVDuGqiOBJJC8zfDFf-a?dl=0
Дмитрий, Вы получили сами квартиры. А Вам нужно получить количество квартир, а не сами квартиры. Тогда все можно будет перемножить.
Как-то так. Новый параметр записывается только в помещения кухни (согласно спецификации)
Дмитрий (Dgrov)УчастникАнатолий, то что нужно, спасибо!
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.