Большинство диалоговых окон являются производными от класса GeDialog Диалог — это окно или панель, на которой расположены кнопки, поля редактирования, значки, изображения и другие элементы. Эти кнопки, ползунки, значки и т. д. называются виджетами. Диалоги действуют как интерфейсы для плагина. Для начала нужно определить класс производный от c4d.gui.GeDialog и в нём методы CreateLayout и Command:
import c4dfrom c4d import gui# Идентификаторы для элементов управленияCOLOR_ID =1000APPLY_BUTTON_ID =1001classColorChangerDialog(gui.GeDialog):defCreateLayout(self):# Устанавливаем заголовок окна диалога self.SetTitle("Color Changer")# Добавляем цветовой выбор self.AddColorField(COLOR_ID, c4d.BFH_SCALEFIT, initw=150, inith=0)# Добавляем кнопку для применения цвета self.AddButton(APPLY_BUTTON_ID, c4d.BFH_CENTER, name="Apply Color")returnTruedefCommand(self,id,msg):# Обработка событий от элементов управленияifid== APPLY_BUTTON_ID:# Получаем выбранный цвет из цветового поля color = self.GetColorField(COLOR_ID)# Получаем активный объект в документе active_object = doc.GetActiveObject()# Если объект выбран, устанавливаем его цветif active_object: active_object[c4d.ID_BASEOBJECT_USECOLOR]= c4d.ID_BASEOBJECT_USECOLOR_ALWAYS active_object[c4d.ID_BASEOBJECT_COLOR]= color['color'] active_object.Message(c4d.MSG_UPDATE) c4d.EventAdd()else: gui.MessageDialog("No object selected.")# Закрываем окно self.Close()returnTrue# Главная функцияdefmain():# Создаем экземпляр диалога dlg =ColorChangerDialog()# Открываем диалог модально dlg.Open(dlgtype=c4d.DLG_TYPE_MODAL, defaultw=300, defaulth=50)if__name__=="__main__":main()
Этот простенький пример создает диалоговое окно, в котором можно выбрать цвет и после нажатия кнопки Apply Color он будет применен к выделенному объекту (не к материалу), а так же у него будет включено цветовое отображение во вьюпорте.