diff options
author | Mikhail Rachinskiy <mikhail.rachinskiy@gmail.com> | 2021-05-17 22:01:55 +0300 |
---|---|---|
committer | Mikhail Rachinskiy <mikhail.rachinskiy@gmail.com> | 2021-05-17 22:01:55 +0300 |
commit | 90192449b36c53b9869336b4f842b1ce16f6a455 (patch) | |
tree | 30028e51ae2089d5c8482627a43368dcafaae04f /object_print3d_utils | |
parent | a5b2c674d8293b39306c86573e976413c9988adf (diff) |
3D-Print: refactor clean_float to take float values
Put float to string formatting inside the function, code looks more
readable that way.
Diffstat (limited to 'object_print3d_utils')
-rw-r--r-- | object_print3d_utils/operators.py | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/object_print3d_utils/operators.py b/object_print3d_utils/operators.py index 8e5b467d..afc7b83d 100644 --- a/object_print3d_utils/operators.py +++ b/object_print3d_utils/operators.py @@ -34,14 +34,18 @@ import bmesh from . import report -def clean_float(text: str) -> str: - # strip trailing zeros: 0.000 -> 0.0 +def clean_float(value: float, precision: int = 0) -> str: + # Avoid scientific notation and strip trailing zeros: 0.000 -> 0.0 + + text = f"{value:.{precision}f}" index = text.rfind(".") + if index != -1: index += 2 head, tail = text[:index], text[index:] tail = tail.rstrip("0") text = head + tail + return text @@ -93,12 +97,12 @@ class MESH_OT_print3d_info_volume(Operator): bm.free() if unit.system == 'NONE': - volume_fmt = clean_float(f"{volume:.8f}") + volume_fmt = clean_float(volume, 8) else: length, symbol = get_unit(unit.system, unit.length_unit) volume_unit = volume * (scale ** 3.0) / (length ** 3.0) - volume_str = clean_float(f"{volume_unit:.4f}") + volume_str = clean_float(volume_unit, 4) volume_fmt = f"{volume_str} {symbol}" report.update((f"Volume: {volume_fmt}³", None)) @@ -124,12 +128,12 @@ class MESH_OT_print3d_info_area(Operator): bm.free() if unit.system == 'NONE': - area_fmt = clean_float(f"{area:.8f}") + area_fmt = clean_float(area, 8) else: length, symbol = get_unit(unit.system, unit.length_unit) area_unit = area * (scale ** 2.0) / (length ** 2.0) - area_str = clean_float(f"{area_unit:.4f}") + area_str = clean_float(area_unit, 4) area_fmt = f"{area_str} {symbol}" report.update((f"Area: {area_fmt}²", None)) @@ -629,7 +633,7 @@ def _scale(scale, report=None, report_suffix=""): if scale != 1.0: bpy.ops.transform.resize(value=(scale,) * 3) if report is not None: - scale_fmt = clean_float(f"{scale:.6f}") + scale_fmt = clean_float(scale, 6) report({'INFO'}, f"Scaled by {scale_fmt}{report_suffix}") @@ -651,7 +655,7 @@ class MESH_OT_print3d_scale_to_volume(Operator): def execute(self, context): scale = math.pow(self.volume, 1 / 3) / math.pow(self.volume_init, 1 / 3) - scale_fmt = clean_float(f"{scale:.6f}") + scale_fmt = clean_float(scale, 6) self.report({'INFO'}, f"Scaled by {scale_fmt}") _scale(scale, self.report) return {'FINISHED'} |