Ver Fonte

- fix an older issue that made that only the Custom choice created an effect when changing the Offset in the Geometry Object Tool Table

Marius Stanciu há 5 anos atrás
pai
commit
b6d4d5e85f
3 ficheiros alterados com 13 adições e 5 exclusões
  1. 1 0
      CHANGELOG.md
  2. 1 1
      appObjects/FlatCAMGeometry.py
  3. 11 4
      camlib.py

+ 1 - 0
CHANGELOG.md

@@ -12,6 +12,7 @@ CHANGELOG for FlatCAM beta
 - fixed an issue in Tool Isolation used with tools from the Tools Database: the set offset value was not used
 - updated the Tools Database to include all the Geometry keys in the every tool from database
 - made sure that the Operation Type values ('Iso', 'Rough' and 'Finish') are not translated as this may create issues all over the application
+- fix an older issue that made that only the Custom choice created an effect when changing the Offset in the Geometry Object Tool Table
 
 2.11.2020
 

+ 1 - 1
appObjects/FlatCAMGeometry.py

@@ -2287,7 +2287,7 @@ class GeometryObject(FlatCAMObj, Geometry):
                 #         current_uid = int(k)
                 #         break
 
-                if dia_cnc_dict['offset'] == 'in':
+                if dia_cnc_dict['offset'].lower() == 'in':
                     tool_offset = -tooldia_val / 2
                 elif dia_cnc_dict['offset'].lower() == 'out':
                     tool_offset = tooldia_val / 2

+ 11 - 4
camlib.py

@@ -3517,15 +3517,22 @@ class CNCjob(Geometry):
         p = self.pp_geometry
 
         # Offset the Geometry if it is the case
-        # FIXME need to test if in ["Path", "In", "Out", "Custom"]. For now only 'Custom' is somehow done
-        offset = tools[tool]['offset_value']
-        if offset != 0.0:
+        if tools[tool]['offset'].lower() == 'in':
+            tool_offset = -float(tools[tool]['tooldia']) / 2.0
+        elif tools[tool]['offset'].lower() == 'out':
+            tool_offset = float(tools[tool]['tooldia']) / 2.0
+        elif tools[tool]['offset'].lower() == 'custom':
+            tool_offset = tools[tool]['offset_value']
+        else:
+            tool_offset = 0.0
+
+        if tool_offset != 0.0:
             for it in flat_geometry:
                 # if the geometry is a closed shape then create a Polygon out of it
                 if isinstance(it, LineString):
                     if it.is_ring:
                         it = Polygon(it)
-                temp_solid_geometry.append(it.buffer(offset, join_style=2))
+                temp_solid_geometry.append(it.buffer(tool_offset, join_style=2))
             temp_solid_geometry = self.flatten(temp_solid_geometry, reset=True, pathonly=True)
         else:
             temp_solid_geometry = flat_geometry