Как получить список панелей в виде двумерного массива
- В этой теме 12 ответов, 5 участников, последнее обновление 8 лет, 11 месяцев назад сделано Геннадий.
-
АвторСообщения
-
ГеннадийУчастник
Всем добрый день.
Прошу знающих подсказать, как можно получить список панелей в виде двумерного массива, т.е. по столбцам и строкам а не по последовательности как на схеме (см. изображение).
Заранее спасибо.
Как вариант, можно использовать нод List.Chop в котором нужно задавать длину разбивки исходного списка
кстати, нод List.Create там не нужен. Он необходим для объединения элементов в список. Плюсиком добавляются входные слоты(минусиком – наоборот). А так получается вложенный список
ГеннадийУчастникХасан, спасибо за ответ. Рассматривал что-то подобное, но хотелось бы считывать информацию с Revit и минимализировать руки. Идея такова (спер из инета :) ): Задать каждой панели цвет и получить рисунок на витраже ( плитке и т.п.). Но список ячеек разбивки рисунка – двумерный массив и количество столбцов и строчек хотелось бы получать из данных витража для соответствия ( т.е. если в витраже 300на400 ячеек, то и разбивку рисунка выполнить 300на400 и перенести данные по цвету из сетки рисунка на ячейки витража. Вот и думаю, как это сделать.
P.S. В изображении и схеме количество ячеек не совпадает, я это знаю. Про List.Create учту, спасибо. Просто это наброски…
Если нужна полная автоматизация, то можно найти центры панелей и отсортировать по координатам
чуть позже напишу код. Да, и растровую картинку тоже можно импортировать и наложить цвета из нее на витраж
У Лобанова что то подобное есть http://www.youtube.com/watch?v=r-G93-nmYGA
ГеннадийУчастникПытался до Алексея достучаться….Не удалось. У него генерация цвета рандомом идет. А если его убрать – то по порядку, и всё это привязано к количеству элементов. Т.е. в том примере незачем иметь четкий список по строкам и столбцам. А знать количество элементов для генерации на них рисунка недостаточно по моему разумению.
Хасан правильно сказал. Нужны координаты каждой панели. А затем сортировка по координатам. Шикарная задача. Удачи в реализации! :)
Геннадий, если несложно, предоставьте пример проекта, растровую картинку тоже
можно еще вот так сделать. Так код покомпактнее будет и можно будет избавиться от нескольких нодов
import clr cgrid = UnwrapElement(IN[0]).CurtainGrid ulines = cgrid.GetUGridLineIds() vlines = cgrid.GetVGridLineIds() list=[] for ul in ulines: vlist=[] for vl in vlines: vlist.append(cgrid.GetPanel(ul,vl)) list.append(vlist) OUT=list
ГеннадийУчастникНу что тут сказать? Алексей, Legantmar – спасибо! Буду разбираться…особенно Алексей озадачил Питоном :) тут Динамо только только начинается…Но хочу заметить, что количество ячеек надо задавать на 1 меньше, чем количество строк и столбцов панелей витража. Разбивка витража делается по импостам, а не по панелям. Т.е. если в вертикальной и горизонтальной сетке витража стоит 150, то в скрипте количество ячеек задаем 149. Вот и я поумничал :) Всем спасибо за участие.
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.