utils.ViewportSelect() Problem



  • Hi! guys! Here's the problem with utils.ViewportSelect()

    This is my code:

    ViewportSelect = c4d.utils.ViewportSelect()
    
    frame = bd.GetFrame()
    left = frame["cl"]
    right = frame["cr"]
    top = frame["ct"]
    bottom = frame["cb"]
    width = right - left + 1
    height = bottom - top +1
    
    pick_obj = ViewportSelect.PickObject(bd, doc, mx, my, 0, c4d.VIEWPORT_PICK_FLAGS_0)
    print pick_obj
    
    ViewportSelect.Init(width, height, bd, pick_obj, c4d.Mpolyedgepoint, True, c4d.VIEWPORTSELECTFLAGS_IGNORE_HIDDEN_SEL)
    for obj in pick_obj:
            print obj
            nearest_poly = ViewportSelect.GetNearestPolygon(obj, mx, my, 0, False)
    

    Cinema 4D giving feedback: RuntimeError: Object is not initialized yet.
    How can i fix it?



  • Hi,

    you cannot use the ViewportSelect before you have initialised it. So you can only invoke PickObject() after you have invoked Init().

    Cheers
    zipit



  • ViewportSelect.Init(width, height, bd, pick_obj, c4d.Mpolyedgepoint, True, c4d.VIEWPORTSELECTFLAGS_IGNORE_HIDDEN_SEL)
    
    pick_obj = ViewportSelect.PickObject(bd, doc, mx, my, 0, c4d.VIEWPORT_PICK_FLAGS_0)
    

    Like this? But C4D giving feedback: UnboundLocalError: local variable 'pick_obj' referenced before assignment.



  • Hi,

    unless you have defined pick_obj somewhere else you cannot pass it to your Init() before you actually define it in the next line.

    Cheers
    zipit



  • @zipit
    Thank you man ! I see how to fix it now!~~

    Cheers
    harry