Создание точек отката UNDOTYPE
В Cinema 4D Python API, методы StartUndo, AddUndo, и EndUndo используются для создания точек отката (undo points) при изменении документа сцены. Это позволяет пользователям отменять и повторять изменения, сделанные скриптом.
Смотреть в документации StartUndo
Вот как эти методы и типы можно использовать в скрипте:
Пример: Изменение позиции объекта с точками отката
import c4d
def main():
doc.StartUndo() # Начало записи отката
obj = doc.GetActiveObject() # Получаем активный объект
if obj is None:
return
# Добавляем точку отката для изменения объекта
doc.AddUndo(c4d.UNDOTYPE_CHANGE, obj)
# Изменяем позицию объекта
new_position = c4d.Vector(100, 200, 300)
obj.SetAbsPos(new_position)
doc.EndUndo() # Завершаем запись отката
c4d.EventAdd() # Обновляем сцену, чтобы изменения были видны
# Вызов основной функции
if __name__ == '__main__':
main()Пример: Удаление объекта с точками отката
Пример: Изменение выбора объекта с точками отката
Пример: Изменение иерархии и PSR объекта с точками отката
Ниже перечислены типы которые можно использовать для фиксации точек отката:
UNDOTYPE_CHANGE Любое изменение объекта, включая модификации иерархии; изменение позиционирования (объект был перемещен из A в B), подструктур и т. д. (Необходимо вызвать перед изменением.)
UNDOTYPE_CHANGE_NOCHILDREN То же, что UNDOTYPE_CHANGE, но без дочерних изменений. (Необходимо вызвать перед изменением.)
UNDOTYPE_CHANGE_SMALL Изменяете только локальные данные (например, контейнер данных), без подструктур (например, без тегов на объекте) и без дочерних элементов. (Необходимо вызвать перед изменением.)
UNDOTYPE_CHANGE_SELECTION Измените выбор только на точку/полигон/ребро. (Необходимо вызвать перед изменением.)
UNDOTYPE_NEWOBJ Был создан новый объект/узел/тег и т. д. (Необходимо вызвать после изменения.)
UNDOTYPE_DELETEOBJ Объект/узел/тег и т. д., подлежащий удалению. (Необходимо вызвать перед изменением.)
UNDOTYPE_ACTIVATE Автоматически управляется с помощью BaseDocument.SetActiveObject()/SetActiveTag()/SetActiveMaterial() и т. д. Нет необходимости использовать вручную.
UNDOTYPE_DEACTIVATE Автоматически управляется с помощью BaseDocument.SetActiveObject()/SetActiveTag()/SetActiveMaterial() и т. д. Нет необходимости использовать вручную.
UNDOTYPE_BITS Изменение битов объекта, например, статуса выбора. (Необходимо вызвать перед изменением.)
UNDOTYPE_HIERARCHY_PSR Изменение иерархического размещения и значений PSR. (Необходимо вызвать перед изменением.)
Last updated
Was this helpful?