воскресенье, 10 июля 2011 г.

Структура скрипта. 1. Регистрация скрипта.

Вот код для регистрации плагина, который приходит извне, в виде файла *.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);}
//*********************************************************************

Комментариев нет:

Отправить комментарий