Adding maybe a pygame simulator

master^2
mitchellhansen 6 years ago
parent fd5940d766
commit d98e39c2a9

@ -2,7 +2,7 @@
<module type="PYTHON_MODULE" version="4"> <module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager"> <component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" /> <content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" /> <orderEntry type="jdk" jdkName="Python 3.6 (Trac3r)" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />
</component> </component>
<component name="TestRunnerService"> <component name="TestRunnerService">

@ -0,0 +1,45 @@
import sys, pygame
import threading
class EventThread(threading.Thread):
def __init__(self):
super(EventThread, self).__init__()
def run(self):
while True:
for events in pygame.event.get():
if events.type == pygame.QUIT:
pygame.display.quit()
pygame.quit()
class Simulator:
def __init__(self):
pygame.init()
self.size = width, height = 320, 240
self.black = 0, 0, 0
self.red=(255,0,0)
self.screen = pygame.display.set_mode(self.size)
def render(self):
self.screen.fill(self.black)
pygame.draw.line(self.screen, self.red, (60, 80), (130, 100))
pygame.display.flip()
t = EventThread()
t.start()

@ -1,3 +1,4 @@
from math import sqrt
from tkinter import * from tkinter import *
from tkinter import filedialog from tkinter import filedialog
from tkinter.ttk import Notebook from tkinter.ttk import Notebook
@ -8,6 +9,26 @@ import os
from GCodeRenderer import Renderer from GCodeRenderer import Renderer
from Svg2GcodeConverter import Svg2GcodeConverter from Svg2GcodeConverter import Svg2GcodeConverter
from ImageConverter import ImageConverter from ImageConverter import ImageConverter
from Simulator import Simulator
def xy_to_radial(settings, current_xy, dest_xy, pulley_diameter):
# maybe check for the distance of the move. Split it up into multiple to avoid distortion
# get the current length of the left pulley wire
b = (settings.left_pulley_x_offset - settings.pulley_diameter + current_xy[0])
a = settings.pulley_y_droop
length = sqrt(pow(a, 2) + pow(b, 2))
# get the current length of the right pulley wire
# get the desired length of the left pulley wire
# get the desired length of the right pulley wire
return
class Settings: class Settings:
@ -16,12 +37,13 @@ class Settings:
# ============ HARDCODED VALUES =========== # ============ HARDCODED VALUES ===========
# Canvas size # Canvas size
self.canvas_x = 300 self.canvas_x = 700
self.canvas_y = 300 self.canvas_y = 700
# The position of the pulley centers in relation to the top left and right of the canvas # The position of the pulley centers in relation to the top left and right of the canvas
self.left_pulley_xy_offset = (-40, 40) self.left_pulley_x_offset = -40
self.right_pulley_xy_offset = (40, 40) self.right_pulley_x_offset = 40
self.pulley_y_droop = 60
# Diameter of the inner portion of the pulley in millimeters # Diameter of the inner portion of the pulley in millimeters
self.pulley_diameter = 45 self.pulley_diameter = 45
@ -34,9 +56,7 @@ class Settings:
# ============ CALCULATED VALUES =========== # ============ CALCULATED VALUES ===========
self.distance_between_centers = abs(self.left_pulley_xy_offset[0]) + self.canvas_x + self.right_pulley_xy_offset[0] self.distance_between_centers = abs(self.left_pulley_x_offset) + self.canvas_x + self.right_pulley_x_offset
# Main GUI class and program entry point # Main GUI class and program entry point
@ -92,11 +112,14 @@ class Tracer(Tk):
self.rightframe = Frame(self) self.rightframe = Frame(self)
self.rightframe.pack(side=RIGHT) self.rightframe.pack(side=RIGHT)
self.button = Button(self.rightframe, text="Select Image", command=self.file_select_callback) self.image_select_button = Button(self.rightframe, text="Select Image", command=self.file_select_callback)
self.button.pack() self.image_select_button.pack()
self.rerender_button = Button(self.rightframe, text="Re-Render", command=self.render)
self.rerender_button.pack()
self.button = Button(self.rightframe, text="Re-Render", command=self.render) self.render_simulation_button = Button(self.rightframe, text="Render Simulation", command=self.render_simulation)
self.button.pack() self.render_simulation_button.pack()
self.lift_markers_checkbox = Checkbutton(self.rightframe, text="Lift Markers", command=self.cairo_renderer.toggle_flip_markers) self.lift_markers_checkbox = Checkbutton(self.rightframe, text="Lift Markers", command=self.cairo_renderer.toggle_flip_markers)
self.lift_markers_checkbox.pack() self.lift_markers_checkbox.pack()
@ -157,8 +180,10 @@ class Tracer(Tk):
self.n.add(self.f2, text="Original") self.n.add(self.f2, text="Original")
self.label1.pack(expand=True, fill="both") self.label1.pack(expand=True, fill="both")
def render_simulation(self):
simulator = Simulator()
simulator.render()
if __name__ == "__main__": if __name__ == "__main__":

Loading…
Cancel
Save