Решено: alexey.lobanov. Перейти к решению.
Решено: alexey.lobanov. Перейти к решению.
Тут я хочу стпросить Артура, какие есть способы переименования типоразмера через API
Я нашел только один, через открытие семейства в фоне и перименовки типоразмера чрез менеджер семейства, со сдается мне, что есть вариант проще
Alexey Lobanov / Алексей Лобанов
Revit Architecture Certified Professional | Autodesk Certified Instructor | Autodesk Expert Elite
PRORUBIM | YouTube channel | LinkedIn profile
Все давольно банально - свойсво Name у класса семейства или класса типа (в зависимости какое имя нужно изменить)
Element.Name
А, ну тогда без питона не обойтись, так как из дизайнскрипта свойство Name ридонли
Alexey Lobanov / Алексей Лобанов
Revit Architecture Certified Professional | Autodesk Certified Instructor | Autodesk Expert Elite
PRORUBIM | YouTube channel | LinkedIn profile
Таак. Отлично. Спасибо. Работает.
Я тут немножко его доделываю насколько могу: http://joxi.ru/YzEoVP3JTJAuXblmnu0
Но возникает теперь другой вопрос....
А как теперь изменить группу типоразмеров? http://joxi.ru/aDIoVIwyTJDHAoB9wFs
Странно потерялась ссылка.
Как теперь изменить группу типоразмеров?
То есть не один элемент переименовать а группу.... Наверное цикл нужно использовать? "for i in IN[0]" ? а в цикле писать s.Name?
Вот:
да, можно так.
только надо в цикле незабыть создать переменную s = UnwrapElement(i)
Alexey Lobanov / Алексей Лобанов
Revit Architecture Certified Professional | Autodesk Certified Instructor | Autodesk Expert Elite
PRORUBIM | YouTube channel | LinkedIn profile
такая ошибка происходит из-за того, что на вход подается не массив элементов, а один элемент....
вот питон и говорит, что ты пытаешся пройтись циклом по диничному элементу.
тут наверное надо как-то сделать, чтобы даже если один элемент, то он помещался в массив или чтобы действия были разные в зависимости от этого.
можно вот так например сделать......это конечно не тру и смахивает на извращение, но да пофиг.
кстати, транзакции в питоне можно открывать и закрывать в начале и в конце скрипта, а не каждый проход цикла.
Alexey Lobanov / Алексей Лобанов
Revit Architecture Certified Professional | Autodesk Certified Instructor | Autodesk Expert Elite
PRORUBIM | YouTube channel | LinkedIn profile
я сделал но у меня выскочила та-же ошибка.
-
я в итоге добился того что присвоил имя "adad" всем именам....
но я не смог сделать это с массивом....
не выходит взять массив имен и вставить их в массив семейств...
-
вот этот скрипт присваивает одно имя группе семейств: http://joxi.ru/Dr8vjvOu4EJj26
import clr clr.AddReference('RevitServices') import RevitServices from RevitServices.Persistence import DocumentManager from RevitServices.Transactions import TransactionManager doc = DocumentManager.Instance.CurrentDBDocument TransactionManager.Instance.EnsureInTransaction(doc) TransactionManager.Instance.TransactionTaskDone() name = IN[1] for i in IN[0]: s = UnwrapElement(i) s.Name = name dataEnteringNode = IN #Assign your output to the OUT variable #OUT = 0
но как только я вставляю на вход массив выдает ошибку: http://joxi.ru/KAgkdkXC4JNJAl
Ты пытаешся присвоить имени лист из имен, а нужно присваивать элемент из этого листа. Вот питон и говорит тебе, что он ожидал строку а получил лист и не знает что с ним делать.
если у тебя массив, то должно быть что-то типа:
for i in range(0,IN[0].Count): s = UnwrapElement(IN[0][i]) s.Name = name[i]
Alexey Lobanov / Алексей Лобанов
Revit Architecture Certified Professional | Autodesk Certified Instructor | Autodesk Expert Elite
PRORUBIM | YouTube channel | LinkedIn profile
Так получилось переименовать имя типа а не семейства?
Что в итоге?
Рид онли так и осталось? т.е. без питона никак?
Добрый день, коллеги!
От себя хочестся еще добавить, что в пакете нодов Clockwork есть отличный нод Element.SetName. Отлично переименовывает типы семейств))
Ильдар Качурин
Архитектор, BIM-менеджер
Блог YouTube | IND-architects | IND-office
Facebook | Twitter | LinkedIn
Не нашли то, что искали? Задайте вопросы в сообществе или поделитесь своими знаниями.