Вот код для регистрации плагина, который приходит извне, в виде файла *.cof (в папке plugins):
//*************************************************************************
//This Script was made by senior 10.07.11
// Глобальные переменные и константы
const var PluginID = 1000001;// идентификационный номер плагина, берётся на сайте MAXON
const var PlugName = "My_Plugin";// Pluginname
const var PlugHelp = "My_Plugin";// Плагин текст справки
const var ObjName = "My_Plugin";// Objektname
var Dial;
// Производные класса MyPlugin
class MyPlugin : MenuPlugin//MenuPlugin-производные класса для регистрации и вывода меню плагинов
{ public:
MyPlugin();//Декларация конструктора
GetID(); //Получить ID плагина(Устанавливает идентификатор контейнера в ID)
GetName(); //Получить имя плагина(Должны возвращать пункты меню для плагина)
GetHelp(); //Получить текст справки для меню
Execute(doc);//Создать диалог(Вызывается, когда плагин выбран.)
RestoreLayout(secret);//Восстановить диалог повторно
}
// Декларация конструктора
MyPlugin::MyPlugin()
//C.O.F.F.E.E. позволяет определять функции внутри класса (что позволяет иметь одинаковые имена функции в разных классах).
//Это делается оператором - "::"-определение функций-членов(имя_класса::имя_функции(список_аргументов){инструкции}
{
super();//Вызывает конструктор родительского класса.
//супер () должен быть вызван в первую строку конструктора производного класса для запуска конструктора родительского класса.
}
//Объявление метода GetID
MyPlugin::GetID()//Возвращает ID плагина.
//Убедитесь, что используется уникальный идентификатор из http://www.plugincafe.com.
{
return PluginID;//const var PluginID = 1000001
}
// Объявление метода GetName - это то, что показывается в Plugins.
MyPlugin::GetName()//Должен вернуть имя меню для плагина.
{
return PlugName;//const var PlugName = "My_Plugin";
}
// Объявление метода getHelper
MyPlugin::GetHelp()//Должен вернуть текст справки для меню. Это будет показано в команд менеджере, подсказке и строке состояния.
{
return PlugHelp;//const var PlugHelp = "My_Plugin";
}
// объявление метода Execute
MyPlugin::Execute(doc)//Вызывается для создания диалога
{
//Dial=new(MyDialog);//new-создает новый объект, заданный его параметром(MyDialog), затем сохраняет этот новый объект в переменную gDial
//Dial->Open(TRUE,-1,-1);//Открываетcz диалоговое окно в указанную позицию.
//Если async имеет значение TRUE, открывается немодальное (асинхронное) окно.
//Вызов функций или использование переменных внутри класса осуществляется с помощью оператора члена(member operator) (->)
//Если XPos =- 1 и YPos =- 1 диалог будет открыт в текущем положении мыши.
//Если XPos =1525, и YPos =475/ async=FALSE диалог будет открыт в этом положении. gDial->Open(FALSE,1525,475);
}
// Объявление метода восстановления макета
MyPlugin::RestoreLayout(secret)//Если одно из меню плагина вызывает асинхронный диалог следует перегрузить эту функцию.
//Она будет вызвана когда C4D необходимо открыть диалог снова, например, если он был добавлен в макет пользователей
//и Программа была перезапущена.
{
//if (!Dial)//Если диалога нет, то
//Dial=new(MyDialog);//создаётся
//Dial->RestoreLayout(secret);//Восстановление диалога
//Вызов функций или использование переменных внутри класса осуществляется с помощью оператора члена(member operator) (->)
}
//1. Декларируется конструктор
//2. Возвращается ID плагина
//3. Возвращается имя плагина
//4. Возвращается текст справки для меню
//5. Вызывается для создания диалога
//6. Вызывается когда необходимо открыть диалог снова, повторно
main()
{
Register(MyPlugin);//Bool Register(LONG id, LONG flags) - registers the serial number.
//В COFFEE внутри C4D это не нужно, только если .cof заходит снаружи
}
//************************************************************************
А это код для регистрации плагина внутри программы, в Script Manager`е:
//**************************************************************
//This Script was made by senior 10.07.11
const var PluginID = 1000001; // Plugin ID Nummer
const var PlugName = "My_Plug"; // Pluginname
const var PlugHelp = "My_Plug_NEW"; // Pluginhilfstext
const var ObjName = "My_Plug"; // Objektname
class MyPlugin : MenuPlugin
{ public:
MyPlugin();
GetID();
GetName();
GetHelp();
Execute(doc);
RestoreLayout(secret);
}
MyPlugin::MyPlugin(){super();}
MyPlugin::GetID(){return PluginID;}
MyPlugin::GetName(){return PlugName;}
MyPlugin::GetHelp(){return PlugHelp;}
MyPlugin::Execute(doc) {}
MyPlugin::RestoreLayout(secret){}
main(doc,op){Register(MyPlugin);}
//*********************************************************************
Комментариев нет:
Отправить комментарий