GetDragObject always returning exception
On 02/08/2016 at 02:38, xxxxxxxx wrote:
I'm trying to detect what type of object is being dragged into a LINK gizmo, inside a dialog defined by a res file.
I'm using the code:
def Message(self, msg, result) : if msg.GetId() == c4d.MSG_DESCRIPTION_CHECKDRAGANDDROP: try: obj=self.GetDragObject(msg) except: return gui.GeDialog.Message(self, msg, result) print obj return gui.GeDialog.Message(self, msg, result)
But the print obj is never reached.
I'm not even sure if I'm using the GetDragObject() command correctly because it is not documented in the Python SDK.
On 02/08/2016 at 09:54, xxxxxxxx wrote:
Whenever I place questions here, I don't stop trying to search for ways to solve my problems and get results.
So, here is what I have come up with:
def Message(self, msg, result) : if msg.GetId() == c4d.BFM_DRAGRECEIVE: # check if the dragging operation is into my LINK gizmo if self.CheckDropArea(MY_LINK_GIZMO,msg,True,True)==True: # get the drag information draginfo=self.GetDragObject(msg) # get the list of objects dragged obj=draginfo['object'] # in my case, I just allow one if len(obj)==1: # if it is the allowed type, happily return if obj.GetType()==ALLOWED_ID: return gui.GeDialog.Message(self, msg, result) # otherwise, signal that is not allowed return self.SetDragDestination(c4d.MOUSE_FORBIDDEN) return gui.GeDialog.Message(self, msg, result)
On 03/08/2016 at 05:09, xxxxxxxx wrote:
just want to acknowledge reacting on BFM_DRAGRECEIVE message is the correct approach.