Skip to content

Commit

Permalink
Work on issue #518
Browse files Browse the repository at this point in the history
  • Loading branch information
FormerLurker committed May 9, 2020
1 parent 613e058 commit f4c768f
Show file tree
Hide file tree
Showing 4 changed files with 55 additions and 29 deletions.
3 changes: 3 additions & 0 deletions octoprint_octolapse/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -441,6 +441,7 @@ def _get_overridable_settings_dict(self):
settings_dict = {}
volume_dict = {}
volume_dict["bed_type"] = self.bed_type
volume_dict["origin_type"] = self.origin_type
if self.custom_bounding_box:
# set the bounds to the custom box
volume_dict["min_x"] = float(self.min_x)
Expand Down Expand Up @@ -502,6 +503,8 @@ def get_octoprint_settings_dict(octoprint_printer_profile):
else:
volume_dict["bed_type"] = "rectangular"

volume_dict["origin_type"] = volume["origin"]

if custom_box:
# set the bounds to the custom box
volume_dict["min_x"] = float(custom_box["x_min"])
Expand Down
39 changes: 23 additions & 16 deletions octoprint_octolapse/stabilization_gcode.py
Original file line number Diff line number Diff line change
Expand Up @@ -469,32 +469,39 @@ def get_snapshot_coordinate(self, path, axis):

def get_bed_relative_coordinate(self, axis, coord):
rel_coordinate = None
volume = self.overridable_printer_profile_settings["volume"]
if axis == "x":
rel_coordinate = self.get_bed_relative_x(coord)
rel_coordinate = self.get_bed_relative_x(coord, volume)
elif axis == "y":
rel_coordinate = self.get_bed_relative_y(coord)
rel_coordinate = self.get_bed_relative_y(coord, volume)
elif axis == "Z":
rel_coordinate = self.get_bed_relative_z(coord)
rel_coordinate = self.get_bed_relative_z(coord, volume)

return rel_coordinate

def get_bed_relative_x(self, percent):
min_value = self.overridable_printer_profile_settings["volume"]["min_x"]
max_value = self.overridable_printer_profile_settings["volume"]["max_x"]
return self.get_relative_coordinate(percent, min_value, max_value)
def get_bed_relative_x(self, percent, volume):
min_value = volume["min_x"]
max_value = volume["max_x"]
origin_type = volume["origin_type"]
return self.get_relative_coordinate(percent, min_value, max_value, origin_type)

def get_bed_relative_y(self, percent):
min_value = self.overridable_printer_profile_settings["volume"]["min_y"]
max_value = self.overridable_printer_profile_settings["volume"]["max_y"]
return self.get_relative_coordinate(percent, min_value, max_value)
def get_bed_relative_y(self, percent, volume):
min_value = volume["min_y"]
max_value = volume["max_y"]
origin_type = volume["origin_type"]
return self.get_relative_coordinate(percent, min_value, max_value, origin_type)

def get_bed_relative_z(self, percent):
min_value = self.overridable_printer_profile_settings["volume"]["min_z"]
max_value = self.overridable_printer_profile_settings["volume"]["max_z"]
return self.get_relative_coordinate(percent, min_value, max_value)
def get_bed_relative_z(self, percent, volume):
min_value = volume["min_z"]
max_value = volume["max_z"]
origin_type = volume["origin_type"]
return self.get_relative_coordinate(percent, min_value, max_value, origin_type)

@staticmethod
def get_relative_coordinate(percent, min_value, max_value):
def get_relative_coordinate(percent, min_value, max_value, origin_type):
if origin_type == PrinterProfile.origin_type_center:
return ((float(max_value) - float(min_value)) * (percent / 100.0)) - \
(float(max_value) - float(min_value))/2.0
return ((float(max_value) - float(min_value)) * (percent / 100.0)) + float(min_value)

