Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import FreeCADGui, Part
- from pivy.coin import *
- import Draft
- class snap:
- "this class will create a vertex after the user clicks a point on the screen"
- def __init__(self):
- self.view = FreeCADGui.ActiveDocument.ActiveView
- self.stack = []
- self.point = None
- # adding 2 callback functions
- self.callbackClick = self.view.addEventCallbackPivy(SoMouseButtonEvent.getClassTypeId(),self.click)
- self.callbackMove = self.view.addEventCallbackPivy(SoLocation2Event.getClassTypeId(),self.move)
- def move(self,event_cb):
- event = event_cb.getEvent()
- mousepos = event.getPosition().getValue()
- ctrl = event.wasCtrlDown()
- self.point = FreeCADGui.Snapper.snap(mousepos,active=ctrl)
- def click(self,event_cb):
- event = event_cb.getEvent()
- if event.getState() == SoMouseButtonEvent.DOWN:
- if self.point:
- self.stack.append(self.point)
- if len(self.stack) == 1:
- Draft.makePoint((self.stack[0][0]),(self.stack[0][1]),0.0)
- self.view.removeEventCallbackPivy(SoMouseButtonEvent.getClassTypeId(),self.callbackClick)
- self.view.removeEventCallbackPivy(SoLocation2Event.getClassTypeId(),self.callbackMove)
- FreeCADGui.Snapper.off()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement