On 07/02/2017 at 17:21, xxxxxxxx wrote:
Hello,
I'm learning to create a plugin form internet,but render nothing,why? and the Traceback below:
Traceback (most recent call last) :
File "'test.pyp'", line 49, in GetVirtualObjects
ReferenceError: the host object of 'c4d.BaseContainer' is not alive
Here is the code downloaded form internet below:
import c4d
import os
import sys
from c4d import plugins, utils, bitmaps
PLUGIN_ID = 123456789
BU_DATA = 1000
REAL_HEIGHT = 1001
REAL_DEPTH = 1002
REAL_WIDTH = 1003
REAL_KICH_HEIGHT = 1004
REAL_KICH_DEPTH = 1005
REAL_THICKNESS = 1006
class testData(plugins.ObjectData) :
def Init(self, node) :
self.data = node.GetDataInstance()
self.data.SetReal(c4d.REAL_HEIGHT,92.0)
self.data.SetReal(c4d.REAL_DEPTH,65.0)
self.data.SetReal(c4d.REAL_WIDTH,70.0)
self.data.SetReal(c4d.REAL_KICH_HEIGHT,10.0)
self.data.SetReal(c4d.REAL_KICH_DEPTH,10.0)
self.data.SetReal(c4d.REAL_THICKNESS,2.0)
return True
def Message(self, node, type, data) :
if type == c4d.MSG_DESCRIPTION_COMMAND:
if data["id"][0].id == BU_DATA:
#print "Hello World"
return True
def Execute(self, op, doc, bt, priority, flags) :
return True
def GetVirtualObjects(self, op, hh) :
dirty = op.CheckCache(hh) or op.IsDirty(c4d.DIRTY_DATA)
if dirty is False: return op.GetCache(hh)
L_Height = self.data.GetReal(c4d.REAL_HEIGHT)
L_Depth = self.data.GetReal(c4d.REAL_DEPTH)
L_Kick_Height = self.data.GetReal(c4d.REAL_KICK_HEIGHT)
L_Kick_Depth = self.data.GetReal(c4d.REAL_KICK_Depth)
L_Width = self.data.GetReal(c4d.REAL_WIDTH)
L_Thickness = self.data.GetReal(c4d.REAL_THICKNESS)
null = c4d.BaseObject(c4d.Onull)
ex = c4d.BaseObject(Oextrude)
ex[c4d.EXTRUDEOBJECT_MOVE] = c4d.Vector(0,0,L_Thickness)
extop = c4d.BaseObject(Oextrude)
extop[c4d.EXTRUDEOBJECT_MOVE] = c4d.Vector(0,3,0)
exdaw = c4d.BaseObject(Oextrude)
exdaw[c4d.EXTRUDEOBJECT_MOVE] = c4d.Vector(0,L_Thickness,0)
exfro = c4d.BaseObject(Oextrude)
exfro[c4d.EXTRUDEOBJECT_MOVE] = c4d.Vector(-L_Thickness,0,0)
exba = c4d.BaseObject(Oextrude)
exba[c4d.EXTRUDEOBJECT_MOVE] = c4d.Vector(L_Thickness,0,0)
exdoor = c4d.BaseObject(Oextrude)
exdoor[c4d.EXTRUDEOBJECT_MOVE] = c4d.Vector(L_Thickness,0,0)
exins = c4d.BaseObject(Oextrude)
exins[c4d.EXTRUDEOBJECT_MOVE] = c4d.Vector(0,0,-L_Thickness)
ins = c4d.BaseObject(Oinstance)
ins[c4d.ID_BASEOBJECT_REL_POSITION,c4d.VECTOR_Z] = L_Width
sp = c4d.SplineObject(6,6)
sp1 = c4d.SplineObject(4,4)
sp2 = c4d.SplineObject(4,4)
sp3 = c4d.SplineObject(4,4)
sp4 = c4d.SplineObject(4,4)
sp5 = c4d.SplineObject(4,4)
sp.SetPoint(0,c4d.Vector(0,0,0))
sp.SetPoint(1,c4d.Vector(0,L_Height,0))
sp.SetPoint(2,c4d.Vector(L_Depth,L_Height,0))
sp.SetPoint(3,c4d.Vector(L_Depth,L_Kich_Height,0))
sp.SetPoint(4,c4d.Vector(L_Depth-L_Kich_Depth,L_Kich_Height,0))
sp.SetPoint(5,c4d.Vector(L_Depth-L_Kich_Depth,0,0))
sp[c4d.SPLINEOBJECT_TYPE] = 0
sp[c4d.SPLINEOBJECT_CLOSED] = True
sp.Message(c4d.MSG_UPDATE)
ins[c4d.INSTANCEOBJECT_LINK] = sp
sp1.SetPoint(0,c4d.Vector(0,L_Height,0))
sp1.SetPoint(1,c4d.Vector(0,L_Height,L_Width))
sp1.SetPoint(2,c4d.Vector(L_Depth+5,L_Height,L_Width))
sp1.SetPoint(3,c4d.Vector(L_Depth+5,L_Height,0))
sp1[c4d.SPLINEOBJECT_TYPE] = 0
sp1[c4d.SPLINEOBJECT_CLOSED] = True
sp2.SetPoint(0,c4d.Vector(L_Thickness,L_Kich_Height,L_Thickness))
sp2.SetPoint(1,c4d.Vector(L_Thickness,L_Kich_Height,L_Width-L_Thickness))
sp2.SetPoint(2,c4d.Vector(L_Depth,L_Kich_Height,L_Width-L_Thickness))
sp2.SetPoint(3,c4d.Vector(L_Depth,L_Kich_Height,L_Thickness))
sp2[c4d.SPLINEOBJECT_TYPE] = 0
sp2[c4d.SPLINEOBJECT_CLOSED] = True
sp3.SetPoint(0,c4d.Vector(L_Depth-L_Kick_Depth-L_Thickness,0,L_Thickness))
sp3.SetPoint(1,c4d.Vector(L_Depth-L_Kick_Depth-L_Thickness,L_Kich_Height,L_Thickness))
sp3.SetPoint(2,c4d.Vector(L_Depth-L_Kick_Depth-L_Thickness,L_Kich_Height,L_Width- L_Thickness))
sp3.SetPoint(3,c4d.Vector(L_Depth-L_Kick_Depth-L_Thickness,0,L_Width-L_Thickness))
sp3[c4d.SPLINEOBJECT_TYPE] = 0
sp3[c4d.SPLINEOBJECT_CLOSED] = True
sp4.SetPoint(0,c4d.Vector(0,0,L_Thickness))
sp4.SetPoint(1,c4d.Vector(0,L_Height,L_Thickness))
sp4.SetPoint(2,c4d.Vector(0,L_Height,L_Width-L_Thickness))
sp4.SetPoint(3,c4d.Vector(0,0,L_Width-L_Thickness))
sp4[c4d.SPLINEOBJECT_TYPE] = 0
sp4[c4d.SPLINEOBJECT_CLOSED] = True
sp5.SetPoint(0,c4d.Vector(L_Depth+0.3,L_Kich_Height,0))
sp5.SetPoint(1,c4d.Vector(L_Depth+0.3,L_Height,0))
sp5.SetPoint(2,c4d.Vector(L_Depth+0.3,L_Height,L_Width))
sp5.SetPoint(3,c4d.Vector(L_Depth+0.3,L_Kich_Height,L_Width))
sp5[c4d.SPLINEOBJECT_TYPE] = 0
sp5[c4d.SPLINEOBJECT_CLOSED] = True
sp.InsertUnder(ex)
sp1.InsertUnder(extop)
sp2.InsertUnder(exdaw)
sp3.InsertUnder(exfro)
sp4.InsertUnder(exba)
sp5.InsertUnder(exdoor)
ex.InsertUnder(null)
exins.InsertUnder(null)
extop.InsertUnder(null)
exdaw.InsertUnder(null)
exfro.InsertUnder(null)
exba.InsertUnder(null)
exdoor.InsertUnder(null)
ins.InsertUnder(exins)
c4d.EventAdd()
return null
if __name__ == '__main__':
path, file = os.path.split(__file__)
bmp = bitmaps.BaseBitmap()
bmp.InitWith(os.path.join(path, "res", "icon", "icon.tif"))
plugins.RegisterObjectPlugin(id=PLUGIN_ID, str="test",
g=testData,
description="Otest", icon=bmp,
info=c4d.OBJECT_GENERATOR|c4d.OBJECT_ISSPLINE)
Edit Andreas: Added code tags (please see BBcodes, link below edit field) and moved to Python sub-forum