def set_e_to_relative(self, gcode_type):
Expand Down
38 changes: 27 additions & 11 deletions octoprint_octolapse/static/js/octolapse.status.snapshotplan.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,19 @@ Octolapse.snapshotPlanStateViewModel = function() {
self.plan_count = ko.observable(null);
self.lines_remaining = ko.observable(null);
self.lines_total = ko.observable(null);
self.x_initial = ko.observable(null).extend({numeric: 2});
self.y_initial = ko.observable(null).extend({numeric: 2});
self.z_initial = ko.observable(null).extend({numeric: 2});
self.x_return = ko.observable(null).extend({numeric: 2});
self.y_return = ko.observable(null).extend({numeric: 2});
self.z_return = ko.observable(null).extend({numeric: 2});
self.x_initial = ko.observable(null);
self.y_initial = ko.observable(null);
self.z_initial = ko.observable(null);
self.x_return = ko.observable(null);
self.y_return = ko.observable(null);
self.z_return = ko.observable(null);

self.format_coordinates = function(val)
{
if (val) return val.toFixed(2);
return "";
};

self.multi_extruder = ko.observable(false);
self.current_tool = ko.observable(0);
self.progress_percent = ko.observable(null).extend({numeric: 2});
Expand Down Expand Up @@ -644,20 +651,28 @@ Octolapse.snapshotPlanStateViewModel = function() {
return (max - min) - coord;
};

self.normalize_coordinate = function(coord, min)
self.normalize_coordinate = function(coord, min, max)
{
return coord - min;
if (self.printer_volume.origin_type == 'center')
{
return coord + (max - min) / 2.0;
}
else
{
return coord - min;
}

};

self.to_canvas_x = function(x)
{
x = self.normalize_coordinate(x, self.printer_volume.min_x);
x = self.normalize_coordinate(x, self.printer_volume.min_x, self.printer_volume.max_x);
return x *self.x_canvas_scale + self.canvas_border_size[0];
};

self.to_canvas_y = function(y)
{
y = self.normalize_coordinate(y, self.printer_volume.min_y);
y = self.normalize_coordinate(y, self.printer_volume.min_y, self.printer_volume.max_y);
// Y coordinates are flipped on the camera when compared to the standard 3d printer
// coordinates, so invert the coordinate
y = self.invert_coordinate(y, self.printer_volume.min_y, self.printer_volume.max_y);
Expand All @@ -667,7 +682,8 @@ Octolapse.snapshotPlanStateViewModel = function() {

self.to_canvas_z = function(z)
{
z = self.normalize_coordinate(z, self.printer_volume.min_z);
// This isn't right, z coordinates always start at 0!
z = self.normalize_coordinate(z, 0, 0);
return z *self.z_canvas_scale + self.canvas_border_size[2];
};

Expand Down
4 changes: 2 additions & 2 deletions octoprint_octolapse/templates/octolapse_snapshot_plan.jinja2
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@
Initial: 
</div>
<div class="span9 text-left no-min-height">
<strong>X</strong><span data-bind="text: SnapshotPlanState.x_initial" />,&nbsp;<strong>Y</strong><span data-bind="text: SnapshotPlanState.y_initial" />,&nbsp;<strong>Z</strong><span data-bind="text: SnapshotPlanState.z_initial" />
<strong>X</strong><span data-bind="text: SnapshotPlanState.format_coordinates(SnapshotPlanState.x_initial())" />,&nbsp;<strong>Y</strong><span data-bind="text: SnapshotPlanState.format_coordinates(SnapshotPlanState.y_initial())" />,&nbsp;<strong>Z</strong><span data-bind="text: SnapshotPlanState.format_coordinates(SnapshotPlanState.z_initial())" />
</div>
</div>
<div class="ol-compact-row">
Expand All @@ -101,7 +101,7 @@
Return:&nbsp;
</div>
<div class="span9 text-left no-min-height">
<strong>X</strong><span data-bind="text: SnapshotPlanState.x_return" />,&nbsp;<strong>Y</strong><span data-bind="text: SnapshotPlanState.y_return" />,&nbsp;<strong>Z</strong><span data-bind="text: SnapshotPlanState.z_return" />
<strong>X</strong><span data-bind="text: SnapshotPlanState.format_coordinates(SnapshotPlanState.x_return())" />,&nbsp;<strong>Y</strong><span data-bind="text: SnapshotPlanState.format_coordinates(SnapshotPlanState.y_return())" />,&nbsp;<strong>Z</strong><span data-bind="text: SnapshotPlanState.format_coordinates(SnapshotPlanState.z_return())" />
</div>
</div>
<div class="ol-compact-row" data-bind="visible: SnapshotPlanState.multi_extruder">
Expand Down

0 comments on commit f4c768f

Please sign in to comment.