View Single Post
  #4  
Old 09-15-2016, 06:22 AM
M@rcello M@rcello is offline
Member
 
Join Date: May 2016
Posts: 11
Hy jeff and thanks to give always an answer to my doubts.
The function write is called every time that button 1 is pressed,it doesn't matter if it held down or not.
Anyway,I have found on this forum a similar post,in which you suggested to use the pencil from the tools module.
This is the code and it works:
Code:
import viz
import vizact
import vizshape
import vizact
import vizmat
import viztask

viz.go()

viz.MainView.setPosition(0,0,-40)
viz.clearcolor(viz.GRAY)

sensable=viz.add('sensable3.dle')
device=sensable.addHapticDevice()
device.workspace.setScale([10,10,10])

from tools import pencil
tool=pencil.Pencil()

pen=viz.add('art/pencil.obj')
pen.setPosition([0,0,-2])
pen.setScale([0.05,0.05,0.05])

cube=viz.add('art/box.wrl')
cube.color(0,0,0)
cube.setScale([35,20,0.1])

cube1=viz.add('art/box.wrl')
cube1.setPosition([-17.5,0,0])
cube1.setScale([1,21,0.2])
cube1.color(0,255,0)

cube2=viz.add('art/box.wrl')
cube2.color(0,255,0)
cube2.setPosition([17.5,0,0])
cube2.setScale([1,21,0.2])

cube3=viz.add('art/box.wrl')
cube3.color(0,255,0)
cube3.setPosition([0,10,0])
cube3.setScale([35,1,0.2])

cube4=viz.add('art/box.wrl')
cube4.color(0,255,0)
cube4.setPosition([0,-10,0])
cube4.setScale([35,1,0.2])

myButton = viz.addButtonLabel('Erase')
myButton.setPosition(0.5,0.1,0)
myButton.setScale(3,1,1)

count=0

def MyTask():
	while True:
		yield viztask.waitButtonDown(myButton)
		tool.clear()
viztask.schedule( MyTask())

def UpdateModel():
	line = viz.MainWindow.screenToWorld(device.getPosition())
	pen.setPosition(line.endFromDistance(40))	
vizact.ontimer(0,UpdateModel)

def write(e):
	if e.button==0:
		update(tool)
		viz.link(pen,tool)
viz.callback(viz.SENSOR_DOWN_EVENT,write)

def update(tool):
	tool.draw()
tool.setUpdateFunction(update)
The problem is that when i press the button of the stylus it starts drawing the trajectory but it never ends. I am looking to implement some control so that when the button is pressed again the trajectory is not drawn, and again if i press the button for the third time the system starts again drawing the trajecotry.I hope it is clear
Suggestions?
I need something like when you enter in this function,execute and repeat it until this event happens. The problem is that with the while loop everything freeze
Reply With Quote