Could not initialize global resource
-
On 18/06/2018 at 08:35, xxxxxxxx wrote:
Hi folks,
Recently, I tried to create my first Python plug-in, and I was troubled by a problem for a long time.Console: RuntimeError: Could not initialize global resource for the plugin.
I search a lot in the SDK document and forum, but I still don't know how to solve it. I hope can get your help. Here's my test code:
(test.pyp)
_____
import c4d
import sys
import os
from c4d import plugins,bitmaps
PLUGIN_ID = 1000001
OBJECTGROUP = 1001
OBJECT = 1002
MAP = 1003
class test(plugins.ObjectData) :
def __init__(self) :
self.SetOptimizeCache(True)
def ModifyObject(self, mod, doc, op, op_mg, mod_mg, lod, flags, thread) :
op.SetPoint(0,c4d.Vector())
op.Message(c4d.MSG_UPDATE)
return True
if __name__ == "__main__":
bmp = bitmaps.BaseBitmap()
dir, file = os.path.split(__file__)
bitmapfile = os.path.join(dir, "res", "Icon.tif")
result = bmp.InitWith(bitmapfile)
plugins.RegisterObjectPlugin(id=PLUGIN_ID, str="test",g=test,description="test",icon=bmp,info=c4d.OBJECT_MODIFIER)
___
(test.h)
__
#ifndef _Oatom_H_
#define _Oatom_H_
enum
{
OBJECTGROUP = 1001,
OBJECT = 1002,
MAP = 1003,
};
#endif
__
(test.res)
__
CONTAINER test
{
NAME test;
INCLUDE Obase;
GROUP OBJECTGROUP
{
LINK OBJECT {}
LINK MAP {}
}
}
__
(test.str)
__
STRINGTABLE test
{
OBJECTGROUP "List";
OBJECT "obj"
MAP "map";
} -
On 19/06/2018 at 02:21, xxxxxxxx wrote:
Hi,
The resource for the plugin can't be initialized because there's an error in test.str : a semicolon ';' is missing at the end of the line OBJECT "obj".
It looks like you've copied the resource for C++ SDK Oatom example.
It's better to copy the resource for a Python SDK example, for instance object plugin Py-RoundedTube.
Use this as a base to define resources: macro #def in .h, naming for parameters, resource tree structure etc.Note Python plugins resource need c4d_symbols.h present in res folder.
-
On 20/06/2018 at 08:05, xxxxxxxx wrote:
Thank you for your help, Yannick Puech!
My first test plugin run successfully!
I made a stupid mistake a lot, such as forgetting to add a semicolon ";" and I forgot to add "s" folder of strings. It is these wrong to let me crazy for a long time. Next time I encounter a problem, I will check these low-level mistakes first.
I also want to ask a question again, why is the c4d_symbols.h file necessary? There seems to be nothing in it. What role does he have? I don't seem to find his introduction in the document. This also confuses me.
-
On 21/06/2018 at 01:21, xxxxxxxx wrote:
The c4d_symbols.h has to be there even if it's empty. It's mandatory for plugins that use description resources.
-
On 21/06/2018 at 07:40, xxxxxxxx wrote:
Yeah, I get it! Thank you for your patient answer, Yannick Puech!