Object Creation with COFFEE



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 18/08/2005 at 14:56, xxxxxxxx wrote:

    User Information:
    Cinema 4D Version:   9.012 
    Platform:      Mac OSX  ; 
    Language(s) :   C.O.F.F.E.E  ;

    ---------
    Hey out there.

    I am trying to find out how to create new objects with COFFEE. Should be simple, but I can't seem to find any examples in the SDK or online forums.

    I am trying to use AllocObject(), but can't figure out the syntax. I'm a newbie to COFFEE and I just need some help getting started. Any assistance would be much appreciated.

    -Cheers



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 18/08/2005 at 15:48, xxxxxxxx wrote:

    Go grab yourself the COFFEE documentation!

    Plugin Cafe Downloads

    Since you are MacOS, get the HTML version, not the CHM Windows help file.



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 18/08/2005 at 16:00, xxxxxxxx wrote:

    I have the documentation. I'm finding it a bit cryptic, and there are no examples of how to do what I want to do. AllocObject is not a member of BaseObject, understandably, but when I try the following:

    var cam = new(BaseObject);

    or:

    var cam = new(AllocObject(Ocamera));

    I get errors. I know that there is something basic about the object method that I'm just not grasping. I need help. Thank you.



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 18/08/2005 at 19:03, xxxxxxxx wrote:

    Try this:

    var cam = AllocObject(Ocamera);



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 19/08/2005 at 10:31, xxxxxxxx wrote:

    I've tried this as well. I get an error, "Variable or function expected" at the type call to AllocObject.

    Thanks.



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 19/08/2005 at 13:05, xxxxxxxx wrote:

    Okay. What you may need here is this then:

      
    var type = Ocamera;  
    var cam = AllocObject(type);  
    

    I haven't used the 9.1 version of COFFEE yet, but the doc says ([int] type), so I expect that one cannot use the type directly. Examples of the changes in 9.1 would be warranted.



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 19/08/2005 at 17:32, xxxxxxxx wrote:

    Robert, thanks for your help. I'm still geting an error though. At the end of the first line I still get, "Variable or function expected."



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 19/08/2005 at 21:56, xxxxxxxx wrote:

    Something must be incorrect somewhere else then. My second message had the correct methodology. Here's a simple test source (MenuPlugin) - it loads an icon, so you may want to dump some tif or jpg image as the one mentioned in main() to avoid complaints. Also, use your own Plugin_ID for PLUGIN_MENU_ID.

    This worked perfectly. Calling the plugin from the Plugins menu created a Camera object.

      
    ////////////////////////////////////////////////////////////////  
    // allocobject.cof  
    ////////////////////////////////////////////////////////////////  
      
    // Included symbols  
    //include "c4d_symbols.h"  
      
    enum  
    {  
         // Unique ids from http://www.plugincafe.com  
         PLUGIN_MENU_ID = xxxxxxx,  
      
         _DUMMY02_  
    };  
      
    var resource;  
    var plugin_path;  
    var plugin_icon;  
      
    // CLASS: Drop To Floor Menu - Register plugin in menu  
    class AllocObject_MenuPlugin : MenuPlugin  
    {  
         private:  
         public:  
              AllocObject_MenuPlugin();  
              GetID();  
              GetIcon();  
              GetName();  
              GetHelp();  
              Execute(doc);  
    }  
    AllocObject_MenuPlugin::AllocObject_MenuPlugin()     { super(); }  
    AllocObject_MenuPlugin::GetID()                                   { return PLUGIN_MENU_ID; }  
    AllocObject_MenuPlugin::GetName()                              { return "AllocObject"; }  
    AllocObject_MenuPlugin::GetHelp()                              { return "Help"; }  
    AllocObject_MenuPlugin::GetIcon()                              { return plugin_icon; }  
    AllocObject_MenuPlugin::Execute(doc)  
    {  
         StatusSetText("AllocObject");  
         var camera;  
         var document;  
         if (!(camera = AllocObject(Ocamera))) return FALSE;  
         document = GetActiveDocument();  
         StatusSetText("");  
         if (!document->InsertObject(camera, NULL, NULL)) return FALSE;  
         EventAdd();  
         return TRUE;  
    }  
      
    // Start of plugin  
    main()  
    {  
         // Load Resource  
         if (!(plugin_path = GeGetRootFilename())) println("Unable to find plugin!");  
         plugin_path->RemoveLast();  
      
         // Load Icons  
         var icon_file = plugin_path->GetClone();  
         icon_file->AddLast("pluginicon.tif");  
         plugin_icon = new(BaseBitmap,1,1);  
         plugin_icon->Load(icon_file);  
      
         // Register Plugins  
         Register(AllocObject_MenuPlugin);  
    }  
    


  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 22/08/2005 at 15:40, xxxxxxxx wrote:

    Robert,

    Thank you so much for all your help. Your example was very useful as an addition to those that come with the SDK, so thanks.

    I was still getting an error, and found that the real problem all along was that I hadn't installed the 9.102 updater from 9.012. So I had really been using the right syntax from early on, but the AllocObject() command was giving an error regardless. Now that I've installed the updater, everything is fine.

    Sorry that I overlooked this, and thank you for taking time out to help me.

    -Aaron


Log in to reply