Dynamo – Русский – только для чтения
Раздел для программистов и специалистов, использующих Dynamo
отмена
Отображаются результаты для 
Показать  только  | Вместо этого искать 
Вы имели в виду: 

dynamo: Каким нодом можно изменить имя семейства?

14 ОТВЕТ 14
РЕШЕНО
Ответить
Сообщение 1 из 15
Dronov.Dmitry
4051 просмотров, 14 ответов

dynamo: Каким нодом можно изменить имя семейства?

Каким нодом можно изменить имя семейства?

 

b82f7e64ef9d2ff74f659ccae89cda39eea6aff3.png

14 ОТВЕТ 14
Сообщение 2 из 15
alexey.lobanov
в ответ: Dronov.Dmitry

Тут я хочу стпросить Артура, какие есть способы переименования типоразмера через API

 

Я нашел только один, через открытие семейства в фоне и перименовки типоразмера чрез менеджер семейства, со сдается мне, что есть вариант проще


Alexey Lobanov / Алексей Лобанов
Revit Architecture Certified Professional | Autodesk Certified Instructor | Autodesk Expert Elite
PRORUBIM | YouTube channel | LinkedIn profile

Сообщение 3 из 15
kart1984
в ответ: alexey.lobanov

Все давольно банально - свойсво Name у класса семейства или класса типа (в зависимости какое имя нужно изменить)

Element.Name

С уважением
Артур Кураков
Сообщение 4 из 15
alexey.lobanov
в ответ: kart1984

А, ну тогда без питона не обойтись, так как из дизайнскрипта свойство Name ридонли

 


Alexey Lobanov / Алексей Лобанов
Revit Architecture Certified Professional | Autodesk Certified Instructor | Autodesk Expert Elite
PRORUBIM | YouTube channel | LinkedIn profile

Сообщение 5 из 15
Dronov.Dmitry
в ответ: alexey.lobanov

Таак. Отлично. Спасибо. Работает.

Я тут немножко его доделываю насколько могу: http://joxi.ru/YzEoVP3JTJAuXblmnu0 Веселый

Но возникает теперь другой вопрос....

А как теперь изменить группу типоразмеров? http://joxi.ru/aDIoVIwyTJDHAoB9wFs 

 

 

Сообщение 6 из 15
Dronov.Dmitry
в ответ: Dronov.Dmitry

Странно потерялась ссылка.
Как теперь изменить группу типоразмеров?

То есть не один элемент переименовать а группу.... Наверное цикл нужно использовать?  "for i in IN[0]" ? а в цикле писать s.Name?

Вот: 

Dynamo.png.png

Сообщение 7 из 15
alexey.lobanov
в ответ: Dronov.Dmitry

да, можно так.

 

только надо в цикле незабыть создать переменную s = UnwrapElement(i)


Alexey Lobanov / Алексей Лобанов
Revit Architecture Certified Professional | Autodesk Certified Instructor | Autodesk Expert Elite
PRORUBIM | YouTube channel | LinkedIn profile

Сообщение 8 из 15
Dronov.Dmitry
в ответ: alexey.lobanov

че то как то не работает: 

d7a595cba1f082069e6bee0ce14dc9b4f13a188d.png

 

пишет отето: http://joxi.ru/u6UxVIwyTJDGAhYK2mc

Сообщение 9 из 15
Dronov.Dmitry
в ответ: alexey.lobanov

Леша. 🙂 Нид хелп. Я не очень владею питоном и не совсем понимаю как работает зацикливание.
Сообщение 10 из 15
alexey.lobanov
в ответ: Dronov.Dmitry

такая ошибка происходит из-за того, что на вход подается не массив элементов, а один элемент....

вот питон и говорит, что ты пытаешся пройтись циклом по диничному элементу.

 

тут наверное надо как-то сделать, чтобы даже если один элемент, то он помещался в массив или чтобы действия были разные в зависимости от этого.

 

можно вот так например сделать......это конечно не тру и смахивает на извращение, но да пофиг.

 

кстати, транзакции в питоне можно открывать и закрывать в начале и в конце скрипта, а не каждый проход цикла.


Alexey Lobanov / Алексей Лобанов
Revit Architecture Certified Professional | Autodesk Certified Instructor | Autodesk Expert Elite
PRORUBIM | YouTube channel | LinkedIn profile

Сообщение 11 из 15
Dronov.Dmitry
в ответ: alexey.lobanov

я сделал но у меня выскочила та-же ошибка.
-
я в итоге добился того что присвоил имя "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

 

Сообщение 12 из 15
alexey.lobanov
в ответ: Dronov.Dmitry

Ты пытаешся присвоить имени лист из имен, а нужно присваивать элемент из этого листа. Вот питон и говорит тебе, что он ожидал строку а получил лист и не знает что с ним делать.

 

если у тебя массив, то должно быть что-то типа:

 

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

Сообщение 13 из 15
Dronov.Dmitry
в ответ: alexey.lobanov

Ага. Получилось спасибо.

Сообщение 14 из 15
Makarov_d
в ответ: Dronov.Dmitry

Так получилось переименовать имя типа а не семейства?

 

Что в итоге? 

Рид онли так и осталось? т.е. без питона никак?

Сообщение 15 из 15
ildar.kachurin
в ответ: Dronov.Dmitry

Добрый день, коллеги!

От себя хочестся еще добавить, что в пакете нодов Clockwork есть отличный нод Element.SetName. Отлично переименовывает типы семейств))



Ильдар Качурин
Архитектор, BIM-менеджер
Блог YouTube | IND-architects | IND-office
Facebook | Twitter | LinkedIn

Не нашли то, что искали? Задайте вопросы в сообществе или поделитесь своими знаниями.

Новая тема  

Autodesk Design & Make Report