From 0b147a12bd9b9eeb69ef05c243dd51d8fa40d9d1 Mon Sep 17 00:00:00 2001 From: kliment Date: Tue, 21 Jun 2011 18:52:11 +0200 Subject: [PATCH] Added very basic gcode visualization --- gviz.py | 110 +++++++++++++++++++++++++++++++++++++++++++++++++ pronterface.py | 17 ++++++-- 2 files changed, 124 insertions(+), 3 deletions(-) create mode 100644 gviz.py diff --git a/gviz.py b/gviz.py new file mode 100644 index 0000000..7dec633 --- /dev/null +++ b/gviz.py @@ -0,0 +1,110 @@ +import wx,time + +class window(wx.Frame): + def __init__(self): + wx.Frame.__init__(self,None,title="Slicetest",size=(200,200)) + self.p=gviz(self,size=(200,200),bedsize=(200,200)) + s=time.time() + for i in open("/home/kliment/designs/spinner/gearend_export.gcode"): + self.p.addgcode(i) + print time.time()-s + self.p.Bind(wx.EVT_KEY_DOWN,self.key) + def key(self, event): + x=event.GetKeyCode() + #print x + if x==wx.WXK_UP: + self.p.layerup() + if x==wx.WXK_DOWN: + self.p.layerdown() + + #print p.lines.keys() + +class gviz(wx.Panel): + def __init__(self,parent,size=(200,200),bedsize=(200,200)): + wx.Panel.__init__(self,parent,-1,size=size) + self.bedsize=bedsize + self.lastpos=[0,0,0,0,0] + self.Bind(wx.EVT_PAINT,self.paint) + self.lines={} + self.pens={} + self.layers=[] + self.layerindex=0 + self.scale=[min(float(size[0])/bedsize[0],float(size[1])/bedsize[1])]*2 + self.mainpen=wx.Pen(wx.Colour(0,0,0)) + self.fades=[wx.Pen(wx.Colour(150+20*i,150+20*i,150+20*i)) for i in xrange(6)] + self.showall=0 + + def clear(self): + self.lastpos=[0,0,0,0,0] + self.Bind(wx.EVT_PAINT,self.paint) + self.lines={} + self.pens={} + self.layers=[] + self.layerindex=0 + self.showall=0 + + def layerup(self): + if(self.layerindex+10): + self.layerindex-=1 + self.Refresh() + + def paint(self,event): + dc=wx.PaintDC(self) + dc.SetBackground(wx.Brush((250,250,200))) + dc.Clear() + if self.showall: + l=[] + for i in self.layers: + dc.DrawLineList(l,self.fades[0]) + l=map(lambda x:(self.scale[0]*x[0],self.scale[1]*x[1],self.scale[0]*x[2],self.scale[1]*x[3],) ,self.lines[i]) + dc.DrawLineList(l,self.pens[i]) + return + if self.layerindex