- updated the Calculators Tool such that now the Cut Z parameter for V-tip tool calculator can be calculated from the other parameters too
This commit is contained in:
@@ -17,6 +17,7 @@ CHANGELOG for FlatCAM beta
|
|||||||
- brought up-to-date the Romanian translation strings
|
- brought up-to-date the Romanian translation strings
|
||||||
- updated the source file when creating Excellon objects in various places in the app
|
- updated the source file when creating Excellon objects in various places in the app
|
||||||
- working in Milling Tool
|
- working in Milling Tool
|
||||||
|
- updated the Calculators Tool such that now the Cut Z parameter for V-tip tool calculator can be calculated from the other parameters too
|
||||||
|
|
||||||
14.11.2020
|
14.11.2020
|
||||||
|
|
||||||
|
|||||||
@@ -36,12 +36,6 @@ class ToolCalculator(AppTool):
|
|||||||
self.units = ''
|
self.units = ''
|
||||||
|
|
||||||
# ## Signals
|
# ## Signals
|
||||||
self.ui.cutDepth_entry.valueChanged.connect(self.on_calculate_tool_dia)
|
|
||||||
self.ui.cutDepth_entry.returnPressed.connect(self.on_calculate_tool_dia)
|
|
||||||
self.ui.tipDia_entry.returnPressed.connect(self.on_calculate_tool_dia)
|
|
||||||
self.ui.tipAngle_entry.returnPressed.connect(self.on_calculate_tool_dia)
|
|
||||||
self.ui.calculate_vshape_button.clicked.connect(self.on_calculate_tool_dia)
|
|
||||||
|
|
||||||
self.ui.mm_entry.editingFinished.connect(self.on_calculate_inch_units)
|
self.ui.mm_entry.editingFinished.connect(self.on_calculate_inch_units)
|
||||||
self.ui.inch_entry.editingFinished.connect(self.on_calculate_mm_units)
|
self.ui.inch_entry.editingFinished.connect(self.on_calculate_mm_units)
|
||||||
|
|
||||||
@@ -113,6 +107,9 @@ class ToolCalculator(AppTool):
|
|||||||
self.ui.area_sel_radio.set_value('d')
|
self.ui.area_sel_radio.set_value('d')
|
||||||
self.on_area_calculation_radio(val='d')
|
self.on_area_calculation_radio(val='d')
|
||||||
|
|
||||||
|
self.ui_disconnect()
|
||||||
|
self.ui_connect()
|
||||||
|
|
||||||
def on_area_calculation_radio(self, val):
|
def on_area_calculation_radio(self, val):
|
||||||
if val == 'a':
|
if val == 'a':
|
||||||
self.ui.pcbwidthlabel.hide()
|
self.ui.pcbwidthlabel.hide()
|
||||||
@@ -140,6 +137,7 @@ class ToolCalculator(AppTool):
|
|||||||
self.ui.area_unit.hide()
|
self.ui.area_unit.hide()
|
||||||
|
|
||||||
def on_calculate_tool_dia(self):
|
def on_calculate_tool_dia(self):
|
||||||
|
self.ui_disconnect()
|
||||||
# Calculation:
|
# Calculation:
|
||||||
# Manufacturer gives total angle of the the tip but we need only half of it
|
# Manufacturer gives total angle of the the tip but we need only half of it
|
||||||
# tangent(half_tip_angle) = opposite side / adjacent = part_of _real_dia / depth_of_cut
|
# tangent(half_tip_angle) = opposite side / adjacent = part_of _real_dia / depth_of_cut
|
||||||
@@ -157,6 +155,37 @@ class ToolCalculator(AppTool):
|
|||||||
|
|
||||||
tool_diameter = tip_diameter + (2 * cut_depth * math.tan(math.radians(half_tip_angle)))
|
tool_diameter = tip_diameter + (2 * cut_depth * math.tan(math.radians(half_tip_angle)))
|
||||||
self.ui.effectiveToolDia_entry.set_value(self.app.dec_format(tool_diameter, self.decimals))
|
self.ui.effectiveToolDia_entry.set_value(self.app.dec_format(tool_diameter, self.decimals))
|
||||||
|
self.app.inform.emit('[success] %s' % _("Cut width (tool diameter) calculated."))
|
||||||
|
|
||||||
|
self.ui_connect()
|
||||||
|
|
||||||
|
def on_calculate_cutz(self):
|
||||||
|
self.ui_disconnect()
|
||||||
|
# Calculation:
|
||||||
|
# Manufacturer gives total angle of the the tip but we need only half of it
|
||||||
|
# tangent(half_tip_angle) = opposite side / adjacent = part_of _real_dia / depth_of_cut
|
||||||
|
# effective_diameter = tip_diameter + part_of_real_dia_left_side + part_of_real_dia_right_side
|
||||||
|
# tool is symmetrical therefore: part_of_real_dia_left_side = part_of_real_dia_right_side
|
||||||
|
# effective_diameter = tip_diameter + (2 * part_of_real_dia_left_side)
|
||||||
|
# effective diameter = tip_diameter + (2 * depth_of_cut * tangent(half_tip_angle))
|
||||||
|
|
||||||
|
tip_diameter = float(self.ui.tipDia_entry.get_value())
|
||||||
|
half_tip_angle = float(self.ui.tipAngle_entry.get_value()) / 2.0
|
||||||
|
|
||||||
|
tooldia = self.ui.effectiveToolDia_entry.get_value()
|
||||||
|
|
||||||
|
if tip_diameter > tooldia:
|
||||||
|
self.ui.cutDepth_entry.set_value(self.app.dec_format(0.0, self.decimals))
|
||||||
|
self.app.inform.emit('[ERROR_NOTCL] %s' %
|
||||||
|
_("Tool diameter (cut width) cannot be smaller than the tip diameter."))
|
||||||
|
self.ui_connect()
|
||||||
|
return
|
||||||
|
|
||||||
|
cut_depth = (tooldia - tip_diameter) / (2 * math.tan(math.radians(half_tip_angle)))
|
||||||
|
self.ui.cutDepth_entry.set_value(self.app.dec_format(cut_depth, self.decimals))
|
||||||
|
self.app.inform.emit('[success] %s' % _("Cut depth (Cut Z) calculated."))
|
||||||
|
|
||||||
|
self.ui_connect()
|
||||||
|
|
||||||
def on_calculate_inch_units(self):
|
def on_calculate_inch_units(self):
|
||||||
mm_val = float(self.ui.mm_entry.get_value())
|
mm_val = float(self.ui.mm_entry.get_value())
|
||||||
@@ -184,6 +213,49 @@ class ToolCalculator(AppTool):
|
|||||||
self.ui.cvalue_entry.set_value('%.2f' % calculated_current)
|
self.ui.cvalue_entry.set_value('%.2f' % calculated_current)
|
||||||
self.ui.time_entry.set_value('%.1f' % calculated_time)
|
self.ui.time_entry.set_value('%.1f' % calculated_time)
|
||||||
|
|
||||||
|
def ui_connect(self):
|
||||||
|
self.ui.cutDepth_entry.valueChanged.connect(self.on_calculate_tool_dia)
|
||||||
|
self.ui.cutDepth_entry.returnPressed.connect(self.on_calculate_tool_dia)
|
||||||
|
|
||||||
|
self.ui.effectiveToolDia_entry.valueChanged.connect(self.on_calculate_cutz)
|
||||||
|
self.ui.effectiveToolDia_entry.returnPressed.connect(self.on_calculate_cutz)
|
||||||
|
|
||||||
|
self.ui.tipDia_entry.returnPressed.connect(self.on_calculate_tool_dia)
|
||||||
|
self.ui.tipAngle_entry.returnPressed.connect(self.on_calculate_tool_dia)
|
||||||
|
self.ui.calculate_vshape_button.clicked.connect(self.on_calculate_tool_dia)
|
||||||
|
|
||||||
|
def ui_disconnect(self):
|
||||||
|
try:
|
||||||
|
self.ui.cutDepth_entry.valueChanged.disconnect()
|
||||||
|
except (AttributeError, TypeError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
self.ui.cutDepth_entry.returnPressed.disconnect()
|
||||||
|
except (AttributeError, TypeError):
|
||||||
|
pass
|
||||||
|
|
||||||
|
try:
|
||||||
|
self.ui.effectiveToolDia_entry.valueChanged.disconnect()
|
||||||
|
except (AttributeError, TypeError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
self.ui.effectiveToolDia_entry.returnPressed.disconnect()
|
||||||
|
except (AttributeError, TypeError):
|
||||||
|
pass
|
||||||
|
|
||||||
|
try:
|
||||||
|
self.ui.tipDia_entry.returnPressed.disconnect()
|
||||||
|
except (AttributeError, TypeError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
self.ui.tipAngle_entry.returnPressed.disconnect()
|
||||||
|
except (AttributeError, TypeError):
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
self.ui.calculate_vshape_button.clicked.disconnect()
|
||||||
|
except (AttributeError, TypeError):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
class CalcUI:
|
class CalcUI:
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user