def __init__(self, f = None, size = (600, 600), build_dimensions = [200, 200, 100, 0, 0, 0], grid = (10, 50), extrusion_width = 0.5, bgcolor = "#000000"): super(GvizWindow, self).__init__(None, title = _("Gcode view, shift to move view, mousewheel to set layer"), size = size) panel, vbox = self.create_base_ui() self.p = Gviz(panel, size = size, build_dimensions = build_dimensions, grid = grid, extrusion_width = extrusion_width, bgcolor = bgcolor, realparent = self) self.toolbar.AddSeparator() #self.toolbar.AddSimpleTool(6, wx.Image(imagefile('inject.png'), wx.BITMAP_TYPE_PNG).ConvertToBitmap(), _("Insert Code at start of this layer"), '') self.toolbar.Realize() vbox.Add(self.p, 1, wx.EXPAND) self.SetMinSize(self.ClientToWindowSize(vbox.GetMinSize())) self.Bind(wx.EVT_TOOL, lambda x: self.p.zoom(-1, -1, 1.2), id = 1) self.Bind(wx.EVT_TOOL, lambda x: self.p.zoom(-1, -1, 1 / 1.2), id = 2) self.Bind(wx.EVT_TOOL, lambda x: self.p.layerup(), id = 3) self.Bind(wx.EVT_TOOL, lambda x: self.p.layerdown(), id = 4) self.Bind(wx.EVT_TOOL, self.resetview, id = 5) #self.Bind(wx.EVT_TOOL, lambda x:self.p.inject(), id = 6) self.initpos = None self.p.Bind(wx.EVT_KEY_DOWN, self.key) self.Bind(wx.EVT_KEY_DOWN, self.key) self.p.Bind(wx.EVT_MOUSEWHEEL, self.zoom) self.Bind(wx.EVT_MOUSEWHEEL, self.zoom) self.p.Bind(wx.EVT_MOUSE_EVENTS, self.mouse) self.Bind(wx.EVT_MOUSE_EVENTS, self.mouse) if f: gcode = gcoder.GCode(f, get_home_pos(self.p.build_dimensions)) self.p.addfile(gcode)
def clear(self): self.lastpos = [0, 0, 0, 0, 0, 0, 0] self.hilightpos = self.lastpos[:] self.gcoder = gcoder.GCode([], get_home_pos(self.build_dimensions)) self.lines = {} self.pens = {} self.arcs = {} self.arcpens = {} self.layers = [] self.clearhilights() self.layerindex = 0 self.showall = 0 self.dirty = 1 wx.CallAfter(self.Refresh)
def __init__(self, f=None, size=(600, 600), build_dimensions=[200, 200, 100, 0, 0, 0], grid=(10, 50), extrusion_width=0.5, bgcolor="#000000"): super(GvizWindow, self).__init__( None, title=_("Gcode view, shift to move view, mousewheel to set layer"), size=size) panel, vbox = self.create_base_ui() self.p = Gviz(panel, size=size, build_dimensions=build_dimensions, grid=grid, extrusion_width=extrusion_width, bgcolor=bgcolor, realparent=self) self.toolbar.AddSeparator() #self.toolbar.AddSimpleTool(6, wx.Image(imagefile('inject.png'), wx.BITMAP_TYPE_PNG).ConvertToBitmap(), _("Insert Code at start of this layer"), '') self.toolbar.Realize() vbox.Add(self.p, 1, wx.EXPAND) self.SetMinSize(self.ClientToWindowSize(vbox.GetMinSize())) self.Bind(wx.EVT_TOOL, lambda x: self.p.zoom(-1, -1, 1.2), id=1) self.Bind(wx.EVT_TOOL, lambda x: self.p.zoom(-1, -1, 1 / 1.2), id=2) self.Bind(wx.EVT_TOOL, lambda x: self.p.layerup(), id=3) self.Bind(wx.EVT_TOOL, lambda x: self.p.layerdown(), id=4) self.Bind(wx.EVT_TOOL, self.resetview, id=5) #self.Bind(wx.EVT_TOOL, lambda x:self.p.inject(), id = 6) self.initpos = None self.p.Bind(wx.EVT_KEY_DOWN, self.key) self.Bind(wx.EVT_KEY_DOWN, self.key) self.p.Bind(wx.EVT_MOUSEWHEEL, self.zoom) self.Bind(wx.EVT_MOUSEWHEEL, self.zoom) self.p.Bind(wx.EVT_MOUSE_EVENTS, self.mouse) self.Bind(wx.EVT_MOUSE_EVENTS, self.mouse) if f: gcode = gcoder.GCode(f, get_home_pos(self.p.build_dimensions)) self.p.addfile(gcode)
self.layerslider.SetValue(self.model.max_layers + 1) wx.CallAfter(self.Refresh) def clear(self): self.model = None self.objects[-1].model = None wx.CallAfter(self.Refresh) if __name__ == "__main__": import sys app = wx.App(redirect = False) build_dimensions = [200, 200, 100, 0, 0, 0] title = 'Gcode view, shift to move view, mousewheel to set layer' frame = GcodeViewFrame(None, wx.ID_ANY, title, size = (400, 400), build_dimensions = build_dimensions) gcode = gcoder.GCode(open(sys.argv[1]), get_home_pos(build_dimensions)) frame.addfile(gcode) first_move = None for i in range(len(gcode.lines)): if gcode.lines[i].is_move: first_move = gcode.lines[i] break last_move = None for i in range(len(gcode.lines) - 1, -1, -1): if gcode.lines[i].is_move: last_move = gcode.lines[i] break nsteps = 20 steptime = 500 lines = [first_move] + [gcode.lines[int(float(i) * (len(gcode.lines) - 1) / nsteps)] for i in range(1, nsteps)] + [last_move]