Анатолий
Ответы в темах
-
АвторСообщения
-
Для элементов системы пожарной сигнализации скрипт https://drive.google.com/open?id=1UkPl7VH_IZjZIZatIQoXKvEtpIz6e_i8, видео https://youtu.be/WWEQYTLxTaM
Еще один вариант с помощью масенького скрипта питона
import clr
el=IN[0]
a=IN[1]
b=IN[2]
from operator import itemgetter
c=sorted (el, key=itemgetter(a,b))
OUT = cp.s. В начале у меня стоит нод на выборку первых 109 элементов, потому что в файле, который отказался под рукой не все стены имели корректную длину/высоту.
Посмотрел. Максим, причина скорее всего в версии динамо (или ревита). Так понимаю, вы пытались скрипт запустить в последней 2019 версии. У меня тоже ошибку выдает. Пока вспомнил что да к чему, хорошо, что на заметку осталось сообщение о версии динамо 1.3.3. Исправление ошибки просто нужно искать в РевитАПИ..В динамо версии 2.0.1 и выше необходимо заменить нод Geometry.BoundingBox на Element.BoundingBox, но пока что скрипт у меня в 2019 версии не работает…
Заработало, просто необходимо правильно выставлять глубину проецирования этого дополнительного “тела для скрипта”.Добрый день! Не хочется флудить, я бы сказал, что тема просто не совсем изучена, мне лично таким не приходилось заниматься, был бы какой опыт, с радостью помог бы) лично у меня тоже такое в некоторых вопросах на форуме, но бывает позже и ответ получаю). Как вариант, можно спросить или поискать решения на зарубежном форуме, там много решений присутствует.
Может и не в тему, но поделюсь также своими мыслями. Проблема действительно состоит в том, что в Ревите не нашлось пока нами (скорей всего нет) возможности растянуть текст по горизонтали, как в том же Word, например, это первое. Второе, что табуляцию возможно таки вставить в текст, возможно изменить ее длину (по умолчанию 8 пробелов), думаю, но главный вопрос стоит в том “Сколько пробелов необходимо?” Поскольку, как вы и писали в начале, питон все посчитал математически правильно, вот только длину текста необходимо измерять не len(i) или Length, необходимо знать длину(ширину) вставляемой строки текста, поскольку ширина символов “ж”,”л” и “(пробела)” отличаются и это мы видим с того же примера на вашей картинке, где количество символов во всех строчках одинаковое. Потому, мне кажется, на данный момент оптимальным действительно будет вариант, который вам предложил Сергей, где просто необходимо приблизительно высчитать пару точек ,по которым будут вставляться два массива текста.
Добавьте для дополнительного тела в семействе два параметра Отметка1, Отметка2 на привязку снизу и сверху и для перенумерации указывайте необходимую отметку в зависимости от расположения(например, -3000, 2000) так, чтобы если на разных этажах имеются похожие элементы, не появлялись на текущем плане. Согласен, конечно, что вариант не сильно удобный.
Добрый вечер! Пользуйтесь в процессе поиска методом dir().
Пример: пишите в скрипте на выходе
OUT = dir(S) потом посмотрели какие параметры имеются в составе
вашего S (Щит22 в данном случае). Выбрали параметр ,прописали в скрипте например
a = S.ElectricalSystem (если таковой имеется в dir, те методы или свойства, которых там нет выдадут ошибку, как скорее всего у вас и видно). Дальше посмотрели OUT = dir(a) что в списке дальше выпадает и продолжаете поиски. Также не забываем проверять что мы фактически получаем, комментируем #OUT = dir(a) и ниже пишем OUT = a. Иногда необходимо бывает добавить в конце свойства скобки, вот так a = S.ElectricalSystem(), смотря какие характеристики у данных свойств и методов. Успехов!Лично мне вышеизложенная “теория” к интересующему нас всех материалу понравилась.
По поводу вопроса: может я чего-то не понял, но у меня в упрощенном варианте метод IndexOf работает.Если говорить о сути метода, в данном примере по порядку выбираются индексы всех элементов. Если подавать на вход нода отдельный элемент из данного списка элементов – нод укажет порядковый номер элемента (индекс).
-
АвторСообщения