all dimensions in one string
parent
5b4b84d819
commit
5d4aad0c89
23
gviz.py
23
gviz.py
|
@ -1,9 +1,9 @@
|
|||
import wx,time
|
||||
|
||||
class window(wx.Frame):
|
||||
def __init__(self,f,size=(600,600),bedsize=(200,200),center=(100,100),grid=(10,50),extrusion_width=0.5):
|
||||
def __init__(self,f,size=(600,600),build_dimensions=[200,200,100,0,0,0],grid=(10,50),extrusion_width=0.5):
|
||||
wx.Frame.__init__(self,None,title="Layer view (Use shift+mousewheel to switch layers)",size=(size[0],size[1]))
|
||||
self.p=gviz(self,size=size,bedsize=bedsize,center=center,grid=grid,extrusion_width=extrusion_width)
|
||||
self.p=gviz(self,size=size,build_dimensions=build_dimensions,grid=grid,extrusion_width=extrusion_width)
|
||||
s=time.time()
|
||||
for i in f:
|
||||
self.p.addgcode(i)
|
||||
|
@ -53,11 +53,10 @@ class window(wx.Frame):
|
|||
elif z < 0: self.p.zoom(event.GetX(),event.GetY(),1/1.2)
|
||||
|
||||
class gviz(wx.Panel):
|
||||
def __init__(self,parent,size=(200,200),bedsize=(200,200),center=(100,100),grid=(10,50),extrusion_width=0.5):
|
||||
def __init__(self,parent,size=(200,200),build_dimensions=[200,200,100,0,0,0],grid=(10,50),extrusion_width=0.5):
|
||||
wx.Panel.__init__(self,parent,-1,size=(size[0],size[1]))
|
||||
self.size=size
|
||||
self.bedsize=bedsize
|
||||
self.center=center
|
||||
self.build_dimensions=build_dimensions
|
||||
self.grid=grid
|
||||
self.lastpos=[0,0,0,0,0,0,0]
|
||||
self.hilightpos=self.lastpos[:]
|
||||
|
@ -70,7 +69,7 @@ class gviz(wx.Panel):
|
|||
self.layers=[]
|
||||
self.layerindex=0
|
||||
self.filament_width=extrusion_width # set it to 0 to disable scaling lines with zoom
|
||||
self.scale=[min(float(size[0])/bedsize[0],float(size[1])/bedsize[1])]*2
|
||||
self.scale=[min(float(size[0])/build_dimensions[0],float(size[1])/build_dimensions[1])]*2
|
||||
penwidth = max(1.0,self.filament_width*((self.scale[0]+self.scale[1])/2.0))
|
||||
self.translate=[0.0,0.0]
|
||||
self.mainpen=wx.Pen(wx.Colour(0,0,0),penwidth)
|
||||
|
@ -136,10 +135,10 @@ class gviz(wx.Panel):
|
|||
dc.SetPen(wx.Pen(wx.Colour(180,180,150)))
|
||||
for grid_unit in self.grid:
|
||||
if grid_unit > 0:
|
||||
for x in xrange(int(self.bedsize[0]/grid_unit)+1):
|
||||
dc.DrawLine(self.translate[0]+x*self.scale[0]*grid_unit,self.translate[1],self.translate[0]+x*self.scale[0]*grid_unit,self.translate[1]+self.scale[1]*self.bedsize[1])
|
||||
for y in xrange(int(self.bedsize[1]/grid_unit)+1):
|
||||
dc.DrawLine(self.translate[0],self.translate[1]+y*self.scale[1]*grid_unit,self.translate[0]+self.scale[0]*self.bedsize[0],self.translate[1]+y*self.scale[1]*grid_unit)
|
||||
for x in xrange(int(self.build_dimensions[0]/grid_unit)+1):
|
||||
dc.DrawLine(self.translate[0]+x*self.scale[0]*grid_unit,self.translate[1],self.translate[0]+x*self.scale[0]*grid_unit,self.translate[1]+self.scale[1]*self.build_dimensions[1])
|
||||
for y in xrange(int(self.build_dimensions[1]/grid_unit)+1):
|
||||
dc.DrawLine(self.translate[0],self.translate[1]+y*self.scale[1]*grid_unit,self.translate[0]+self.scale[0]*self.build_dimensions[0],self.translate[1]+y*self.scale[1]*grid_unit)
|
||||
dc.SetPen(wx.Pen(wx.Colour(0,0,0)))
|
||||
if not self.showall:
|
||||
self.size = self.GetSize()
|
||||
|
@ -237,9 +236,9 @@ class gviz(wx.Panel):
|
|||
return target
|
||||
|
||||
def _y(y):
|
||||
return self.bedsize[1]-(y+(self.bedsize[0]/2-self.center[0]))
|
||||
return self.build_dimensions[1]-(y-self.build_dimensions[4])
|
||||
def _x(x):
|
||||
return x+(self.bedsize[0]/2-self.center[0])
|
||||
return x-self.build_dimensions[3]
|
||||
|
||||
start_pos = self.hilightpos[:] if hilight else self.lastpos[:]
|
||||
|
||||
|
|
|
@ -57,10 +57,8 @@ class PronterWindow(wx.Frame,pronsole.pronsole):
|
|||
self.settings.last_file_path = ""
|
||||
self.settings.last_temperature = 0.0
|
||||
self.settings.last_bed_temperature = 0.0
|
||||
self.settings.bed_size_x = 200.
|
||||
self.settings.bed_size_y = 200.
|
||||
self.settings.bed_center_x = 100.
|
||||
self.settings.bed_center_y = 100.
|
||||
#default build dimensions are 200x200x100 with 0,0,0 in the corner of the bed
|
||||
self.settings.build_dimensions = '200x200x100+0+0+0'
|
||||
self.settings.preview_grid_step1 = 10.
|
||||
self.settings.preview_grid_step2 = 50.
|
||||
self.settings.preview_extrusion_width = 0.5
|
||||
|
@ -86,7 +84,11 @@ class PronterWindow(wx.Frame,pronsole.pronsole):
|
|||
]
|
||||
self.custombuttons=[]
|
||||
self.btndict={}
|
||||
print self.settings.build_dimensions
|
||||
self.parse_cmdline(sys.argv[1:])
|
||||
print self.settings.build_dimensions
|
||||
self.build_dimensions_list = self.get_build_dimensions(self.settings.build_dimensions)
|
||||
print self.build_dimensions_list
|
||||
customdict={}
|
||||
try:
|
||||
execfile("custombtn.txt",customdict)
|
||||
|
@ -611,14 +613,12 @@ class PronterWindow(wx.Frame,pronsole.pronsole):
|
|||
self.zfeedc.SetForegroundColour("black")
|
||||
# lls.Add((10,0),pos=(0,11),span=(1,1))
|
||||
self.gviz=gviz.gviz(self.panel,(300,300),
|
||||
bedsize=(self.settings.bed_size_x,self.settings.bed_size_y),
|
||||
center=(self.settings.bed_center_x,self.settings.bed_center_y),
|
||||
build_dimensions=self.build_dimensions_list,
|
||||
grid=(self.settings.preview_grid_step1,self.settings.preview_grid_step2),
|
||||
extrusion_width=self.settings.preview_extrusion_width)
|
||||
self.gviz.showall=1
|
||||
self.gwindow=gviz.window([],
|
||||
bedsize=(self.settings.bed_size_x,self.settings.bed_size_y),
|
||||
center=(self.settings.bed_center_x,self.settings.bed_center_y),
|
||||
build_dimensions=self.build_dimensions_list,
|
||||
grid=(self.settings.preview_grid_step1,self.settings.preview_grid_step2),
|
||||
extrusion_width=self.settings.preview_extrusion_width)
|
||||
self.gviz.Bind(wx.EVT_LEFT_DOWN,self.showwin)
|
||||
|
@ -1462,6 +1462,35 @@ class PronterWindow(wx.Frame,pronsole.pronsole):
|
|||
wx.CallAfter(self.pausebtn.SetLabel, _("Pause"))
|
||||
wx.CallAfter(self.printbtn.SetLabel, _("Print"))
|
||||
self.paused=0
|
||||
|
||||
def get_build_dimensions(self,bdim):
|
||||
import re
|
||||
# a string containing up to six numbers delimited by almost anything
|
||||
# first 0-3 numbers specify the build volume, no sign, always positive
|
||||
# remaining 0-3 numbers specify the coordinates of the "southwest" corner of the build platform
|
||||
# "XXX,YYY"
|
||||
# "XXXxYYY+xxx-yyy"
|
||||
# "XXX,YYY,ZZZ+xxx+yyy-zzz"
|
||||
# etc
|
||||
bdl = re.match(
|
||||
"[^\d+-]*(\d+)?" + # X build size
|
||||
"[^\d+-]*(\d+)?" + # Y build size
|
||||
"[^\d+-]*(\d+)?" + # Z build size
|
||||
"[^\d+-]*([+-]\d+)?" + # X corner coordinate
|
||||
"[^\d+-]*([+-]\d+)?" + # Y corner coordinate
|
||||
"[^\d+-]*([+-]\d+)?" # Z corner coordinate
|
||||
,bdim).groups()
|
||||
print bdl
|
||||
bdl_float = [
|
||||
200.0 if bdl[0]==None else float(bdl[0]),
|
||||
200.0 if bdl[1]==None else float(bdl[1]),
|
||||
100.0 if bdl[2]==None else float(bdl[2]),
|
||||
0.0 if bdl[3]==None else float(bdl[3]),
|
||||
0.0 if bdl[4]==None else float(bdl[4]),
|
||||
0.0 if bdl[5]==None else float(bdl[5]),
|
||||
]
|
||||
return bdl_float
|
||||
|
||||
|
||||
class macroed(wx.Dialog):
|
||||
"""Really simple editor to edit macro definitions"""
|
||||
|
|
Loading…
Reference in New Issue