Как создать узлы в Xpresso и соединить их
Получаем тег Xpresso и корневой узел:
# Получаем активный объект в документе
my_object = doc.GetActiveObject()
# Получаем тег Xpresso, предполагается, что он уже прикреплен к объекту
xpresso_tag = my_object.GetTag(c4d.Texpresso)
# Получаем мастер узлов и корневой узел
node_master = xpresso_tag.GetNodeMaster()
root = node_master.GetRoot()Создадим узел объекта и математический узел:
node1 = node_master.CreateNode(root, c4d.ID_OPERATOR_OBJECT, x=200, y=100)
node2 = node_master.CreateNode(root, c4d.ID_OPERATOR_MATH, x=400, y=100)Другие типы узлов смотрим в документации, а их параметры ищем тут
У мат.оператора поменяем тип данных на целочисленный и тип функции на умножение. Для изменения этих параметров, сначала надо получить контейнер с настройками соответствующего узла:
bc = node2.GetOperatorContainer() # получаем контейнер мат.узла
bc[c4d.GV_DYNAMIC_DATATYPE] = c4d.DTYPE_LONG # меняем тип данных
bc[c4d.GV_MATH_FUNCTION_ID] = c4d.GV_MUL_NODE_FUNCTION # меняем функцию
node2.SetOperatorContainer(bc) # сохраняем изменения в узле
print(node2[c4d.GV_DYNAMIC_DATATYPE]) # можно вывести значение параметраОбратите внимание: значение параметра можно прочитать обратившись к соответствующему свойству, но изменить его напрямую, присвоив значение нельзя (node2[c4d.GV_DYNAMIC_DATATYPE] = c4d.DTYPE_LONG - выдаст ошибку!)
Можно задать узлу своё название:
Теперь, добавляем порты и соединяем:
Last updated
Was this helpful?