I have an EventCallback which fixes an AnnotationLabel at the Cursor and is finished by mouse-left-click:
Code: Select all
import FreeCADGui, Part
from pivy.coin import *
import FreeCAD
App = FreeCAD
import Draft
objectAnn = None
class cursorInf:
global objectAnn
global gp
def __init__(self):
print("anf")
FreeCADGui.runCommand("Draft_Line")
print("end")
global objectAnn
objectAnn = App.ActiveDocument.addObject("App::AnnotationLabel","FCInfoToMouse")
self.view = FreeCADGui.ActiveDocument.ActiveView
self.callback = self.view.addEventCallbackPivy(SoEvent.getClassTypeId(),self.getpoint)
print(self.callback)
gp = self.callback
objectAnn.LabelText=["Hello"]
def getpoint(self,event_cb):
global objectAnn
event = event_cb.getEvent()
if type(event) == SoMouseButtonEvent:
self.view.removeEventCallbackPivy(SoEvent.getClassTypeId(),self.callback)
print("Ende")
else:
#print("Callback")
pos = event.getPosition()
point = self.view.getPoint(pos[0],pos[1])
objectAnn.BasePosition = point
I tried quite a bit like
Gui.ActiveDocument.ActiveView.removeEventCallbackPivy(SoEvent.getClassTypeId(), ??something with callback?? ) but I didn't succeed
Maybe this would help: How can I simulate a mouse-click by python code?
Thanks Chri1