I did some more testing and I think I got it now.
In MouseInput() get and set your coordinates.
Then call c4d.DrawViews(). This will call Draw(), where you can (and should) do the drawing like bd.DrawLine2D().
class PlaceTool(c4d.plugins.ToolData):
v1 = c4d.Vector(0,0,0)
v2 = c4d.Vector(0,0,0)
def Draw(self, doc, data, bd, bh, bt, flags):
bd.SetPen(c4d.Vector(256,256,256))
bd.DrawLine2D(self.v1, self.v2)
return True
def MouseInput(self, doc, data, bd, win, msg):
self.v1 = c4d.Vector(0,0,0)
self.v2 = c4d.Vector(msg[c4d.BFM_INPUT_X], msg[c4d.BFM_INPUT_Y], 0)
c4d.DrawViews(c4d.DRAWFLAGS_ONLY_ACTIVE_VIEW|c4d.DRAWFLAGS_NO_THREAD|c4d.DRAWFLAGS_NO_REDUCTION|c4d.DRAWFLAGS_STATICBREAK) #Added
return True