Your browser does not seem to support JavaScript. As a result, your viewing experience will be diminished, and you have been placed in read-only mode.
Please download a browser that supports JavaScript, or enable it if it's disabled (i.e. NoScript).
On 13/05/2013 at 06:13, xxxxxxxx wrote:
If I try to load my plugin, I get the following error:
ReferenceError: the object 'c4d.documents.BaseDocument' is not alive
Here is my code:
import c4d import os import sys from c4d import gui, plugins, bitmaps, documents, utils
PLUGIN_ID = 1000002 # Test ID
MY_BUTTON = 11005
global doc doc = c4d.documents.GetActiveDocument()
def AddObject(doc) :
NewObject = c4d.BaseObject(c4d.Ocube) NewObject[c4d.PRIM_CUBE_LEN,c4d.VECTOR_Y] = 100 NewObject.SetName('New Object') doc.InsertObject(NewObject) c4d.EventAdd()
-> After that AddObject gets called in another function.
Does anybody know what I am doing wrong?
Greetings,
Casimir Smets
On 13/05/2013 at 07:00, xxxxxxxx wrote:
don't define your document as a global variable. it will be run when the plugin is being loaded (at c4d start up). generally do not define anything as a global variable except from constants like plugin IDs or strings.
either grab the document manually in the addobject method or pass it to the method. almost all overwriteable plugin methods provide the active document. either as a direct parameter or like the NodeData plugins by the basedocument attached to the passed node - GeListNode. GetDocument().
if you do really need a variable to be accessible for multiple methods make it a class member.
On 13/05/2013 at 07:45, xxxxxxxx wrote:
I've seen this so often. I'm really interested why people think that they need to grab the active document at the top level of the plugin instead of the place where they actually need it. Seems to be something everyone does when starting out.
On 13/05/2013 at 08:09, xxxxxxxx wrote:
Yes indeed, the noobs try it out
And thanx for your answer littledevil! It helped me much.