Browse Source

Fix image reader peak height

CURA-7429
Nino van Hooff 4 years ago
parent
commit
5a3bcb6161

+ 1 - 1
plugins/ImageReader/ConfigUI.qml

@@ -43,7 +43,7 @@ UM.Dialog
                 TextField {
                     id: peak_height
                     objectName: "Peak_Height"
-                    validator: RegExpValidator {regExp: /^-?\d{1,3}([\,|\.]\d*)?$/}
+                    validator: RegExpValidator {regExp: /^\d{1,3}([\,|\.]\d*)?$/}
                     width: 180 * screenScaleFactor
                     onTextChanged: { manager.onPeakHeightChanged(text) }
                 }

+ 4 - 2
plugins/ImageReader/ImageReader.py

@@ -50,7 +50,7 @@ class ImageReader(MeshReader):
         size = max(self._ui.getWidth(), self._ui.getDepth())
         return self._generateSceneNode(file_name, size, self._ui.peak_height, self._ui.base_height, self._ui.smoothing, 512, self._ui.lighter_is_higher, self._ui.use_transparency_model, self._ui.transmittance_1mm)
 
-    def _generateSceneNode(self, file_name, xz_size, peak_height, base_height, blur_iterations, max_size, lighter_is_higher, use_transparency_model, transmittance_1mm):
+    def _generateSceneNode(self, file_name, xz_size, height_from_base, base_height, blur_iterations, max_size, lighter_is_higher, use_transparency_model, transmittance_1mm):
         scene_node = SceneNode()
 
         mesh = MeshBuilder()
@@ -68,8 +68,10 @@ class ImageReader(MeshReader):
         if img.width() < 2 or img.height() < 2:
             img = img.scaled(width, height, Qt.IgnoreAspectRatio)
 
+        height_from_base = max(height_from_base, 0)
         base_height = max(base_height, 0)
-        peak_height = max(peak_height, -base_height)
+        peak_height = base_height + height_from_base
+
 
         xz_size = max(xz_size, 1)
         scale_vector = Vector(xz_size, peak_height, xz_size)

+ 3 - 1
plugins/ImageReader/ImageReaderUI.py

@@ -155,8 +155,10 @@ class ImageReaderUI(QObject):
         if len(value) > 0:
             try:
                 self.peak_height = float(value.replace(",", "."))
+                if self.peak_height < 0:
+                    self.peak_height = 2.5
             except ValueError:  # Can happen with incomplete numbers, such as "-".
-                self._width = 0
+                self.peak_height = 2.5  # restore default
         else:
             self.peak_height = 0