Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
762f45f5d1 | ||
|
|
3a4f4abb83 | ||
|
|
2e65fe4fb5 | ||
|
|
61039bab67 | ||
|
|
652d64fe74 |
28
main.py
28
main.py
@@ -15,7 +15,7 @@ except ImportError:
|
||||
try:
|
||||
import git
|
||||
r = git.repo.Repo('./')
|
||||
version = r.git.describe("--tags")
|
||||
version = r.git.describe("--tags", "--dirty")
|
||||
except ImportError:
|
||||
version = "?version unknown?"
|
||||
|
||||
@@ -43,9 +43,17 @@ class WOWFileViewer:
|
||||
tickinterval = self.layer_count/10
|
||||
self.layer_select = tk.Scale(master, from_=1, to=self.layer_count,
|
||||
command=self.sliderUpdate, orient=tk.VERTICAL,
|
||||
resolution=1, length=400, tickinterval=tickinterval)
|
||||
resolution=-1, length=400, tickinterval=tickinterval,
|
||||
takefocus=1)
|
||||
self.layer_select.grid(row=2, column=4)
|
||||
|
||||
self.layern_var = tk.StringVar()
|
||||
self.layern_var.set(str(self.layer.number))
|
||||
self.layern_ent = tk.Entry(master, textvariable=self.layern_var)
|
||||
self.layern_ent.grid(row=1, column=3, sticky=tk.E)
|
||||
self.layern_btn = tk.Button(master, text=" Change ", command=self.layerManualSet)
|
||||
self.layern_btn.grid(row=1, column=4)
|
||||
|
||||
self.thick_var = tk.StringVar()
|
||||
self.thick_var.set(str(self.layer.thickness * 1000))
|
||||
self.thick_lbl = tk.Label(master, text="Layer thickness (µm): ")
|
||||
@@ -74,6 +82,13 @@ class WOWFileViewer:
|
||||
self.spdd_ent = tk.Entry(master, textvariable=self.spdd_var)
|
||||
self.spdd_ent.grid(row=4, column=4, sticky=tk.W)
|
||||
|
||||
self.updist_var = tk.StringVar()
|
||||
self.updist_var.set(str(self.layer.up_distance))
|
||||
self.updist_lbl = tk.Label(master, text="Up mvmt distance (mm): ")
|
||||
self.updist_lbl.grid(row=5, column=3, sticky=tk.E)
|
||||
self.updist_ent = tk.Entry(master, textvariable=self.updist_var)
|
||||
self.updist_ent.grid(row=5, column=4, sticky=tk.W)
|
||||
|
||||
self.expt_var = tk.StringVar()
|
||||
self.expt_var.set(str(self.layer.exposition_time))
|
||||
self.expt_lbl = tk.Label(master, text="Layer exposure time (in sec): ")
|
||||
@@ -91,9 +106,15 @@ class WOWFileViewer:
|
||||
self.close_button2 = tk.Button(master, text=" Exit ", command=master.quit)
|
||||
self.close_button2.grid(row=6, column=4)
|
||||
|
||||
self.layer_select.focus_force()
|
||||
|
||||
def sliderUpdate(self, pos):
|
||||
self.layerChange(int(pos))
|
||||
|
||||
def layerManualSet(self):
|
||||
self.layer_select.set(int(self.layern_var.get()))
|
||||
return True
|
||||
|
||||
def layerUp(self):
|
||||
if self.currentLayer < self.wowfile.get_layercount():
|
||||
self.currentLayer += 1
|
||||
@@ -109,11 +130,13 @@ class WOWFileViewer:
|
||||
self.img = ImageTk.PhotoImage(self.layer.image)
|
||||
self.layer_img.configure(image=self.img)
|
||||
self.label.configure(text="Layer: {num} / {tot}".format(num=self.layer.number, tot=self.layer_count))
|
||||
self.layern_var.set(str(self.layer.number))
|
||||
self.thick_var.set(str(self.layer.thickness * 1000))
|
||||
self.exp_var.set(str(self.layer.exposition))
|
||||
self.expt_var.set(str(self.layer.exposition_time))
|
||||
self.spdu_var.set(str(self.layer.speed_up))
|
||||
self.spdd_var.set(str(self.layer.speed_down))
|
||||
self.updist_var.set(str(self.layer.up_distance))
|
||||
|
||||
def main():
|
||||
print("WOW File viewer {ver}".format(ver=version))
|
||||
@@ -129,6 +152,7 @@ def main():
|
||||
wowfile = wow.WowFile(filename)
|
||||
lbl = None
|
||||
my_gui = WOWFileViewer(root, wowfile)
|
||||
root.focus_force()
|
||||
root.mainloop()
|
||||
|
||||
|
||||
|
||||
2
setup.py
2
setup.py
@@ -6,7 +6,7 @@ from cx_Freeze import setup, Executable
|
||||
r = git.repo.Repo('./')
|
||||
|
||||
targetName="wowviewer"
|
||||
__version__ = r.git.describe("--tags")
|
||||
__version__ = r.git.describe("--tags", "--dirty")
|
||||
|
||||
split_ver = __version__.split(".")
|
||||
split_ver_last = split_ver[2].split("-")
|
||||
|
||||
23
wow.py
23
wow.py
@@ -3,7 +3,14 @@
|
||||
import datetime
|
||||
from PIL import Image
|
||||
|
||||
_DefaultMovement = 5 # in mm
|
||||
# Ignore movement which are larger than this value for:
|
||||
# - Layer thickness calculation
|
||||
# - Movement time
|
||||
# This is mainly to ignore the last movement made after the final layer
|
||||
# which as the gcode is made would screw the thickness calculation on that
|
||||
# layer. (There is nothing to know that the layer ended in that specific case)
|
||||
# TODO: this need to be improved in a way. This is not completely reliable
|
||||
_IgnoreMovementLargerThan = 15 # in mm
|
||||
|
||||
|
||||
class layer:
|
||||
@@ -15,6 +22,8 @@ class layer:
|
||||
self.number = number
|
||||
self.speed_up = 0
|
||||
self.speed_down = 0
|
||||
self.up_distance = 0
|
||||
self.down_distance = 0
|
||||
self.exposition = 0
|
||||
self.data = b""
|
||||
self.width = 0
|
||||
@@ -48,7 +57,13 @@ def _g1(code, cur_layer):
|
||||
for param in code:
|
||||
if param[0] == "Z" or param[0] == "z":
|
||||
distance = float(param[1:])
|
||||
if abs(distance) <= _DefaultMovement:
|
||||
if abs(distance) <= _IgnoreMovementLargerThan:
|
||||
|
||||
if distance > 0:
|
||||
cur_layer.up_distance = distance
|
||||
else:
|
||||
cur_layer.down_distance = distance
|
||||
|
||||
cur_layer.thickness += distance
|
||||
cur_layer.thickness = round(cur_layer.thickness, 5)
|
||||
if speed is not 0:
|
||||
@@ -232,8 +247,8 @@ class WowFile:
|
||||
for l in self.layers:
|
||||
# Write layer preamble
|
||||
f.write(self._LayerStart.format(layer=l.number,
|
||||
up=_DefaultMovement,
|
||||
down=l.thickness - _DefaultMovement,
|
||||
up=l.up_distance,
|
||||
down=round(l.thickness - l.up_distance, 5),
|
||||
spdu=l.speed_up,
|
||||
spdd=l.speed_down).encode("ascii"))
|
||||
# Write layer image
|
||||
|
||||
Reference in New Issue
Block a user