SCHEMA tool_requirements_schema; TYPE prescription_type = ENUMERATION OF ( required_to_prevent_collision, required_to_remove_material, required_by_customer, recommended_to_mimimize_deflection, recommended_to_minimize_vibration, recommended_from_best_practices, recommended_from_testing ); END_TYPE; (* A 'prescribed_toleranced_length_measure' represents a length within an allowable range with limits 'nominal_length' + 'upper_tolerance' to 'nominal_length' - 'lower_tolerance'. The prescriptions on the boundaries of the range determine whether it is acceptable for an actual length to lie outside that boundary (recommended) or unacceptable (required). *) ENTITY prescribed_toleranced_length_measure; nominal_length: length_measure; upper_tolerance: length_measure; lower_tolerance: length_measure; upper_prescription: prescription_type; lower_prescription: prescription_type; END_ENTITY; (* A 'prescribed_toleranced_length_offset' affects a length_measure such that a length range results, i.e., with a length_measure 'L', the range is between 'L' + 'upper_offset' and 'L' - 'lower_offset'. The prescriptions on the boundaries of the range determine whether it is acceptable for an actual length to lie outside that boundary (recommended_xxx) or unacceptable (required_xxx). *) ENTITY prescribed_toleranced_length_offset; upper_offset: length_measure; lower_offset: length_measure; upper_prescription: prescription_type; lower_prescription: prescription_type; END_ENTITY; ENTITY tool_requirement; SUPERTYPE OF (milling_tool_requirement); (* a number used to refer to the instance of the tool in the process plan, e.g., 12 *) number: INTEGER; (* an arbitrary label provided for the convenience of people reading the tool requirements, e.g., "1/2-inch flat end mill" *) name: label; (* a label that identifies the particular tool to be used, such as a bar code or inventory name, and supersedes all the other tool requirement attributes, e.g., "ISBN 978-0-86203-324-8" *) identifier: label; END_ENTITY; ENTITY milling_tool_requirement; SUBTYPE OF (tool_requirement); (* depth of cut maximum, flute length, or cutting length, measured from the tool tip *) apmx: prescribed_toleranced_length_measure; (* cutter diameter *) dc: prescribed_toleranced_length_measure; (* usable length maximum or shaft length, measured from the tool tip *) lux: prescribed_toleranced_length_measure; (* Note: the neck diameter 'dn' that would be expected here is replaced with 'nr', neck reduction. Neck reduction is measured from the actual cutter diameter and is positive away from the center, that is, a narrower neck has a negative neck reduction. For example, a requirement that the neck be at least 0.1 mm narrower than the actual cutter diameter, and at most 1 mm narrower, would be represented with an 'upper_offset' of -0.1 mm and a 'lower_offset' of -1.0 mm. *) nr: prescribed_toleranced_length_offset; (* body length or shank length, measured from the tool tip *) lb: prescribed_toleranced_length_measure; (* body diameter or shank diameter *) bd: prescribed_toleranced_length_measure; (* corner radius *) re: prescribed_toleranced_length_measure; (* number of flutes *) flute_number: INTEGER; (* capable of center cutting or plunge cutting *) center_cutting: BOOLEAN; thru_the_tool_coolant: BOOLEAN; END_ENTITY; END_SCHEMA; (* tool_requirements_schema *) Usage Recommendation Maximum_rpm Surface_speed_range Chip load range (chip thickness, feed_per_tooth) Coolant on_off Climb_or_conventional Tool_life_cycle (number of times it can be machined) Rationale for tool selection Surface quality Tool life Cost per cycle Cost per feature Availability Special_geometry Lead time Required_by_customer Recommended_from_testing Recommended_from_best_practices Rigidity Suitability_for_other_purposes Location of dealer Compataibility with machine Regrindability Tool maintenance Other