ObjectData/Draw/DrawPolygonObject in XRay Mode
-
On 15/02/2016 at 10:53, xxxxxxxx wrote:
Hello everybody,
i´d like to draw a PolygonObject in Xray mode into the viewport. Im able to draw the object, but just without xray.
def Draw(self, op, drawpass, bd, bh) : if drawpass!=c4d.DRAWPASS_XRAY: obj = MachCube(100, 75, 50) bd.DrawPolygonObject(bh, obj, c4d.DRAWOBJECT_0) return c4d.DRAWRESULT_OK ... def MachCube(size_x, size_y, size_z) : size = c4d.Vector() size.x = size_x size.y = size_y size.z = size_z cube = c4d.PolygonObject(8, 6) pnts = [c4d.Vector() for x in xrange(8)] pnts[0] = c4d.Vector(-size.x/2, -size.y/2, -size.z/2) pnts[1] = c4d.Vector(-size.x/2, size.y/2, -size.z/2) pnts[2] = c4d.Vector( size.x/2, -size.y/2, -size.z/2) pnts[3] = c4d.Vector( size.x/2, size.y/2, -size.z/2) pnts[4] = c4d.Vector( size.x/2, -size.y/2, size.z/2) pnts[5] = c4d.Vector( size.x/2, size.y/2, size.z/2) pnts[6] = c4d.Vector(-size.x/2, -size.y/2, size.z/2) pnts[7] = c4d.Vector(-size.x/2, size.y/2, size.z/2) plys = c4d.CPolygon(0,1,3,2), c4d.CPolygon(2,3,5,4), c4d.CPolygon(4,5,7,6), c4d.CPolygon(6,7,1,0), c4d.CPolygon(1,7,5,3), c4d.CPolygon(6,0,2,4) cube.SetAllPoints(pnts) for index, ply in enumerate(plys) : cube.SetPolygon(index, ply) return cube
Is it possible to do?
Greetings
rown -
On 16/02/2016 at 03:07, xxxxxxxx wrote:
Hello,
It seems to work fine using DrawObject() and setting the ID_BASEOBJECT_XRAY parameter of the drawn object.
def Draw(self, op, drawpass, bd, bh) : self._cube[c4d.ID_BASEOBJECT_XRAY] = op[c4d.ID_BASEOBJECT_XRAY] bd.DrawObject(bh, self._cube, c4d.DRAWOBJECT_0, drawpass, op) return c4d.DRAWRESULT_OK
Also it seems to be the best solution to store the geometry as a member of your class.
Best wishes,
Sebastian -
On 16/02/2016 at 07:27, xxxxxxxx wrote:
Hey Sebastian,
thx alot. I also tried to set the ID_BASEOBJECT_XRAY parameter yesterday. But I didnt try to let the object be a member. Thats the solution.
if drawpass!=c4d.DRAWPASS_XRAY: self.cube[c4d.ID_BASEOBJECT_XRAY] = op[c4d.ID_BASEOBJECT_XRAY] bd.DrawObject(bh, self.cube, c4d.DRAWOBJECT_0, drawpass, op) c4d.DRAWRESULT_OK
One other question just for knowing. Why cant I draw a primitive object like c4d.BaseObject(c4d.Ocube)? At this point its not importaint to know, but it was noticed by me.
Thx and greetings
rown