Wire EDM Process

Paperless Parts has a module for Wire EDM based processes. From a 3D file, this module will extract things like cut length, average cut depth, and pierce count for you to use in your pricing formulas.

The module also recommends comprehensive manufacturability feedback in the partviewer. This module will contribute to the pricing variables only for features that can be manufactured with a standard wire-EDM machine. So for features like blind pockets, those areas of material removal will not contribute to pricing variables like cut length or cut depth. These features of a part that do not contribute to pricing variables will be highlighted in the partviewer.

To analyze a part for a wire EDM process, add this line to your pricing program:

wire = analyze_wire_edm()

The  wire object will contain the attributes described below.

Wire EDM attributes
Attribute Description Metric units US units
setup_count Total number of times required to refixture the part to machine all features that can be hit with a standard wire-EDM machine n/a n/a
cut_length The aggregate cut length across all setups and cuttable features (for features that are cut on an angle, we take the average length between the top and bottom contours) mm in
pierce_count Number of times a drill will have to be used to create a feed hole for the wire n/a n/a
average_cut_depth The cut-length-weighted average depth of cut for the wire EDM machine across all setups (for features cut at an angle, we take the average cut depth across the entire cut face) mm in

Example

This example uses a very straightforward cut rate function based on the depth of the cut:

units_in()
wire = analyze_wire_edm()

min_cut_rate = 0.007
cut_rate_slope = 0 - 0.009
cut_rate_intercept = 0.05

cut_rate_calculated = cut_rate_slope * wire.average_cut_depth + cut_rate_intercept
if cut_rate_calculated < min_cut_rate:
  cut_rate_use = min_cut_rate
else:
  cut_rate_use = cut_rate_calculated

cut_rate = var('Cut Rate', 0, 'in/min', number, frozen=False)
cut_rate.update(cut_rate_use)
cut_rate.freeze()

setup_time_per_setup = var('Base Setup Time per setup', 60.0, 'minutes', number)
total_setup_time = var('setup_time', 0, 'total setup time, hours', number, frozen=False)
total_setup_time.update(wire.setup_count * setup_time_per_setup / 60.0)
total_setup_time.freeze()

runtime_per_drilled_hole = var('Runtime Per Drilled Hole', 2.5, 'minutes', number)
total_drilled_runtime = wire.pierce_count * runtime_per_drilled_hole / 60.0

runtime = var('runtime', 0, 'runtime in hours', number, frozen=False)
runtime.update(total_drilled_runtime + wire.cut_length / cut_rate / 60.0)
runtime.freeze()

machine_rate = var('Machine Rate', 95.0, '$/hr', currency)
setup_rate = var('Setup Rate', 95.0, '$/hr', currency)

PRICE = part.qty * runtime * machine_rate + total_setup_time * setup_rate
DAYS = 0
			
Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.

Still need help? Contact Us Contact Us