Advertisement
danfalck

snap_point.py

Dec 19th, 2011
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.31 KB | None | 0 0
  1. import FreeCADGui, Part
  2. from pivy.coin import *
  3. import Draft
  4.  
  5. class snap:
  6.     "this class will create a vertex after the user clicks a point on the screen"
  7.     def __init__(self):
  8.         self.view = FreeCADGui.ActiveDocument.ActiveView
  9.         self.stack = []
  10.         self.point = None
  11.  
  12.         # adding 2 callback functions
  13.         self.callbackClick = self.view.addEventCallbackPivy(SoMouseButtonEvent.getClassTypeId(),self.click)
  14.         self.callbackMove = self.view.addEventCallbackPivy(SoLocation2Event.getClassTypeId(),self.move)
  15.  
  16.     def move(self,event_cb):
  17.         event = event_cb.getEvent()
  18.         mousepos = event.getPosition().getValue()
  19.         ctrl = event.wasCtrlDown()
  20.         self.point = FreeCADGui.Snapper.snap(mousepos,active=ctrl)
  21.  
  22.     def click(self,event_cb):
  23.         event = event_cb.getEvent()
  24.         if event.getState() == SoMouseButtonEvent.DOWN:
  25.             if self.point:
  26.                 self.stack.append(self.point)
  27.             if len(self.stack) == 1:
  28.                 Draft.makePoint((self.stack[0][0]),(self.stack[0][1]),0.0)
  29.                 self.view.removeEventCallbackPivy(SoMouseButtonEvent.getClassTypeId(),self.callbackClick)
  30.                 self.view.removeEventCallbackPivy(SoLocation2Event.getClassTypeId(),self.callbackMove)
  31.                 FreeCADGui.Snapper.off()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement