hsmworks & fusion ref files
This commit is contained in:
parent
0dfcb9ddd5
commit
b553b2d7bb
BIN
Mod/cam-dev/ref-fusion/CAM360/5axcore.dll
Normal file
BIN
Mod/cam-dev/ref-fusion/CAM360/5axcore.dll
Normal file
Binary file not shown.
BIN
Mod/cam-dev/ref-fusion/CAM360/5axmfcuiutils.dll
Normal file
BIN
Mod/cam-dev/ref-fusion/CAM360/5axmfcuiutils.dll
Normal file
Binary file not shown.
BIN
Mod/cam-dev/ref-fusion/CAM360/5axui.dll
Normal file
BIN
Mod/cam-dev/ref-fusion/CAM360/5axui.dll
Normal file
Binary file not shown.
BIN
Mod/cam-dev/ref-fusion/CAM360/5axui_res.dll
Normal file
BIN
Mod/cam-dev/ref-fusion/CAM360/5axui_res.dll
Normal file
Binary file not shown.
BIN
Mod/cam-dev/ref-fusion/CAM360/5axui_res_neutral.dll
Normal file
BIN
Mod/cam-dev/ref-fusion/CAM360/5axui_res_neutral.dll
Normal file
Binary file not shown.
BIN
Mod/cam-dev/ref-fusion/CAM360/ADFlowPluginInterface.dll
Normal file
BIN
Mod/cam-dev/ref-fusion/CAM360/ADFlowPluginInterface.dll
Normal file
Binary file not shown.
BIN
Mod/cam-dev/ref-fusion/CAM360/CAMXLayer10.dll
Normal file
BIN
Mod/cam-dev/ref-fusion/CAM360/CAMXLayer10.dll
Normal file
Binary file not shown.
BIN
Mod/cam-dev/ref-fusion/CAM360/CAMXLayer10.xml
Normal file
BIN
Mod/cam-dev/ref-fusion/CAM360/CAMXLayer10.xml
Normal file
Binary file not shown.
BIN
Mod/cam-dev/ref-fusion/CAM360/Configuration/CAM360.xml
Normal file
BIN
Mod/cam-dev/ref-fusion/CAM360/Configuration/CAM360.xml
Normal file
Binary file not shown.
48
Mod/cam-dev/ref-fusion/CAM360/Data/MFGFSS/mfgfssSchema.json
Normal file
48
Mod/cam-dev/ref-fusion/CAM360/Data/MFGFSS/mfgfssSchema.json
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
{
|
||||||
|
"$comment": "Schema to validate the model response when generating feeds and speeds.",
|
||||||
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"surface_speed": {
|
||||||
|
"$ref": "#/definitions/machining_parameter"
|
||||||
|
},
|
||||||
|
"chip_load": {
|
||||||
|
"$ref": "#/definitions/machining_parameter"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"surface_speed",
|
||||||
|
"chip_load"
|
||||||
|
],
|
||||||
|
"additionalProperties": false,
|
||||||
|
"definitions": {
|
||||||
|
"machining_parameter": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"cautious_value": {
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
"balanced_value": {
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
"fast_value": {
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
"unit": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"justification": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"cautious_value",
|
||||||
|
"balanced_value",
|
||||||
|
"fast_value",
|
||||||
|
"unit",
|
||||||
|
"justification"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
2172
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/acramatic.cps
Normal file
2172
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/acramatic.cps
Normal file
File diff suppressed because it is too large
Load Diff
1504
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/acurite millpwr 2.cps
Normal file
1504
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/acurite millpwr 2.cps
Normal file
File diff suppressed because it is too large
Load Diff
1665
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/acurite millpwr 3.cps
Normal file
1665
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/acurite millpwr 3.cps
Normal file
File diff suppressed because it is too large
Load Diff
2460
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/anderson.cps
Normal file
2460
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/anderson.cps
Normal file
File diff suppressed because it is too large
Load Diff
2271
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/andronic.cps
Normal file
2271
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/andronic.cps
Normal file
File diff suppressed because it is too large
Load Diff
1836
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/anilam conversational.cps
Normal file
1836
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/anilam conversational.cps
Normal file
File diff suppressed because it is too large
Load Diff
447
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/apt.cps
Normal file
447
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/apt.cps
Normal file
@ -0,0 +1,447 @@
|
|||||||
|
/**
|
||||||
|
Copyright (C) 2012-2021 by Autodesk, Inc.
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Common APT ISO 4343 post processor configuration.
|
||||||
|
|
||||||
|
$Revision: 43882 a148639d401c1626f2873b948fb6d996d3bc60aa $
|
||||||
|
$Date: 2022-04-12 21:31:49 $
|
||||||
|
|
||||||
|
FORKID {1E3EF622-47FE-487d-937B-07920048EF52}
|
||||||
|
*/
|
||||||
|
|
||||||
|
description = "Common ISO 4343 APT";
|
||||||
|
vendor = "Autodesk";
|
||||||
|
vendorUrl = "http://www.autodesk.com";
|
||||||
|
legal = "Copyright (C) 2012-2021 by Autodesk, Inc.";
|
||||||
|
certificationLevel = 2;
|
||||||
|
minimumRevision = 45702;
|
||||||
|
|
||||||
|
longDescription = "Post for Common APT ISO 4343.";
|
||||||
|
|
||||||
|
unit = ORIGINAL_UNIT; // do not map unit
|
||||||
|
extension = "apt";
|
||||||
|
setCodePage("ansi");
|
||||||
|
|
||||||
|
capabilities = CAPABILITY_INTERMEDIATE;
|
||||||
|
|
||||||
|
allowHelicalMoves = true;
|
||||||
|
allowedCircularPlanes = undefined; // allow any circular motion
|
||||||
|
|
||||||
|
// user-defined properties
|
||||||
|
properties = {
|
||||||
|
highAccuracy: {
|
||||||
|
title : "High accuracy",
|
||||||
|
description: "Specifies short (no) or long (yes) numeric format.",
|
||||||
|
group : "preferences",
|
||||||
|
type : "boolean",
|
||||||
|
value : true,
|
||||||
|
scope : "post"
|
||||||
|
},
|
||||||
|
showNotes: {
|
||||||
|
title : "Show notes",
|
||||||
|
description: "Writes operation notes as comments in the outputted code.",
|
||||||
|
group : "formats",
|
||||||
|
type : "boolean",
|
||||||
|
value : true,
|
||||||
|
scope : "post"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var mainFormat = createFormat({decimals:6, forceDecimal:true});
|
||||||
|
var ijkFormat = createFormat({decimals:9, forceDecimal:true});
|
||||||
|
|
||||||
|
// collected state
|
||||||
|
var currentFeed;
|
||||||
|
var feedUnit;
|
||||||
|
var coolantActive = false;
|
||||||
|
var radiusCompensationActive = false;
|
||||||
|
var multax = false;
|
||||||
|
|
||||||
|
function writeComment(text) {
|
||||||
|
writeln("PPRINT/'" + filterText(text, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789(.,)_/-+*= \t") + "'");
|
||||||
|
}
|
||||||
|
|
||||||
|
function onOpen() {
|
||||||
|
var machineId = machineConfiguration.getModel();
|
||||||
|
if (machineId) {
|
||||||
|
writeln("MACHIN/" + machineId);
|
||||||
|
}
|
||||||
|
writeln("MODE/" + (isMilling() ? "MILL" : "TURN")); // first statement for an operation
|
||||||
|
writeln("PARTNO/'" + programName + "'");
|
||||||
|
writeComment(programName);
|
||||||
|
writeComment(programComment);
|
||||||
|
writeln("UNITS/" + ((unit == IN) ? "INCHES" : "MM"));
|
||||||
|
|
||||||
|
if (!getProperty("highAccuracy")) {
|
||||||
|
mainFormat = createFormat({decimals:4, forceDecimal:true});
|
||||||
|
ijkFormat = createFormat({decimals:7, forceDecimal:true});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onComment(comment) {
|
||||||
|
writeComment(comment);
|
||||||
|
}
|
||||||
|
|
||||||
|
var mapCommand = {
|
||||||
|
COMMAND_STOP : "STOP",
|
||||||
|
COMMAND_OPTIONAL_STOP: "OPSTOP",
|
||||||
|
COMMAND_STOP_SPINDLE : "SPINDL/ON",
|
||||||
|
COMMAND_START_SPINDLE: "SPINDL/OFF",
|
||||||
|
|
||||||
|
// COMMAND_ORIENTATE_SPINDLE
|
||||||
|
|
||||||
|
COMMAND_SPINDLE_CLOCKWISE : "SPINDL/CLW",
|
||||||
|
COMMAND_SPINDLE_COUNTERCLOCKWISE: "SPINDL/CCLW"
|
||||||
|
|
||||||
|
// COMMAND_ACTIVATE_SPEED_FEED_SYNCHRONIZATION
|
||||||
|
// COMMAND_DEACTIVATE_SPEED_FEED_SYNCHRONIZATION
|
||||||
|
};
|
||||||
|
|
||||||
|
function onCommand(command) {
|
||||||
|
switch (command) {
|
||||||
|
case COMMAND_LOCK_MULTI_AXIS:
|
||||||
|
return;
|
||||||
|
case COMMAND_UNLOCK_MULTI_AXIS:
|
||||||
|
return;
|
||||||
|
case COMMAND_BREAK_CONTROL:
|
||||||
|
return;
|
||||||
|
case COMMAND_TOOL_MEASURE:
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var c = mapCommand[getCommandStringId(command)];
|
||||||
|
if (c !== undefined) {
|
||||||
|
writeln(c);
|
||||||
|
} else {
|
||||||
|
warning("Unsupported command: " + getCommandStringId(command));
|
||||||
|
writeComment("Unsupported command: " + getCommandStringId(command));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onCoolant() {
|
||||||
|
if (coolant == COOLANT_OFF) {
|
||||||
|
if (coolantActive) {
|
||||||
|
writeln("COOLNT/OFF");
|
||||||
|
coolantActive = false;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (!coolantActive) {
|
||||||
|
writeln("COOLNT/ON");
|
||||||
|
coolantActive = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
var mapCoolant = {COOLANT_FLOOD:"flood", COOLANT_MIST:"MIST", COOLANT_TOOL:"THRU"};
|
||||||
|
if (mapCoolant[coolant]) {
|
||||||
|
writeln("COOLNT/" + mapCoolant[coolant]);
|
||||||
|
} else {
|
||||||
|
warning("Unsupported coolant mode: " + coolant);
|
||||||
|
writeComment("Unsupported coolant mode: " + coolant);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Define 7-Parameter APT Cutter.
|
||||||
|
*/
|
||||||
|
function writeCutter() {
|
||||||
|
var d = tool.diameter;
|
||||||
|
var r = tool.cornerRadius;
|
||||||
|
var e = tool.tipDiameter;
|
||||||
|
var f = r;
|
||||||
|
var a = 0;
|
||||||
|
var b = tool.taperAngle;
|
||||||
|
var h = tool.fluteLength;
|
||||||
|
|
||||||
|
// Adjust taper angle for drill
|
||||||
|
// It is defined as the full inclusive angle
|
||||||
|
if ((tool.type == TOOL_DRILL) ||
|
||||||
|
(tool.type == TOOL_DRILL_CENTER) ||
|
||||||
|
(tool.type == TOOL_DRILL_SPOT)) {
|
||||||
|
b /= 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Adjust diameter for cone cutter
|
||||||
|
if ((b > 0) && (b < Math.PI / 2)) {
|
||||||
|
d = e + r;
|
||||||
|
d = d - (2 * r) + (2 * (r * Math.tan((Math.PI / 2 - b) / 2)));
|
||||||
|
|
||||||
|
// Adjust diameter for bell cutter
|
||||||
|
} else if ((b < 0) && (b > Math.PI / 2)) {
|
||||||
|
d = e + r;
|
||||||
|
d += 2 * (r * (tan(-b / 2) + 1) / (Math.tan(Math.PI / 2 + b)));
|
||||||
|
}
|
||||||
|
|
||||||
|
writeln("CUTTER/" + mainFormat.format(d) + ", " + mainFormat.format(r) +
|
||||||
|
", " + mainFormat.format(e) + ", " + mainFormat.format(f) + ", " +
|
||||||
|
mainFormat.format(a) + ", " + mainFormat.format(toDeg(b)) + ", " +
|
||||||
|
mainFormat.format(h)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function onSection() {
|
||||||
|
feedUnit = (unit == IN) ? "IPM" : "MMPM";
|
||||||
|
|
||||||
|
if (currentSection.isMultiAxis() || !currentSection.isZOriented()) {
|
||||||
|
if (!multax || isFirstSection()) {
|
||||||
|
writeln("MULTAX/ON");
|
||||||
|
}
|
||||||
|
multax = true;
|
||||||
|
} else {
|
||||||
|
if (multax || isFirstSection()) {
|
||||||
|
writeln("MULTAX/OFF");
|
||||||
|
}
|
||||||
|
multax = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (hasParameter("operation-comment")) {
|
||||||
|
var comment = getParameter("operation-comment");
|
||||||
|
if (comment) {
|
||||||
|
writeComment(comment);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (getProperty("showNotes") && hasParameter("notes")) {
|
||||||
|
var notes = getParameter("notes");
|
||||||
|
if (notes) {
|
||||||
|
var lines = String(notes).split("\n");
|
||||||
|
var r1 = new RegExp("^[\\s]+", "g");
|
||||||
|
var r2 = new RegExp("[\\s]+$", "g");
|
||||||
|
for (line in lines) {
|
||||||
|
var comment = lines[line].replace(r1, "").replace(r2, "");
|
||||||
|
if (comment) {
|
||||||
|
writeComment(comment);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
writeCutter();
|
||||||
|
|
||||||
|
var t = tool.number;
|
||||||
|
var p = 0;
|
||||||
|
var l = tool.bodyLength;
|
||||||
|
var o = tool.lengthOffset;
|
||||||
|
writeln("LOADTL/" + t + ", " + p + ", " + mainFormat.format(l) + ", " + o);
|
||||||
|
// writeln("OFSTNO/" + 0); // not used
|
||||||
|
|
||||||
|
if (isMilling()) {
|
||||||
|
writeln("SPINDL/" + mainFormat.format(spindleSpeed) + ", RPM, " + (tool.clockwise ? "CLW" : "CCLW"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isTurning()) {
|
||||||
|
writeln(
|
||||||
|
"SPINDL/" + mainFormat.format(spindleSpeed) + ", " + ((unit == IN) ? "SFM" : "SMM") + ", " + (tool.clockwise ? "CLW" : "CCLW")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
setRotation(currentSection.workPlane);
|
||||||
|
|
||||||
|
// writeln("ORIGIN/" + currentSection.workOrigin.x + ", " + currentSection.workOrigin.y + ", " + currentSection.workOrigin.z);
|
||||||
|
}
|
||||||
|
|
||||||
|
function onDwell(time) {
|
||||||
|
writeln("DELAY/" + mainFormat.format(time)); // in seconds
|
||||||
|
}
|
||||||
|
|
||||||
|
function onRadiusCompensation() {
|
||||||
|
if (radiusCompensation == RADIUS_COMPENSATION_OFF) {
|
||||||
|
if (radiusCompensationActive) {
|
||||||
|
radiusCompensationActive = false;
|
||||||
|
writeln("CUTCOM/OFF");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (!radiusCompensationActive) {
|
||||||
|
radiusCompensationActive = true;
|
||||||
|
writeln("CUTCOM/ON");
|
||||||
|
}
|
||||||
|
var direction = (radiusCompensation == RADIUS_COMPENSATION_LEFT) ? "LEFT" : "RIGHT";
|
||||||
|
if (tool.diameterOffset != 0) {
|
||||||
|
writeln("CUTCOM/" + direction + ", " + tool.diameterOffset);
|
||||||
|
} else {
|
||||||
|
writeln("CUTCOM/" + direction);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function writeGOTO(x, y, z, i, j, k) {
|
||||||
|
if (multax) {
|
||||||
|
writeln("GOTO/" +
|
||||||
|
mainFormat.format(x) + ", " +
|
||||||
|
mainFormat.format(y) + ", " +
|
||||||
|
mainFormat.format(z) + ", " +
|
||||||
|
ijkFormat.format(i) + ", " +
|
||||||
|
ijkFormat.format(j) + ", " +
|
||||||
|
ijkFormat.format(k)
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
writeln("GOTO/" +
|
||||||
|
mainFormat.format(x) + ", " +
|
||||||
|
mainFormat.format(y) + ", " +
|
||||||
|
mainFormat.format(z)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onRapid(x, y, z) {
|
||||||
|
writeln("RAPID");
|
||||||
|
writeGOTO(x, y, z, currentSection.workPlane.forward.x, currentSection.workPlane.forward.y, currentSection.workPlane.forward.z);
|
||||||
|
}
|
||||||
|
|
||||||
|
function onLinear(x, y, z, feed) {
|
||||||
|
if (feed != currentFeed) {
|
||||||
|
currentFeed = feed;
|
||||||
|
writeln("FEDRAT/" + mainFormat.format(feed) + ", " + feedUnit);
|
||||||
|
}
|
||||||
|
writeGOTO(x, y, z, currentSection.workPlane.forward.x, currentSection.workPlane.forward.y, currentSection.workPlane.forward.z);
|
||||||
|
}
|
||||||
|
|
||||||
|
function onRapid5D(x, y, z, dx, dy, dz) {
|
||||||
|
writeln("RAPID");
|
||||||
|
writeGOTO(x, y, z, dx, dy, dz);
|
||||||
|
}
|
||||||
|
|
||||||
|
function onLinear5D(x, y, z, dx, dy, dz, feed) {
|
||||||
|
if (feed != currentFeed) {
|
||||||
|
currentFeed = feed;
|
||||||
|
writeln("FEDRAT/" + mainFormat.format(feed) + ", " + feedUnit);
|
||||||
|
}
|
||||||
|
writeGOTO(x, y, z, dx, dy, dz);
|
||||||
|
}
|
||||||
|
|
||||||
|
function onCircular(clockwise, cx, cy, cz, x, y, z, feed) {
|
||||||
|
if (feed != currentFeed) {
|
||||||
|
currentFeed = feed;
|
||||||
|
writeln("FEDRAT/" + mainFormat.format(feed) + ", " + feedUnit);
|
||||||
|
}
|
||||||
|
|
||||||
|
var n = getCircularNormal();
|
||||||
|
if (clockwise) {
|
||||||
|
n = Vector.product(n, -1);
|
||||||
|
}
|
||||||
|
writeln(
|
||||||
|
"MOVARC/" + mainFormat.format(cx) + ", " + mainFormat.format(cy) + ", " + mainFormat.format(cz) + ", " +
|
||||||
|
mainFormat.format(n.x) + ", " + mainFormat.format(n.y) + ", " + mainFormat.format(n.z) + ", " +
|
||||||
|
mainFormat.format(getCircularRadius()) + ", ANGLE, " + mainFormat.format(toDeg(getCircularSweep()))
|
||||||
|
);
|
||||||
|
writeGOTO(x, y, z, currentSection.workPlane.forward.x, currentSection.workPlane.forward.y, currentSection.workPlane.forward.z);
|
||||||
|
}
|
||||||
|
|
||||||
|
function onCycle() {
|
||||||
|
var d = mainFormat.format((cycle.depth !== undefined) ? cycle.depth : 0);
|
||||||
|
var f = mainFormat.format((cycle.feedrate !== undefined) ? cycle.feedrate : 0);
|
||||||
|
var c = mainFormat.format((cycle.clearance !== undefined) ? cycle.clearance : 0);
|
||||||
|
var r = mainFormat.format((cycle.retract !== undefined) ? (c - cycle.retract) : 0);
|
||||||
|
var q = mainFormat.format((cycle.dwell !== undefined) ? cycle.dwell : 0);
|
||||||
|
var i = mainFormat.format((cycle.incrementalDepth !== undefined) ? cycle.incrementalDepth : 0); // for pecking
|
||||||
|
|
||||||
|
var statement;
|
||||||
|
|
||||||
|
switch (cycleType) {
|
||||||
|
case "drilling":
|
||||||
|
statement = "CYCLE/DRILL, " + d + ", " + feedUnit + ", " + f + ", " + c;
|
||||||
|
if (r > 0) {
|
||||||
|
statement += ", RAPTO, " + r;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "counter-boring":
|
||||||
|
statement = "CYCLE/DRILL, " + d + ", " + feedUnit + ", " + f + ", " + c;
|
||||||
|
if (r > 0) {
|
||||||
|
statement += ", RAPTO, " + r;
|
||||||
|
}
|
||||||
|
if (q > 0) {
|
||||||
|
statement += ", DWELL, " + q;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "reaming":
|
||||||
|
statement = "CYCLE/REAM, " + d + ", " + feedUnit + ", " + f + ", " + c;
|
||||||
|
if (r > 0) {
|
||||||
|
statement += ", RAPTO, " + r;
|
||||||
|
}
|
||||||
|
if (q > 0) {
|
||||||
|
statement += ", DWELL, " + q;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "boring":
|
||||||
|
statement = "CYCLE/BORE, " + d + ", " + feedUnit + ", " + f + ", " + c;
|
||||||
|
if (r > 0) {
|
||||||
|
statement += ", RAPTO, " + r;
|
||||||
|
}
|
||||||
|
statement += ", ORIENT, " + 0; // unknown orientation
|
||||||
|
if (q > 0) {
|
||||||
|
statement += ", DWELL, " + q;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "fine-boring":
|
||||||
|
statement = "CYCLE/BORE, " + d + ", " + feedUnit + ", " + f + ", " + c + ", " + cycle.shift;
|
||||||
|
if (r > 0) {
|
||||||
|
statement += ", RAPTO, " + r;
|
||||||
|
}
|
||||||
|
statement += ", ORIENT, " + 0; // unknown orientation
|
||||||
|
if (q > 0) {
|
||||||
|
statement += ", DWELL, " + q;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "deep-drilling":
|
||||||
|
statement = "CYCLE/DEEP, " + d + ", INCR, " + i + ", " + feedUnit + ", " + f + ", " + c;
|
||||||
|
if (r > 0) {
|
||||||
|
statement += ", RAPTO, " + r;
|
||||||
|
}
|
||||||
|
if (q > 0) {
|
||||||
|
statement += ", DWELL, " + q;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "chip-breaking":
|
||||||
|
statement = "CYCLE/BRKCHP, " + d + ", INCR, " + i + ", " + feedUnit + ", " + f + ", " + c;
|
||||||
|
if (r > 0) {
|
||||||
|
statement += ", RAPTO, " + r;
|
||||||
|
}
|
||||||
|
if (q > 0) {
|
||||||
|
statement += ", DWELL, " + q;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "tapping":
|
||||||
|
if (tool.type == TOOL_TAP_LEFT_HAND) {
|
||||||
|
cycleNotSupported();
|
||||||
|
} else {
|
||||||
|
statement = "CYCLE/TAP, " + d + ", " + feedUnit + ", " + f + ", " + c;
|
||||||
|
if (r > 0) {
|
||||||
|
statement += ", RAPTO, " + r;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "right-tapping":
|
||||||
|
statement = "CYCLE/TAP, " + d + ", " + feedUnit + ", " + f + ", " + c;
|
||||||
|
if (r > 0) {
|
||||||
|
statement += ", RAPTO, " + r;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
cycleNotSupported();
|
||||||
|
}
|
||||||
|
writeln(statement);
|
||||||
|
}
|
||||||
|
|
||||||
|
function onCyclePoint(x, y, z) {
|
||||||
|
writeln("FEDRAT/" + mainFormat.format(cycle.feedrate) + ", " + feedUnit);
|
||||||
|
writeGOTO(x, y, z, currentSection.workPlane.forward.x, currentSection.workPlane.forward.y, currentSection.workPlane.forward.z);
|
||||||
|
}
|
||||||
|
|
||||||
|
function onCycleEnd() {
|
||||||
|
writeln("CYCLE/OFF");
|
||||||
|
}
|
||||||
|
|
||||||
|
function onSectionEnd() {
|
||||||
|
}
|
||||||
|
|
||||||
|
function onClose() {
|
||||||
|
if (coolantActive) {
|
||||||
|
coolantActive = false;
|
||||||
|
writeln("COOLNT/OFF");
|
||||||
|
}
|
||||||
|
writeln("END");
|
||||||
|
writeln("FINI");
|
||||||
|
}
|
||||||
|
|
||||||
|
function setProperty(property, value) {
|
||||||
|
properties[property].current = value;
|
||||||
|
}
|
||||||
2104
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/belotti.cps
Normal file
2104
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/belotti.cps
Normal file
File diff suppressed because it is too large
Load Diff
1937
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/biemmepi.cps
Normal file
1937
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/biemmepi.cps
Normal file
File diff suppressed because it is too large
Load Diff
1943
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/bostomatic.cps
Normal file
1943
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/bostomatic.cps
Normal file
File diff suppressed because it is too large
Load Diff
1044
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/boxzy.cps
Normal file
1044
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/boxzy.cps
Normal file
File diff suppressed because it is too large
Load Diff
2107
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/bridgeport.cps
Normal file
2107
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/bridgeport.cps
Normal file
File diff suppressed because it is too large
Load Diff
517
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/burny plasma.cps
Normal file
517
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/burny plasma.cps
Normal file
@ -0,0 +1,517 @@
|
|||||||
|
/**
|
||||||
|
Copyright (C) 2012-2025 by Autodesk, Inc.
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Burny Plasma post processor configuration.
|
||||||
|
|
||||||
|
$Revision: 45583 10f6400eaf1c75a27c852ee82b57479e7a9134c0 $
|
||||||
|
$Date: 2025-08-21 13:23:15 $
|
||||||
|
|
||||||
|
FORKID {E49EFDF4-0C61-4E7B-A77A-686311BCCC19}
|
||||||
|
*/
|
||||||
|
|
||||||
|
description = "Burny Plasma (WADR)";
|
||||||
|
vendor = "Lincoln Electric";
|
||||||
|
vendorUrl = "http://www.burny.com";
|
||||||
|
legal = "Copyright (C) 2012-2025 by Autodesk, Inc.";
|
||||||
|
certificationLevel = 2;
|
||||||
|
minimumRevision = 45702;
|
||||||
|
|
||||||
|
longDescription = "Generic post for the Burny plasma cutters.";
|
||||||
|
|
||||||
|
extension = "cnc";
|
||||||
|
programNameIsInteger = true;
|
||||||
|
setCodePage("ascii");
|
||||||
|
|
||||||
|
capabilities = CAPABILITY_JET;
|
||||||
|
tolerance = spatial(0.002, MM);
|
||||||
|
|
||||||
|
minimumChordLength = spatial(0.25, MM);
|
||||||
|
minimumCircularRadius = spatial(0.01, MM);
|
||||||
|
maximumCircularRadius = spatial(4000, MM);
|
||||||
|
minimumCircularSweep = toRad(0.01);
|
||||||
|
maximumCircularSweep = toRad(360);
|
||||||
|
allowHelicalMoves = false;
|
||||||
|
allowedCircularPlanes = 1 << PLANE_XY; // only XY
|
||||||
|
|
||||||
|
// user-defined properties
|
||||||
|
properties = {
|
||||||
|
writeMachine: {
|
||||||
|
title : "Write machine",
|
||||||
|
description: "Output the machine settings in the header of the code.",
|
||||||
|
group : "formats",
|
||||||
|
type : "boolean",
|
||||||
|
value : true,
|
||||||
|
scope : "post"
|
||||||
|
},
|
||||||
|
showSequenceNumbers: {
|
||||||
|
title : "Use sequence numbers",
|
||||||
|
description: "Use sequence numbers for each block of outputted code.",
|
||||||
|
group : "formats",
|
||||||
|
type : "boolean",
|
||||||
|
value : true,
|
||||||
|
scope : "post"
|
||||||
|
},
|
||||||
|
sequenceNumberStart: {
|
||||||
|
title : "Start sequence number",
|
||||||
|
description: "The number at which to start the sequence numbers.",
|
||||||
|
group : "formats",
|
||||||
|
type : "integer",
|
||||||
|
value : 10,
|
||||||
|
scope : "post"
|
||||||
|
},
|
||||||
|
sequenceNumberIncrement: {
|
||||||
|
title : "Sequence number increment",
|
||||||
|
description: "The amount by which the sequence number is incremented by in each block.",
|
||||||
|
group : "formats",
|
||||||
|
type : "integer",
|
||||||
|
value : 1,
|
||||||
|
scope : "post"
|
||||||
|
},
|
||||||
|
separateWordsWithSpace: {
|
||||||
|
title : "Separate words with space",
|
||||||
|
description: "Adds spaces between words if 'yes' is selected.",
|
||||||
|
group : "formats",
|
||||||
|
type : "boolean",
|
||||||
|
value : false,
|
||||||
|
scope : "post"
|
||||||
|
},
|
||||||
|
useAbsoluteIJ: {
|
||||||
|
title : "Absolute IJ",
|
||||||
|
description: "IJ for G2/G3 is assumed to be absolute, ensure SD51-PRGM FORMAT is set accordingly.",
|
||||||
|
group : "preferences",
|
||||||
|
type : "boolean",
|
||||||
|
value : true,
|
||||||
|
scope : "post"
|
||||||
|
},
|
||||||
|
useHeightSensor: {
|
||||||
|
title : "Use height sensor",
|
||||||
|
description: "Use height sensor M14/M15.",
|
||||||
|
group : "preferences",
|
||||||
|
type : "boolean",
|
||||||
|
value : false,
|
||||||
|
scope : "post"
|
||||||
|
},
|
||||||
|
overlayTable: {
|
||||||
|
title : "Overlay table",
|
||||||
|
description: "Use 0-4 for G46.",
|
||||||
|
group : "preferences",
|
||||||
|
type : "integer",
|
||||||
|
value : -1,
|
||||||
|
scope : "post"
|
||||||
|
},
|
||||||
|
useRepeat: {
|
||||||
|
title : "Use repeat",
|
||||||
|
description: "Use G97/G98 to repeat the program.",
|
||||||
|
group : "preferences",
|
||||||
|
type : "boolean",
|
||||||
|
value : false,
|
||||||
|
scope : "post"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var gFormat = createFormat({prefix:"G", decimals:0, width:2, zeropad:true});
|
||||||
|
var mFormat = createFormat({prefix:"M", decimals:0, width:2, zeropad:true});
|
||||||
|
|
||||||
|
var xyzFormat = createFormat({decimals:(unit == MM ? 3 : 4)});
|
||||||
|
var feedFormat = createFormat({decimals:(unit == MM ? 3 : 4)});
|
||||||
|
var secFormat = createFormat({decimals:3, forceDecimal:true}); // seconds - range 0.001-1000
|
||||||
|
|
||||||
|
var xOutput = createVariable({prefix:"X"}, xyzFormat);
|
||||||
|
var yOutput = createVariable({prefix:"Y"}, xyzFormat);
|
||||||
|
var feedOutput = createVariable({prefix:"F"}, feedFormat);
|
||||||
|
|
||||||
|
// circular output
|
||||||
|
var iOutput;
|
||||||
|
var jOutput;
|
||||||
|
|
||||||
|
var gMotionModal = createModal({force:true}, gFormat); // modal group 1 // G2-G3 - linear moves do not use G-word
|
||||||
|
var gAbsIncModal = createModal({}, gFormat); // modal group 3 // G90-91
|
||||||
|
var gUnitModal = createModal({}, gFormat); // modal group 6 // G70-71
|
||||||
|
|
||||||
|
// collected state
|
||||||
|
var sequenceNumber;
|
||||||
|
var currentWorkOffset;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Writes the specified block.
|
||||||
|
*/
|
||||||
|
function writeBlock() {
|
||||||
|
if (getProperty("showSequenceNumbers")) {
|
||||||
|
writeWords2("N" + sequenceNumber, arguments);
|
||||||
|
sequenceNumber += getProperty("sequenceNumberIncrement");
|
||||||
|
} else {
|
||||||
|
writeWords(arguments);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function formatComment(text) {
|
||||||
|
return "(" + String(text).replace(/[()]/g, "") + ")";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Output a comment.
|
||||||
|
*/
|
||||||
|
function writeComment(text) {
|
||||||
|
// not supported writeln(formatComment(text));
|
||||||
|
}
|
||||||
|
|
||||||
|
function onOpen() {
|
||||||
|
|
||||||
|
// only one of I or J are required
|
||||||
|
if (getProperty("useAbsoluteIJ")) {
|
||||||
|
iOutput = createVariable({prefix:"I", force:true}, xyzFormat);
|
||||||
|
jOutput = createVariable({prefix:"J", force:true}, xyzFormat);
|
||||||
|
} else {
|
||||||
|
iOutput = createReferenceVariable({prefix:"I", force:true}, xyzFormat);
|
||||||
|
jOutput = createReferenceVariable({prefix:"J", force:true}, xyzFormat);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!getProperty("separateWordsWithSpace")) {
|
||||||
|
setWordSeparator("");
|
||||||
|
}
|
||||||
|
|
||||||
|
sequenceNumber = getProperty("sequenceNumberStart");
|
||||||
|
writeln("%"); // required
|
||||||
|
|
||||||
|
if (programName) {
|
||||||
|
var programNumber;
|
||||||
|
try {
|
||||||
|
programNumber = getAsInt(programName);
|
||||||
|
} catch (e) {
|
||||||
|
error(localize("Program name must be a number."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!((programNumber >= 1) && (programNumber <= 99999999))) {
|
||||||
|
error(localize("Program number is out of range."));
|
||||||
|
}
|
||||||
|
|
||||||
|
var oFormat = createFormat({width:8, zeropad:true, decimals:0});
|
||||||
|
writeBlock("P" + oFormat.format(programNumber)); // max 8 digits
|
||||||
|
}
|
||||||
|
if (programComment) {
|
||||||
|
writeComment(programComment);
|
||||||
|
}
|
||||||
|
|
||||||
|
// dump machine configuration
|
||||||
|
var vendor = machineConfiguration.getVendor();
|
||||||
|
var model = machineConfiguration.getModel();
|
||||||
|
var description = machineConfiguration.getDescription();
|
||||||
|
|
||||||
|
if (getProperty("writeMachine") && (vendor || model || description)) {
|
||||||
|
writeComment(localize("Machine"));
|
||||||
|
if (vendor) {
|
||||||
|
writeComment(" " + localize("vendor") + ": " + vendor);
|
||||||
|
}
|
||||||
|
if (model) {
|
||||||
|
writeComment(" " + localize("model") + ": " + model);
|
||||||
|
}
|
||||||
|
if (description) {
|
||||||
|
writeComment(" " + localize("description") + ": " + description);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (unit) {
|
||||||
|
case IN:
|
||||||
|
writeBlock(gUnitModal.format(70));
|
||||||
|
break;
|
||||||
|
case MM:
|
||||||
|
writeBlock(gUnitModal.format(71));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// absolute coordinates
|
||||||
|
writeBlock(gAbsIncModal.format(90));
|
||||||
|
|
||||||
|
if (getProperty("overlayTable") >= 0) {
|
||||||
|
writeBlock(gFormat.format(46), "T" + getProperty("overlayTable")); // select overlay
|
||||||
|
}
|
||||||
|
|
||||||
|
if (getProperty("useRepeat")) {
|
||||||
|
writeBlock(gFormat.format(97)); // restart here / add Txxxx for counter
|
||||||
|
}
|
||||||
|
|
||||||
|
if (getProperty("useHeightSensor")) {
|
||||||
|
writeBlock(mFormat.format(15)); // turn on height sensor
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onComment(message) {
|
||||||
|
writeComment(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Force output of X, Y, and Z. */
|
||||||
|
function forceXYZ() {
|
||||||
|
xOutput.reset();
|
||||||
|
yOutput.reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Force output of X, Y, Z, and F on next output. */
|
||||||
|
function forceAny() {
|
||||||
|
forceXYZ();
|
||||||
|
feedOutput.reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
function onSection() {
|
||||||
|
|
||||||
|
switch (tool.type) {
|
||||||
|
case TOOL_PLASMA_CUTTER:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
error(localize("The CNC does not support the required tool/process. Only plasma cutting is supported."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (currentSection.jetMode) {
|
||||||
|
case JET_MODE_THROUGH:
|
||||||
|
break;
|
||||||
|
case JET_MODE_ETCHING:
|
||||||
|
error(localize("Etch cutting mode is not supported."));
|
||||||
|
break;
|
||||||
|
case JET_MODE_VAPORIZE:
|
||||||
|
error(localize("Vaporize cutting mode is not supported."));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
error(localize("Unsupported cutting mode."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
{ // pure 3D
|
||||||
|
var remaining = currentSection.workPlane;
|
||||||
|
if (!isSameDirection(remaining.forward, new Vector(0, 0, 1))) {
|
||||||
|
error(localize("Tool orientation is not supported."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
setRotation(remaining);
|
||||||
|
}
|
||||||
|
|
||||||
|
forceAny();
|
||||||
|
|
||||||
|
var initialPosition = getFramePosition(currentSection.getInitialPosition());
|
||||||
|
gMotionModal.reset();
|
||||||
|
writeBlock(
|
||||||
|
gAbsIncModal.format(90),
|
||||||
|
xOutput.format(initialPosition.x), yOutput.format(initialPosition.y)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function onDwell(seconds) {
|
||||||
|
if (seconds > 99999.999) {
|
||||||
|
warning(localize("Dwelling time is out of range."));
|
||||||
|
}
|
||||||
|
seconds = clamp(0.001, seconds, 99999.999);
|
||||||
|
writeBlock(gFormat.format(4), "F" + secFormat.format(seconds));
|
||||||
|
}
|
||||||
|
|
||||||
|
function onCycle() {
|
||||||
|
error(localize("Canned cycles are not supported by CNC."));
|
||||||
|
}
|
||||||
|
|
||||||
|
function onCyclePoint(x, y, z) {
|
||||||
|
}
|
||||||
|
|
||||||
|
function onCycleEnd() {
|
||||||
|
}
|
||||||
|
|
||||||
|
var pendingRadiusCompensation = -1;
|
||||||
|
|
||||||
|
function onRadiusCompensation() {
|
||||||
|
pendingRadiusCompensation = radiusCompensation;
|
||||||
|
}
|
||||||
|
|
||||||
|
var shapeArea = 0;
|
||||||
|
var shapePerimeter = 0;
|
||||||
|
var shapeSide = "inner";
|
||||||
|
var cuttingSequence = "";
|
||||||
|
|
||||||
|
function onParameter(name, value) {
|
||||||
|
if ((name == "action") && (value == "pierce")) {
|
||||||
|
// add delay if desired
|
||||||
|
} else if (name == "shapeArea") {
|
||||||
|
shapeArea = value;
|
||||||
|
} else if (name == "shapePerimeter") {
|
||||||
|
shapePerimeter = value;
|
||||||
|
} else if (name == "shapeSide") {
|
||||||
|
shapeSide = value;
|
||||||
|
} else if (name == "beginSequence") {
|
||||||
|
if (value == "piercing") {
|
||||||
|
if (cuttingSequence != "piercing") {
|
||||||
|
if (getProperty("allowHeadSwitches")) {
|
||||||
|
// Allow head to be switched here
|
||||||
|
// onCommand(COMMAND_STOP);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (value == "cutting") {
|
||||||
|
if (cuttingSequence == "piercing") {
|
||||||
|
if (getProperty("allowHeadSwitches")) {
|
||||||
|
// Allow head to be switched here
|
||||||
|
// onCommand(COMMAND_STOP);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cuttingSequence = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onPower(power) {
|
||||||
|
writeBlock(mFormat.format(power ? 4 : 3)); // or M21/M20
|
||||||
|
}
|
||||||
|
|
||||||
|
function onRapid(_x, _y, _z) {
|
||||||
|
// at least one axis is required
|
||||||
|
if (pendingRadiusCompensation >= 0) {
|
||||||
|
// ensure that we end at desired position when compensation is turned off
|
||||||
|
xOutput.reset();
|
||||||
|
yOutput.reset();
|
||||||
|
}
|
||||||
|
var x = xOutput.format(_x);
|
||||||
|
var y = yOutput.format(_y);
|
||||||
|
if (x || y) {
|
||||||
|
if (pendingRadiusCompensation >= 0) {
|
||||||
|
pendingRadiusCompensation = -1;
|
||||||
|
switch (radiusCompensation) {
|
||||||
|
case RADIUS_COMPENSATION_LEFT:
|
||||||
|
writeBlock(gFormat.format(41));
|
||||||
|
break;
|
||||||
|
case RADIUS_COMPENSATION_RIGHT:
|
||||||
|
writeBlock(gFormat.format(42));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
writeBlock(gFormat.format(40));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
writeBlock(x, y); // fast linear move
|
||||||
|
feedOutput.reset();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onLinear(_x, _y, _z, feed) {
|
||||||
|
// at least one axis is required
|
||||||
|
if (pendingRadiusCompensation >= 0) {
|
||||||
|
// ensure that we end at desired position when compensation is turned off
|
||||||
|
xOutput.reset();
|
||||||
|
yOutput.reset();
|
||||||
|
}
|
||||||
|
var x = xOutput.format(_x);
|
||||||
|
var y = yOutput.format(_y);
|
||||||
|
var f = feedOutput.format(feed);
|
||||||
|
if (x || y) {
|
||||||
|
if (pendingRadiusCompensation >= 0) {
|
||||||
|
pendingRadiusCompensation = -1;
|
||||||
|
switch (radiusCompensation) {
|
||||||
|
case RADIUS_COMPENSATION_LEFT:
|
||||||
|
writeBlock(gFormat.format(41));
|
||||||
|
break;
|
||||||
|
case RADIUS_COMPENSATION_RIGHT:
|
||||||
|
writeBlock(gFormat.format(42));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
writeBlock(gFormat.format(40));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
writeBlock(x, y, f); // linear without G-word
|
||||||
|
} else if (f) {
|
||||||
|
if (getNextRecord().isMotion()) { // try not to output feed without motion
|
||||||
|
feedOutput.reset(); // force feed on next line
|
||||||
|
} else {
|
||||||
|
writeBlock(f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onRapid5D(_x, _y, _z, _a, _b, _c) {
|
||||||
|
error(localize("The CNC does not support 5-axis simultaneous toolpath."));
|
||||||
|
}
|
||||||
|
|
||||||
|
function onLinear5D(_x, _y, _z, _a, _b, _c, feed) {
|
||||||
|
error(localize("The CNC does not support 5-axis simultaneous toolpath."));
|
||||||
|
}
|
||||||
|
|
||||||
|
function onCircular(clockwise, cx, cy, cz, x, y, z, feed) {
|
||||||
|
|
||||||
|
if (pendingRadiusCompensation >= 0) {
|
||||||
|
error(localize("Radius compensation cannot be activated/deactivated for a circular move."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var start = getCurrentPosition();
|
||||||
|
|
||||||
|
if (isFullCircle()) {
|
||||||
|
switch (getCircularPlane()) {
|
||||||
|
case PLANE_XY:
|
||||||
|
if (getProperty("useAbsoluteIJ")) {
|
||||||
|
writeBlock(gMotionModal.format(clockwise ? 2 : 3), xOutput.format(x), iOutput.format(cx), jOutput.format(cy));
|
||||||
|
} else {
|
||||||
|
writeBlock(gMotionModal.format(clockwise ? 2 : 3), xOutput.format(x), iOutput.format(cx - start.x, 0), jOutput.format(cy - start.y, 0), feedOutput.format(feed));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
linearize(tolerance);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
switch (getCircularPlane()) {
|
||||||
|
case PLANE_XY:
|
||||||
|
if (getProperty("useAbsoluteIJ")) {
|
||||||
|
writeBlock(gMotionModal.format(clockwise ? 2 : 3), xOutput.format(x), yOutput.format(y), iOutput.format(cx), jOutput.format(cy));
|
||||||
|
} else {
|
||||||
|
writeBlock(gMotionModal.format(clockwise ? 2 : 3), xOutput.format(x), yOutput.format(y), iOutput.format(cx - start.x, 0), jOutput.format(cy - start.y, 0), feedOutput.format(feed));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
linearize(tolerance);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var mapCommand = {
|
||||||
|
COMMAND_STOP : 0,
|
||||||
|
COMMAND_OPTIONAL_STOP: 1
|
||||||
|
};
|
||||||
|
|
||||||
|
function onCommand(command) {
|
||||||
|
switch (command) {
|
||||||
|
case COMMAND_POWER_ON:
|
||||||
|
return;
|
||||||
|
case COMMAND_POWER_OFF:
|
||||||
|
return;
|
||||||
|
case COMMAND_LOCK_MULTI_AXIS:
|
||||||
|
return;
|
||||||
|
case COMMAND_UNLOCK_MULTI_AXIS:
|
||||||
|
return;
|
||||||
|
case COMMAND_BREAK_CONTROL:
|
||||||
|
return;
|
||||||
|
case COMMAND_TOOL_MEASURE:
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var stringId = getCommandStringId(command);
|
||||||
|
var mcode = mapCommand[stringId];
|
||||||
|
if (mcode != undefined) {
|
||||||
|
writeBlock(mFormat.format(mcode));
|
||||||
|
} else {
|
||||||
|
onUnsupportedCommand(command);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onSectionEnd() {
|
||||||
|
forceAny();
|
||||||
|
}
|
||||||
|
|
||||||
|
function onClose() {
|
||||||
|
if (getProperty("useRepeat")) {
|
||||||
|
writeBlock(gFormat.format(98)); // restart from G97
|
||||||
|
}
|
||||||
|
|
||||||
|
var homeOffset = 1; // 1-4
|
||||||
|
writeBlock(mFormat.format(79), "T" + homeOffset); // go home
|
||||||
|
|
||||||
|
if (getProperty("useHeightSensor")) {
|
||||||
|
writeBlock(mFormat.format(14)); // turn off height sensor
|
||||||
|
}
|
||||||
|
|
||||||
|
writeBlock(mFormat.format(30)); // stop program - rewind
|
||||||
|
}
|
||||||
|
|
||||||
|
function setProperty(property, value) {
|
||||||
|
properties[property].current = value;
|
||||||
|
}
|
||||||
1242
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/camplete.cps
Normal file
1242
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/camplete.cps
Normal file
File diff suppressed because it is too large
Load Diff
1610
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/carbide3d.cps
Normal file
1610
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/carbide3d.cps
Normal file
File diff suppressed because it is too large
Load Diff
2147
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/centroid.cps
Normal file
2147
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/centroid.cps
Normal file
File diff suppressed because it is too large
Load Diff
2231
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/cncrouterparts.cps
Normal file
2231
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/cncrouterparts.cps
Normal file
File diff suppressed because it is too large
Load Diff
218
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/common.cz.lang
Normal file
218
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/common.cz.lang
Normal file
@ -0,0 +1,218 @@
|
|||||||
|
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
|
||||||
|
<!-- Generated at 2011-10-21 -->
|
||||||
|
<locale xmlns='http://www.hsmworks.com/xml/2008/locale'>
|
||||||
|
<message name="%1h:%2m:%3s"/>
|
||||||
|
<message name="%1m:%2s"/>
|
||||||
|
<message name="%1s"/>
|
||||||
|
<message name="2ND SET-UP CLEARANCE">2. BEZPECNA VZDALENOST</message>
|
||||||
|
<message name="3D Path">3D draha</message>
|
||||||
|
<message name="Adaptive">Adaptivni</message>
|
||||||
|
<message name="Adaptive 2D">2D Adaptivni</message>
|
||||||
|
<message name="Air">Vzduch</message>
|
||||||
|
<message name="Air through tool">Vzduch skrz nástroj</message>
|
||||||
|
<message name="ANGLE OF SPINDLE">UHEL VRETENE</message>
|
||||||
|
<message name="BACK BORING">ZPETNE ZAHLOUBENI</message>
|
||||||
|
<message name="BORE MILLING">FREZOVANI ZAHLOUBENI</message>
|
||||||
|
<message name="BORING">ZAHLOUBENI</message>
|
||||||
|
<message name="BREAKS">PRERUSENI</message>
|
||||||
|
<message name="center">stred</message>
|
||||||
|
<message name="CIRCLE DIAMETER">PRUMER KRUZNICE</message>
|
||||||
|
<message name="CIRCULAR POCKET">KRUHOVA KAPSA</message>
|
||||||
|
<message name="Circular pocket milling is not supported for taper tools.">Frezovani kruhove kapsy neni podporovano pro kuzelovy nastroj</message>
|
||||||
|
<message name="CLIMB OR UP-CUT">SOUSLEDNE NEBO STOUPAJICI OBRABENI</message>
|
||||||
|
<message name="Comment">Komentar</message>
|
||||||
|
<message name="Compensation">Kompenzace</message>
|
||||||
|
<message name="Compensation offset is out of range.">Kompenzacni odsazeni je mimo rozsah.</message>
|
||||||
|
<message name="computer">pocitac</message>
|
||||||
|
<message name="Contour">Konturovani</message>
|
||||||
|
<message name="Contour 2D">2D Kontura</message>
|
||||||
|
<message name="control">rizeni</message>
|
||||||
|
<message name="Coolant">Chlazeni</message>
|
||||||
|
<message name="Coolant not supported.">Chlazeni neni podporovano.</message>
|
||||||
|
<message name="Corner Radius">Polomer rohu</message>
|
||||||
|
<message name="CR"/>
|
||||||
|
<message name="Cutting">Obrabeni</message>
|
||||||
|
<message name="Cutting Distance">Delka obrabeni</message>
|
||||||
|
<message name="D"/>
|
||||||
|
<message name="DATUM NUMBER">CISLO POCATKU</message>
|
||||||
|
<message name="DATUM SETTING">NASTAVENI POCATKU</message>
|
||||||
|
<message name="DATUM SHIFT">POSUNUTI POCATKU</message>
|
||||||
|
<message name="DECREMENT">SNIZENI</message>
|
||||||
|
<message name="deg">stupne</message>
|
||||||
|
<message name="DEPTH">HLOUBKA</message>
|
||||||
|
<message name="DEPTH FOR CHIP BRKNG">HLOUBKA PRO ODLOMENI TRISKY</message>
|
||||||
|
<message name="DEPTH REDUCTION">REDUKCE HLOUBKY</message>
|
||||||
|
<message name="Description">Popis</message>
|
||||||
|
<message name="description">popis</message>
|
||||||
|
<message name="Diameter">Prumer</message>
|
||||||
|
<message name="Direct">Primo</message>
|
||||||
|
<message name="DISENGAGING DIRECTION">UVOLNENI SMERU</message>
|
||||||
|
<message name="DIST. FOR CHIP BRKNG">VZDAL. PRO PRERUSENI TRISKY</message>
|
||||||
|
<message name="Document Path">Cesta dokumentu</message>
|
||||||
|
<message name="DRILLING">VRTANI</message>
|
||||||
|
<message name="Drilling">Vrtani</message>
|
||||||
|
<message name="DWELL AT BOTTOM">PRODLEVA NA SPODKU</message>
|
||||||
|
<message name="DWELL AT TOP">PRODLEVA NA VRSKU</message>
|
||||||
|
<message name="DWELL TIME">CASOVA PRODLEVA</message>
|
||||||
|
<message name="DWELL TIME AT DEPTH">CASOVA PRODLEVA</message>
|
||||||
|
<message name="Dwelling time is out of range.">Cas prodlevy je mimo rozsah.</message>
|
||||||
|
<message name="DX"/>
|
||||||
|
<message name="DY"/>
|
||||||
|
<message name="DZ"/>
|
||||||
|
<message name="Entry">Vstup</message>
|
||||||
|
<message name="Estimated Cycle Time">Odhadovany cas cyklu</message>
|
||||||
|
<message name="Exit">Vystup</message>
|
||||||
|
<message name="F COUNTERBORING">F ZAHLOUBENI</message>
|
||||||
|
<message name="F PRE-POSITIONING">F PRED-POZICOVANI</message>
|
||||||
|
<message name="Facing">Celni</message>
|
||||||
|
<message name="FEED RATE FOR FINISHING">POSUV PRO DOKONCENI</message>
|
||||||
|
<message name="FEED RATE FOR MILLING">POSUV PRO FREZOVANI</message>
|
||||||
|
<message name="FEED RATE FOR PLUNGING">POSUV PRO ZANORENI</message>
|
||||||
|
<message name="Finish">Dokonceni</message>
|
||||||
|
<message name="FINISHING ALLOWANCE FOR FLOOR">PRIDAVEK PRO DOKONCENI DNA</message>
|
||||||
|
<message name="FINISHING ALLOWANCE FOR SIDE">PRODAVEK PRO DOKONCENI STENY</message>
|
||||||
|
<message name="Flood">Kapalina</message>
|
||||||
|
<message name="Flood and mist">Kapalina a mlha</message>
|
||||||
|
<message name="Flutes">Brity</message>
|
||||||
|
<message name="Generated by ">Vytvoreno </message>
|
||||||
|
<message name="High Feed">Vysoky Posuv</message>
|
||||||
|
<message name="Holder">Drzak</message>
|
||||||
|
<message name="Horizontal">Vodorovne</message>
|
||||||
|
<message name="INFEED DEPTH">HLOUBKA NAJETI</message>
|
||||||
|
<message name="INFEED FOR FINISHING">NAJETI PRO DOKONCENI</message>
|
||||||
|
<message name="Invalid disengagement direction.">Chybne uvolneni smeru.</message>
|
||||||
|
<message name="Invalid tilt preference.">Chybna priorita naklonu.</message>
|
||||||
|
<message name="inverse wear">inversni opotrebeni</message>
|
||||||
|
<message name="Job">Projekt</message>
|
||||||
|
<message name="Job Description">Popis projektu</message>
|
||||||
|
<message name="Job ISO-9000 Control">Rizeni projektu ISO-9000</message>
|
||||||
|
<message name="L"/>
|
||||||
|
<message name="left">Levy</message>
|
||||||
|
<message name="Length">Delka</message>
|
||||||
|
<message name="Length offset out of range.">Delkove odsazeni mimo rozsah.</message>
|
||||||
|
<message name="LOWER ADV. STOP DIST.">NIZSI STOP VZDAL.</message>
|
||||||
|
<message name="Machine">Stroj</message>
|
||||||
|
<message name="Machine angles not supported">Uhle stroje nejsou podporovany</message>
|
||||||
|
<message name="MACHINE OPERATION">STROJNI OPERACE</message>
|
||||||
|
<message name="Material">Material</message>
|
||||||
|
<message name="MATERIAL THICKNESS">TLOUSKA MATERIALU</message>
|
||||||
|
<message name="Maximum Feed">Max. posuv</message>
|
||||||
|
<message name="Maximum Feedrate">Max. posuv</message>
|
||||||
|
<message name="Maximum Spindle Speed">Max. otacky vretene</message>
|
||||||
|
<message name="Maximum stepdown">Max. krok dolu</message>
|
||||||
|
<message name="Maximum stepover">Max. stranovy krok</message>
|
||||||
|
<message name="Maximum Z">Max. Z</message>
|
||||||
|
<message name="Milling toolpath is not supported.">Draha nastrje neni podporovana.</message>
|
||||||
|
<message name="MIN. PLUNGING DEPTH">MIN. HLOUBKA ZAVRTANI</message>
|
||||||
|
<message name="Minimum Z">MIN. Z</message>
|
||||||
|
<message name="Mist">Mlha</message>
|
||||||
|
<message name="model"/>
|
||||||
|
<message name="Morph">Morfovane</message>
|
||||||
|
<message name="Multi-Axis Contour">Vice-osa Kontura</message>
|
||||||
|
<message name="Multi-Axis Swarf">Vice-ose Bokem</message>
|
||||||
|
<message name="NEW!">NOVE!</message>
|
||||||
|
<message name="NOMINAL DIAMETER">NOMINALNI PRUMER</message>
|
||||||
|
<message name="Non-turning toolpath is not supported.">Draha nastoje jina nez soustruzeni neni podporovana.</message>
|
||||||
|
<message name="Notes">Poznamky</message>
|
||||||
|
<message name="Number Of Operations">Pocet operaci</message>
|
||||||
|
<message name="Number Of Tools">Pocet nastroju</message>
|
||||||
|
<message name="Off">Vypnuto</message>
|
||||||
|
<message name="OFF-CENTER DISTANCE">VZDALENOST OD STREDU</message>
|
||||||
|
<message name="Operation">Operace</message>
|
||||||
|
<message name="Orientation not supported.">Orientace neni podporovana</message>
|
||||||
|
<message name="Parallel">Rovnobezne</message>
|
||||||
|
<message name="Part">Dil</message>
|
||||||
|
<message name="Pattern Group">Skupina pole</message>
|
||||||
|
<message name="Pencil">Tuzkove</message>
|
||||||
|
<message name="PITCH">ROZTEC</message>
|
||||||
|
<message name="Pitch">Roztec</message>
|
||||||
|
<message name="Plunge">Zavrtani</message>
|
||||||
|
<message name="PLUNGING">Zanoreni</message>
|
||||||
|
<message name="PLUNGING DEPTH">HLOUBKA ZANORENI</message>
|
||||||
|
<message name="Pocket">Kapsovaci</message>
|
||||||
|
<message name="Pocket 2D">2D Kapsa</message>
|
||||||
|
<message name="Predrilling">Predvrtani</message>
|
||||||
|
<message name="Program Comment">Komentar programu</message>
|
||||||
|
<message name="Program name contains invalid character(s).">Nazev programu obsahuje nepovolene znaky.</message>
|
||||||
|
<message name="Program name exceeds maximum length.">Nazev programu překracuje max. delku.</message>
|
||||||
|
<message name="Program name has not been specified.">Nazev programu nebyl urcen.</message>
|
||||||
|
<message name="Program name must be a number.">Nazev programu musi byt cislo.</message>
|
||||||
|
<message name="Program number is out of range.">Cislo probramu je mimo rozsah.</message>
|
||||||
|
<message name="Program number is reserved by tool builder.">Cislo programu je rezervovano vyrobcem nastroju.</message>
|
||||||
|
<message name="Program uses multiple WCS!">Program pouziva více pocatku.</message>
|
||||||
|
<message name="Project">Promitnute</message>
|
||||||
|
<message name="Radial">Radialni</message>
|
||||||
|
<message name="Radius compensation mode cannot be changed at rapid traversal.">Rezim polomerove kompenzace nemuze byt zmenen behem rychloposuvu.</message>
|
||||||
|
<message name="Ramping">Rampovani</message>
|
||||||
|
<message name="Rapid Distance">Delka rychloposuvu</message>
|
||||||
|
<message name="REAMING">STRUZENI</message>
|
||||||
|
<message name="Reduced">Snizeno</message>
|
||||||
|
<message name="RETRACTION FEED RATE">POSUV NAVRATU</message>
|
||||||
|
<message name="RETRACTION FEED TIME">CAS NAVRATU</message>
|
||||||
|
<message name="right">pravy</message>
|
||||||
|
<message name="RIGID TAPPING NEW">NOVE PEVNE ZAVITOVANI</message>
|
||||||
|
<message name="ROUGHING DIAMETER">PRUMER HRUBOVANI</message>
|
||||||
|
<message name="rpm">ot/min</message>
|
||||||
|
<message name="Safe Tool Diameter">Bezpecny prumer nastroje</message>
|
||||||
|
<message name="Scallop">Rovnomerne</message>
|
||||||
|
<message name="SET-UP CLEARANCE">NASTAVENI BEZPECNE VZDALENOSTI</message>
|
||||||
|
<message name="Setup Sheet">Serizovaci list</message>
|
||||||
|
<message name="Setup Sheet for Program">Serizovaci list pro program</message>
|
||||||
|
<message name="Spindle speed exceeds maximum value.">Otacky vretene presahuji max. hodnotu.</message>
|
||||||
|
<message name="Spindle speed out of range.">Otacky vretene mimo rozsah.</message>
|
||||||
|
<message name="Spiral">Spiralni</message>
|
||||||
|
<message name="STARTING POINT">STARTOVACI BOD</message>
|
||||||
|
<message name="Stock">POLOTOVAR</message>
|
||||||
|
<message name="Stock Lower in WCS">Spodek polotovaru od pocatku</message>
|
||||||
|
<message name="Stock to Leave">Pridavek</message>
|
||||||
|
<message name="Stock Upper in WCS">Vrsek polotovaru od pocatku</message>
|
||||||
|
<message name="Strategy">Strategie</message>
|
||||||
|
<message name="Suction">Sani</message>
|
||||||
|
<message name="SURFACE COORDINATE">SOURADNICE PLOCHY</message>
|
||||||
|
<message name="T"/>
|
||||||
|
<message name="TAPER">UKOS</message>
|
||||||
|
<message name="Taper Angle">UHEL UKOSU</message>
|
||||||
|
<message name="TAPPING W/ CHIP BRKG">ZAVITOVANI S ODLOMENIM TRISKY</message>
|
||||||
|
<message name="The diameter offset exceeds the maximum value.">Odsazeni prumeru presahuje max. hodnotu.</message>
|
||||||
|
<message name="THREAD DEPTH">HLOUBKA ZAVITU</message>
|
||||||
|
<message name="THREAD MILLING">FREZOVANI ZAVITU</message>
|
||||||
|
<message name="THREAD PITCH">ROZTEC ZAVITU</message>
|
||||||
|
<message name="THREADS PER STEP">ZAVITY NA KROK</message>
|
||||||
|
<message name="Through tool">Skrz nastroj</message>
|
||||||
|
<message name="Tip Angle">Uhel spicky</message>
|
||||||
|
<message name="TIP:"/>
|
||||||
|
<message name="TOLERANCE">TOLERANCE</message>
|
||||||
|
<message name="Tolerance">Tolerance</message>
|
||||||
|
<message name="TOOL EDGE HEIGHT">VYSKA HRANY NASTROJE</message>
|
||||||
|
<message name="Tool number exceeds maximum value.">Cislo nastroje presahuje max. hodnotu.</message>
|
||||||
|
<message name="Tool orientation is not supported.">Orientace nastroje neni podporovana.</message>
|
||||||
|
<message name="TOOL PATH OVERLAP">PREKRYTI DRAHY NASTROJE</message>
|
||||||
|
<message name="Tool Sheet">Seznam nastroju</message>
|
||||||
|
<message name="Tool Sheet for Program">Seznam nastroju pro program</message>
|
||||||
|
<message name="Tools">Nastroje</message>
|
||||||
|
<message name="Total">Celkem</message>
|
||||||
|
<message name="Total number of tools">Celkovy pocet nastroju</message>
|
||||||
|
<message name="turn">soustruzeni</message>
|
||||||
|
<message name="Type">Typ</message>
|
||||||
|
<message name="Unit is not supported.">Jednotky nejsou podporovany.</message>
|
||||||
|
<message name="UNIVERSAL DRILLING">UNIVERSALNI VRTANI</message>
|
||||||
|
<message name="UNIVERSAL PECKING">UNIVERSALNI PRERUSOVANE VRTANI</message>
|
||||||
|
<message name="Unknown">Neznamy</message>
|
||||||
|
<message name="Unspecified">Neurceny</message>
|
||||||
|
<message name="unspecified">neurceny</message>
|
||||||
|
<message name="UPPER ADV. STOP DIST.">VYSSI STOP VZDAL</message>
|
||||||
|
<message name="Using reserved program name.">Pouziti rozervovaneho nazvu programu.</message>
|
||||||
|
<message name="Using the same tool number for different cutter geometry for operation '%1' and '%2'.">Poziti strejneho cisla nastroje pro odlisnou geometrii nastroje v operacich '%1' a '%2'.</message>
|
||||||
|
<message name="Vendor">Dodavatel</message>
|
||||||
|
<message name="vendor">dodavatel</message>
|
||||||
|
<message name="WCS">Pocatek</message>
|
||||||
|
<message name="wear">opotrebeni</message>
|
||||||
|
<message name="Work offset has not been specified.">Pracovni pocatek nebyl urcen.</message>
|
||||||
|
<message name="Work offset has not been specified. Using E1 as WCS.">Pracovni pocatek nebyl urcen. Pouzito E1 jako pocatku.</message>
|
||||||
|
<message name="Work offset has not been specified. Using G54 as WCS.">Pracovni pocatek nebyl urcen. Pouzito G54 jako pocatku.</message>
|
||||||
|
<message name="Work offset out of range.">Pracovni pocatek mimo rozsah.</message>
|
||||||
|
<message name="Work plane is not supported">Pracovni rovina neni podporovana.</message>
|
||||||
|
<message name="WORKING PLANE">PRACOVNI ROVINA</message>
|
||||||
|
<message name="ZMAX"/>
|
||||||
|
<message name="ZMIN"/>
|
||||||
|
</locale>
|
||||||
325
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/common.de.lang
Normal file
325
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/common.de.lang
Normal file
@ -0,0 +1,325 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<locale xmlns="http://www.hsmworks.com/xml/2008/locale">
|
||||||
|
<country>de</country>
|
||||||
|
<message name="%1h:%2m:%3s">%1h:%2m:%3s</message>
|
||||||
|
<message name="%1m:%2s">%1m:%2s</message>
|
||||||
|
<message name="%1s">%1s</message>
|
||||||
|
<message name="2ND SET-UP CLEARANCE">2. SICHERHEITS-ABST.</message>
|
||||||
|
<message name="3D Path">3D-Kontur</message>
|
||||||
|
<message name="ANGLE OF SPINDLE">WINKEL SPINDEL</message>
|
||||||
|
<message name="Auxiliary function is out of range.">Hilfsfunktion ist in einem nicht im zulaessigen Bereich.</message>
|
||||||
|
<message name="BNC mode is not supported.">BNC Modus wird nicht unterstuetzt.</message>
|
||||||
|
<message name="BREAKS">SPANBRUECHE</message>
|
||||||
|
<message name="CR">CR</message>
|
||||||
|
<message name="Compensation">Versatz</message>
|
||||||
|
<message name="Configuration">Konfiguration</message>
|
||||||
|
<message name="Configuration checksum">Konfiguration der Blockpruefung</message>
|
||||||
|
<message name="Contour 2D Finishing">2D-Konturschlichten</message>
|
||||||
|
<message name="Contour Finishing">Konturschlichten</message>
|
||||||
|
<message name="Coolant not supported.">Kuehlmittel wird nicht unterstuetzt.</message>
|
||||||
|
<message name="Corner Radius">Eckradius</message>
|
||||||
|
<message name="Current record cannot be linearized.">Aktueller Datensatz kann nicht linearisiert werden.</message>
|
||||||
|
<message name="Cutting Distance">Schnittabstand</message>
|
||||||
|
<message name="Cycle is active at end of section.">Zyklus ist Aktiv am Ende der Sektion.</message>
|
||||||
|
<message name="Cycle is active for onCircular().">Zyklus ist Aktiv fuer onCircular().</message>
|
||||||
|
<message name="Cycle is active for onLinear().">Zyklus ist Aktiv fuer onLinear().</message>
|
||||||
|
<message name="Cycle is active for onLinear5D().">Zyklus ist Aktiv fuer onLinear5D().</message>
|
||||||
|
<message name="Cycle is active for onRadous5D().">Zyklus ist Aktiv fuer onRadous5D().</message>
|
||||||
|
<message name="Cycle is active for onRapid().">Zyklus ist Aktiv fuer onRapid().</message>
|
||||||
|
<message name="Cycle is active.">Zyklus ist Aktiv.</message>
|
||||||
|
<message name="Cycle is already active.">Zyklus ist bereits Aktiv.</message>
|
||||||
|
<message name="Cycle is not active for onCycleEnd().">Zyklus ist nicht Aktiv fuer onCycleEnd().</message>
|
||||||
|
<message name="Cycle is not active.">Zyklus ist nicht Aktiv.</message>
|
||||||
|
<message name="D">D</message>
|
||||||
|
<message name="DECREMENT">ABNAHMEBETRAG</message>
|
||||||
|
<message name="DEPTH">TIEFE</message>
|
||||||
|
<message name="DISENGAGING DIRECTION">FREIFAHR-RICHTUNG</message>
|
||||||
|
<message name="DIST. FOR CHIP BRKNG">RZ BEI SPANBRUCH</message>
|
||||||
|
<message name="DWELL AT BOTTOM">VERWEILZEIT UNTEN</message>
|
||||||
|
<message name="DWELL AT TOP">VERWEILZEIT OBEN</message>
|
||||||
|
<message name="DWELL TIME AT DEPTH">VERWEILZEIT UNTEN</message>
|
||||||
|
<message name="DX">DX</message>
|
||||||
|
<message name="DY">DY</message>
|
||||||
|
<message name="DZ">DZ</message>
|
||||||
|
<message name="Description">Beschreibung</message>
|
||||||
|
<message name="Diameter">Durchmesser</message>
|
||||||
|
<message name="Diameter offset is not supported.">D-Versatz wird nicht unterstuetzt.</message>
|
||||||
|
<message name="Document Path">Dokument Pfad</message>
|
||||||
|
<message name="Drilling">Bohren</message>
|
||||||
|
<message name="Dwelling time is out of range.">Verweilzeit ist in einem nicht zulaessigen Bereich.</message>
|
||||||
|
<message name="Dwelling time out of range.">Verweilzeit ist in einem nicht zulaessigen Bereich.</message>
|
||||||
|
<message name="Estimated Cycle Time">geschaetzte Zykluszeit</message>
|
||||||
|
<message name="F COUNTERBORING">F SENKBOHRUNGEN</message>
|
||||||
|
<message name="FEED RATE FOR PLUNGING">VORSCHUB TIEFENZ.</message>
|
||||||
|
<message name="Facing">Planen</message>
|
||||||
|
<message name="Generated at">Erzeugt am</message>
|
||||||
|
<message name="Generated by">Erzeugt von</message>
|
||||||
|
<message name="Generated by ">Erzeugt von </message>
|
||||||
|
<message name="Horizontal Finishing">Horizontales Schlichten</message>
|
||||||
|
<message name="INFEED DEPTH">ZUSTELL-TIEFE</message>
|
||||||
|
<message name="Ignoring work offset.">Ignoriere Arbeitsversatz</message>
|
||||||
|
<message name="Inch mode is not supported.">Zolleinheit wird nicht unterstuetzt.</message>
|
||||||
|
<message name="Intermediate checksum">Zwischenpruefsumme</message>
|
||||||
|
<message name="Invalid condition occured.">Unzulaessiger Zustand trat auf.</message>
|
||||||
|
<message name="Invalid cycle parameters.">Ungueltiger Zyklus Parameter</message>
|
||||||
|
<message name="Invalid cycle type.">Ungueltiger Zyklustyp</message>
|
||||||
|
<message name="Invalid disengagement direction.">Ungueltige Trennungsrichtung.</message>
|
||||||
|
<message name="Invalid dwelling time.">Ungueltige Verweilzeit</message>
|
||||||
|
<message name="Invalid initial value for table.">Ungueltiger Tabellen-Anfangswert.</message>
|
||||||
|
<message name="Invalid work offset.">Ungueltiger Arbeitsversatz</message>
|
||||||
|
<message name="Job">Job</message>
|
||||||
|
<message name="Job Description">Job Description</message>
|
||||||
|
<message name="Job ISO-9000 Control">Job ISO-9000 Control</message>
|
||||||
|
<message name="L">L</message>
|
||||||
|
<message name="Left tapping is not supported.">Links Gewinde wird nicht unterstuetzt.</message>
|
||||||
|
<message name="Length">Laenge</message>
|
||||||
|
<message name="Length offset is not supported.">L-Versatz wird nicht unterstuetzt.</message>
|
||||||
|
<message name="Length offset out of range.">L-Versatz ist in einem nicht im zulaessigen Bereich.</message>
|
||||||
|
<message name="MATERIAL THICKNESS">MATERIALSTAERKE</message>
|
||||||
|
<message name="MIN. PLUNGING DEPTH">MIN. ZUSTELL-TIEFE</message>
|
||||||
|
<message name="Machine">Maschine</message>
|
||||||
|
<message name="Material">Material</message>
|
||||||
|
<message name="Maximum Feed">Maximaler Vorschub</message>
|
||||||
|
<message name="Maximum Feedrate">Maximaler Vorschub</message>
|
||||||
|
<message name="Maximum Spindle Speed">Maximale Spindeldrehzahl</message>
|
||||||
|
<message name="Maximum Z">Maximum Z</message>
|
||||||
|
<message name="Minimum Z">Min. Abmaß in Z</message>
|
||||||
|
<message name="Mismatching arguments.">nicht kombinierbare Funktionen.</message>
|
||||||
|
<message name="NEW WCS!">NEUES WKS!</message>
|
||||||
|
<message name="Number Of Operations">Anzahl der Operationen</message>
|
||||||
|
<message name="Number Of Tools">Anzahl der Werkzeuge</message>
|
||||||
|
<message name="OFF-CENTER DISTANCE">EXENTERMASS</message>
|
||||||
|
<message name="Operation">Operation</message>
|
||||||
|
<message name="Parallel Finishing">Paralleles Schlichten</message>
|
||||||
|
<message name="Part">Teil</message>
|
||||||
|
<message name="Plane cannot be changed when radius compensation is active.">Ebene kann nicht geaendert werden solange die Radiuskompensation aktiv ist.</message>
|
||||||
|
<message name="Pocket 2D Roughing">2D-Taschenschruppen</message>
|
||||||
|
<message name="Pocket Roughing">Taschenschruppen</message>
|
||||||
|
<message name="Post configuration is not compatible with this version of the post processor.">Post Konfiguration ist nicht mit der Version des Postprozessors kompatibel</message>
|
||||||
|
<message name="Post processing has been manually disabled using the 'preventPost' property.">Postprozessorlauf wurde manuell deaktiviert, benutze 'preventPost' Eigenschaften.</message>
|
||||||
|
<message name="Post processing using a deprecated version of the post processor.">Postprozessorlauf verwendet eine ungueltige Version des Postprozessors.</message>
|
||||||
|
<message name="Program name contains invalid character(s).">Programmname beinhaltet ungueltige Zeichen</message>
|
||||||
|
<message name="Program name exceeds maximum length.">Programmname ueberschreitet die maximale Laenge</message>
|
||||||
|
<message name="Program name has not been specified.">Programmname wurde nicht definiert.</message>
|
||||||
|
<message name="Program name must be a number.">Programmname muss eine Zahl sein.</message>
|
||||||
|
<message name="Program name must begin with 2 letters.">Programmname muss mit zwei Buchstaben beginnen.</message>
|
||||||
|
<message name="Program number is out of range.">Programmnummer ist in einem nicht im zulaessigen Bereich.</message>
|
||||||
|
<message name="Program number is reserved by tool builder.">Programmnummer ist vom Hersteller reserviert.</message>
|
||||||
|
<message name="Program number is reserved.">Programmnummer ist reserviert.</message>
|
||||||
|
<message name="Program uses multiple WCS!">Programm verwendet mehrere WKS!</message>
|
||||||
|
<message name="RETRACTION FEED RATE">VORSCHUB RUECKZUG</message>
|
||||||
|
<message name="RETRACTION FEED TIME">VORSCHUB RUECKZUG</message>
|
||||||
|
<message name="Radial Finishing">Radialschlichten</message>
|
||||||
|
<message name="Radius compensation has not changed.">Radiuskompensation ist nicht geaendert.</message>
|
||||||
|
<message name="Radius compensation in the controller is not supported.">Radiuskompensation in der Steuerung wird nicht unterstuetzt.</message>
|
||||||
|
<message name="Radius compensation is not active.">Radiuskompensation ist nicht aktiv.</message>
|
||||||
|
<message name="Radius compensation is not off.">Radiuskompensation ist nicht aus.</message>
|
||||||
|
<message name="Radius compensation mode cannot be changed at rapid traversal.">Radiuskompensation kann nicht bei G0-Bewegungen geaendert werden.</message>
|
||||||
|
<message name="Rapid Distance">Eilgang-Distanz in mm</message>
|
||||||
|
<message name="SET-UP CLEARANCE">SICHERHEITS-ABST.</message>
|
||||||
|
<message name="SURFACE COORDINATE">KOOR. OBERFLAECHE</message>
|
||||||
|
<message name="Safe Tool Diameter">Speichere Werkzeugdurchmesser</message>
|
||||||
|
<message name="Scallop Finishing">HSC-Konturschlichten</message>
|
||||||
|
<message name="Section is active.">Bereich ist aktiviert.</message>
|
||||||
|
<message name="Section is not active.">Bereich ist nicht aktiviert.</message>
|
||||||
|
<message name="Setup Sheet">Einstellblatt</message>
|
||||||
|
<message name="Setup Sheet for Program">Einstellblatt fuer Programm</message>
|
||||||
|
<message name="Spindle speed exceeds maximum value.">Spindeldrehzahl uebersteigt maximalen Wert.</message>
|
||||||
|
<message name="Spindle speed out of range.">Spindeldrehzahl ist in einem nicht im zulaessigen Bereich.</message>
|
||||||
|
<message name="Spiral Finishing">Spiralschlichten</message>
|
||||||
|
<message name="Stock">Rohteil</message>
|
||||||
|
<message name="Stock Lower in WCS">Rohteil unterhalb im WKS</message>
|
||||||
|
<message name="Stock Upper in WCS">Rohteil oberhalb im WKS</message>
|
||||||
|
<message name="Stock to Leave">Aufmaß</message>
|
||||||
|
<message name="Strategy">Strategie</message>
|
||||||
|
<message name="Stream has not been opened.">Datenfluss wurde nicht geoeffnet.</message>
|
||||||
|
<message name="Stream is not open.">Datenfluss ist nicht geoeffnet.</message>
|
||||||
|
<message name="T">T</message>
|
||||||
|
<message name="TAPER">KONIK</message>
|
||||||
|
<message name="THREAD PITCH">GEWINDESTEIGUNG</message>
|
||||||
|
<message name="TIP:">SPITZE:</message>
|
||||||
|
<message name="TOOL EDGE HEIGHT">SCHNEIDENHOEHE</message>
|
||||||
|
<message name="Table constructor expecting array as first argument.">Der Durchmesserausgleich uebersteigt den maximalen Wert.</message>
|
||||||
|
<message name="Taper Angle">Konuswinkel</message>
|
||||||
|
<message name="The diameter offset exceeds the maximum value.">D-Versatz uebersteigt den maximalen Wert.</message>
|
||||||
|
<message name="This parameter specifies the output unit.">Dieser Parameter bestimmt die Ausgabeeinheiten.</message>
|
||||||
|
<message name="This parameter specifies the tolerance used for linearization.">Dieser Parameter bestimmte die Linearisationstoleranz.</message>
|
||||||
|
<message name="Tip Angle">Spitzenwinkel</message>
|
||||||
|
<message name="Tolerance">Toleranz</message>
|
||||||
|
<message name="Tool Sheet">Werkzeugdatenblatt</message>
|
||||||
|
<message name="Tool Sheet for Program">Werkzeugdatenblatt fuer Programm</message>
|
||||||
|
<message name="Tool number exceeds maximum value.">Werkzeugnummer uebersteigt dem maximalen Wert.</message>
|
||||||
|
<message name="Tools">Werkzeuge</message>
|
||||||
|
<message name="Total">Gesamt</message>
|
||||||
|
<message name="Total number of tools">Gesamte Anzahl der Werkzeuge</message>
|
||||||
|
<message name="Type">Typ</message>
|
||||||
|
<message name="Unit is not supported.">Einheit wird nicht unterstuetzt.</message>
|
||||||
|
<message name="Unspecified">unspezifisch</message>
|
||||||
|
<message name="Unsupported format specifier '%1'.">Nicht unterstuetztes Format '%1'.</message>
|
||||||
|
<message name="Unsupported spindle axis.">nicht unterstuetzt Spindelachse</message>
|
||||||
|
<message name="Using E1 as WCS.">Verwende E1 als WKS.</message>
|
||||||
|
<message name="Using G15H01 as WCS.">Verwende G15H01 als WKS.</message>
|
||||||
|
<message name="Using G54 I0 as WCS.">Verwende G54 I0 als WKS.</message>
|
||||||
|
<message name="Using G54 as WCS.">Verwende G54 als WKS.</message>
|
||||||
|
<message name="Using reserved program name.">Benutze reservierten Programmnamen.</message>
|
||||||
|
<message name="Vendor">Hersteller</message>
|
||||||
|
<message name="WCS">WKS</message>
|
||||||
|
<message name="Work offset has not been specified.">WKS wurde nicht definiert.</message>
|
||||||
|
<message name="Work offset is out of range.">WKS ist in einem nicht im zulaessigen Bereich</message>
|
||||||
|
<message name="Work offset out of range.">WKS ist in einem nicht im zulaessigen Bereich</message>
|
||||||
|
<message name="Work plane is not supported.">Arbeitsebene wird nicht unterstuetzt.</message>
|
||||||
|
<message name="Z-level of cycle point does not match bottom of hole.">Z-Tiefe des Zykluspunktes erreicht nicht die Unterseite der Bohrung.</message>
|
||||||
|
<message name="ZMIN">ZMIN</message>
|
||||||
|
<message name="ball end mill">Kugelschlichtfraeser</message>
|
||||||
|
<message name="block drill">Blockbohrer</message>
|
||||||
|
<message name="boring bar">Bohrstange</message>
|
||||||
|
<message name="bullnose end mill">Radienschlichtfraeser</message>
|
||||||
|
<message name="carbide">Karbid</message>
|
||||||
|
<message name="center">Zentrum</message>
|
||||||
|
<message name="center drill">Zentrierbohrer</message>
|
||||||
|
<message name="ceramics">Keramik</message>
|
||||||
|
<message name="chamfer mill">Fasenfraeser</message>
|
||||||
|
<message name="computer">Computer</message>
|
||||||
|
<message name="control">Steuerung</message>
|
||||||
|
<message name="coolant flood">Aussenkuehlung Wasser</message>
|
||||||
|
<message name="coolant mist">Kuehlmittel Nebel (MMS)</message>
|
||||||
|
<message name="coolant off">Kuehlmittel Aus</message>
|
||||||
|
<message name="coolant tool">Werkzeug mit Innenkuehlung</message>
|
||||||
|
<message name="counter bore">Flachsenker</message>
|
||||||
|
<message name="counter sink">Fasensenker</message>
|
||||||
|
<message name="cr:">cr:</message>
|
||||||
|
<message name="deg">(Grad):</message>
|
||||||
|
<message name="description">Beschreibung</message>
|
||||||
|
<message name="dia:">DM:</message>
|
||||||
|
<message name="dovetail mill">Schwalbenschwanzfraeser</message>
|
||||||
|
<message name="drill">Bohrer</message>
|
||||||
|
<message name="face mill">Planfraeser</message>
|
||||||
|
<message name="flat end mill">Schaftfraeser</message>
|
||||||
|
<message name="high-speed steel">Hochleistungsschnellschnittstahl</message>
|
||||||
|
<message name="in">in</message>
|
||||||
|
<message name="invalid">Ungueltig</message>
|
||||||
|
<message name="invalid coolant">Ungueltiges Kuehlmittel</message>
|
||||||
|
<message name="inverse wear">Umgedrehter Verschleiß</message>
|
||||||
|
<message name="left">links</message>
|
||||||
|
<message name="left hand tap">Gewindebohrer (Linksgewinde)</message>
|
||||||
|
<message name="lollipop mill">Ballfraeser</message>
|
||||||
|
<message name="mm">mm</message>
|
||||||
|
<message name="model">Modell</message>
|
||||||
|
<message name="not supported">nicht unterstuetzt.</message>
|
||||||
|
<message name="radius mill">Radienfraeser</message>
|
||||||
|
<message name="reamer">Reibahle</message>
|
||||||
|
<message name="right">right</message>
|
||||||
|
<message name="right hand tap">Gewindebohrer (Rechtsgewinde)</message>
|
||||||
|
<message name="rpm">upm</message>
|
||||||
|
<message name="slot mill">Nutenfraeser</message>
|
||||||
|
<message name="spot drill">Zentrierbohrer</message>
|
||||||
|
<message name="taper:">Konik:</message>
|
||||||
|
<message name="tapered mill">Konikfraeser</message>
|
||||||
|
<message name="ti coated">Ti beschichtet</message>
|
||||||
|
<message name="tip:">tip:</message>
|
||||||
|
<message name="tolerance">Toleranz</message>
|
||||||
|
<message name="unit">Einheit</message>
|
||||||
|
<message name="unknown tool type">unbekannter Werkzeugtyp</message>
|
||||||
|
<message name="unspecified">unspezifisch</message>
|
||||||
|
<message name="vendor">Hersteller</message>
|
||||||
|
<message name="wear">Verschleiß</message>
|
||||||
|
<message name="Cutting">SCHNEIDENVORSCHUB</message>
|
||||||
|
<message name="Predrilling">PREDRILLING</message>
|
||||||
|
<message name="Entry">EINFAHRVORSCHUB</message>
|
||||||
|
<message name="Exit">AUSFAHRVORSCHUB</message>
|
||||||
|
<message name="Ramping">RAMPENVORSCHUB</message>
|
||||||
|
<message name="Plunge">EINTAUCHVORSCHUB</message>
|
||||||
|
<message name="Direkt">DIREKTER VERBINDUNGSVORSCHUB</message>
|
||||||
|
<message name="High Feed">SCHNELLVORSCHUB</message>
|
||||||
|
<message name="TAPPING">GEWINDEBOHREN</message>
|
||||||
|
<message name="NOMINAL DIAMETER">SOLL-DURCHMESSER</message>
|
||||||
|
<message name="ROUGHING DIAMETER">VORGEB. DURCHMESSER</message>
|
||||||
|
<message name="DEPTH FOR CHIP BRKNG">BOHRTIEFE SPANBRUCH</message>
|
||||||
|
<message name="MACHINE OPERATION">BEARBEITUNGS-UMFANG</message>
|
||||||
|
<message name="CIRCLE DIAMETER">KREISDURCHMESSER</message>
|
||||||
|
<message name="FINISHING ALLOWANCE FOR SIDE">AUFMASS SEITE</message>
|
||||||
|
<message name="FEED RATE FOR MILLING">VORSCHUB FRAESEN</message>
|
||||||
|
<message name="CLIMB OR UP-CUT">FRAESART</message>
|
||||||
|
<message name="FINISHING ALLOWANCE FOR FLOOR">AUFMASS TIEFE</message>
|
||||||
|
<message name="INFEED FOR FINISHING">ZUST. SCHLICHTEN</message>
|
||||||
|
<message name="TOOL PATH OVERLAP">BAHN-UEBERLAPPUNG</message>
|
||||||
|
<message name="PLUNGING">EINTAUCHEN</message>
|
||||||
|
<message name="FEED RATE FOR FINISHING">VORSCHUB SCHLICHTEN</message>
|
||||||
|
<message name="PITCH">STEIGUNG</message>
|
||||||
|
<message name="THREAD DEPTH">GEWINDETIEFE</message>
|
||||||
|
<message name="THREADS PER STEP">NACHSETZEN</message>
|
||||||
|
<message name="DEPTH REDUCTION">TIEFE SENKUNG</message>
|
||||||
|
<message name="F PRE-POSITIONING">VORSCHUB VORPOS.</message>
|
||||||
|
<message name="F COUNTERBORING">VORSCHUB SENKEN</message>
|
||||||
|
<message name="# Tools">Anzahl Werkzeuge</message>
|
||||||
|
<message name="Program">Programm</message>
|
||||||
|
<message name="Overview">Uebersicht</message>
|
||||||
|
<message name="# Operations">Anzahl Operationen</message>
|
||||||
|
<message name="Machining Time">Bearbeitungszeit</message>
|
||||||
|
<message name="Feed Distance">Vorschub-Distanz in mm</message>
|
||||||
|
<message name="Programmer">Programmierer</message>
|
||||||
|
<message name="WCS #">Anzahl WKS</message>
|
||||||
|
<message name="Reference">Referenz</message>
|
||||||
|
<message name="Tool #">Werkzeug-Nr.</message>
|
||||||
|
<message name="Length #">Laengen #</message>
|
||||||
|
<message name="Diameter #">Durchmesser #</message>
|
||||||
|
<message name="DATUM SHIFT">NULLPUNKT</message>
|
||||||
|
<message name="WORKING PLANE">BEARBEITUNGSEBENE</message>
|
||||||
|
<message name="TOLERANCE">TOLERANZ</message>
|
||||||
|
<message name="DATUM SETTING">BEZUGSPUNKT SETZEN</message>
|
||||||
|
<message name="DATUM NUMBER">BEZUGSPUNKT-NUMMER</message>
|
||||||
|
<message name="DWELL TIME">VERWEILZEIT</message>
|
||||||
|
<message name="DRILLING">BOHREN</message>
|
||||||
|
<message name="UNIVERSAL DRILLING">UNIVERSAL-BOHREN</message>
|
||||||
|
<message name="RIGID TAPPING NEW">GEW.-BOHREN GS NEU</message>
|
||||||
|
<message name="TAPPING W/ CHIP BRKG">GEW.-BOHREN SPANBR.</message>
|
||||||
|
<message name="REAMING">REIBEN</message>
|
||||||
|
<message name="BORING">AUSDREHEN</message>
|
||||||
|
<message name="BACK BORING">RUECKWAERTS-SENKEN</message>
|
||||||
|
<message name="BORE MILLING">BOHRFRAESEN</message>
|
||||||
|
<message name="THREAD MILLING">GEWINDEFRAESEN</message>
|
||||||
|
<message name="CIRCULAR POCKET">KREISTASCHE</message>
|
||||||
|
<message name="Finish">SCHLICHTVORSCHUB</message>
|
||||||
|
<message name="Reduced">OPTIMIERUNGSVORSCHUB</message>
|
||||||
|
<message name="Invalid tilt preference.">Ungueltige bevorzugte Schwenkrichtung</message>
|
||||||
|
<message name="Machine angles not supported.">Maschinenwinkel werden nicht unterstuetzt.</message>
|
||||||
|
<message name="Orientation not supported.">Orientierung nicht unterstuetzt.</message>
|
||||||
|
<message name="Tool orientation is not supported.">Werkzeug-Orientierung wird nicht unterstuetzt.</message>
|
||||||
|
<message name="CYCL DEF 19 is not allowed without a machine configuration (enable the 'usePlane' setting).">CYCL DEF 19 ist ohne Maschinenkonfiguration nicht erlaubt ('usePlane' aktivieren, falls PLANE ZYKLUS vorhanden)..</message>
|
||||||
|
<message name="Circular pocket milling is not supported for taper tools.">Kreistaschenfraesen mit konischen Werkzeugen ist nicht unterstuetzt.</message>
|
||||||
|
<message name="Radius compensation cannot be activated/deactivated for a circular move.">Radiuskompensation kann nicht aktiviert/deaktiviert werden.</message>
|
||||||
|
<message name="Radius compensation cannot be activated/deactivated for 5-axis move.">Radiuskompensation kann nicht fuer 5-achsige Bewegungen nicht aktiviert/deaktiviert werden.</message>
|
||||||
|
<message name="Secondary spindle is not available.">Zweite Spindel ist nicht verfuegbar.</message>
|
||||||
|
<message name="Milling toolpath is not supported.">Fraes-Werkzeugwege werden nicht unterstuetzt.</message>
|
||||||
|
<message name="Non-turning toolpath is not supported.">Nur Drehwerkzeugwege werden unterstuetzt.</message>
|
||||||
|
<message name="Compensation offset is out of range.">Offset fuer Kompensation ausserhalb des zulaessigen Bereiches.</message>
|
||||||
|
<message name="Speed-feed synchronization is not supported for circular moves.">Drehzahl/Vorschubsynchronisation wird fuer Kreisboegen nicht unterstuetzt.</message>
|
||||||
|
<message name="Unsupported drilling orientation.">Nicht unterstuetzte Bohroperation.</message>
|
||||||
|
<message name="You must set 'highFeedrate' because axes are not synchronized for rapid traversal.">'highFeedrate' muss gesetzt werden um Achsen fuer Eilgaenge zu synchronisieren.</message>
|
||||||
|
<message name="Tail stock is not supported for secondary spindle.">Reitstock wird fuer die zweite Spindel nicht unterstuetzt.</message>
|
||||||
|
<message name="Radius compensation cannot be activated/deactivated for a cycle.">Radiuskompensation kann fuer (Bohr)Zyklen nicht aktiviert/deaktiviert werden.</message>
|
||||||
|
<message name="Left-tapping with chip breaking is not supported.">Linksgewinde mit Spanbrechen wird nicht unterstuetzt.</message>
|
||||||
|
<message name="Back boring is not supported.">Rueckwaertssenken wird nicht unterstuetzt.</message>
|
||||||
|
<message name="You must set 'highFeedrate' because axes are not synchronized in HURCO ISO NC mode.">'highFeedrate' muss gesetzt werden um Achsen fuer Eilgaenge im HURCO ISNC-Modus zu synchronisieren.</message>
|
||||||
|
<message name="CCW spindle direction not supported.">Spindel-Drehrichtung im Gegenuhrzeigersinn wird nicht unterstuetzt.</message>
|
||||||
|
<message name="Aborted by user.">Abbruch durch Benutzer.</message>
|
||||||
|
<message name="The tolerance must be positive.">Die Toleranz muss positiv sein.</message>
|
||||||
|
<message name="Output path not specified.">Ausgabepfad wurde nicht angegeben.</message>
|
||||||
|
<message name="Invalid feed.">Ungueltiger Vorschub.</message>
|
||||||
|
<message name="Multi-axis motion is not supported.">Simultane Bewegungen werden nicht unterstuetzt.</message>
|
||||||
|
<message name="Unsupported command.">Nicht unterstuetzter Befehl.</message>
|
||||||
|
<message name="Tapping is only allowed along machine Z.">Gewindebohren wird nur entlang der Maschinen-Z-Achse unterstuetzt.</message>
|
||||||
|
<message name="Radius compensation mode not supported.">Radiuskompensationsmodus wird nicht unterstuetzt.</message>
|
||||||
|
<message name="Invalid ATC mode. Must be 0 or 1.">Ungueltiger ATC Modus, Modus muss 0 oder 1 sein.</message>
|
||||||
|
<message name="SINGLE-FLUTED DEEP-HOLE DRILLING">EINLIPPEN-BOHREN</message>
|
||||||
|
<message name="STARTING POINT">STARTPUNKT</message>
|
||||||
|
<message name="RETRACT FEED RATE">VORSCHUB RUECKZUG</message>
|
||||||
|
<message name="DIR. OF SPINDLE ROT.">SP.-DREHRICHTUNG</message>
|
||||||
|
<message name="ENTRY EXIT SPEED">DREHZAHL EIN-/AUSF.</message>
|
||||||
|
<message name="DRILLING SPEED">DREHZAHL BOHREN</message>
|
||||||
|
<message name="COOLANT ON">KUEHLUNG EIN</message>
|
||||||
|
<message name="COOLANT OFF">KUEHLUNG AUS</message>
|
||||||
|
<message name="DWELL DEPTH">VERWEILTIEFE</message>
|
||||||
|
<message name="Tool description is empty in operation">Keine Werkzeugbeschreibung angegeben in Operation</message>
|
||||||
|
<message name="Tool description is empty">Keine Werkzeugbeschreibung angegeben.</message>
|
||||||
|
</locale>
|
||||||
597
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/common.en.lang
Normal file
597
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/common.en.lang
Normal file
@ -0,0 +1,597 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<locale xmlns="http://www.hsmworks.com/xml/2008/locale">
|
||||||
|
<country>en</country>
|
||||||
|
<message name="%1h:%2m:%3s">%1h:%2m:%3s</message>
|
||||||
|
<message name="%1m:%2s">%1m:%2s</message>
|
||||||
|
<message name="%1s">%1s</message>
|
||||||
|
<message name="2ND SET-UP CLEARANCE">2ND SET-UP CLEARANCE</message>
|
||||||
|
<message name="3D Path">3D Path</message>
|
||||||
|
<message name="AGGREGATE">AGGREGATE</message>
|
||||||
|
<message name="ANGLE OF SPINDLE">ANGLE OF SPINDLE</message>
|
||||||
|
<message name="Aborted by user.">Aborted by user.</message>
|
||||||
|
<message name="Accumulated depth is negative.">Accumulated depth is negative.</message>
|
||||||
|
<message name="Actuator">Actuator</message>
|
||||||
|
<message name="Adaptive">Adaptive</message>
|
||||||
|
<message name="Adaptive 2D">Adaptive 2D</message>
|
||||||
|
<message name="Aggregate">Aggregate</message>
|
||||||
|
<message name="Air">Air</message>
|
||||||
|
<message name="Air through tool">Air through tool</message>
|
||||||
|
<message name="Auxiliary function is out of range.">Auxiliary function is out of range.</message>
|
||||||
|
<message name="Axis">Axis</message>
|
||||||
|
<message name="BACK BORING">BACK BORING</message>
|
||||||
|
<message name="BORE MILLING">BORE MILLING</message>
|
||||||
|
<message name="BORING">BORING</message>
|
||||||
|
<message name="BREAKS">BREAKS</message>
|
||||||
|
<message name="Back bore distance is negative.">Back bore distance is negative.</message>
|
||||||
|
<message name="Back bore distance is undefined.">Back bore distance is undefined.</message>
|
||||||
|
<message name="Back boring is not supported.">Back boring is not supported.</message>
|
||||||
|
<message name="Bar feed">Bar feed</message>
|
||||||
|
<message name="Bore">Bore</message>
|
||||||
|
<message name="CCW spindle direction not supported.">CCW spindle direction not supported.</message>
|
||||||
|
<message name="CIRCLE DIAMETER">CIRCLE DIAMETER</message>
|
||||||
|
<message name="CIRCULAR POCKET">CIRCULAR POCKET</message>
|
||||||
|
<message name="CLIMB OR UP-CUT">CLIMB OR UP-CUT</message>
|
||||||
|
<message name="COOLANT OFF">COOLANT OFF</message>
|
||||||
|
<message name="COOLANT ON">COOLANT ON</message>
|
||||||
|
<message name="CR">CR</message>
|
||||||
|
<message name="CREATED">CREATED</message>
|
||||||
|
<message name="CYCL DEF 19 is not allowed without a machine configuration (enable the 'usePlane' setting).">CYCL DEF 19 is not allowed without a machine configuration (enable the 'usePlane' setting).</message>
|
||||||
|
<message name="Cannot machine 180deg sweep.">Cannot machine 180deg sweep.</message>
|
||||||
|
<message name="Cannot machine radius 0.">Cannot machine radius 0.</message>
|
||||||
|
<message name="Capabilities">Capabilities</message>
|
||||||
|
<message name="Capacities">Capacities</message>
|
||||||
|
<message name="Circular">Circular</message>
|
||||||
|
<message name="Circular pocket milling is not supported for taper tools.">Circular pocket milling is not supported for taper tools.</message>
|
||||||
|
<message name="Circular sweep exceeds limit.">Circular sweep exceeds limit.</message>
|
||||||
|
<message name="Clearance below retract plane.">Clearance below retract plane.</message>
|
||||||
|
<message name="Comment">Comment</message>
|
||||||
|
<message name="Compensation">Compensation</message>
|
||||||
|
<message name="Compensation offset is out of range.">Compensation offset is out of range.</message>
|
||||||
|
<message name="Constant surrface speed is not supported by the CNC.">Constant surrface speed is not supported by the CNC.</message>
|
||||||
|
<message name="Contour">Contour</message>
|
||||||
|
<message name="Contour 2D">Contour 2D</message>
|
||||||
|
<message name="Coolant">Coolant</message>
|
||||||
|
<message name="Coolant air cannot be disabled.">Coolant air cannot be disabled.</message>
|
||||||
|
<message name="Coolant air is not supported.">Coolant air is not supported.</message>
|
||||||
|
<message name="Coolant air through tool cannot be disabled.">Coolant air through tool cannot be disabled.</message>
|
||||||
|
<message name="Coolant air through tool is not supported.">Coolant air through tool is not supported.</message>
|
||||||
|
<message name="Coolant cannot be disabled.">Coolant cannot be disabled.</message>
|
||||||
|
<message name="Coolant flood and mist cannot be disabled.">Coolant flood and mist cannot be disabled.</message>
|
||||||
|
<message name="Coolant flood and mist is not supported.">Coolant flood and mist is not supported.</message>
|
||||||
|
<message name="Coolant flood and through tool cannot be disabled.">Coolant flood and through tool cannot be disabled.</message>
|
||||||
|
<message name="Coolant flood and through tool is not supported.">Coolant flood and through tool is not supported.</message>
|
||||||
|
<message name="Coolant flood cannot be disabled.">Coolant flood cannot be disabled.</message>
|
||||||
|
<message name="Coolant flood is not supported.">Coolant flood is not supported.</message>
|
||||||
|
<message name="Coolant is not supported.">Coolant is not supported.</message>
|
||||||
|
<message name="Coolant mist cannot be disabled.">Coolant mist cannot be disabled.</message>
|
||||||
|
<message name="Coolant mist is not supported.">Coolant mist is not supported.</message>
|
||||||
|
<message name="Coolant not supported.">Coolant not supported.</message>
|
||||||
|
<message name="Coolant suction cannot be disabled.">Coolant suction cannot be disabled.</message>
|
||||||
|
<message name="Coolant suction is not supported.">Coolant suction is not supported.</message>
|
||||||
|
<message name="Coolant through tool cannot be disabled.">Coolant through tool cannot be disabled.</message>
|
||||||
|
<message name="Coolant through tool is not supported.">Coolant through tool is not supported.</message>
|
||||||
|
<message name="Coordinate">Coordinate</message>
|
||||||
|
<message name="Corner Radius">Corner Radius</message>
|
||||||
|
<message name="Current record cannot be linearized.">Current record cannot be linearized.</message>
|
||||||
|
<message name="Cutter compensation with G41 is not supported by TinyG CNC control.">Cutter compensation with G41 is not supported by TinyG CNC control.</message>
|
||||||
|
<message name="Cutter compensation with G42 is not supported by TinyG CNC control.">Cutter compensation with G42 is not supported by TinyG CNC control.</message>
|
||||||
|
<message name="Cutting">Cutting</message>
|
||||||
|
<message name="Cutting Distance">Cutting Distance</message>
|
||||||
|
<message name="Cycle '%1' is not supported.">Cycle '%1' is not supported.</message>
|
||||||
|
<message name="Cycle is active at end of section.">Cycle is active at end of section.</message>
|
||||||
|
<message name="Cycle is active for onCircular().">Cycle is active for onCircular().</message>
|
||||||
|
<message name="Cycle is active for onLinear().">Cycle is active for onLinear().</message>
|
||||||
|
<message name="Cycle is active for onLinear5D().">Cycle is active for onLinear5D().</message>
|
||||||
|
<message name="Cycle is active for onRadous5D().">Cycle is active for onRadous5D().</message>
|
||||||
|
<message name="Cycle is active for onRapid().">Cycle is active for onRapid().</message>
|
||||||
|
<message name="Cycle is active.">Cycle is active.</message>
|
||||||
|
<message name="Cycle is already active.">Cycle is already active.</message>
|
||||||
|
<message name="Cycle is not active for onCycleEnd().">Cycle is not active for onCycleEnd().</message>
|
||||||
|
<message name="Cycle is not active.">Cycle is not active.</message>
|
||||||
|
<message name="Cycles are not allowed.">Cycles are not allowed.</message>
|
||||||
|
<message name="Cyclic">Cyclic</message>
|
||||||
|
<message name="D">D</message>
|
||||||
|
<message name="DATUM NUMBER">DATUM NUMBER</message>
|
||||||
|
<message name="DATUM SETTING">DATUM SETTING</message>
|
||||||
|
<message name="DATUM SHIFT">DATUM SHIFT</message>
|
||||||
|
<message name="DECREMENT">DECREMENT</message>
|
||||||
|
<message name="DEPTH">DEPTH</message>
|
||||||
|
<message name="DEPTH FOR CHIP BRKNG">DEPTH FOR CHIP BRKNG</message>
|
||||||
|
<message name="DEPTH REDUCTION">DEPTH REDUCTION</message>
|
||||||
|
<message name="DIR. OF SPINDLE ROT.">DIR. OF SPINDLE ROT.</message>
|
||||||
|
<message name="DISENGAGING DIRECTION">DISENGAGING DIRECTION</message>
|
||||||
|
<message name="DIST. FOR CHIP BRKNG">DIST. FOR CHIP BRKNG</message>
|
||||||
|
<message name="DRILLING">DRILLING</message>
|
||||||
|
<message name="DRILLING SPEED">DRILLING SPEED</message>
|
||||||
|
<message name="DWELL AT BOTTOM">DWELL AT BOTTOM</message>
|
||||||
|
<message name="DWELL AT TOP">DWELL AT TOP</message>
|
||||||
|
<message name="DWELL DEPTH">DWELL DEPTH</message>
|
||||||
|
<message name="DWELL TIME">DWELL TIME</message>
|
||||||
|
<message name="DWELL TIME AT DEPTH">DWELL TIME AT DEPTH</message>
|
||||||
|
<message name="DX">DX</message>
|
||||||
|
<message name="DY">DY</message>
|
||||||
|
<message name="DZ">DZ</message>
|
||||||
|
<message name="Depth">Depth</message>
|
||||||
|
<message name="Depth is negative.">Depth is negative.</message>
|
||||||
|
<message name="Description">Description</message>
|
||||||
|
<message name="Diameter">Diameter</message>
|
||||||
|
<message name="Diameter offset is not supported.">Diameter offset is not supported.</message>
|
||||||
|
<message name="Dimensions">Dimensions</message>
|
||||||
|
<message name="Direct">Direct</message>
|
||||||
|
<message name="Document Path">Document Path</message>
|
||||||
|
<message name="Drilling">Drilling</message>
|
||||||
|
<message name="Dwell is negative.">Dwell is negative.</message>
|
||||||
|
<message name="Dwell is undefined.">Dwell is undefined.</message>
|
||||||
|
<message name="Dwelling is not allowed.">Dwelling is not allowed.</message>
|
||||||
|
<message name="Dwelling is not supported.">Dwelling is not supported.</message>
|
||||||
|
<message name="Dwelling time is out of range.">Dwelling time is out of range.</message>
|
||||||
|
<message name="Dwelling time out of range.">Dwelling time out of range.</message>
|
||||||
|
<message name="ENTRY EXIT SPEED">ENTRY EXIT SPEED</message>
|
||||||
|
<message name="Entry">Entry</message>
|
||||||
|
<message name="Estimated Cycle Time">Estimated Cycle Time</message>
|
||||||
|
<message name="Exit">Exit</message>
|
||||||
|
<message name="F COUNTERBORING">F COUNTERBORING</message>
|
||||||
|
<message name="F PRE-POSITIONING">F PRE-POSITIONING</message>
|
||||||
|
<message name="FEED RATE FOR FINISHING">FEED RATE FOR FINISHING</message>
|
||||||
|
<message name="FEED RATE FOR MILLING">FEED RATE FOR MILLING</message>
|
||||||
|
<message name="FEED RATE FOR PLUNGING">FEED RATE FOR PLUNGING</message>
|
||||||
|
<message name="FINISHING ALLOWANCE FOR FLOOR">FINISHING ALLOWANCE FOR FLOOR</message>
|
||||||
|
<message name="FINISHING ALLOWANCE FOR SIDE">FINISHING ALLOWANCE FOR SIDE</message>
|
||||||
|
<message name="Facing">Facing</message>
|
||||||
|
<message name="Failed to copy image from '%1' to '%2'.">Failed to copy image from '%1' to '%2'.</message>
|
||||||
|
<message name="Failed to write shared string.">Failed to write shared string.</message>
|
||||||
|
<message name="Failed to write workbook.">Failed to write workbook.</message>
|
||||||
|
<message name="Failed to write worksheet.">Failed to write worksheet.</message>
|
||||||
|
<message name="Feed per revolution is not supported by the CNC.">Feed per revolution is not supported by the CNC.</message>
|
||||||
|
<message name="Feedrate is negative.">Feedrate is negative.</message>
|
||||||
|
<message name="Feedrate per Rev">Feedrate per Rev</message>
|
||||||
|
<message name="Finish">Finish</message>
|
||||||
|
<message name="Flood">Flood</message>
|
||||||
|
<message name="Flood and mist">Flood and mist</message>
|
||||||
|
<message name="Flood and through tool">Flood and through tool</message>
|
||||||
|
<message name="Flow">Flow</message>
|
||||||
|
<message name="Flutes">Flutes</message>
|
||||||
|
<message name="Generated by">Generated by</message>
|
||||||
|
<message name="Head">Head</message>
|
||||||
|
<message name="Height">Height</message>
|
||||||
|
<message name="Helical arcs are not supported by the CNC.">Helical arcs are not supported by the CNC.</message>
|
||||||
|
<message name="Helical arcs are not supported.">Helical arcs are not supported.</message>
|
||||||
|
<message name="High Feed">High Feed</message>
|
||||||
|
<message name="Holder">Holder</message>
|
||||||
|
<message name="Home">Home</message>
|
||||||
|
<message name="Horizontal">Horizontal</message>
|
||||||
|
<message name="INFEED DEPTH">INFEED DEPTH</message>
|
||||||
|
<message name="INFEED FOR FINISHING">INFEED FOR FINISHING</message>
|
||||||
|
<message name="Ignoring work offset.">Ignoring work offset.</message>
|
||||||
|
<message name="Inch mode is not supported.">Inch mode is not supported.</message>
|
||||||
|
<message name="Incremental depth is invalid.">Incremental depth is invalid.</message>
|
||||||
|
<message name="Incremental depth is negative.">Incremental depth is negative.</message>
|
||||||
|
<message name="Invalid ATC mode. Must be 0 or 1.">Invalid ATC mode. Must be 0 or 1.</message>
|
||||||
|
<message name="Invalid aggregate configuration (ABC not allowed).">Invalid aggregate configuration (ABC not allowed).</message>
|
||||||
|
<message name="Invalid aggregate configuration (invalid resolution).">Invalid aggregate configuration (invalid resolution).</message>
|
||||||
|
<message name="Invalid aggregate configuration at %1 (not a value).">Invalid aggregate configuration at %1 (not a value).</message>
|
||||||
|
<message name="Invalid aggregate configuration at %1.">Invalid aggregate configuration at %1.</message>
|
||||||
|
<message name="Invalid break-through depth.">Invalid break-through depth.</message>
|
||||||
|
<message name="Invalid clamp specifier '%1'.">Invalid clamp specifier '%1'.</message>
|
||||||
|
<message name="Invalid condition occured.">Invalid condition occured.</message>
|
||||||
|
<message name="Invalid cycle parameters.">Invalid cycle parameters.</message>
|
||||||
|
<message name="Invalid cycle type.">Invalid cycle type.</message>
|
||||||
|
<message name="Invalid disengagement direction.">Invalid disengagement direction.</message>
|
||||||
|
<message name="Invalid dwelling time.">Invalid dwelling time.</message>
|
||||||
|
<message name="Invalid feed.">Invalid feed.</message>
|
||||||
|
<message name="Invalid initial value for table.">Invalid initial value for table.</message>
|
||||||
|
<message name="Invalid machine configuration.">Invalid machine configuration.</message>
|
||||||
|
<message name="Invalid operation information.">Invalid operation information.</message>
|
||||||
|
<message name="Invalid program information.">Invalid program information.</message>
|
||||||
|
<message name="Invalid starting depth.">Invalid starting depth.</message>
|
||||||
|
<message name="Invalid tilt preference.">Invalid tilt preference.</message>
|
||||||
|
<message name="Invalid tool information.">Invalid tool information.</message>
|
||||||
|
<message name="Invalid value.">Invalid value.</message>
|
||||||
|
<message name="Invalid work offset.">Invalid work offset.</message>
|
||||||
|
<message name="Job">Job</message>
|
||||||
|
<message name="Job Description">Job Description</message>
|
||||||
|
<message name="Job ISO-9000 Control">Job ISO-9000 Control</message>
|
||||||
|
<message name="L">L</message>
|
||||||
|
<message name="LOWER ADV. STOP DIST.">LOWER ADV. STOP DIST.</message>
|
||||||
|
<message name="Left handed tapping not supported.">Left handed tapping not supported.</message>
|
||||||
|
<message name="Left tapping is not supported by CNC machine.">Left tapping is not supported by CNC machine.</message>
|
||||||
|
<message name="Left tapping is not supported.">Left tapping is not supported.</message>
|
||||||
|
<message name="Left-tapping with chip breaking is not supported.">Left-tapping with chip breaking is not supported.</message>
|
||||||
|
<message name="Length">Length</message>
|
||||||
|
<message name="Length offset is not supported.">Length offset is not supported.</message>
|
||||||
|
<message name="Length offset out of range.">Length offset out of range.</message>
|
||||||
|
<message name="Linear">Linear</message>
|
||||||
|
<message name="Link">Link</message>
|
||||||
|
<message name="Live tooling is not supported by the CNC machine.">Live tooling is not supported by the CNC machine.</message>
|
||||||
|
<message name="Load deviation">Load deviation</message>
|
||||||
|
<message name="MACHINE OPERATION">MACHINE OPERATION</message>
|
||||||
|
<message name="MATERIAL THICKNESS">MATERIAL THICKNESS</message>
|
||||||
|
<message name="MIN. PLUNGING DEPTH">MIN. PLUNGING DEPTH</message>
|
||||||
|
<message name="Machine">Machine</message>
|
||||||
|
<message name="Machine angles not supported">Machine angles not supported</message>
|
||||||
|
<message name="Machine does not allow Z movement when changing radius compensation mode.">Machine does not allow Z movement when changing radius compensation mode.</message>
|
||||||
|
<message name="Machine does not allow simultaneous movement in Z and XY plane.">Machine does not allow simultaneous movement in Z and XY plane.</message>
|
||||||
|
<message name="Machine does not support circular movement in other planes than the XY-plane.">Machine does not support circular movement in other planes than the XY-plane.</message>
|
||||||
|
<message name="Machine does not support full circular movement.">Machine does not support full circular movement.</message>
|
||||||
|
<message name="Machine does not support helical movement.">Machine does not support helical movement.</message>
|
||||||
|
<message name="Manual boring is not supported.">Manual boring is not supported.</message>
|
||||||
|
<message name="Manual tool change">Manual tool change</message>
|
||||||
|
<message name="Material">Material</message>
|
||||||
|
<message name="Maximum Feed">Maximum Feed</message>
|
||||||
|
<message name="Maximum Feedrate">Maximum Feedrate</message>
|
||||||
|
<message name="Maximum Spindle Speed">Maximum Spindle Speed</message>
|
||||||
|
<message name="Maximum Z">Maximum Z</message>
|
||||||
|
<message name="Maximum feed">Maximum feed</message>
|
||||||
|
<message name="Maximum speed">Maximum speed</message>
|
||||||
|
<message name="Maximum stepdown">Maximum stepdown</message>
|
||||||
|
<message name="Maximum stepover">Maximum stepover</message>
|
||||||
|
<message name="Milling">Milling</message>
|
||||||
|
<message name="Milling from Z- is not supported by the CNC machine.">Milling from Z- is not supported by the CNC machine.</message>
|
||||||
|
<message name="Milling toolpath is not supported.">Milling toolpath is not supported.</message>
|
||||||
|
<message name="Minimum Z">Minimum Z</message>
|
||||||
|
<message name="Mismatching arguments.">Mismatching arguments.</message>
|
||||||
|
<message name="Mist">Mist</message>
|
||||||
|
<message name="Model">Model</message>
|
||||||
|
<message name="Model image doesn't exist '%1'.">Model image doesn't exist '%1'.</message>
|
||||||
|
<message name="Morph">Morph</message>
|
||||||
|
<message name="Morphed Spiral">Morphed Spiral</message>
|
||||||
|
<message name="Multi-Axis Contour">Multi-Axis Contour</message>
|
||||||
|
<message name="Multi-Axis Swarf">Multi-Axis Swarf</message>
|
||||||
|
<message name="Multi-axis motion is not supported for XZC mode.">Multi-axis motion is not supported for XZC mode.</message>
|
||||||
|
<message name="Multi-axis motion is not supported.">Multi-axis motion is not supported.</message>
|
||||||
|
<message name="Multi-axis toolpath is not allowed.">Multi-axis toolpath is not allowed.</message>
|
||||||
|
<message name="Multi-axis toolpath is not supported by CNC machine.">Multi-axis toolpath is not supported by CNC machine.</message>
|
||||||
|
<message name="Multi-axis toolpath is not supported by the CNC machine.">Multi-axis toolpath is not supported by the CNC machine.</message>
|
||||||
|
<message name="Multi-axis toolpath is not supported.">Multi-axis toolpath is not supported.</message>
|
||||||
|
<message name="Multiple turns are not supported.">Multiple turns are not supported.</message>
|
||||||
|
<message name="NEW WCS!">NEW WCS!</message>
|
||||||
|
<message name="NEW!">NEW!</message>
|
||||||
|
<message name="NOMINAL DIAMETER">NOMINAL DIAMETER</message>
|
||||||
|
<message name="Negative">Negative</message>
|
||||||
|
<message name="No">No</message>
|
||||||
|
<message name="No machine type is selected. You have to define a machine type using the properties.">No machine type is selected. You have to define a machine type using the properties.</message>
|
||||||
|
<message name="Non-turning toolpath is not supported.">Non-turning toolpath is not supported.</message>
|
||||||
|
<message name="Not XY-plane arcs are not supported by the CNC.">Not XY-plane arcs are not supported by the CNC.</message>
|
||||||
|
<message name="Notes">Notes</message>
|
||||||
|
<message name="Number Of Operations">Number Of Operations</message>
|
||||||
|
<message name="Number Of Tools">Number Of Tools</message>
|
||||||
|
<message name="Number of tools">Number of tools</message>
|
||||||
|
<message name="OFF-CENTER DISTANCE">OFF-CENTER DISTANCE</message>
|
||||||
|
<message name="Off">Off</message>
|
||||||
|
<message name="Offset">Offset</message>
|
||||||
|
<message name="Only right handed tapping is supporrted.">Only right handed tapping is supporrted.</message>
|
||||||
|
<message name="Operation">Operation</message>
|
||||||
|
<message name="Operation Sheet">Operation Sheet</message>
|
||||||
|
<message name="Operation Sheet for Program">Operation Sheet for Program</message>
|
||||||
|
<message name="Optimal load">Optimal load</message>
|
||||||
|
<message name="Orientation is not supported by CNC machine.">Orientation is not supported by CNC machine.</message>
|
||||||
|
<message name="Orientation not supported.">Orientation not supported.</message>
|
||||||
|
<message name="PART CATCHER">PART CATCHER</message>
|
||||||
|
<message name="PARTS CATCHER OFF">PARTS CATCHER OFF</message>
|
||||||
|
<message name="PARTS CATCHER ON">PARTS CATCHER ON</message>
|
||||||
|
<message name="PITCH">PITCH</message>
|
||||||
|
<message name="PLUNGING">PLUNGING</message>
|
||||||
|
<message name="PLUNGING DEPTH">PLUNGING DEPTH</message>
|
||||||
|
<message name="Parallel">Parallel</message>
|
||||||
|
<message name="Parameter constructor called as a function.">Parameter constructor called as a function.</message>
|
||||||
|
<message name="Part">Part</message>
|
||||||
|
<message name="Part dimensions">Part dimensions</message>
|
||||||
|
<message name="Pattern Group">Pattern Group</message>
|
||||||
|
<message name="Pencil">Pencil</message>
|
||||||
|
<message name="Pitch">Pitch</message>
|
||||||
|
<message name="Plane cannot be changed when radius compensation is active.">Plane cannot be changed when radius compensation is active.</message>
|
||||||
|
<message name="Plunge">Plunge</message>
|
||||||
|
<message name="Plunge feedrate is negative.">Plunge feedrate is negative.</message>
|
||||||
|
<message name="Plunges per retract is below 1.">Plunges per retract is below 1.</message>
|
||||||
|
<message name="Pocket">Pocket</message>
|
||||||
|
<message name="Pocket 2D">Pocket 2D</message>
|
||||||
|
<message name="Positive">Positive</message>
|
||||||
|
<message name="Post configuration is not compatible with this version of the post processor.">Post configuration is not compatible with this version of the post processor.</message>
|
||||||
|
<message name="Post processing has been manually disabled using the 'preventPost' property.">Post processing has been manually disabled using the 'preventPost' property.</message>
|
||||||
|
<message name="Post processing using a deprecated version of the post processor.">Post processing using a deprecated version of the post processor.</message>
|
||||||
|
<message name="Predrilling">Predrilling</message>
|
||||||
|
<message name="Preference">Preference</message>
|
||||||
|
<message name="Processing">Processing</message>
|
||||||
|
<message name="Program Comment">Program Comment</message>
|
||||||
|
<message name="Program name contains invalid character(s).">Program name contains invalid character(s).</message>
|
||||||
|
<message name="Program name exceeds maximum length.">Program name exceeds maximum length.</message>
|
||||||
|
<message name="Program name has not been specified.">Program name has not been specified.</message>
|
||||||
|
<message name="Program name must be a number.">Program name must be a number.</message>
|
||||||
|
<message name="Program name must begin with 2 letters.">Program name must begin with 2 letters.</message>
|
||||||
|
<message name="Program number is out of range.">Program number is out of range.</message>
|
||||||
|
<message name="Program number is reserved by tool builder.">Program number is reserved by tool builder.</message>
|
||||||
|
<message name="Program number is reserved.">Program number is reserved.</message>
|
||||||
|
<message name="Program uses multiple WCS!">Program uses multiple WCS!</message>
|
||||||
|
<message name="Project">Project</message>
|
||||||
|
<message name="REAMING">REAMING</message>
|
||||||
|
<message name="RETRACT FEED RATE">RETRACT FEED RATE</message>
|
||||||
|
<message name="RETRACTION FEED RATE">RETRACTION FEED RATE</message>
|
||||||
|
<message name="RETRACTION FEED TIME">RETRACTION FEED TIME</message>
|
||||||
|
<message name="RIGID TAPPING NEW">RIGID TAPPING NEW</message>
|
||||||
|
<message name="ROUGHING DIAMETER">ROUGHING DIAMETER</message>
|
||||||
|
<message name="Radial">Radial</message>
|
||||||
|
<message name="Radius compensation cannot be activated/deactivated for 5-axis move.">Radius compensation cannot be activated/deactivated for 5-axis move.</message>
|
||||||
|
<message name="Radius compensation cannot be activated/deactivated for a circular move.">Radius compensation cannot be activated/deactivated for a circular move.</message>
|
||||||
|
<message name="Radius compensation cannot be activated/deactivated for a cycle.">Radius compensation cannot be activated/deactivated for a cycle.</message>
|
||||||
|
<message name="Radius compensation cannot be activated/deactivated for circular move in other plane than the XY-plane.">Radius compensation cannot be activated/deactivated for circular move in other plane than the XY-plane.</message>
|
||||||
|
<message name="Radius compensation cannot be activated/deactivated for cycle.">Radius compensation cannot be activated/deactivated for cycle.</message>
|
||||||
|
<message name="Radius compensation has not changed.">Radius compensation has not changed.</message>
|
||||||
|
<message name="Radius compensation in the controller is not supported.">Radius compensation in the controller is not supported.</message>
|
||||||
|
<message name="Radius compensation is not active.">Radius compensation is not active.</message>
|
||||||
|
<message name="Radius compensation is not allowed in orientation.">Radius compensation is not allowed in orientation.</message>
|
||||||
|
<message name="Radius compensation is not off.">Radius compensation is not off.</message>
|
||||||
|
<message name="Radius compensation is not supported by the CNC.">Radius compensation is not supported by the CNC.</message>
|
||||||
|
<message name="Radius compensation is not supported.">Radius compensation is not supported.</message>
|
||||||
|
<message name="Radius compensation mode cannot be changed at rapid traversal.">Radius compensation mode cannot be changed at rapid traversal.</message>
|
||||||
|
<message name="Radius compensation mode is not supported by CNC.">Radius compensation mode is not supported by CNC.</message>
|
||||||
|
<message name="Radius compensation mode is not supported by robot.">Radius compensation mode is not supported by robot.</message>
|
||||||
|
<message name="Radius compensation mode is not supported.">Radius compensation mode is not supported.</message>
|
||||||
|
<message name="Radius compensation mode not supported.">Radius compensation mode not supported.</message>
|
||||||
|
<message name="Ramp">Ramp</message>
|
||||||
|
<message name="Ramping">Ramping</message>
|
||||||
|
<message name="Range">Range</message>
|
||||||
|
<message name="Rapid Distance">Rapid Distance</message>
|
||||||
|
<message name="Reduced">Reduced</message>
|
||||||
|
<message name="Remove tool manually">Remove tool manually</message>
|
||||||
|
<message name="Replace tool manually">Replace tool manually</message>
|
||||||
|
<message name="Replacing helical arc with planar arc.">Replacing helical arc with planar arc.</message>
|
||||||
|
<message name="Replacing non-XY plane arc with linear move.">Replacing non-XY plane arc with linear move.</message>
|
||||||
|
<message name="Resolution">Resolution</message>
|
||||||
|
<message name="Retract below stock plane.">Retract below stock plane.</message>
|
||||||
|
<message name="Retract feedrate is negative.">Retract feedrate is negative.</message>
|
||||||
|
<message name="Retract feedrate is undefined.">Retract feedrate is undefined.</message>
|
||||||
|
<message name="Rewind of machine axes">Rewind of machine axes</message>
|
||||||
|
<message name="Rewind of machine is required for simultaneous multi-axis toolpath.">Rewind of machine is required for simultaneous multi-axis toolpath.</message>
|
||||||
|
<message name="Rotational">Rotational</message>
|
||||||
|
<message name="SET-UP CLEARANCE">SET-UP CLEARANCE</message>
|
||||||
|
<message name="SINGLE-FLUTED DEEP-HOLE DRILLING">SINGLE-FLUTED DEEP-HOLE DRILLING</message>
|
||||||
|
<message name="STARTING POINT">STARTING POINT</message>
|
||||||
|
<message name="SURFACE COORDINATE">SURFACE COORDINATE</message>
|
||||||
|
<message name="Safe Tool Diameter">Safe Tool Diameter</message>
|
||||||
|
<message name="Scallop">Scallop</message>
|
||||||
|
<message name="Secondary spindle is not available.">Secondary spindle is not available.</message>
|
||||||
|
<message name="Section is active.">Section is active.</message>
|
||||||
|
<message name="Section is not active.">Section is not active.</message>
|
||||||
|
<message name="Setup Sheet">Setup Sheet</message>
|
||||||
|
<message name="Setup Sheet for Program">Setup Sheet for Program</message>
|
||||||
|
<message name="Shift is undefined.">Shift is undefined.</message>
|
||||||
|
<message name="Shift is negative.">Shift is negative.</message>
|
||||||
|
<message name="Slot">Slot</message>
|
||||||
|
<message name="Speed-feed synchronization is not supported for circular moves.">Speed-feed synchronization is not supported for circular moves.</message>
|
||||||
|
<message name="Spindle">Spindle</message>
|
||||||
|
<message name="Spindle direction is not clockwise.">Spindle direction is not clockwise.</message>
|
||||||
|
<message name="Spindle direction not supported.">Spindle direction not supported.</message>
|
||||||
|
<message name="Spindle orientation is not supported for live tooling.">Spindle orientation is not supported for live tooling.</message>
|
||||||
|
<message name="Spindle speed exceeds maximum value.">Spindle speed exceeds maximum value.</message>
|
||||||
|
<message name="Spindle speed exceeds minimum value.">Spindle speed exceeds minimum value.</message>
|
||||||
|
<message name="Spindle speed out of range.">Spindle speed out of range.</message>
|
||||||
|
<message name="Spiral">Spiral</message>
|
||||||
|
<message name="Stock">Stock</message>
|
||||||
|
<message name="Stock Lower in WCS">Stock Lower in WCS</message>
|
||||||
|
<message name="Stock Upper in WCS">Stock Upper in WCS</message>
|
||||||
|
<message name="Stock to Leave">Stock to Leave</message>
|
||||||
|
<message name="Strategy">Strategy</message>
|
||||||
|
<message name="Stream has not been opened.">Stream has not been opened.</message>
|
||||||
|
<message name="Stream is not open.">Stream is not open.</message>
|
||||||
|
<message name="Suction">Suction</message>
|
||||||
|
<message name="Surface Speed">Surface Speed</message>
|
||||||
|
<message name="T">T</message>
|
||||||
|
<message name="TAPER">TAPER</message>
|
||||||
|
<message name="TAPPING W/ CHIP BRKG">TAPPING W/ CHIP BRKG</message>
|
||||||
|
<message name="THREAD DEPTH">THREAD DEPTH</message>
|
||||||
|
<message name="THREAD MILLING">THREAD MILLING</message>
|
||||||
|
<message name="THREAD PITCH">THREAD PITCH</message>
|
||||||
|
<message name="THREADS PER STEP">THREADS PER STEP</message>
|
||||||
|
<message name="TIP:">TIP:</message>
|
||||||
|
<message name="TOLERANCE">TOLERANCE</message>
|
||||||
|
<message name="TOOL EDGE HEIGHT">TOOL EDGE HEIGHT</message>
|
||||||
|
<message name="TOOL PATH OVERLAP">TOOL PATH OVERLAP</message>
|
||||||
|
<message name="Table">Table</message>
|
||||||
|
<message name="Table constructor called as a function.">Table constructor called as a function.</message>
|
||||||
|
<message name="Table constructor expecting array as first argument.">Table constructor expecting array as first argument.</message>
|
||||||
|
<message name="Tail stock is not supported for secondary spindle.">Tail stock is not supported for secondary spindle.</message>
|
||||||
|
<message name="Taper Angle">Taper Angle</message>
|
||||||
|
<message name="Tapping is only allowed along machine Z.">Tapping is only allowed along machine Z.</message>
|
||||||
|
<message name="The diameter offset exceeds the maximum value.">The diameter offset exceeds the maximum value.</message>
|
||||||
|
<message name="The diameter offset is invalid.">The diameter offset is invalid.</message>
|
||||||
|
<message name="The feedrate is invalid.">The feedrate is invalid.</message>
|
||||||
|
<message name="The installation has been corrupted. Please reinstall and reactivate your license to correct the problem.">The installation has been corrupted. Please reinstall and reactivate your license to correct the problem.</message>
|
||||||
|
<message name="The length offset is invalid.">The length offset is invalid.</message>
|
||||||
|
<message name="The post configuration has been certified for level %1 but requires level %2.">The post configuration has been certified for level %1 but requires level %2.</message>
|
||||||
|
<message name="The post configuration has been not been certified for use with this version of the post processor. The post configuration has to be re-certified.">The post configuration has been not been certified for use with this version of the post processor. The post configuration has to be re-certified.</message>
|
||||||
|
<message name="The post configuration requires revision %1 or later of the post processor which has revision %2.">The post configuration requires revision %1 or later of the post processor which has revision %2.</message>
|
||||||
|
<message name="The probe cycle is machine specific and must always be handled in the post configuration.">The probe cycle is machine specific and must always be handled in the post configuration.</message>
|
||||||
|
<message name="The requested orientation is not supported by the CNC machine.">The requested orientation is not supported by the CNC machine.</message>
|
||||||
|
<message name="The retract feedrate is invalid.">The retract feedrate is invalid.</message>
|
||||||
|
<message name="The retract height in operation " + getParameter("operation-comment">The retract height in operation " + getParameter("operation-comment</message>
|
||||||
|
<message name="The stock transfer cycle is machine specific and must always be handled in the post configuration.">The stock transfer cycle is machine specific and must always be handled in the post configuration.</message>
|
||||||
|
<message name="The turning thread cycle is machine specific and must always be handled in the post configuration.">The turning thread cycle is machine specific and must always be handled in the post configuration.</message>
|
||||||
|
<message name="The variable '%1' is unknown.">The variable '%1' is unknown.</message>
|
||||||
|
<message name="This parameter specifies the output unit.">This parameter specifies the output unit.</message>
|
||||||
|
<message name="This parameter specifies the tolerance used for linearization.">This parameter specifies the tolerance used for linearization.</message>
|
||||||
|
<message name="Thread">Thread</message>
|
||||||
|
<message name="Through tool">Through tool</message>
|
||||||
|
<message name="Tip Angle">Tip Angle</message>
|
||||||
|
<message name="Tolerance">Tolerance</message>
|
||||||
|
<message name="Tool Sheet">Tool Sheet</message>
|
||||||
|
<message name="Tool Sheet for Program">Tool Sheet for Program</message>
|
||||||
|
<message name="Tool change is not supported without ATC. Please only post operations using the same tool.">Tool change is not supported without ATC. Please only post operations using the same tool.</message>
|
||||||
|
<message name="Tool changer">Tool changer</message>
|
||||||
|
<message name="Tool description is empty in operation " + "\"" + (getParameter("operation-comment">Tool description is empty in operation " + "\"" + (getParameter("operation-comment</message>
|
||||||
|
<message name="Tool description is empty.">Tool description is empty.</message>
|
||||||
|
<message name="Tool number exceeds maximum value.">Tool number exceeds maximum value.</message>
|
||||||
|
<message name="Tool number is out of range.">Tool number is out of range.</message>
|
||||||
|
<message name="Tool orientation is not supported by the CNC machine.">Tool orientation is not supported by the CNC machine.</message>
|
||||||
|
<message name="Tool orientation is not supported for radius compensation.">Tool orientation is not supported for radius compensation.</message>
|
||||||
|
<message name="Tool orientation is not supported.">Tool orientation is not supported.</message>
|
||||||
|
<message name="Tool preload">Tool preload</message>
|
||||||
|
<message name="Tooling">Tooling</message>
|
||||||
|
<message name="Tools">Tools</message>
|
||||||
|
<message name="Total">Total</message>
|
||||||
|
<message name="Total number of tools">Total number of tools</message>
|
||||||
|
<message name="Turning">Turning</message>
|
||||||
|
<message name="Type">Type</message>
|
||||||
|
<message name="UNIVERSAL DRILLING">UNIVERSAL DRILLING</message>
|
||||||
|
<message name="UNIVERSAL PECKING">UNIVERSAL PECKING</message>
|
||||||
|
<message name="UPPER ADV. STOP DIST.">UPPER ADV. STOP DIST.</message>
|
||||||
|
<message name="Unit is not supported.">Unit is not supported.</message>
|
||||||
|
<message name="Unit not specified.">Unit not specified.</message>
|
||||||
|
<message name="Unknown">Unknown</message>
|
||||||
|
<message name="Unknown start value for incremental variable.">Unknown start value for incremental variable.</message>
|
||||||
|
<message name="Unspecified">Unspecified</message>
|
||||||
|
<message name="Unsupported 'air through tool' coolant.">Unsupported 'air through tool' coolant.</message>
|
||||||
|
<message name="Unsupported 'air' coolant.">Unsupported 'air' coolant.</message>
|
||||||
|
<message name="Unsupported 'flood and mist' coolant.">Unsupported 'flood and mist' coolant.</message>
|
||||||
|
<message name="Unsupported 'flood and through tool' coolant.">Unsupported 'flood and through tool' coolant.</message>
|
||||||
|
<message name="Unsupported 'flood' coolant.">Unsupported 'flood' coolant.</message>
|
||||||
|
<message name="Unsupported 'mist' coolant.">Unsupported 'mist' coolant.</message>
|
||||||
|
<message name="Unsupported 'off' coolant.">Unsupported 'off' coolant.</message>
|
||||||
|
<message name="Unsupported 'suction' coolant.">Unsupported 'suction' coolant.</message>
|
||||||
|
<message name="Unsupported 'through tool' coolant.">Unsupported 'through tool' coolant.</message>
|
||||||
|
<message name="Unsupported CoolantState specifier '%1'.">Unsupported CoolantState specifier '%1'.</message>
|
||||||
|
<message name="Unsupported IdGenerator specifier '%1'.">Unsupported IdGenerator specifier '%1'.</message>
|
||||||
|
<message name="Unsupported Modal specifier '%1'.">Unsupported Modal specifier '%1'.</message>
|
||||||
|
<message name="Unsupported ModalGroup specifier '%1'.">Unsupported ModalGroup specifier '%1'.</message>
|
||||||
|
<message name="Unsupported Parameter specifier '%1'.">Unsupported Parameter specifier '%1'.</message>
|
||||||
|
<message name="Unsupported Table specifier '%1'.">Unsupported Table specifier '%1'.</message>
|
||||||
|
<message name="Unsupported arc-plane.">Unsupported arc-plane.</message>
|
||||||
|
<message name="Unsupported break control command.">Unsupported break control command.</message>
|
||||||
|
<message name="Unsupported calibrate command.">Unsupported calibrate command.</message>
|
||||||
|
<message name="Unsupported clean command.">Unsupported clean command.</message>
|
||||||
|
<message name="Unsupported close door command.">Unsupported close door command.</message>
|
||||||
|
<message name="Unsupported command">Unsupported command</message>
|
||||||
|
<message name="Unsupported compensation type.">Unsupported compensation type.</message>
|
||||||
|
<message name="Unsupported drilling orientation.">Unsupported drilling orientation.</message>
|
||||||
|
<message name="Unsupported exact stop command.">Unsupported exact stop command.</message>
|
||||||
|
<message name="Unsupported format specifier '%1'.">Unsupported format specifier '%1'.</message>
|
||||||
|
<message name="Unsupported lock multi-axis command.">Unsupported lock multi-axis command.</message>
|
||||||
|
<message name="Unsupported machine axis specifier '%1'.">Unsupported machine axis specifier '%1'.</message>
|
||||||
|
<message name="Unsupported machine configuration specifier '%1'.">Unsupported machine configuration specifier '%1'.</message>
|
||||||
|
<message name="Unsupported milling direction.">Unsupported milling direction.</message>
|
||||||
|
<message name="Unsupported open door command.">Unsupported open door command.</message>
|
||||||
|
<message name="Unsupported speed-feed synchronization activation command.">Unsupported speed-feed synchronization activation command.</message>
|
||||||
|
<message name="Unsupported speed-feed synchronization deactivation command.">Unsupported speed-feed synchronization deactivation command.</message>
|
||||||
|
<message name="Unsupported spindle axis.">Unsupported spindle axis.</message>
|
||||||
|
<message name="Unsupported spindle clockwise direction command.">Unsupported spindle clockwise direction command.</message>
|
||||||
|
<message name="Unsupported spindle counterclockwise direction command.">Unsupported spindle counterclockwise direction command.</message>
|
||||||
|
<message name="Unsupported spindle orientation command.">Unsupported spindle orientation command.</message>
|
||||||
|
<message name="Unsupported spindle start command.">Unsupported spindle start command.</message>
|
||||||
|
<message name="Unsupported spindle stop command.">Unsupported spindle stop command.</message>
|
||||||
|
<message name="Unsupported spindle.">Unsupported spindle.</message>
|
||||||
|
<message name="Unsupported start chip transport command.">Unsupported start chip transport command.</message>
|
||||||
|
<message name="Unsupported stop chip transport command.">Unsupported stop chip transport command.</message>
|
||||||
|
<message name="Unsupported stop program command.">Unsupported stop program command.</message>
|
||||||
|
<message name="Unsupported threading type.">Unsupported threading type.</message>
|
||||||
|
<message name="Unsupported tool measure command.">Unsupported tool measure command.</message>
|
||||||
|
<message name="Unsupported toolpath type.">Unsupported toolpath type.</message>
|
||||||
|
<message name="Unsupported type. Only A, B, and C are allowed.">Unsupported type. Only A, B, and C are allowed.</message>
|
||||||
|
<message name="Unsupported unlock multi-axis command.">Unsupported unlock multi-axis command.</message>
|
||||||
|
<message name="Unsupported variable specifier '%1'.">Unsupported variable specifier '%1'.</message>
|
||||||
|
<message name="Unsupported verify command.">Unsupported verify command.</message>
|
||||||
|
<message name="User defined retract">User defined retract</message>
|
||||||
|
<message name="Using NUM reserved program number.">Using NUM reserved program number.</message>
|
||||||
|
<message name="Using reserved program name.">Using reserved program name.</message>
|
||||||
|
<message name="Using the same tool number for different cutter geometry for operation '%1' and '%2'.">Using the same tool number for different cutter geometry for operation '%1' and '%2'.</message>
|
||||||
|
<message name="Vector">Vector</message>
|
||||||
|
<message name="Vendor">Vendor</message>
|
||||||
|
<message name="WCS">WCS</message>
|
||||||
|
<message name="WORKING PLANE">WORKING PLANE</message>
|
||||||
|
<message name="Weight">Weight</message>
|
||||||
|
<message name="Width">Width</message>
|
||||||
|
<message name="Wire">Wire</message>
|
||||||
|
<message name="Work offset has not been specified.">Work offset has not been specified.</message>
|
||||||
|
<message name="Work offset has not been specified. Using " + formatWords(gFormat.format(15), hFormat.format(1)) + " as WCS.">Work offset has not been specified. Using " + formatWords(gFormat.format(15), hFormat.format(1)) + " as WCS.</message>
|
||||||
|
<message name="Work offset has not been specified. Using E1 as WCS.">Work offset has not been specified. Using E1 as WCS.</message>
|
||||||
|
<message name="Work offset has not been specified. Using G53 as WCS.">Work offset has not been specified. Using G53 as WCS.</message>
|
||||||
|
<message name="Work offset has not been specified. Using G54 I0 as WCS.">Work offset has not been specified. Using G54 I0 as WCS.</message>
|
||||||
|
<message name="Work offset has not been specified. Using G54 as WCS.">Work offset has not been specified. Using G54 as WCS.</message>
|
||||||
|
<message name="Work offset has not been specified. Using G99 O1 as WCS.">Work offset has not been specified. Using G99 O1 as WCS.</message>
|
||||||
|
<message name="Work offset is ignored.">Work offset is ignored.</message>
|
||||||
|
<message name="Work offset is not specified.">Work offset is not specified.</message>
|
||||||
|
<message name="Work offset is not supported.">Work offset is not supported.</message>
|
||||||
|
<message name="Work offset is not used.">Work offset is not used.</message>
|
||||||
|
<message name="Work offset is out of range.">Work offset is out of range.</message>
|
||||||
|
<message name="Work offset out of range.">Work offset out of range.</message>
|
||||||
|
<message name="Work offsets">Work offsets</message>
|
||||||
|
<message name="Work plane is not supported">Work plane is not supported</message>
|
||||||
|
<message name="Wrong spindle direction.">Wrong spindle direction.</message>
|
||||||
|
<message name="X">X</message>
|
||||||
|
<message name="XYZ motion is not supported.">XYZ motion is not supported.</message>
|
||||||
|
<message name="Y">Y</message>
|
||||||
|
<message name="Yes">Yes</message>
|
||||||
|
<message name="You must set 'highFeedrate' because axes are not synchronized for rapid traversal.">You must set 'highFeedrate' because axes are not synchronized for rapid traversal.</message>
|
||||||
|
<message name="You must set 'highFeedrate' because axes are not synchronized in HURCO ISO NC mode.">You must set 'highFeedrate' because axes are not synchronized in HURCO ISO NC mode.</message>
|
||||||
|
<message name="Z">Z</message>
|
||||||
|
<message name="ZMAX">ZMAX</message>
|
||||||
|
<message name="ZMIN">ZMIN</message>
|
||||||
|
<message name="ball end mill">ball end mill</message>
|
||||||
|
<message name="block drill">block drill</message>
|
||||||
|
<message name="boring bar">boring bar</message>
|
||||||
|
<message name="boring turning">boring turning</message>
|
||||||
|
<message name="bullnose end mill">bullnose end mill</message>
|
||||||
|
<message name="carbide">carbide</message>
|
||||||
|
<message name="center">center</message>
|
||||||
|
<message name="center drill">center drill</message>
|
||||||
|
<message name="ceramics">ceramics</message>
|
||||||
|
<message name="chamfer mill">chamfer mill</message>
|
||||||
|
<message name="computer">computer</message>
|
||||||
|
<message name="control">control</message>
|
||||||
|
<message name="coolant air">coolant air</message>
|
||||||
|
<message name="coolant air through tool">coolant air through tool</message>
|
||||||
|
<message name="coolant flood">coolant flood</message>
|
||||||
|
<message name="coolant flood and mist">coolant flood and mist</message>
|
||||||
|
<message name="coolant flood and through tool">coolant flood and through tool</message>
|
||||||
|
<message name="coolant mist">coolant mist</message>
|
||||||
|
<message name="coolant off">coolant off</message>
|
||||||
|
<message name="coolant suction">coolant suction</message>
|
||||||
|
<message name="coolant through tool">coolant through tool</message>
|
||||||
|
<message name="counterbore">counterbore</message>
|
||||||
|
<message name="countersink">countersink</message>
|
||||||
|
<message name="custom turning">custom turning</message>
|
||||||
|
<message name="deg">deg</message>
|
||||||
|
<message name="description">description</message>
|
||||||
|
<message name="dovetail mill">dovetail mill</message>
|
||||||
|
<message name="drill">drill</message>
|
||||||
|
<message name="face mill">face mill</message>
|
||||||
|
<message name="flat end mill">flat end mill</message>
|
||||||
|
<message name="form mill">form mill</message>
|
||||||
|
<message name="ft/min">ft/min</message>
|
||||||
|
<message name="general turning">general turning</message>
|
||||||
|
<message name="grinder">grinder</message>
|
||||||
|
<message name="groove turning">groove turning</message>
|
||||||
|
<message name="high-speed steel">high-speed steel</message>
|
||||||
|
<message name="holder">holder</message>
|
||||||
|
<message name="home">home</message>
|
||||||
|
<message name="in">in</message>
|
||||||
|
<message name="invalid">invalid</message>
|
||||||
|
<message name="invalid coolant">invalid coolant</message>
|
||||||
|
<message name="inverse wear">inverse wear</message>
|
||||||
|
<message name="laser cutter">laser cutter</message>
|
||||||
|
<message name="left">left</message>
|
||||||
|
<message name="left hand tap">left hand tap</message>
|
||||||
|
<message name="lollipop mill">lollipop mill</message>
|
||||||
|
<message name="m/min">m/min</message>
|
||||||
|
<message name="mm">mm</message>
|
||||||
|
<message name="model">model</message>
|
||||||
|
<message name="not supported">not supported</message>
|
||||||
|
<message name="radius mill">radius mill</message>
|
||||||
|
<message name="reamer">reamer</message>
|
||||||
|
<message name="right">right</message>
|
||||||
|
<message name="right hand tap">right hand tap</message>
|
||||||
|
<message name="rpm">rpm</message>
|
||||||
|
<message name="slot mill">slot mill</message>
|
||||||
|
<message name="spot drill">spot drill</message>
|
||||||
|
<message name="tapered mill">tapered mill</message>
|
||||||
|
<message name="thread turning">thread turning</message>
|
||||||
|
<message name="ti coated">ti coated</message>
|
||||||
|
<message name="tolerance">tolerance</message>
|
||||||
|
<message name="turn">turn</message>
|
||||||
|
<message name="unit">unit</message>
|
||||||
|
<message name="unknown tool type">unknown tool type</message>
|
||||||
|
<message name="unspecified">unspecified</message>
|
||||||
|
<message name="vendor">vendor</message>
|
||||||
|
<message name="water jet">water jet</message>
|
||||||
|
<message name="wear">wear</message>
|
||||||
|
<message name="welder">welder</message>
|
||||||
|
<message name="wire">wire</message>
|
||||||
|
</locale>
|
||||||
2776
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/datron mcr.cps
Normal file
2776
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/datron mcr.cps
Normal file
File diff suppressed because it is too large
Load Diff
1980
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/denford.cps
Normal file
1980
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/denford.cps
Normal file
File diff suppressed because it is too large
Load Diff
1807
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/dialog 112.cps
Normal file
1807
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/dialog 112.cps
Normal file
File diff suppressed because it is too large
Load Diff
1055
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/dump.cps
Normal file
1055
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/dump.cps
Normal file
File diff suppressed because it is too large
Load Diff
1015
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/dynapath.cps
Normal file
1015
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/dynapath.cps
Normal file
File diff suppressed because it is too large
Load Diff
2342
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/eding.cps
Normal file
2342
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/eding.cps
Normal file
File diff suppressed because it is too large
Load Diff
2395
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/emc.cps
Normal file
2395
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/emc.cps
Normal file
File diff suppressed because it is too large
Load Diff
1206
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/eztrak conversational.cps
Normal file
1206
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/eztrak conversational.cps
Normal file
File diff suppressed because it is too large
Load Diff
2382
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/fadal.cps
Normal file
2382
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/fadal.cps
Normal file
File diff suppressed because it is too large
Load Diff
2378
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/fagor.cps
Normal file
2378
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/fagor.cps
Normal file
File diff suppressed because it is too large
Load Diff
3584
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/fanuc incremental.cps
Normal file
3584
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/fanuc incremental.cps
Normal file
File diff suppressed because it is too large
Load Diff
2119
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/fanuc turning.cps
Normal file
2119
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/fanuc turning.cps
Normal file
File diff suppressed because it is too large
Load Diff
4214
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/fanuc.cps
Normal file
4214
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/fanuc.cps
Normal file
File diff suppressed because it is too large
Load Diff
1336
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/flexicam.cps
Normal file
1336
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/flexicam.cps
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,430 @@
|
|||||||
|
/**
|
||||||
|
Copyright (C) 2012-2021 by Autodesk, Inc.
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Generative Machining APT post processor configuration.
|
||||||
|
|
||||||
|
$Revision: 43882 a148639d401c1626f2873b948fb6d996d3bc60aa $
|
||||||
|
$Date: 2022-04-12 21:31:49 $
|
||||||
|
|
||||||
|
FORKID {CCD0BC6D-B3F5-48cc-9C89-FA954D4BACE0}
|
||||||
|
*/
|
||||||
|
|
||||||
|
description = "Generative Machining APT";
|
||||||
|
vendor = "Autodesk";
|
||||||
|
vendorUrl = "http://www.autodesk.com";
|
||||||
|
legal = "Copyright (C) 2012-2021 by Autodesk, Inc.";
|
||||||
|
certificationLevel = 2;
|
||||||
|
minimumRevision = 45702;
|
||||||
|
|
||||||
|
longDescription = "Post for Generative Machining APT.";
|
||||||
|
|
||||||
|
unit = ORIGINAL_UNIT; // do not map unit
|
||||||
|
extension = "apt";
|
||||||
|
setCodePage("ansi");
|
||||||
|
|
||||||
|
capabilities = CAPABILITY_INTERMEDIATE;
|
||||||
|
|
||||||
|
// user-defined properties
|
||||||
|
properties = {
|
||||||
|
optionalStop: {
|
||||||
|
title : "Optional stop",
|
||||||
|
description: "Outputs optional stop code during when necessary in the code.",
|
||||||
|
group : "preferences",
|
||||||
|
type : "boolean",
|
||||||
|
value : true,
|
||||||
|
scope : "post"
|
||||||
|
},
|
||||||
|
useParkPosition: {
|
||||||
|
title : "Go home",
|
||||||
|
description: "Go home at the end of the program.",
|
||||||
|
group : "homePositions",
|
||||||
|
type : "boolean",
|
||||||
|
value : true,
|
||||||
|
scope : "post"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
allowHelicalMoves = true;
|
||||||
|
allowedCircularPlanes = undefined; // allow any circular motion
|
||||||
|
|
||||||
|
var xyzFormat = createFormat({decimals:6}); // spatial
|
||||||
|
var aFormat = createFormat({decimals:6, scale:DEG}); // angle
|
||||||
|
var feedFormat = createFormat({decimals:1}); // feed
|
||||||
|
var rpmFormat = createFormat({decimals:0}); // spindle speed
|
||||||
|
var secFormat = createFormat({decimals:3}); // time
|
||||||
|
|
||||||
|
// collected state
|
||||||
|
var feedUnit;
|
||||||
|
var radiusCompensationActive = false;
|
||||||
|
var previousFeed;
|
||||||
|
|
||||||
|
/* Returns the specified string without any invalid characters. */
|
||||||
|
function toNiceString(text) {
|
||||||
|
return filterText(translateText(text, ":", "."), "[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789(.,)/-+*= \t]").substr(0, 73);
|
||||||
|
}
|
||||||
|
|
||||||
|
function writeComment(text) {
|
||||||
|
writeln("PPRINT/'" + toNiceString(text) + "'");
|
||||||
|
}
|
||||||
|
|
||||||
|
function onOpen() {
|
||||||
|
writeln("PARTNO/'" + toNiceString(programName) + "'");
|
||||||
|
|
||||||
|
writeln("UNITS/" + ((unit == IN) ? "INCHES" : "MM"));
|
||||||
|
feedUnit = (unit == IN) ? "IPM" : "MMPM";
|
||||||
|
|
||||||
|
writeComment(programComment);
|
||||||
|
|
||||||
|
var machineId = machineConfiguration.getModel();
|
||||||
|
if (machineId) {
|
||||||
|
writeln("MACHIN/" + machineId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onComment(comment) {
|
||||||
|
writeComment(comment);
|
||||||
|
}
|
||||||
|
|
||||||
|
var mapCommand = {
|
||||||
|
COMMAND_STOP : "STOP",
|
||||||
|
COMMAND_OPTIONAL_STOP : "OPSTOP",
|
||||||
|
COMMAND_STOP_SPINDLE : "SPINDL/ON",
|
||||||
|
COMMAND_START_SPINDLE : "SPINDL/OFF",
|
||||||
|
COMMAND_SPINDLE_CLOCKWISE : "SPINDL/CLW",
|
||||||
|
COMMAND_SPINDLE_COUNTERCLOCKWISE: "SPINDL/CCLW"
|
||||||
|
};
|
||||||
|
|
||||||
|
function onCommand(command) {
|
||||||
|
switch (command) {
|
||||||
|
case COMMAND_LOCK_MULTI_AXIS:
|
||||||
|
return;
|
||||||
|
case COMMAND_UNLOCK_MULTI_AXIS:
|
||||||
|
return;
|
||||||
|
case COMMAND_BREAK_CONTROL:
|
||||||
|
return;
|
||||||
|
case COMMAND_TOOL_MEASURE:
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!mapCommand[command]) {
|
||||||
|
warning("Unsupported command: " + getCommandStringId(command));
|
||||||
|
writeComment("Unsupported command: " + getCommandStringId(command));
|
||||||
|
} else {
|
||||||
|
writeln(mapCommand[command]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onMachineCommand(command) {
|
||||||
|
writeln("AUXFUN/" + command);
|
||||||
|
}
|
||||||
|
|
||||||
|
function onSection() {
|
||||||
|
writeln("MODE/" + isMilling() ? "MILL" : "TURN"); // first statement for an operation
|
||||||
|
// writeComment(...); // operation comment
|
||||||
|
|
||||||
|
if (isTurning()) {
|
||||||
|
writeln("HEAD/1");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (machineConfiguration.hasHomePositionX() && machineConfiguration.hasHomePositionY()) {
|
||||||
|
writeln(
|
||||||
|
"FROM/" + xyzFormat.format(machineConfiguration.getHomePositionX()) + ", " +
|
||||||
|
xyzFormat.format(machineConfiguration.getHomePositionY()) + ", " +
|
||||||
|
xyzFormat.format(machineConfiguration.getRetractPlane())
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (getProperty("optionalStop")) {
|
||||||
|
writeln("OPSTOP");
|
||||||
|
}
|
||||||
|
|
||||||
|
var t = tool.number;
|
||||||
|
var p = 0;
|
||||||
|
var l = tool.bodyLength;
|
||||||
|
var o = tool.lengthOffset;
|
||||||
|
writeln("LOADTL/" + t + ", IN, " + p + ", LENGTH, " + l + ", OSETNO, " + o);
|
||||||
|
|
||||||
|
var d = tool.diameter;
|
||||||
|
var r = tool.cornerRadius;
|
||||||
|
var e = tool.diameter / 2 - tool.cornerRadius;
|
||||||
|
var f = tool.cornerRadius;
|
||||||
|
var a = 0; // tool.tipAngle;
|
||||||
|
var b = tool.taperAngle;
|
||||||
|
var h = tool.shoulderLength;
|
||||||
|
writeln("CUTTER/" + xyzFormat.format(d) + ", " + xyzFormat.format(r) + ", " + xyzFormat.format(e) + ", " + xyzFormat.format(f) + ", " + aFormat.format(a) + ", " + aFormat.format(b) + ", " + xyzFormat.format(h));
|
||||||
|
|
||||||
|
if (tool.description) {
|
||||||
|
writeComment(tool.description);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currentSection.isMultiAxis()) {
|
||||||
|
writeln("MULTAX/ON");
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
writeln("RAPID");
|
||||||
|
var eulerXYZ = currentSection.workPlane.eulerXYZ;
|
||||||
|
writeln("ROTABL/" + aFormat.format(eulerXYZ.x) + ", AAXIS");
|
||||||
|
writeln("ROTABL/" + aFormat.format(eulerXYZ.y) + ", BAXIS");
|
||||||
|
writeln("ROTABL/" + aFormat.format(eulerXYZ.z) + ", CAXIS");
|
||||||
|
*/
|
||||||
|
|
||||||
|
writeln("ORIGIN/" + xyzFormat.format(currentSection.workOrigin.x) + ", " + xyzFormat.format(currentSection.workOrigin.y) + ", " + xyzFormat.format(currentSection.workOrigin.z));
|
||||||
|
|
||||||
|
// writeln("OFSTNO/" + tool.lengthOffset); // not used
|
||||||
|
|
||||||
|
if (isMilling()) {
|
||||||
|
writeln("SPINDL/" + rpmFormat.format(spindleSpeed) + ", RPM, " + (tool.clockwise ? "CLW" : "CCLW"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isTurning()) {
|
||||||
|
writeln(
|
||||||
|
"SPINDL/" + rpmFormat.format(spindleSpeed) + ", " + ((unit == IN) ? "SFM" : "SMM") + ", " + (tool.clockwise ? "CLW" : "CCLW")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tool.coolant != COOLANT_OFF) {
|
||||||
|
var mapCoolantTable = new Table(
|
||||||
|
["OFF", "FLOOD", "MIST", "THRU", "TAP"],
|
||||||
|
{initial:COOLANT_OFF, force:true},
|
||||||
|
"Invalid coolant mode"
|
||||||
|
);
|
||||||
|
if (mapCoolantTable.lookup(tool.coolant)) {
|
||||||
|
writeln("COOLNT/" + mapCoolantTable.lookup(tool.coolant));
|
||||||
|
} else {
|
||||||
|
warning(localize("Coolant not supported."));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onDwell(seconds) {
|
||||||
|
writeln("DELAY/" + secFormat.format(seconds)); // in seconds
|
||||||
|
}
|
||||||
|
|
||||||
|
function onParameter(name, value) {
|
||||||
|
}
|
||||||
|
|
||||||
|
function onRadiusCompensation() {
|
||||||
|
switch (radiusCompensation) {
|
||||||
|
case RADIUS_COMPENSATION_OFF:
|
||||||
|
if (radiusCompensationActive) {
|
||||||
|
radiusCompensationActive = false;
|
||||||
|
writeln("CUTCOM/OFF");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case RADIUS_COMPENSATION_LEFT:
|
||||||
|
radiusCompensationActive = true;
|
||||||
|
writeln("CUTCOM/ON, LEFT" + conditional(tool.diameterOffset != 0, ", " + tool.diameterOffset));
|
||||||
|
break;
|
||||||
|
case RADIUS_COMPENSATION_RIGHT:
|
||||||
|
radiusCompensationActive = true;
|
||||||
|
writeln("CUTCOM/ON, RIGHT" + conditional(tool.diameterOffset != 0, ", " + tool.diameterOffset));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onRapid(x, y, z) {
|
||||||
|
writeln("RAPID");
|
||||||
|
writeln("GOTO/" + xyzFormat.format(x) + ", " + xyzFormat.format(y) + ", " + xyzFormat.format(z));
|
||||||
|
}
|
||||||
|
|
||||||
|
function onLinear(x, y, z, feed) {
|
||||||
|
if (feed != previousFeed) {
|
||||||
|
previousFeed = feed;
|
||||||
|
writeln("FEDRAT/" + feedFormat.format(feed) + ", " + feedUnit);
|
||||||
|
}
|
||||||
|
writeln("GOTO/" + xyzFormat.format(x) + ", " + xyzFormat.format(y) + ", " + xyzFormat.format(z));
|
||||||
|
}
|
||||||
|
|
||||||
|
function onRapid5D(x, y, z, dx, dy, dz) {
|
||||||
|
writeln("RAPID");
|
||||||
|
writeln("GOTO/" + xyzFormat.format(x) + ", " + xyzFormat.format(y) + ", " + xyzFormat.format(z) + ", " + xyzFormat.format(dx) + ", " + xyzFormat.format(dy) + ", " + xyzFormat.format(dz));
|
||||||
|
}
|
||||||
|
|
||||||
|
function onLinear5D(x, y, z, dx, dy, dz, feed) {
|
||||||
|
if (feed != previousFeed) {
|
||||||
|
previousFeed = feed;
|
||||||
|
writeln("FEDRAT/" + feedFormat.format(feed) + ", " + feedUnit);
|
||||||
|
}
|
||||||
|
writeln("GOTO/" + xyzFormat.format(x) + ", " + xyzFormat.format(y) + ", " + xyzFormat.format(z) + ", " + xyzFormat.format(dx) + ", " + xyzFormat.format(dy) + ", " + xyzFormat.format(dz));
|
||||||
|
}
|
||||||
|
|
||||||
|
function onCircular(clockwise, cx, cy, cz, x, y, z, feed) {
|
||||||
|
if (feed != previousFeed) {
|
||||||
|
previousFeed = feed;
|
||||||
|
writeln("FEDRAT/" + feedFormat.format(feed) + ", " + feedUnit);
|
||||||
|
}
|
||||||
|
|
||||||
|
var n = getCircularNormal();
|
||||||
|
if (clockwise) {
|
||||||
|
n = Vector.product(n, -1);
|
||||||
|
}
|
||||||
|
writeln(
|
||||||
|
"MOVARC/" + xyzFormat.format(cx) + ", " + xyzFormat.format(cy) + ", " + xyzFormat.format(cz) + ", " + xyzFormat.format(n.x) + ", " + xyzFormat.format(n.y) + ", " + xyzFormat.format(n.z) + ", " + xyzFormat.format(getCircularRadius()) + ", ANGLE, " + aFormat.format(getCircularSweep())
|
||||||
|
);
|
||||||
|
writeln("GOTO/" + xyzFormat.format(x) + ", " + xyzFormat.format(y) + ", " + xyzFormat.format(z));
|
||||||
|
}
|
||||||
|
|
||||||
|
function onCycle() {
|
||||||
|
}
|
||||||
|
|
||||||
|
function onCyclePoint(x, y, z) {
|
||||||
|
if (isFirstCyclePoint()) {
|
||||||
|
var d = cycle.depth;
|
||||||
|
var f = cycle.feedrate;
|
||||||
|
var c = cycle.clearance - cycle.bottom;
|
||||||
|
var r = cycle.clearance - cycle.retract;
|
||||||
|
var q = cycle.dwell;
|
||||||
|
var i1 = cycle.incrementalDepth; // for pecking
|
||||||
|
|
||||||
|
var statement;
|
||||||
|
|
||||||
|
if (cycle.clearance != undefined) {
|
||||||
|
var p = getCurrentPosition();
|
||||||
|
if (p.z < cycle.clearance) {
|
||||||
|
writeln("RAPID");
|
||||||
|
writeln("GOTO/" + xyzFormat.format(p.x) + ", " + xyzFormat.format(p.y) + ", " + xyzFormat.format(cycle.clearance));
|
||||||
|
setCurrentPositionZ(cycle.clearance);
|
||||||
|
writeln("RAPID");
|
||||||
|
writeln("GOTO/" + xyzFormat.format(x) + ", " + xyzFormat.format(y) + ", " + xyzFormat.format(cycle.clearance));
|
||||||
|
setCurrentPositionX(x);
|
||||||
|
setCurrentPositionY(y);
|
||||||
|
} else {
|
||||||
|
writeln("RAPID");
|
||||||
|
writeln("GOTO/" + xyzFormat.format(x) + ", " + xyzFormat.format(y) + ", " + xyzFormat.format(p.z));
|
||||||
|
setCurrentPositionX(x);
|
||||||
|
setCurrentPositionY(y);
|
||||||
|
writeln("RAPID");
|
||||||
|
writeln("GOTO/" + xyzFormat.format(x) + ", " + xyzFormat.format(y) + ", " + xyzFormat.format(cycle.clearance));
|
||||||
|
setCurrentPositionZ(cycle.clearance);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (cycleType) {
|
||||||
|
case "drilling":
|
||||||
|
statement = "CYCLE/DRILL, " + xyzFormat.format(d) + ", " + feedUnit + ", " + feedFormat.format(f) + ", " + xyzFormat.format(c);
|
||||||
|
if (r > 0) {
|
||||||
|
statement += ", RAPTO, " + xyzFormat.format(r);
|
||||||
|
}
|
||||||
|
if (q > 0) {
|
||||||
|
statement += ", DWELL, " + secFormat.format(q);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "counter-boring":
|
||||||
|
statement = "CYCLE/DRILL, " + xyzFormat.format(d) + ", " + feedUnit + ", " + feedFormat.format(f) + ", " + xyzFormat.format(c);
|
||||||
|
if (r > 0) {
|
||||||
|
statement += ", RAPTO, " + xyzFormat.format(r);
|
||||||
|
}
|
||||||
|
if (q > 0) {
|
||||||
|
statement += ", DWELL, " + xyzFormat.format(q);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "reaming":
|
||||||
|
statement = "CYCLE/REAM, " + xyzFormat.format(d) + ", " + feedUnit + ", " + feedFormat.format(f) + ", " + xyzFormat.format(c);
|
||||||
|
if (r > 0) {
|
||||||
|
statement += ", RAPTO, " + xyzFormat.format(r);
|
||||||
|
}
|
||||||
|
if (q > 0) {
|
||||||
|
statement += ", DWELL, " + secFormat.format(q);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "boring":
|
||||||
|
statement = "CYCLE/BORE, " + xyzFormat.format(d) + ", " + feedUnit + ", " + feedFormat.format(f) + ", " + xyzFormat.format(c);
|
||||||
|
if (r > 0) {
|
||||||
|
statement += ", RAPTO, " + xyzFormat.format(r);
|
||||||
|
}
|
||||||
|
statement += ", ORIENT, " + aFormat.format(cycle.compensatedShiftOrientation);
|
||||||
|
if (q > 0) {
|
||||||
|
statement += ", DWELL, " + secFormat.format(q);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "fine-boring":
|
||||||
|
statement = "CYCLE/BORE, " + xyzFormat.format(d) + ", " + feedUnit + ", " + feedFormat.format(f) + ", " + xyzFormat.format(c) + ", " + xyzFormat.format(cycle.shift);
|
||||||
|
if (r > 0) {
|
||||||
|
statement += ", RAPTO, " + xyzFormat.format(r);
|
||||||
|
}
|
||||||
|
statement += ", ORIENT, " + aFormat.format(cycle.compensatedShiftOrientation);
|
||||||
|
if (q > 0) {
|
||||||
|
statement += ", DWELL, " + secFormat.format(q);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "chip-breaking":
|
||||||
|
statement = "CYCLE/BRKCHP, " + xyzFormat.format(d) + ", INCR, " + xyzFormat.format(i1) + ", " + feedUnit + ", " + feedFormat.format(f) + ", " + xyzFormat.format(c);
|
||||||
|
if (r > 0) {
|
||||||
|
statement += ", RAPTO, " + xyzFormat.format(r);
|
||||||
|
}
|
||||||
|
if (q > 0) {
|
||||||
|
statement += ", DWELL, " + secFormat.format(q);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "deep-drilling":
|
||||||
|
statement = "CYCLE/DEEP, " + xyzFormat.format(d) + ", INCR, " + xyzFormat.format(i1) + ", " + feedUnit + ", " + feedFormat.format(f) + ", " + xyzFormat.format(c);
|
||||||
|
if (r > 0) {
|
||||||
|
statement += ", RAPTO, " + xyzFormat.format(r);
|
||||||
|
}
|
||||||
|
if (q > 0) {
|
||||||
|
statement += ", DWELL, " + secFormat.format(q);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "tapping":
|
||||||
|
if (tool.type == TOOL_TAP_LEFT_HAND) {
|
||||||
|
expandCyclePoint(x, y, z);
|
||||||
|
} else {
|
||||||
|
statement = "CYCLE/TAP, " + xyzFormat.format(d) + ", " + feedUnit + ", " + feedFormat.format(f) + ", " + xyzFormat.format(c);
|
||||||
|
if (r > 0) {
|
||||||
|
statement += ", RAPTO, " + xyzFormat.format(r);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "right-tapping":
|
||||||
|
statement = "CYCLE/TAP, " + xyzFormat.format(d) + ", " + feedUnit + ", " + feedFormat.format(f) + ", " + xyzFormat.format(c);
|
||||||
|
if (r > 0) {
|
||||||
|
statement += ", RAPTO, " + xyzFormat.format(r);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
expandCyclePoint(x, y, z);
|
||||||
|
}
|
||||||
|
writeln(statement);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!cycleExpanded) {
|
||||||
|
// TAG: what is z relative to - stock?
|
||||||
|
writeln("GOTO/" + xyzFormat.format(x) + ", " + xyzFormat.format(y) + ", " + xyzFormat.format(cycle.bottom + cycle.depth));
|
||||||
|
} else {
|
||||||
|
expandCyclePoint(x, y, z);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onCycleEnd() {
|
||||||
|
if (!cycleExpanded) {
|
||||||
|
writeln("CYCLE/OFF");
|
||||||
|
}
|
||||||
|
writeln("RAPID");
|
||||||
|
var p = getCurrentPosition();
|
||||||
|
writeln("GOTO/" + xyzFormat.format(p.x) + ", " + xyzFormat.format(p.y) + ", " + xyzFormat.format(cycle.clearance));
|
||||||
|
}
|
||||||
|
|
||||||
|
function onSectionEnd() {
|
||||||
|
if (tool.coolant != COOLANT_OFF) {
|
||||||
|
writeln("COOLNT/OFF");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currentSection.isMultiAxis()) {
|
||||||
|
writeln("MULTAX/OFF");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onClose() {
|
||||||
|
if (getProperty("useParkPosition")) {
|
||||||
|
writeln("GOHOME");
|
||||||
|
}
|
||||||
|
|
||||||
|
writeln("END");
|
||||||
|
writeln("FINI");
|
||||||
|
}
|
||||||
|
|
||||||
|
function setProperty(property, value) {
|
||||||
|
properties[property].current = value;
|
||||||
|
}
|
||||||
552
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/generic fff machine.cps
Normal file
552
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/generic fff machine.cps
Normal file
@ -0,0 +1,552 @@
|
|||||||
|
/**
|
||||||
|
Copyright (C) 2012-2025 by Autodesk, Inc.
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
3D additive printer post configuration.
|
||||||
|
|
||||||
|
$Revision: 45583 10f6400eaf1c75a27c852ee82b57479e7a9134c0 $
|
||||||
|
$Date: 2025-08-21 13:23:15 $
|
||||||
|
|
||||||
|
FORKID {A316FBC4-FA6E-41C5-A347-3D94F72F5D06}
|
||||||
|
*/
|
||||||
|
|
||||||
|
description = "Generic FFF Machine";
|
||||||
|
vendor = "Autodesk";
|
||||||
|
vendorUrl = "http://www.autodesk.com";
|
||||||
|
legal = "Copyright (C) 2012-2025 by Autodesk, Inc.";
|
||||||
|
certificationLevel = 2;
|
||||||
|
minimumRevision = 45917;
|
||||||
|
|
||||||
|
longDescription = "Template post for exporting toolpath to a generic FFF printer in gcode format";
|
||||||
|
|
||||||
|
extension = "gcode";
|
||||||
|
setCodePage("ascii");
|
||||||
|
|
||||||
|
capabilities = CAPABILITY_ADDITIVE;
|
||||||
|
tolerance = spatial(0.002, MM);
|
||||||
|
|
||||||
|
highFeedrate = toPreciseUnit(6000, MM);
|
||||||
|
minimumChordLength = spatial(0.25, MM);
|
||||||
|
minimumCircularRadius = spatial(0.4, MM);
|
||||||
|
maximumCircularRadius = spatial(1000, MM);
|
||||||
|
minimumCircularSweep = toRad(0.01);
|
||||||
|
maximumCircularSweep = toRad(180);
|
||||||
|
allowHelicalMoves = false; // disable helical support
|
||||||
|
allowSpiralMoves = false; // disable spiral support
|
||||||
|
allowedCircularPlanes = 1 << PLANE_XY; // allow XY circular motion
|
||||||
|
|
||||||
|
// user-defined properties
|
||||||
|
|
||||||
|
// included properties
|
||||||
|
if (typeof properties != "object") {
|
||||||
|
properties = {};
|
||||||
|
}
|
||||||
|
if (typeof groupDefinitions != "object") {
|
||||||
|
groupDefinitions = {};
|
||||||
|
}
|
||||||
|
// >>>>> INCLUDED FROM ../common/propertyTemperatureTower.cpi
|
||||||
|
properties._trigger = {
|
||||||
|
title : "Trigger",
|
||||||
|
description: "Specifies whether to use the Z-height or layer number as the trigger to change temperature of the active Extruder.",
|
||||||
|
type : "enum",
|
||||||
|
values : [
|
||||||
|
{title:"Disabled", id:"disabled"},
|
||||||
|
{title:"by Height", id:"height"},
|
||||||
|
{title:"by Layer", id:"layer"}
|
||||||
|
],
|
||||||
|
value: "disabled",
|
||||||
|
scope: "post",
|
||||||
|
group: "temperatureTower"
|
||||||
|
};
|
||||||
|
properties._triggerValue = {
|
||||||
|
title : "Trigger Value",
|
||||||
|
description: "This number specifies either the Z-height or the layer number increment on when a change should be triggered.",
|
||||||
|
type : "number",
|
||||||
|
value : 10,
|
||||||
|
scope : "post",
|
||||||
|
group : "temperatureTower"
|
||||||
|
};
|
||||||
|
properties.tempStart = {
|
||||||
|
title : "Start Temperature",
|
||||||
|
description: "Specifies the starting temperature for the active Extruder (degrees C). Note that the temperature specified in the print settings will be overridden by this value.",
|
||||||
|
type : "integer",
|
||||||
|
value : 190,
|
||||||
|
range : [50, 450],
|
||||||
|
scope : "post",
|
||||||
|
group : "temperatureTower"
|
||||||
|
};
|
||||||
|
properties.tempInterval = {
|
||||||
|
title : "Temperature Interval",
|
||||||
|
description: "Every step, increase the temperature of the active Extruder by this amount (degrees C).",
|
||||||
|
type : "integer",
|
||||||
|
value : 5,
|
||||||
|
range : [-30, 30],
|
||||||
|
scope : "post",
|
||||||
|
group : "temperatureTower"
|
||||||
|
};
|
||||||
|
|
||||||
|
groupDefinitions.temperatureTower = {
|
||||||
|
title : "Temperature Tower",
|
||||||
|
description: "Temperature Towers are used to test new filaments in order to identify the best printing temperature. " +
|
||||||
|
"When utilized, this functionality generates a Gcode file where the temperature increases by a set amount, every step in height or layer number.",
|
||||||
|
collapsed: true,
|
||||||
|
order : 0
|
||||||
|
};
|
||||||
|
// <<<<< INCLUDED FROM ../common/propertyTemperatureTower.cpi
|
||||||
|
// >>>>> INCLUDED FROM ../common/propertyRelativeExtrusion.cpi
|
||||||
|
properties.relativeExtrusion = {
|
||||||
|
title : "Relative extrusion mode",
|
||||||
|
description: "Select the filament extrusion mode, either absolute or relative.",
|
||||||
|
type : "boolean",
|
||||||
|
value : true,
|
||||||
|
scope : "post"
|
||||||
|
};
|
||||||
|
// <<<<< INCLUDED FROM ../common/propertyRelativeExtrusion.cpi
|
||||||
|
|
||||||
|
var gFormat = createFormat({prefix:"G", width:1, decimals:0});
|
||||||
|
var mFormat = createFormat({prefix:"M", width:2, zeropad:true, decimals:0});
|
||||||
|
var tFormat = createFormat({prefix:"T", width:1, decimals:0});
|
||||||
|
var integerFormat = createFormat({decimals:0});
|
||||||
|
var gMotionModal = createOutputVariable({control:CONTROL_FORCE}, gFormat); // modal group 1 - G0-G3
|
||||||
|
var gAbsIncModal = createOutputVariable({}, gFormat); // modal group 3 - G90-91
|
||||||
|
|
||||||
|
// Specify the required commands for your printer below.
|
||||||
|
var commands = {
|
||||||
|
extruderChangeCommand : undefined, // command to change the extruder
|
||||||
|
setExtruderTemperature: mFormat.format(104), // command to set the extruder temperature
|
||||||
|
waitExtruder : mFormat.format(109), // wait command for the extruder temperature
|
||||||
|
setBedTemperature : mFormat.format(140), // command to set the bed temperature
|
||||||
|
waitBed : mFormat.format(190), // wait command for the bed temperature
|
||||||
|
reportTemperatures : undefined, // command to report the temperatures to the printer
|
||||||
|
fan : {on:mFormat.format(106), off:mFormat.format(107)}, // command turn the fan on/off
|
||||||
|
extrusionMode : {relative:mFormat.format(83), absolute:mFormat.format(82)} // commands for relative / absolute filament extrusion mode
|
||||||
|
};
|
||||||
|
|
||||||
|
var settings = {
|
||||||
|
useG0 : true, // specifies to either use G0 or G1 commands for rapid movements
|
||||||
|
skipParkPosition: false, // set to true to avoid output of the park position at the end of the program
|
||||||
|
comments : {
|
||||||
|
permittedCommentChars: " abcdefghijklmnopqrstuvwxyz0123456789.,=_-*+:/", // letters are not case sensitive, use option 'outputFormat' below. Set to 'undefined' to allow any character
|
||||||
|
prefix : ";", // specifies the prefix for the comment
|
||||||
|
suffix : "", // specifies the suffix for the comment
|
||||||
|
outputFormat : "ignoreCase", // can be set to "upperCase", "lowerCase" and "ignoreCase". Set to "ignoreCase" to write comments without upper/lower case formatting
|
||||||
|
maximumLineLength : 80 // the maximum number of characters allowed in a line
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// collected state
|
||||||
|
var activeExtruder = 0; // track the active extruder.
|
||||||
|
|
||||||
|
function onOpen() {
|
||||||
|
setFormats(unit);
|
||||||
|
initializeMachineParameters();
|
||||||
|
if (typeof writeProgramHeader == "function") {
|
||||||
|
writeProgramHeader();
|
||||||
|
}
|
||||||
|
writeBlock(gFormat.format(unit == MM ? 21 : 20)); // set unit
|
||||||
|
}
|
||||||
|
|
||||||
|
function onSection() {
|
||||||
|
writeBlock(gAbsIncModal.format(90)); // absolute spatial coordinates
|
||||||
|
writeBlock(getCode(getProperty("relativeExtrusion") ? commands.extrusionMode.relative : commands.extrusionMode.absolute));
|
||||||
|
|
||||||
|
writeBlock(gFormat.format(28), zOutput.format(0)); // homing Z
|
||||||
|
|
||||||
|
// lower build plate before homing in XY
|
||||||
|
feedOutput.reset();
|
||||||
|
var initialPosition = getFramePosition(currentSection.getInitialPosition());
|
||||||
|
writeBlock(gMotionModal.format(1), zOutput.format(initialPosition.z), feedOutput.format(highFeedrate));
|
||||||
|
writeBlock(gFormat.format(28), xOutput.format(0), yOutput.format(0)); // homing XY
|
||||||
|
writeBlock(gFormat.format(92), eOutput.format(0));
|
||||||
|
forceXYZE();
|
||||||
|
}
|
||||||
|
|
||||||
|
function onClose() {
|
||||||
|
writeComment(localize("END OF GCODE"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// >>>>> INCLUDED FROM ../common/onBedTemp.cpi
|
||||||
|
function onBedTemp(temp, wait) {
|
||||||
|
if (wait) {
|
||||||
|
writeBlock(getCode(commands.reportTemperatures));
|
||||||
|
writeBlock(getCode(commands.waitBed), sOutput.format(temp));
|
||||||
|
} else {
|
||||||
|
writeBlock(getCode(commands.setBedTemperature), sOutput.format(temp));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// <<<<< INCLUDED FROM ../common/onBedTemp.cpi
|
||||||
|
// >>>>> INCLUDED FROM ../common/onExtruderTemp.cpi
|
||||||
|
function onExtruderTemp(temp, wait, id) {
|
||||||
|
if (typeof executeTempTowerFeatures == "function" && getProperty("_trigger") != undefined) {
|
||||||
|
if (getProperty("_trigger") != "disabled" && (getCurrentPosition().z == 0)) {
|
||||||
|
temp = getProperty("tempStart"); // override temperature with the starting temperature for the temp tower feature
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (wait) {
|
||||||
|
writeBlock(getCode(commands.reportTemperatures));
|
||||||
|
writeBlock(getCode(commands.waitExtruder), sOutput.format(temp), tFormat.format(id));
|
||||||
|
} else {
|
||||||
|
writeBlock(getCode(commands.setExtruderTemperature), sOutput.format(temp), tFormat.format(id));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// <<<<< INCLUDED FROM ../common/onExtruderTemp.cpi
|
||||||
|
// >>>>> INCLUDED FROM ../common/onExtruderChange.cpi
|
||||||
|
function onExtruderChange(id) {
|
||||||
|
if (id > machineConfiguration.getNumberExtruders()) {
|
||||||
|
error(subst(localize("This printer does not support the extruder '%1'."), integerFormat.format(id)));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
writeBlock(getCode(commands.extruderChangeCommand), tFormat.format(id));
|
||||||
|
activeExtruder = id;
|
||||||
|
forceXYZE();
|
||||||
|
}
|
||||||
|
// <<<<< INCLUDED FROM ../common/onExtruderChange.cpi
|
||||||
|
// >>>>> INCLUDED FROM ../common/onExtrusionReset.cpi
|
||||||
|
function onExtrusionReset(length) {
|
||||||
|
if (getProperty("relativeExtrusion")) {
|
||||||
|
eOutput.setCurrent(0);
|
||||||
|
}
|
||||||
|
eOutput.reset();
|
||||||
|
writeBlock(gFormat.format(92), eOutput.format(length));
|
||||||
|
}
|
||||||
|
// <<<<< INCLUDED FROM ../common/onExtrusionReset.cpi
|
||||||
|
// >>>>> INCLUDED FROM ../common/onFanSpeed.cpi
|
||||||
|
function onFanSpeed(speed, id) {
|
||||||
|
if (!commands.fan) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (speed == 0) {
|
||||||
|
writeBlock(getCode(commands.fan.off));
|
||||||
|
} else {
|
||||||
|
writeBlock(getCode(commands.fan.on), sOutput.format(speed));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// <<<<< INCLUDED FROM ../common/onFanSpeed.cpi
|
||||||
|
// >>>>> INCLUDED FROM ../common/onLayer.cpi
|
||||||
|
function onLayer(num) {
|
||||||
|
if (typeof executeTempTowerFeatures == "function") {
|
||||||
|
executeTempTowerFeatures(num);
|
||||||
|
}
|
||||||
|
if (num == 1) {
|
||||||
|
writeComment("LAYER_COUNT:" + integerFormat.format(layerCount));
|
||||||
|
}
|
||||||
|
writeComment("LAYER:" + integerFormat.format(num));
|
||||||
|
if (typeof changeFilament == "function" && getProperty("changeLayers") != undefined) {
|
||||||
|
changeFilament(num);
|
||||||
|
}
|
||||||
|
if (typeof pausePrint == "function" && getProperty("pauseLayers") != undefined) {
|
||||||
|
pausePrint(num);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// <<<<< INCLUDED FROM ../common/onLayer.cpi
|
||||||
|
// >>>>> INCLUDED FROM ../common/setFormats.cpi
|
||||||
|
function setFormats(_desiredUnit) {
|
||||||
|
if (_desiredUnit != unit) {
|
||||||
|
writeComment(subst(localize("This printer does not support programs in %1."), unit == IN ? "inches" : "millimeters"));
|
||||||
|
writeComment(localize("The program has been converted to the supported unit."));
|
||||||
|
unit = _desiredUnit;
|
||||||
|
}
|
||||||
|
|
||||||
|
xyzFormat = createFormat({decimals:(unit == MM ? 3 : 4)});
|
||||||
|
feedFormat = createFormat({decimals:(unit == MM ? 0 : 1)});
|
||||||
|
dimensionFormat = createFormat({decimals:(unit == MM ? 3 : 4), zeropad:false, suffix:(unit == MM ? "mm" : "in")});
|
||||||
|
|
||||||
|
xOutput = createOutputVariable({prefix:"X"}, xyzFormat);
|
||||||
|
yOutput = createOutputVariable({prefix:"Y"}, xyzFormat);
|
||||||
|
zOutput = createOutputVariable({prefix:"Z"}, xyzFormat);
|
||||||
|
feedOutput = createOutputVariable({prefix:"F"}, feedFormat);
|
||||||
|
eOutput = createOutputVariable({prefix:"E", type:getProperty("relativeExtrusion") ? TYPE_INCREMENTAL : TYPE_ABSOLUTE}, xyzFormat);
|
||||||
|
sOutput = createOutputVariable({prefix:"S", control:CONTROL_FORCE}, xyzFormat); // parameter temperature or speed
|
||||||
|
iOutput = createOutputVariable({prefix:"I", control:CONTROL_FORCE}, xyzFormat); // circular output
|
||||||
|
jOutput = createOutputVariable({prefix:"J", control:CONTROL_FORCE}, xyzFormat); // circular output
|
||||||
|
if (typeof parseSpatialProperties == "function") {
|
||||||
|
parseSpatialProperties();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// <<<<< INCLUDED FROM ../common/setFormats.cpi
|
||||||
|
// >>>>> INCLUDED FROM ../common/writeProgramHeader.cpi
|
||||||
|
function writeProgramHeader() {
|
||||||
|
if (programName) {
|
||||||
|
writeComment(programName);
|
||||||
|
}
|
||||||
|
if (programComment) {
|
||||||
|
writeComment(programComment);
|
||||||
|
}
|
||||||
|
writeComment(subst(localize("Printer name: %1 %2"), machineConfiguration.getVendor(), machineConfiguration.getModel()));
|
||||||
|
writeComment("TIME:" + integerFormat.format(printTime)); // do not localize
|
||||||
|
writeComment(subst(localize("Print time: %1"), formatCycleTime(printTime)));
|
||||||
|
for (var i = 1; i <= numberOfExtruders; ++i) {
|
||||||
|
writeComment(subst(localize("Extruder %1 material used: %2"), i, dimensionFormat.format(toPreciseUnit(getExtruder(i).extrusionLength, MM))));
|
||||||
|
writeComment(subst(localize("Extruder %1 material name: %2"), i, getExtruder(i).materialName));
|
||||||
|
writeComment(subst(localize("Extruder %1 filament diameter: %2"), i, dimensionFormat.format(toPreciseUnit(getExtruder(i).filamentDiameter, MM))));
|
||||||
|
writeComment(subst(localize("Extruder %1 nozzle diameter: %2"), i, dimensionFormat.format(toPreciseUnit(getExtruder(i).nozzleDiameter, MM))));
|
||||||
|
writeComment(subst(localize("Extruder %1 offset x: %2"), i, dimensionFormat.format(toPreciseUnit(machineConfiguration.getExtruderOffsetX(i), MM))));
|
||||||
|
writeComment(subst(localize("Extruder %1 offset y: %2"), i, dimensionFormat.format(toPreciseUnit(machineConfiguration.getExtruderOffsetY(i), MM))));
|
||||||
|
writeComment(subst(localize("Extruder %1 offset z: %2"), i, dimensionFormat.format(toPreciseUnit(machineConfiguration.getExtruderOffsetZ(i), MM))));
|
||||||
|
writeComment(subst(localize("Extruder %1 max temp: %2"), i, integerFormat.format(getExtruder(i).temperature)));
|
||||||
|
}
|
||||||
|
writeComment(subst(localize("Bed temp: %1"), integerFormat.format(bedTemp)));
|
||||||
|
writeComment(subst(localize("Layer count: %1"), integerFormat.format(layerCount)));
|
||||||
|
writeComment(subst(localize("Width: %1"), dimensionFormat.format(toPreciseUnit(machineConfiguration.getWidth() - machineConfiguration.getCenterPositionX(), MM))));
|
||||||
|
writeComment(subst(localize("Depth: %1"), dimensionFormat.format(toPreciseUnit(machineConfiguration.getDepth() - machineConfiguration.getCenterPositionY(), MM))));
|
||||||
|
writeComment(subst(localize("Height: %1"), dimensionFormat.format(toPreciseUnit(machineConfiguration.getHeight() + machineConfiguration.getCenterPositionZ(), MM))));
|
||||||
|
writeComment(subst(localize("Center x: %1"), dimensionFormat.format(toPreciseUnit((machineConfiguration.getWidth() / 2.0) - machineConfiguration.getCenterPositionX(), MM))));
|
||||||
|
writeComment(subst(localize("Center y: %1"), dimensionFormat.format(toPreciseUnit((machineConfiguration.getDepth() / 2.0) - machineConfiguration.getCenterPositionY(), MM))));
|
||||||
|
writeComment(subst(localize("Center z: %1"), dimensionFormat.format(toPreciseUnit(machineConfiguration.getCenterPositionZ(), MM))));
|
||||||
|
writeComment(subst(localize("Count of bodies: %1"), integerFormat.format(partCount)));
|
||||||
|
writeComment(subst(localize("Fusion version: %1"), getGlobalParameter("version")));
|
||||||
|
}
|
||||||
|
// <<<<< INCLUDED FROM ../common/writeProgramHeader.cpi
|
||||||
|
// >>>>> INCLUDED FROM ../common/commonAdditiveFunctions.cpi
|
||||||
|
function writeBlock() {
|
||||||
|
writeWords(arguments);
|
||||||
|
}
|
||||||
|
|
||||||
|
validate(settings.comments, "Setting 'comments' is required but not defined.");
|
||||||
|
function formatComment(text) {
|
||||||
|
var prefix = settings.comments.prefix;
|
||||||
|
var suffix = settings.comments.suffix;
|
||||||
|
var _permittedCommentChars = settings.comments.permittedCommentChars == undefined ? "" : settings.comments.permittedCommentChars;
|
||||||
|
switch (settings.comments.outputFormat) {
|
||||||
|
case "upperCase":
|
||||||
|
text = text.toUpperCase();
|
||||||
|
_permittedCommentChars = _permittedCommentChars.toUpperCase();
|
||||||
|
break;
|
||||||
|
case "lowerCase":
|
||||||
|
text = text.toLowerCase();
|
||||||
|
_permittedCommentChars = _permittedCommentChars.toLowerCase();
|
||||||
|
break;
|
||||||
|
case "ignoreCase":
|
||||||
|
_permittedCommentChars = _permittedCommentChars.toUpperCase() + _permittedCommentChars.toLowerCase();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
error(localize("Unsupported option specified for setting 'comments.outputFormat'."));
|
||||||
|
}
|
||||||
|
if (_permittedCommentChars != "") {
|
||||||
|
text = filterText(String(text), _permittedCommentChars);
|
||||||
|
}
|
||||||
|
text = String(text).substring(0, settings.comments.maximumLineLength - prefix.length - suffix.length);
|
||||||
|
return text != "" ? prefix + text + suffix : "";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Output a comment.
|
||||||
|
*/
|
||||||
|
function writeComment(text) {
|
||||||
|
if (!text) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var comments = String(text).split(EOL);
|
||||||
|
for (comment in comments) {
|
||||||
|
var _comment = formatComment(comments[comment]);
|
||||||
|
if (_comment) {
|
||||||
|
writeln(_comment);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onComment(text) {
|
||||||
|
writeComment(text);
|
||||||
|
}
|
||||||
|
|
||||||
|
function forceXYZE() {
|
||||||
|
xOutput.reset();
|
||||||
|
yOutput.reset();
|
||||||
|
zOutput.reset();
|
||||||
|
eOutput.reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
function getCode(code) {
|
||||||
|
return typeof code == "undefined" ? "" : code;
|
||||||
|
}
|
||||||
|
|
||||||
|
function onParameter(name, value) {
|
||||||
|
switch (name) {
|
||||||
|
case "feedRate":
|
||||||
|
rapidFeedrate = toPreciseUnit(value, MM);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var nextTriggerValue;
|
||||||
|
var newTemperature;
|
||||||
|
function executeTempTowerFeatures(num) {
|
||||||
|
if (getProperty("_trigger") != "disabled") {
|
||||||
|
var multiplier = getProperty("_trigger") == "height" ? 100 : 1;
|
||||||
|
var currentValue = getProperty("_trigger") == "height" ? xyzFormat.format(getCurrentPosition().z * 100) : (num - 1);
|
||||||
|
if (num == 1) { // initialize
|
||||||
|
nextTriggerValue = getProperty("_triggerValue") * multiplier;
|
||||||
|
newTemperature = getProperty("tempStart");
|
||||||
|
} else {
|
||||||
|
if (currentValue >= nextTriggerValue) {
|
||||||
|
newTemperature += getProperty("tempInterval");
|
||||||
|
nextTriggerValue += getProperty("_triggerValue") * multiplier;
|
||||||
|
if (newTemperature <= maximumExtruderTemp[activeExtruder]) {
|
||||||
|
onExtruderTemp(newTemperature, false, activeExtruder);
|
||||||
|
} else {
|
||||||
|
error(subst(
|
||||||
|
localize("Temperature tower - The requested extruder temperature of '%1' exceeds the maximum value of '%2'."), newTemperature, maximumExtruderTemp[activeExtruder])
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function formatCycleTime(cycleTime) {
|
||||||
|
var seconds = cycleTime % 60 | 0;
|
||||||
|
var minutes = ((cycleTime - seconds) / 60 | 0) % 60;
|
||||||
|
var hours = (cycleTime - minutes * 60 - seconds) / (60 * 60) | 0;
|
||||||
|
if (hours > 0) {
|
||||||
|
return subst(localize("%1h:%2m:%3s"), hours, minutes, seconds);
|
||||||
|
} else if (minutes > 0) {
|
||||||
|
return subst(localize("%1m:%2s"), minutes, seconds);
|
||||||
|
} else {
|
||||||
|
return subst(localize("%1s"), seconds);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onRapid(_x, _y, _z) {
|
||||||
|
var x = xOutput.format(_x);
|
||||||
|
var y = yOutput.format(_y);
|
||||||
|
var z = zOutput.format(_z);
|
||||||
|
var f = feedOutput.format(rapidFeedrate);
|
||||||
|
|
||||||
|
if (settings.skipParkPosition) {
|
||||||
|
var num =
|
||||||
|
(!xyzFormat.areDifferent(_x, currentSection.getFinalPosition().x) ? 1 : 0) +
|
||||||
|
(!xyzFormat.areDifferent(_y, currentSection.getFinalPosition().y) ? 1 : 0) +
|
||||||
|
(!xyzFormat.areDifferent(_z, currentSection.getFinalPosition().z) ? 1 : 0);
|
||||||
|
if (num > 0 && isLastMotionRecord(getNextRecord().getId() + 1)) {
|
||||||
|
return; // skip movements to park position
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (x || y || z || f) {
|
||||||
|
writeBlock(gMotionModal.format(settings.useG0 ? 0 : 1), x, y, z, f);
|
||||||
|
feedOutput.reset();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onLinearExtrude(_x, _y, _z, _f, _e) {
|
||||||
|
var x = xOutput.format(_x);
|
||||||
|
var y = yOutput.format(_y);
|
||||||
|
var z = zOutput.format(_z);
|
||||||
|
var f = feedOutput.format(_f);
|
||||||
|
var e = eOutput.format(_e);
|
||||||
|
if (x || y || z || f || e) {
|
||||||
|
writeBlock(gMotionModal.format(1), x, y, z, f, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onCircularExtrude(_clockwise, _cx, _cy, _cz, _x, _y, _z, _f, _e) {
|
||||||
|
var x = xOutput.format(_x);
|
||||||
|
var y = yOutput.format(_y);
|
||||||
|
var z = zOutput.format(_z);
|
||||||
|
var f = feedOutput.format(_f);
|
||||||
|
var e = eOutput.format(_e);
|
||||||
|
var start = getCurrentPosition();
|
||||||
|
var i = iOutput.format(_cx - start.x);
|
||||||
|
var j = jOutput.format(_cy - start.y);
|
||||||
|
|
||||||
|
switch (getCircularPlane()) {
|
||||||
|
case PLANE_XY:
|
||||||
|
writeBlock(gMotionModal.format(_clockwise ? 2 : 3), x, y, i, j, f, e);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
linearize(tolerance);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getLayersFromProperty(_property) {
|
||||||
|
var layer = getProperty(_property).toString().split(",");
|
||||||
|
for (var i in layer) {
|
||||||
|
if (!isNaN(parseFloat(layer[i])) && !isNaN(layer[i] - 0) && (layer[i] - Math.floor(layer[i])) === 0) {
|
||||||
|
layer[i] = parseFloat(layer[i], 10);
|
||||||
|
} else {
|
||||||
|
error(subst(
|
||||||
|
localize("The property '%1' contains an invalid value of '%2'. Only integers are allowed."), _property.title, layer[i])
|
||||||
|
);
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return layer; // returns an array of layer numbers as integers
|
||||||
|
}
|
||||||
|
|
||||||
|
var pauseLayers;
|
||||||
|
function pausePrint(num) {
|
||||||
|
if (getProperty("pauseLayers") != "") {
|
||||||
|
validate(commands.pauseCommand != undefined, "The pause command is not defined.");
|
||||||
|
if (num == 1) { // initialize array
|
||||||
|
pauseLayers = getLayersFromProperty(properties.pauseLayers);
|
||||||
|
}
|
||||||
|
if (pauseLayers.indexOf(num) > -1) {
|
||||||
|
writeComment(localize("PAUSE PRINT"));
|
||||||
|
writeBlock(getCode(commands.displayCommand), getProperty("pauseMessage"));
|
||||||
|
forceXYZE();
|
||||||
|
writeBlock(gMotionModal.format(1), zOutput.format(machineConfiguration.getParkPositionZ()));
|
||||||
|
writeBlock(gMotionModal.format(1), xOutput.format(machineConfiguration.getParkPositionX()), yOutput.format(machineConfiguration.getParkPositionY()));
|
||||||
|
writeBlock(getCode(commands.pauseCommand));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var changeLayers;
|
||||||
|
function changeFilament(num) {
|
||||||
|
if (getProperty("changeLayers") != "") {
|
||||||
|
validate(commands.changeFilament.command != undefined, "The filament change command is not defined.");
|
||||||
|
if (num == 1) { // initialize array
|
||||||
|
changeLayers = getLayersFromProperty(properties.changeLayers);
|
||||||
|
}
|
||||||
|
if (changeLayers.indexOf(num) > -1) {
|
||||||
|
writeComment(localize("FILAMENT CHANGE"));
|
||||||
|
if (getProperty("changeMessage") != "") {
|
||||||
|
writeBlock(getCode(commands.displayCommand), getProperty("changeMessage"));
|
||||||
|
}
|
||||||
|
var words = new Array();
|
||||||
|
words.push(commands.changeFilament.command);
|
||||||
|
/*
|
||||||
|
if (!getProperty("useFirmwareConfiguration")) {
|
||||||
|
words.push("X" + xyzFormat.format(machineConfiguration.getParkPositionX()));
|
||||||
|
words.push("Y" + xyzFormat.format(machineConfiguration.getParkPositionY()));
|
||||||
|
words.push("Z" + xyzFormat.format(getProperty("zPosition")));
|
||||||
|
words.push(commands.changeFilament.initialRetract + xyzFormat.format(getProperty("initialRetract")));
|
||||||
|
words.push(commands.changeFilament.removalRetract + xyzFormat.format(getProperty("removalRetract")));
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
writeBlock(words);
|
||||||
|
forceXYZE();
|
||||||
|
feedOutput.reset();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function isLastMotionRecord(record) {
|
||||||
|
while (!(getRecord(record).isMotion())) {
|
||||||
|
if (getRecord(record).getType() == RECORD_OPERATION_END) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
++record;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
var maximumExtruderTemp = [210, 210];
|
||||||
|
var rapidFeedrate = highFeedrate;
|
||||||
|
function initializeMachineParameters() {
|
||||||
|
var machineData = hasGlobalParameter("machine-v2") ? JSON.parse(getGlobalParameter("machine-v2")) : null;
|
||||||
|
if (machineData && typeof machineData == "object") {
|
||||||
|
// data in the machine definition is always stored as degree celsius and millimeters
|
||||||
|
maximumExtruderTemp[0] = parseFloat(machineData.additive_extruder[0].max_temp); // max temp for extruder 1
|
||||||
|
if (machineData.additive_extruder[1]) {
|
||||||
|
maximumExtruderTemp[1] = parseFloat(machineData.additive_extruder[1].max_temp); // max temp for extruder 2
|
||||||
|
}
|
||||||
|
rapidFeedrate = toPreciseUnit(parseFloat(machineData.limits.default.speed_xy_max) * 60, MM); // convert mm/s to mm/min
|
||||||
|
} else {
|
||||||
|
warning("Failed to read machine data, default values will be used instead.");
|
||||||
|
}
|
||||||
|
if (highFeedMapping != HIGH_FEED_NO_MAPPING) {
|
||||||
|
highFeedMapping = HIGH_FEED_NO_MAPPING;
|
||||||
|
warning(localize("The selected High Feedrate mapping method is not supported and has been automatically set to 'Preserve rapid movement' by the postprocessor."));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// <<<<< INCLUDED FROM ../common/commonAdditiveFunctions.cpi
|
||||||
2115
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/gplus.cps
Normal file
2115
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/gplus.cps
Normal file
File diff suppressed because it is too large
Load Diff
2107
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/grbl.cps
Normal file
2107
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/grbl.cps
Normal file
File diff suppressed because it is too large
Load Diff
2449
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/gskcnc.cps
Normal file
2449
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/gskcnc.cps
Normal file
File diff suppressed because it is too large
Load Diff
2178
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/haas turning.cps
Normal file
2178
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/haas turning.cps
Normal file
File diff suppressed because it is too large
Load Diff
4514
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/haas umc-750.cps
Normal file
4514
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/haas umc-750.cps
Normal file
File diff suppressed because it is too large
Load Diff
4558
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/haas.cps
Normal file
4558
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/haas.cps
Normal file
File diff suppressed because it is too large
Load Diff
2341
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/heidenhain 407.cps
Normal file
2341
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/heidenhain 407.cps
Normal file
File diff suppressed because it is too large
Load Diff
1828
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/heidenhain iso.cps
Normal file
1828
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/heidenhain iso.cps
Normal file
File diff suppressed because it is too large
Load Diff
1290
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/heidenhain turning.cps
Normal file
1290
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/heidenhain turning.cps
Normal file
File diff suppressed because it is too large
Load Diff
3768
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/heidenhain.cps
Normal file
3768
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/heidenhain.cps
Normal file
File diff suppressed because it is too large
Load Diff
3643
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/hurco.cps
Normal file
3643
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/hurco.cps
Normal file
File diff suppressed because it is too large
Load Diff
598
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/hypertherm jet.cps
Normal file
598
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/hypertherm jet.cps
Normal file
@ -0,0 +1,598 @@
|
|||||||
|
/**
|
||||||
|
Copyright (C) 2012-2025 by Autodesk, Inc.
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Hypertherm jet post processor configuration.
|
||||||
|
|
||||||
|
$Revision: 45583 10f6400eaf1c75a27c852ee82b57479e7a9134c0 $
|
||||||
|
$Date: 2025-08-21 13:23:15 $
|
||||||
|
|
||||||
|
FORKID {B9932870-E8DA-4805-9AFD-C639CB6FF089}
|
||||||
|
*/
|
||||||
|
|
||||||
|
description = "Hypertherm Jet";
|
||||||
|
vendor = "Hypertherm";
|
||||||
|
vendorUrl = "https://www.hypertherm.com/";
|
||||||
|
legal = "Copyright (C) 2012-2025 by Autodesk, Inc.";
|
||||||
|
certificationLevel = 2;
|
||||||
|
minimumRevision = 45702;
|
||||||
|
|
||||||
|
longDescription = "Generic jet post for Hypertherm.";
|
||||||
|
|
||||||
|
extension = "nc";
|
||||||
|
setCodePage("ascii");
|
||||||
|
|
||||||
|
capabilities = CAPABILITY_JET;
|
||||||
|
tolerance = spatial(0.002, MM);
|
||||||
|
|
||||||
|
minimumChordLength = spatial(0.25, MM);
|
||||||
|
minimumCircularRadius = spatial(0.01, MM);
|
||||||
|
maximumCircularRadius = spatial(1000, MM);
|
||||||
|
minimumCircularSweep = toRad(0.01);
|
||||||
|
maximumCircularSweep = toRad(180);
|
||||||
|
allowHelicalMoves = false;
|
||||||
|
allowedCircularPlanes = undefined; // allow any circular motion
|
||||||
|
|
||||||
|
// user-defined properties
|
||||||
|
properties = {
|
||||||
|
writeMachine: {
|
||||||
|
title : "Write machine",
|
||||||
|
description: "Output the machine settings in the header of the code.",
|
||||||
|
group : "formats",
|
||||||
|
type : "boolean",
|
||||||
|
value : true,
|
||||||
|
scope : "post"
|
||||||
|
},
|
||||||
|
showSequenceNumbers: {
|
||||||
|
title : "Use sequence numbers",
|
||||||
|
description: "Use sequence numbers for each block of outputted code.",
|
||||||
|
group : "formats",
|
||||||
|
type : "boolean",
|
||||||
|
value : true,
|
||||||
|
scope : "post"
|
||||||
|
},
|
||||||
|
sequenceNumberStart: {
|
||||||
|
title : "Start sequence number",
|
||||||
|
description: "The number at which to start the sequence numbers.",
|
||||||
|
group : "formats",
|
||||||
|
type : "integer",
|
||||||
|
value : 10,
|
||||||
|
scope : "post"
|
||||||
|
},
|
||||||
|
sequenceNumberIncrement: {
|
||||||
|
title : "Sequence number increment",
|
||||||
|
description: "The amount by which the sequence number is incremented by in each block.",
|
||||||
|
group : "formats",
|
||||||
|
type : "integer",
|
||||||
|
value : 5,
|
||||||
|
scope : "post"
|
||||||
|
},
|
||||||
|
allowHeadSwitches: {
|
||||||
|
title : "Allow head switches",
|
||||||
|
description: "Enable to output code to allow heads to be manually switched for piercing and cutting.",
|
||||||
|
group : "preferences",
|
||||||
|
type : "boolean",
|
||||||
|
value : true,
|
||||||
|
scope : "post"
|
||||||
|
},
|
||||||
|
separateWordsWithSpace: {
|
||||||
|
title : "Separate words with space",
|
||||||
|
description: "Adds spaces between words if 'yes' is selected.",
|
||||||
|
group : "formats",
|
||||||
|
type : "boolean",
|
||||||
|
value : true,
|
||||||
|
scope : "post"
|
||||||
|
},
|
||||||
|
pierceTime: {
|
||||||
|
title : "Pierce time",
|
||||||
|
description: "Specifies the pierce time. Specifying a value of 0 will use the Setup Dwell Time defined in the controller.",
|
||||||
|
group : "preferences",
|
||||||
|
type : "number",
|
||||||
|
value : 5,
|
||||||
|
range : [0, 99999.999],
|
||||||
|
scope : "post"
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
// wcs definiton
|
||||||
|
wcsDefinitions = {
|
||||||
|
useZeroOffset: false,
|
||||||
|
wcs : [
|
||||||
|
{name:"Standard", format:"#", range:[1, 1]}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
|
||||||
|
var gFormat = createFormat({prefix:"G", decimals:0});
|
||||||
|
var mFormat = createFormat({prefix:"M", decimals:0});
|
||||||
|
var dFormat = createFormat({prefix:"D", decimals:0}); // kerf index
|
||||||
|
|
||||||
|
var xyzFormat = createFormat({decimals:(unit == MM ? 3 : 4)});
|
||||||
|
var feedFormat = createFormat({decimals:(unit == MM ? 1 : 2)});
|
||||||
|
var toolFormat = createFormat({decimals:0});
|
||||||
|
var secFormat = createFormat({decimals:3, forceDecimal:true}); // seconds - range 0.001-1000
|
||||||
|
|
||||||
|
var xOutput = createVariable({prefix:"X"}, xyzFormat);
|
||||||
|
var yOutput = createVariable({prefix:"Y"}, xyzFormat);
|
||||||
|
var feedOutput = createVariable({prefix:"F"}, feedFormat);
|
||||||
|
|
||||||
|
// circular output
|
||||||
|
var iOutput = createReferenceVariable({prefix:"I"}, xyzFormat);
|
||||||
|
var jOutput = createReferenceVariable({prefix:"J"}, xyzFormat);
|
||||||
|
|
||||||
|
var gMotionModal = createModal({}, gFormat); // modal group 1 // G0-G3, ...
|
||||||
|
var gAbsIncModal = createModal({}, gFormat); // modal group 3 // G90-91
|
||||||
|
var gUnitModal = createModal({}, gFormat); // modal group 6 // G20-21
|
||||||
|
|
||||||
|
// collected state
|
||||||
|
var sequenceNumber;
|
||||||
|
var currentWorkOffset;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Writes the specified block.
|
||||||
|
*/
|
||||||
|
function writeBlock() {
|
||||||
|
if (getProperty("showSequenceNumbers")) {
|
||||||
|
writeWords2("N" + sequenceNumber, arguments);
|
||||||
|
sequenceNumber += getProperty("sequenceNumberIncrement");
|
||||||
|
} else {
|
||||||
|
writeWords(arguments);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function formatComment(text) {
|
||||||
|
return "(" + String(text).replace(/[()]/g, "") + ")";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Output a comment.
|
||||||
|
*/
|
||||||
|
function writeComment(text) {
|
||||||
|
writeln(formatComment(text));
|
||||||
|
}
|
||||||
|
|
||||||
|
function onOpen() {
|
||||||
|
|
||||||
|
if (!getProperty("separateWordsWithSpace")) {
|
||||||
|
setWordSeparator("");
|
||||||
|
}
|
||||||
|
|
||||||
|
sequenceNumber = getProperty("sequenceNumberStart");
|
||||||
|
|
||||||
|
if (programName) {
|
||||||
|
writeComment(programName);
|
||||||
|
}
|
||||||
|
if (programComment) {
|
||||||
|
writeComment(programComment);
|
||||||
|
}
|
||||||
|
|
||||||
|
// dump machine configuration
|
||||||
|
var vendor = machineConfiguration.getVendor();
|
||||||
|
var model = machineConfiguration.getModel();
|
||||||
|
var description = machineConfiguration.getDescription();
|
||||||
|
|
||||||
|
if (getProperty("writeMachine") && (vendor || model || description)) {
|
||||||
|
writeComment(localize("Machine"));
|
||||||
|
if (vendor) {
|
||||||
|
writeComment(" " + localize("vendor") + ": " + vendor);
|
||||||
|
}
|
||||||
|
if (model) {
|
||||||
|
writeComment(" " + localize("model") + ": " + model);
|
||||||
|
}
|
||||||
|
if (description) {
|
||||||
|
writeComment(" " + localize("description") + ": " + description);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// absolute coordinates and feed per min
|
||||||
|
writeBlock(gAbsIncModal.format(90));
|
||||||
|
|
||||||
|
switch (unit) {
|
||||||
|
case IN:
|
||||||
|
writeBlock(gUnitModal.format(20));
|
||||||
|
break;
|
||||||
|
case MM:
|
||||||
|
writeBlock(gUnitModal.format(21));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onComment(message) {
|
||||||
|
writeComment(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Force output of X, Y, and Z. */
|
||||||
|
function forceXYZ() {
|
||||||
|
xOutput.reset();
|
||||||
|
yOutput.reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Force output of X, Y, Z, A, B, C, and F on next output. */
|
||||||
|
function forceAny() {
|
||||||
|
forceXYZ();
|
||||||
|
feedOutput.reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
function onSection() {
|
||||||
|
var insertToolCall = isFirstSection() ||
|
||||||
|
currentSection.getForceToolChange && currentSection.getForceToolChange() ||
|
||||||
|
(tool.number != getPreviousSection().getTool().number);
|
||||||
|
|
||||||
|
var retracted = false; // specifies that the tool has been retracted to the safe plane
|
||||||
|
var newWorkOffset = isFirstSection() ||
|
||||||
|
(getPreviousSection().workOffset != currentSection.workOffset); // work offset changes
|
||||||
|
var newWorkPlane = isFirstSection() ||
|
||||||
|
!isSameDirection(getPreviousSection().getGlobalFinalToolAxis(), currentSection.getGlobalInitialToolAxis());
|
||||||
|
|
||||||
|
writeln("");
|
||||||
|
|
||||||
|
if (hasParameter("operation-comment")) {
|
||||||
|
var comment = getParameter("operation-comment");
|
||||||
|
if (comment) {
|
||||||
|
writeComment(comment);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (insertToolCall) {
|
||||||
|
retracted = true;
|
||||||
|
onCommand(COMMAND_COOLANT_OFF);
|
||||||
|
|
||||||
|
switch (tool.type) {
|
||||||
|
case TOOL_WATER_JET:
|
||||||
|
writeBlock(mFormat.format(36), "T" + toolFormat.format(6)); // waterjet
|
||||||
|
break;
|
||||||
|
case TOOL_LASER_CUTTER:
|
||||||
|
writeBlock(mFormat.format(36), "T" + toolFormat.format(5)); // laser
|
||||||
|
break;
|
||||||
|
case TOOL_PLASMA_CUTTER:
|
||||||
|
// process 1 - use T2 for process 2
|
||||||
|
writeBlock(mFormat.format(36), "T" + toolFormat.format(1)); // plasma
|
||||||
|
break;
|
||||||
|
/*
|
||||||
|
case TOOL_MARKER:
|
||||||
|
writeBlock(mFormat.format(36), "T" + toolFormat.format(3)); // marker 1 - use 4 for marker 2
|
||||||
|
break;
|
||||||
|
*/
|
||||||
|
default:
|
||||||
|
error(localize("The CNC does not support the required tool."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// use could use - G59 Dxxx Xkerf to set kerf
|
||||||
|
|
||||||
|
if (tool.comment) {
|
||||||
|
writeComment(tool.comment);
|
||||||
|
}
|
||||||
|
switch (currentSection.jetMode) {
|
||||||
|
case JET_MODE_THROUGH:
|
||||||
|
writeComment("Through cutting");
|
||||||
|
break;
|
||||||
|
case JET_MODE_ETCHING:
|
||||||
|
writeComment("Etch cutting");
|
||||||
|
break;
|
||||||
|
case JET_MODE_VAPORIZE:
|
||||||
|
writeComment("Vaporize cutting");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
error(localize("Unsupported cutting mode."));
|
||||||
|
}
|
||||||
|
writeln("");
|
||||||
|
}
|
||||||
|
|
||||||
|
// wcs
|
||||||
|
/*
|
||||||
|
if (insertToolCall) { // force work offset when changing tool
|
||||||
|
currentWorkOffset = undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currentSection.workOffset != currentWorkOffset) {
|
||||||
|
writeBlock(currentSection.wcs);
|
||||||
|
currentWorkOffset = currentSection.workOffset;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
forceXYZ();
|
||||||
|
|
||||||
|
{ // pure 3D
|
||||||
|
var remaining = currentSection.workPlane;
|
||||||
|
if (!isSameDirection(remaining.forward, new Vector(0, 0, 1))) {
|
||||||
|
error(localize("Tool orientation is not supported."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
setRotation(remaining);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
// set coolant after we have positioned at Z
|
||||||
|
if (false) {
|
||||||
|
var c = mapCoolantTable.lookup(tool.coolant);
|
||||||
|
if (c) {
|
||||||
|
writeBlock(mFormat.format(c));
|
||||||
|
} else {
|
||||||
|
warning(localize("Coolant not supported."));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
forceAny();
|
||||||
|
|
||||||
|
var initialPosition = getFramePosition(currentSection.getInitialPosition());
|
||||||
|
|
||||||
|
if (insertToolCall || retracted) {
|
||||||
|
gMotionModal.reset();
|
||||||
|
|
||||||
|
if (!machineConfiguration.isHeadConfiguration()) {
|
||||||
|
writeBlock(
|
||||||
|
gAbsIncModal.format(90),
|
||||||
|
gMotionModal.format(0), xOutput.format(initialPosition.x), yOutput.format(initialPosition.y)
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
writeBlock(
|
||||||
|
gAbsIncModal.format(90),
|
||||||
|
gMotionModal.format(0),
|
||||||
|
xOutput.format(initialPosition.x),
|
||||||
|
yOutput.format(initialPosition.y)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
writeBlock(
|
||||||
|
gAbsIncModal.format(90),
|
||||||
|
gMotionModal.format(0),
|
||||||
|
xOutput.format(initialPosition.x),
|
||||||
|
yOutput.format(initialPosition.y)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onDwell(seconds) {
|
||||||
|
if (seconds > 99999.999) {
|
||||||
|
warning(localize("Dwelling time is out of range."));
|
||||||
|
}
|
||||||
|
seconds = clamp(0, seconds, 99999.999);
|
||||||
|
writeBlock(gFormat.format(4), conditional(seconds != 0, "F" + secFormat.format(seconds)));
|
||||||
|
}
|
||||||
|
|
||||||
|
function onCycle() {
|
||||||
|
onError("Drilling is not supported by CNC.");
|
||||||
|
}
|
||||||
|
|
||||||
|
var pendingRadiusCompensation = -1;
|
||||||
|
|
||||||
|
function onRadiusCompensation() {
|
||||||
|
pendingRadiusCompensation = radiusCompensation;
|
||||||
|
}
|
||||||
|
|
||||||
|
var shapeArea = 0;
|
||||||
|
var shapePerimeter = 0;
|
||||||
|
var shapeSide = "inner";
|
||||||
|
var cuttingSequence = "";
|
||||||
|
|
||||||
|
function onParameter(name, value) {
|
||||||
|
if ((name == "action") && (value == "pierce")) {
|
||||||
|
writeComment("POINT-PIERCE");
|
||||||
|
onDwell(getProperty("pierceTime")); // wait until cut through
|
||||||
|
// for plasma AVC - writeBlock(mFormat.format(51), "T" + secFormat.format(delay)); // wait
|
||||||
|
} else if (name == "shapeArea") {
|
||||||
|
shapeArea = value;
|
||||||
|
} else if (name == "shapePerimeter") {
|
||||||
|
shapePerimeter = value;
|
||||||
|
} else if (name == "shapeSide") {
|
||||||
|
shapeSide = value;
|
||||||
|
} else if (name == "beginSequence") {
|
||||||
|
if (value == "piercing") {
|
||||||
|
if (cuttingSequence != "piercing") {
|
||||||
|
if (getProperty("allowHeadSwitches")) {
|
||||||
|
writeln("");
|
||||||
|
writeComment("Switch to piercing head before continuing");
|
||||||
|
onCommand(COMMAND_STOP);
|
||||||
|
writeln("");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (value == "cutting") {
|
||||||
|
if (cuttingSequence == "piercing") {
|
||||||
|
if (getProperty("allowHeadSwitches")) {
|
||||||
|
writeln("");
|
||||||
|
writeComment("Switch to cutting head before continuing");
|
||||||
|
onCommand(COMMAND_STOP);
|
||||||
|
writeln("");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cuttingSequence = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var deviceOn = false;
|
||||||
|
|
||||||
|
function setDeviceMode(enable) {
|
||||||
|
if (enable != deviceOn) {
|
||||||
|
deviceOn = enable;
|
||||||
|
if (enable) {
|
||||||
|
switch (tool.type) {
|
||||||
|
/*
|
||||||
|
case TOOL_MARKER:
|
||||||
|
writeComment("TURN ON MARKER 1");
|
||||||
|
writeBlock(mFormat.format(9)); // enable marker 1
|
||||||
|
break;
|
||||||
|
*/
|
||||||
|
default:
|
||||||
|
writeComment((currentSection.jetMode == JET_MODE_ETCHING) ? "TURN ON ETCHING" : "TURN ON CUTTING");
|
||||||
|
if (currentSection.jetMode == JET_MODE_ETCHING) {
|
||||||
|
writeBlock(mFormat.format(63));
|
||||||
|
}
|
||||||
|
writeBlock(mFormat.format(7)); // DEVICE ON
|
||||||
|
// writeBlock(mFormat.format(15)); // CUT ON
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
switch (tool.type) {
|
||||||
|
/*
|
||||||
|
case TOOL_MARKER:
|
||||||
|
writeComment("TURN OFF MARKER 1");
|
||||||
|
writeBlock(mFormat.format(10)); // disable marker 1
|
||||||
|
break;
|
||||||
|
*/
|
||||||
|
default:
|
||||||
|
writeComment((currentSection.jetMode == JET_MODE_ETCHING) ? "TURN OFF ETCHING" : "TURN OFF CUTTING");
|
||||||
|
writeBlock(mFormat.format(8)); // DEVICE OFF - could add delay here
|
||||||
|
if (currentSection.jetMode == JET_MODE_ETCHING) {
|
||||||
|
writeBlock(mFormat.format(64));
|
||||||
|
}
|
||||||
|
// writeBlock(mFormat.format(16)); // CUT OFF
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onPower(power) {
|
||||||
|
setDeviceMode(power);
|
||||||
|
}
|
||||||
|
|
||||||
|
function onRapid(_x, _y, _z) {
|
||||||
|
var x = xOutput.format(_x);
|
||||||
|
var y = yOutput.format(_y);
|
||||||
|
if (x || y) {
|
||||||
|
if (pendingRadiusCompensation >= 0) {
|
||||||
|
error(localize("Radius compensation mode cannot be changed at rapid traversal."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
writeBlock(gMotionModal.format(0), x, y);
|
||||||
|
feedOutput.reset();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onLinear(_x, _y, _z, feed) {
|
||||||
|
|
||||||
|
// at least one axis is required
|
||||||
|
if (pendingRadiusCompensation >= 0) {
|
||||||
|
// ensure that we end at desired position when compensation is turned off
|
||||||
|
xOutput.reset();
|
||||||
|
yOutput.reset();
|
||||||
|
}
|
||||||
|
var x = xOutput.format(_x);
|
||||||
|
var y = yOutput.format(_y);
|
||||||
|
var f = feedOutput.format(feed);
|
||||||
|
if (x || y) {
|
||||||
|
if (pendingRadiusCompensation >= 0) {
|
||||||
|
pendingRadiusCompensation = -1;
|
||||||
|
switch (radiusCompensation) {
|
||||||
|
case RADIUS_COMPENSATION_LEFT:
|
||||||
|
writeBlock(gFormat.format(41));
|
||||||
|
// use dFormat for keft offset - which is currently not supported
|
||||||
|
writeBlock(gMotionModal.format(1), x, y, f);
|
||||||
|
break;
|
||||||
|
case RADIUS_COMPENSATION_RIGHT:
|
||||||
|
writeBlock(gFormat.format(42));
|
||||||
|
// use dFormat for keft offset - which is currently not supported
|
||||||
|
writeBlock(gMotionModal.format(1), x, y, f);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
writeBlock(gFormat.format(40));
|
||||||
|
writeBlock(gMotionModal.format(1), x, y, f);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
writeBlock(gMotionModal.format(1), x, y, f);
|
||||||
|
}
|
||||||
|
} else if (f) {
|
||||||
|
if (getNextRecord().isMotion()) { // try not to output feed without motion
|
||||||
|
feedOutput.reset(); // force feed on next line
|
||||||
|
} else {
|
||||||
|
writeBlock(gMotionModal.format(1), f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onRapid5D(_x, _y, _z, _a, _b, _c) {
|
||||||
|
error(localize("The CNC does not support 5-axis simultaneous toolpath."));
|
||||||
|
}
|
||||||
|
|
||||||
|
function onLinear5D(_x, _y, _z, _a, _b, _c, feed) {
|
||||||
|
error(localize("The CNC does not support 5-axis simultaneous toolpath."));
|
||||||
|
}
|
||||||
|
|
||||||
|
function onCircular(clockwise, cx, cy, cz, x, y, z, feed) {
|
||||||
|
|
||||||
|
// one of X/Y and I/J are required and likewise
|
||||||
|
|
||||||
|
if (pendingRadiusCompensation >= 0) {
|
||||||
|
error(localize("Radius compensation cannot be activated/deactivated for a circular move."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var start = getCurrentPosition();
|
||||||
|
if (isFullCircle()) {
|
||||||
|
if (isHelical()) {
|
||||||
|
linearize(tolerance);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
switch (getCircularPlane()) {
|
||||||
|
case PLANE_XY:
|
||||||
|
writeBlock(gMotionModal.format(clockwise ? 2 : 3), xOutput.format(x), iOutput.format(cx - start.x, 0), jOutput.format(cy - start.y, 0), feedOutput.format(feed));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
linearize(tolerance);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
switch (getCircularPlane()) {
|
||||||
|
case PLANE_XY:
|
||||||
|
writeBlock(gMotionModal.format(clockwise ? 2 : 3), xOutput.format(x), yOutput.format(y), iOutput.format(cx - start.x, 0), jOutput.format(cy - start.y, 0), feedOutput.format(feed));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
linearize(tolerance);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var mapCommand = {
|
||||||
|
COMMAND_STOP : 0,
|
||||||
|
COMMAND_OPTIONAL_STOP: 1,
|
||||||
|
COMMAND_END : 2
|
||||||
|
};
|
||||||
|
|
||||||
|
function onCommand(command) {
|
||||||
|
switch (command) {
|
||||||
|
case COMMAND_POWER_ON:
|
||||||
|
return;
|
||||||
|
case COMMAND_POWER_OFF:
|
||||||
|
return;
|
||||||
|
case COMMAND_COOLANT_ON:
|
||||||
|
return;
|
||||||
|
case COMMAND_COOLANT_OFF:
|
||||||
|
return;
|
||||||
|
case COMMAND_LOCK_MULTI_AXIS:
|
||||||
|
return;
|
||||||
|
case COMMAND_UNLOCK_MULTI_AXIS:
|
||||||
|
return;
|
||||||
|
case COMMAND_BREAK_CONTROL:
|
||||||
|
return;
|
||||||
|
case COMMAND_TOOL_MEASURE:
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var stringId = getCommandStringId(command);
|
||||||
|
var mcode = mapCommand[stringId];
|
||||||
|
if (mcode != undefined) {
|
||||||
|
writeBlock(mFormat.format(mcode));
|
||||||
|
} else {
|
||||||
|
onUnsupportedCommand(command);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onSectionEnd() {
|
||||||
|
setDeviceMode(false);
|
||||||
|
forceAny();
|
||||||
|
}
|
||||||
|
|
||||||
|
function onClose() {
|
||||||
|
writeln("");
|
||||||
|
|
||||||
|
onCommand(COMMAND_COOLANT_OFF);
|
||||||
|
|
||||||
|
writeBlock(mFormat.format(19));
|
||||||
|
// writeBlock(gFormat.format(280), gFormat.format(281));
|
||||||
|
|
||||||
|
onImpliedCommand(COMMAND_END);
|
||||||
|
writeBlock(mFormat.format(30)); // stop program
|
||||||
|
}
|
||||||
|
|
||||||
|
function setProperty(property, value) {
|
||||||
|
properties[property].current = value;
|
||||||
|
}
|
||||||
2053
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/intelitek.cps
Normal file
2053
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/intelitek.cps
Normal file
File diff suppressed because it is too large
Load Diff
1002
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/isel.cps
Normal file
1002
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/isel.cps
Normal file
File diff suppressed because it is too large
Load Diff
644
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/jet.cps
Normal file
644
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/jet.cps
Normal file
@ -0,0 +1,644 @@
|
|||||||
|
/**
|
||||||
|
Copyright (C) 2015-2025 by Autodesk, Inc.
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Jet template post processor configuration. This post is intended to show
|
||||||
|
the capabilities for use with waterjet, laser, and plasma cutters. It only
|
||||||
|
serves as a template for customization for an actual CNC.
|
||||||
|
|
||||||
|
$Revision: 45583 10f6400eaf1c75a27c852ee82b57479e7a9134c0 $
|
||||||
|
$Date: 2025-08-21 13:23:15 $
|
||||||
|
|
||||||
|
FORKID {51C1E5C7-D09E-458F-AC35-4A2CE1E0AE32}
|
||||||
|
*/
|
||||||
|
|
||||||
|
description = "Jet template (DEMO ONLY)";
|
||||||
|
vendor = "Autodesk";
|
||||||
|
vendorUrl = "http://www.autodesk.com";
|
||||||
|
legal = "Copyright (C) 2015-2025 by Autodesk, Inc.";
|
||||||
|
certificationLevel = 2;
|
||||||
|
minimumRevision = 45702;
|
||||||
|
|
||||||
|
longDescription = "This post demonstrates the capabilities of the post processor for waterjet, laser, and plasma cutting. You can use this as a foundation when you need a post for a new CNC. Note that this post cannot be used with milling toolpath. You can only use it for 'jet' style toolpath.";
|
||||||
|
|
||||||
|
extension = "nc";
|
||||||
|
setCodePage("ascii");
|
||||||
|
|
||||||
|
capabilities = CAPABILITY_JET;
|
||||||
|
tolerance = spatial(0.002, MM);
|
||||||
|
|
||||||
|
minimumChordLength = spatial(0.25, MM);
|
||||||
|
minimumCircularRadius = spatial(0.01, MM);
|
||||||
|
maximumCircularRadius = spatial(1000, MM);
|
||||||
|
minimumCircularSweep = toRad(0.01);
|
||||||
|
maximumCircularSweep = toRad(180);
|
||||||
|
allowHelicalMoves = false;
|
||||||
|
allowedCircularPlanes = undefined; // allow any circular motion
|
||||||
|
|
||||||
|
// user-defined properties
|
||||||
|
properties = {
|
||||||
|
writeMachine: {
|
||||||
|
title : "Write machine",
|
||||||
|
description: "Output the machine settings in the header of the code.",
|
||||||
|
group : "formats",
|
||||||
|
type : "boolean",
|
||||||
|
value : true,
|
||||||
|
scope : "post"
|
||||||
|
},
|
||||||
|
showSequenceNumbers: {
|
||||||
|
title : "Use sequence numbers",
|
||||||
|
description: "Use sequence numbers for each block of outputted code.",
|
||||||
|
group : "formats",
|
||||||
|
type : "boolean",
|
||||||
|
value : true,
|
||||||
|
scope : "post"
|
||||||
|
},
|
||||||
|
sequenceNumberStart: {
|
||||||
|
title : "Start sequence number",
|
||||||
|
description: "The number at which to start the sequence numbers.",
|
||||||
|
group : "formats",
|
||||||
|
type : "integer",
|
||||||
|
value : 10,
|
||||||
|
scope : "post"
|
||||||
|
},
|
||||||
|
sequenceNumberIncrement: {
|
||||||
|
title : "Sequence number increment",
|
||||||
|
description: "The amount by which the sequence number is incremented by in each block.",
|
||||||
|
group : "formats",
|
||||||
|
type : "integer",
|
||||||
|
value : 5,
|
||||||
|
scope : "post"
|
||||||
|
},
|
||||||
|
allowHeadSwitches: {
|
||||||
|
title : "Allow head switches",
|
||||||
|
description: "Enable to output code to allow heads to be manually switched for piercing and cutting.",
|
||||||
|
group : "preferences",
|
||||||
|
type : "boolean",
|
||||||
|
value : true,
|
||||||
|
scope : "post"
|
||||||
|
},
|
||||||
|
useRetracts: {
|
||||||
|
title : "Use retracts",
|
||||||
|
description: "Output retracts, otherwise only output part contours for importing into a third-party jet application.",
|
||||||
|
group : "homePositions",
|
||||||
|
type : "boolean",
|
||||||
|
value : true,
|
||||||
|
scope : "post"
|
||||||
|
},
|
||||||
|
separateWordsWithSpace: {
|
||||||
|
title : "Separate words with space",
|
||||||
|
description: "Adds spaces between words if 'yes' is selected.",
|
||||||
|
group : "formats",
|
||||||
|
type : "boolean",
|
||||||
|
value : true,
|
||||||
|
scope : "post"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// wcs definiton
|
||||||
|
wcsDefinitions = {
|
||||||
|
useZeroOffset: false,
|
||||||
|
wcs : [
|
||||||
|
{name:"Standard", format:"#", range:[1, 1]}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
|
||||||
|
var gFormat = createFormat({prefix:"G", decimals:0});
|
||||||
|
var mFormat = createFormat({prefix:"M", decimals:0});
|
||||||
|
|
||||||
|
var xyzFormat = createFormat({decimals:(unit == MM ? 3 : 4)});
|
||||||
|
var feedFormat = createFormat({decimals:(unit == MM ? 1 : 2)});
|
||||||
|
var secFormat = createFormat({decimals:3, forceDecimal:true}); // seconds - range 0.001-1000
|
||||||
|
|
||||||
|
var xOutput = createVariable({prefix:"X"}, xyzFormat);
|
||||||
|
var yOutput = createVariable({prefix:"Y"}, xyzFormat);
|
||||||
|
var feedOutput = createVariable({prefix:"F"}, feedFormat);
|
||||||
|
|
||||||
|
// circular output
|
||||||
|
var iOutput = createReferenceVariable({prefix:"I"}, xyzFormat);
|
||||||
|
var jOutput = createReferenceVariable({prefix:"J"}, xyzFormat);
|
||||||
|
|
||||||
|
var gMotionModal = createModal({}, gFormat); // modal group 1 // G0-G3, ...
|
||||||
|
var gAbsIncModal = createModal({}, gFormat); // modal group 3 // G90-91
|
||||||
|
var gUnitModal = createModal({}, gFormat); // modal group 6 // G20-21
|
||||||
|
|
||||||
|
// collected state
|
||||||
|
var sequenceNumber;
|
||||||
|
var currentWorkOffset;
|
||||||
|
var split = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Writes the specified block.
|
||||||
|
*/
|
||||||
|
function writeBlock() {
|
||||||
|
if (getProperty("showSequenceNumbers")) {
|
||||||
|
writeWords2("N" + sequenceNumber, arguments);
|
||||||
|
sequenceNumber += getProperty("sequenceNumberIncrement");
|
||||||
|
} else {
|
||||||
|
writeWords(arguments);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function formatComment(text) {
|
||||||
|
return "(" + String(text).replace(/[()]/g, "") + ")";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Output a comment.
|
||||||
|
*/
|
||||||
|
function writeComment(text) {
|
||||||
|
writeln(formatComment(text));
|
||||||
|
}
|
||||||
|
|
||||||
|
function onOpen() {
|
||||||
|
|
||||||
|
if (!getProperty("separateWordsWithSpace")) {
|
||||||
|
setWordSeparator("");
|
||||||
|
}
|
||||||
|
|
||||||
|
sequenceNumber = getProperty("sequenceNumberStart");
|
||||||
|
|
||||||
|
if (programName) {
|
||||||
|
writeComment(programName);
|
||||||
|
}
|
||||||
|
if (programComment) {
|
||||||
|
writeComment(programComment);
|
||||||
|
}
|
||||||
|
|
||||||
|
// dump machine configuration
|
||||||
|
var vendor = machineConfiguration.getVendor();
|
||||||
|
var model = machineConfiguration.getModel();
|
||||||
|
var description = machineConfiguration.getDescription();
|
||||||
|
|
||||||
|
if (getProperty("writeMachine") && (vendor || model || description)) {
|
||||||
|
writeComment(localize("Machine"));
|
||||||
|
if (vendor) {
|
||||||
|
writeComment(" " + localize("vendor") + ": " + vendor);
|
||||||
|
}
|
||||||
|
if (model) {
|
||||||
|
writeComment(" " + localize("model") + ": " + model);
|
||||||
|
}
|
||||||
|
if (description) {
|
||||||
|
writeComment(" " + localize("description") + ": " + description);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (hasGlobalParameter("material")) {
|
||||||
|
writeComment("MATERIAL = " + getGlobalParameter("material"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (hasGlobalParameter("material-hardness")) {
|
||||||
|
writeComment("MATERIAL HARDNESS = " + getGlobalParameter("material-hardness"));
|
||||||
|
}
|
||||||
|
|
||||||
|
{ // stock - workpiece
|
||||||
|
var workpiece = getWorkpiece();
|
||||||
|
var delta = Vector.diff(workpiece.upper, workpiece.lower);
|
||||||
|
if (delta.isNonZero()) {
|
||||||
|
writeComment("THICKNESS = " + xyzFormat.format(workpiece.upper.z - workpiece.lower.z));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// absolute coordinates and feed per min
|
||||||
|
writeBlock(gAbsIncModal.format(90));
|
||||||
|
|
||||||
|
switch (unit) {
|
||||||
|
case IN:
|
||||||
|
writeBlock(gUnitModal.format(20));
|
||||||
|
break;
|
||||||
|
case MM:
|
||||||
|
writeBlock(gUnitModal.format(21));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onComment(message) {
|
||||||
|
writeComment(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Force output of X, Y, and Z. */
|
||||||
|
function forceXYZ() {
|
||||||
|
xOutput.reset();
|
||||||
|
yOutput.reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Force output of X, Y, Z, A, B, C, and F on next output. */
|
||||||
|
function forceAny() {
|
||||||
|
forceXYZ();
|
||||||
|
feedOutput.reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
function onSection() {
|
||||||
|
var insertToolCall = isFirstSection() ||
|
||||||
|
currentSection.getForceToolChange && currentSection.getForceToolChange() ||
|
||||||
|
(tool.number != getPreviousSection().getTool().number);
|
||||||
|
|
||||||
|
var retracted = false; // specifies that the tool has been retracted to the safe plane
|
||||||
|
var newWorkOffset = isFirstSection() ||
|
||||||
|
(getPreviousSection().workOffset != currentSection.workOffset); // work offset changes
|
||||||
|
var newWorkPlane = isFirstSection() ||
|
||||||
|
!isSameDirection(getPreviousSection().getGlobalFinalToolAxis(), currentSection.getGlobalInitialToolAxis());
|
||||||
|
|
||||||
|
writeln("");
|
||||||
|
|
||||||
|
if (hasParameter("operation-comment")) {
|
||||||
|
var comment = getParameter("operation-comment");
|
||||||
|
if (comment) {
|
||||||
|
writeComment(comment);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (insertToolCall) {
|
||||||
|
retracted = true;
|
||||||
|
onCommand(COMMAND_COOLANT_OFF);
|
||||||
|
|
||||||
|
switch (tool.type) {
|
||||||
|
case TOOL_WATER_JET:
|
||||||
|
writeComment("Waterjet cutting.");
|
||||||
|
break;
|
||||||
|
case TOOL_LASER_CUTTER:
|
||||||
|
writeComment("Laser cutting");
|
||||||
|
break;
|
||||||
|
case TOOL_PLASMA_CUTTER:
|
||||||
|
writeComment("Plasma cutting");
|
||||||
|
break;
|
||||||
|
/*
|
||||||
|
case TOOL_MARKER:
|
||||||
|
writeComment("Marker");
|
||||||
|
break;
|
||||||
|
*/
|
||||||
|
default:
|
||||||
|
error(localize("The CNC does not support the required tool."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
writeln("");
|
||||||
|
|
||||||
|
writeComment("tool.jetDiameter = " + xyzFormat.format(tool.jetDiameter));
|
||||||
|
writeComment("tool.jetDistance = " + xyzFormat.format(tool.jetDistance));
|
||||||
|
writeln("");
|
||||||
|
|
||||||
|
switch (currentSection.jetMode) {
|
||||||
|
case JET_MODE_THROUGH:
|
||||||
|
writeComment("THROUGH CUTTING");
|
||||||
|
break;
|
||||||
|
case JET_MODE_ETCHING:
|
||||||
|
writeComment("ETCH CUTTING");
|
||||||
|
break;
|
||||||
|
case JET_MODE_VAPORIZE:
|
||||||
|
writeComment("VAPORIZE CUTTING");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
error(localize("Unsupported cutting mode."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
writeComment("QUALITY = " + currentSection.quality);
|
||||||
|
|
||||||
|
if (tool.comment) {
|
||||||
|
writeComment(tool.comment);
|
||||||
|
}
|
||||||
|
writeln("");
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
// wcs
|
||||||
|
if (insertToolCall) { // force work offset when changing tool
|
||||||
|
currentWorkOffset = undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currentSection.workOffset != currentWorkOffset) {
|
||||||
|
writeBlock(currentSection.wcs);
|
||||||
|
currentWorkOffset = currentSection.workOffset;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
forceXYZ();
|
||||||
|
|
||||||
|
{ // pure 3D
|
||||||
|
var remaining = currentSection.workPlane;
|
||||||
|
if (!isSameDirection(remaining.forward, new Vector(0, 0, 1))) {
|
||||||
|
error(localize("Tool orientation is not supported."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
setRotation(remaining);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
// set coolant after we have positioned at Z
|
||||||
|
if (false) {
|
||||||
|
var c = mapCoolantTable.lookup(tool.coolant);
|
||||||
|
if (c) {
|
||||||
|
writeBlock(mFormat.format(c));
|
||||||
|
} else {
|
||||||
|
warning(localize("Coolant not supported."));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
forceAny();
|
||||||
|
|
||||||
|
split = false;
|
||||||
|
if (getProperty("useRetracts")) {
|
||||||
|
|
||||||
|
var initialPosition = getFramePosition(currentSection.getInitialPosition());
|
||||||
|
|
||||||
|
if (insertToolCall || retracted) {
|
||||||
|
gMotionModal.reset();
|
||||||
|
|
||||||
|
if (!machineConfiguration.isHeadConfiguration()) {
|
||||||
|
writeBlock(
|
||||||
|
gAbsIncModal.format(90),
|
||||||
|
gMotionModal.format(0), xOutput.format(initialPosition.x), yOutput.format(initialPosition.y)
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
writeBlock(
|
||||||
|
gAbsIncModal.format(90),
|
||||||
|
gMotionModal.format(0),
|
||||||
|
xOutput.format(initialPosition.x),
|
||||||
|
yOutput.format(initialPosition.y)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
writeBlock(
|
||||||
|
gAbsIncModal.format(90),
|
||||||
|
gMotionModal.format(0),
|
||||||
|
xOutput.format(initialPosition.x),
|
||||||
|
yOutput.format(initialPosition.y)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
split = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onDwell(seconds) {
|
||||||
|
if (seconds > 99999.999) {
|
||||||
|
warning(localize("Dwelling time is out of range."));
|
||||||
|
}
|
||||||
|
seconds = clamp(0.001, seconds, 99999.999);
|
||||||
|
writeBlock(gFormat.format(4), "X" + secFormat.format(seconds));
|
||||||
|
}
|
||||||
|
|
||||||
|
function onCycle() {
|
||||||
|
onError("Drilling is not supported by CNC.");
|
||||||
|
}
|
||||||
|
|
||||||
|
var pendingRadiusCompensation = -1;
|
||||||
|
|
||||||
|
function onRadiusCompensation() {
|
||||||
|
pendingRadiusCompensation = radiusCompensation;
|
||||||
|
}
|
||||||
|
|
||||||
|
var shapeArea = 0;
|
||||||
|
var shapePerimeter = 0;
|
||||||
|
var shapeSide = "inner";
|
||||||
|
var cuttingSequence = "";
|
||||||
|
|
||||||
|
function onParameter(name, value) {
|
||||||
|
if ((name == "action") && (value == "pierce")) {
|
||||||
|
writeComment("RUN POINT-PIERCE COMMAND HERE");
|
||||||
|
} else if (name == "shapeArea") {
|
||||||
|
shapeArea = value;
|
||||||
|
writeComment("SHAPE AREA = " + xyzFormat.format(shapeArea));
|
||||||
|
} else if (name == "shapePerimeter") {
|
||||||
|
shapePerimeter = value;
|
||||||
|
writeComment("SHAPE PERIMETER = " + xyzFormat.format(shapePerimeter));
|
||||||
|
} else if (name == "shapeSide") {
|
||||||
|
shapeSide = value;
|
||||||
|
writeComment("SHAPE SIDE = " + value);
|
||||||
|
} else if (name == "beginSequence") {
|
||||||
|
if (value == "piercing") {
|
||||||
|
if (cuttingSequence != "piercing") {
|
||||||
|
if (getProperty("allowHeadSwitches")) {
|
||||||
|
writeln("");
|
||||||
|
writeComment("Switch to piercing head before continuing");
|
||||||
|
onCommand(COMMAND_STOP);
|
||||||
|
writeln("");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (value == "cutting") {
|
||||||
|
if (cuttingSequence == "piercing") {
|
||||||
|
if (getProperty("allowHeadSwitches")) {
|
||||||
|
writeln("");
|
||||||
|
writeComment("Switch to cutting head before continuing");
|
||||||
|
onCommand(COMMAND_STOP);
|
||||||
|
writeln("");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cuttingSequence = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var deviceOn = false;
|
||||||
|
|
||||||
|
function setDeviceMode(enable) {
|
||||||
|
if (enable != deviceOn) {
|
||||||
|
deviceOn = enable;
|
||||||
|
if (enable) {
|
||||||
|
writeComment("TURN ON CUTTING HERE");
|
||||||
|
} else {
|
||||||
|
writeComment("TURN OFF CUTTING HERE");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onPower(power) {
|
||||||
|
setDeviceMode(power);
|
||||||
|
}
|
||||||
|
|
||||||
|
function onRapid(_x, _y, _z) {
|
||||||
|
|
||||||
|
if (!getProperty("useRetracts") && ((movement == MOVEMENT_RAPID) || (movement == MOVEMENT_HIGH_FEED))) {
|
||||||
|
doSplit();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (split) {
|
||||||
|
split = false;
|
||||||
|
var start = getCurrentPosition();
|
||||||
|
onExpandedRapid(start.x, start.y, start.z);
|
||||||
|
}
|
||||||
|
|
||||||
|
var x = xOutput.format(_x);
|
||||||
|
var y = yOutput.format(_y);
|
||||||
|
if (x || y) {
|
||||||
|
if (pendingRadiusCompensation >= 0) {
|
||||||
|
error(localize("Radius compensation mode cannot be changed at rapid traversal."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
writeBlock(gMotionModal.format(0), x, y);
|
||||||
|
feedOutput.reset();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onLinear(_x, _y, _z, feed) {
|
||||||
|
|
||||||
|
if (!getProperty("useRetracts") && ((movement == MOVEMENT_RAPID) || (movement == MOVEMENT_HIGH_FEED))) {
|
||||||
|
doSplit();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (split) {
|
||||||
|
resumeFromSplit(feed);
|
||||||
|
}
|
||||||
|
|
||||||
|
// at least one axis is required
|
||||||
|
if (pendingRadiusCompensation >= 0) {
|
||||||
|
// ensure that we end at desired position when compensation is turned off
|
||||||
|
xOutput.reset();
|
||||||
|
yOutput.reset();
|
||||||
|
}
|
||||||
|
var x = xOutput.format(_x);
|
||||||
|
var y = yOutput.format(_y);
|
||||||
|
var f = feedOutput.format(feed);
|
||||||
|
if (x || y) {
|
||||||
|
if (pendingRadiusCompensation >= 0) {
|
||||||
|
pendingRadiusCompensation = -1;
|
||||||
|
switch (radiusCompensation) {
|
||||||
|
case RADIUS_COMPENSATION_LEFT:
|
||||||
|
writeBlock(gFormat.format(41));
|
||||||
|
writeBlock(gMotionModal.format(1), x, y, f);
|
||||||
|
break;
|
||||||
|
case RADIUS_COMPENSATION_RIGHT:
|
||||||
|
writeBlock(gFormat.format(42));
|
||||||
|
writeBlock(gMotionModal.format(1), x, y, f);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
writeBlock(gFormat.format(40));
|
||||||
|
writeBlock(gMotionModal.format(1), x, y, f);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
writeBlock(gMotionModal.format(1), x, y, f);
|
||||||
|
}
|
||||||
|
} else if (f) {
|
||||||
|
if (getNextRecord().isMotion()) { // try not to output feed without motion
|
||||||
|
feedOutput.reset(); // force feed on next line
|
||||||
|
} else {
|
||||||
|
writeBlock(gMotionModal.format(1), f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onRapid5D(_x, _y, _z, _a, _b, _c) {
|
||||||
|
error(localize("The CNC does not support 5-axis simultaneous toolpath."));
|
||||||
|
}
|
||||||
|
|
||||||
|
function onLinear5D(_x, _y, _z, _a, _b, _c, feed) {
|
||||||
|
error(localize("The CNC does not support 5-axis simultaneous toolpath."));
|
||||||
|
}
|
||||||
|
|
||||||
|
function doSplit() {
|
||||||
|
if (!split) {
|
||||||
|
split = true;
|
||||||
|
gMotionModal.reset();
|
||||||
|
xOutput.reset();
|
||||||
|
yOutput.reset();
|
||||||
|
feedOutput.reset();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function resumeFromSplit(feed) {
|
||||||
|
if (split) {
|
||||||
|
split = false;
|
||||||
|
var start = getCurrentPosition();
|
||||||
|
var _pendingRadiusCompensation = pendingRadiusCompensation;
|
||||||
|
pendingRadiusCompensation = -1;
|
||||||
|
onExpandedLinear(start.x, start.y, start.z, feed);
|
||||||
|
pendingRadiusCompensation = _pendingRadiusCompensation;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onCircular(clockwise, cx, cy, cz, x, y, z, feed) {
|
||||||
|
|
||||||
|
if (!getProperty("useRetracts") && ((movement == MOVEMENT_RAPID) || (movement == MOVEMENT_HIGH_FEED))) {
|
||||||
|
doSplit();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// one of X/Y and I/J are required and likewise
|
||||||
|
|
||||||
|
if (pendingRadiusCompensation >= 0) {
|
||||||
|
error(localize("Radius compensation cannot be activated/deactivated for a circular move."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (split) {
|
||||||
|
resumeFromSplit(feed);
|
||||||
|
}
|
||||||
|
|
||||||
|
var start = getCurrentPosition();
|
||||||
|
if (isFullCircle()) {
|
||||||
|
if (isHelical()) {
|
||||||
|
linearize(tolerance);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
switch (getCircularPlane()) {
|
||||||
|
case PLANE_XY:
|
||||||
|
writeBlock(gMotionModal.format(clockwise ? 2 : 3), xOutput.format(x), iOutput.format(cx - start.x, 0), jOutput.format(cy - start.y, 0), feedOutput.format(feed));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
linearize(tolerance);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
switch (getCircularPlane()) {
|
||||||
|
case PLANE_XY:
|
||||||
|
writeBlock(gMotionModal.format(clockwise ? 2 : 3), xOutput.format(x), yOutput.format(y), iOutput.format(cx - start.x, 0), jOutput.format(cy - start.y, 0), feedOutput.format(feed));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
linearize(tolerance);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var mapCommand = {
|
||||||
|
COMMAND_STOP : 0,
|
||||||
|
COMMAND_OPTIONAL_STOP: 1,
|
||||||
|
COMMAND_END : 2
|
||||||
|
};
|
||||||
|
|
||||||
|
function onCommand(command) {
|
||||||
|
switch (command) {
|
||||||
|
case COMMAND_POWER_ON:
|
||||||
|
return;
|
||||||
|
case COMMAND_POWER_OFF:
|
||||||
|
return;
|
||||||
|
case COMMAND_COOLANT_ON:
|
||||||
|
return;
|
||||||
|
case COMMAND_COOLANT_OFF:
|
||||||
|
return;
|
||||||
|
case COMMAND_LOCK_MULTI_AXIS:
|
||||||
|
return;
|
||||||
|
case COMMAND_UNLOCK_MULTI_AXIS:
|
||||||
|
return;
|
||||||
|
case COMMAND_BREAK_CONTROL:
|
||||||
|
return;
|
||||||
|
case COMMAND_TOOL_MEASURE:
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var stringId = getCommandStringId(command);
|
||||||
|
var mcode = mapCommand[stringId];
|
||||||
|
if (mcode != undefined) {
|
||||||
|
writeBlock(mFormat.format(mcode));
|
||||||
|
} else {
|
||||||
|
onUnsupportedCommand(command);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onSectionEnd() {
|
||||||
|
setDeviceMode(false);
|
||||||
|
forceAny();
|
||||||
|
}
|
||||||
|
|
||||||
|
function onClose() {
|
||||||
|
writeln("");
|
||||||
|
|
||||||
|
onCommand(COMMAND_COOLANT_OFF);
|
||||||
|
|
||||||
|
onImpliedCommand(COMMAND_END);
|
||||||
|
writeBlock(mFormat.format(30)); // stop program
|
||||||
|
}
|
||||||
|
|
||||||
|
function setProperty(property, value) {
|
||||||
|
properties[property].current = value;
|
||||||
|
}
|
||||||
1741
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/kosy.cps
Normal file
1741
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/kosy.cps
Normal file
File diff suppressed because it is too large
Load Diff
2559
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/linuxcnc.cps
Normal file
2559
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/linuxcnc.cps
Normal file
File diff suppressed because it is too large
Load Diff
2768
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/mach2mill.cps
Normal file
2768
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/mach2mill.cps
Normal file
File diff suppressed because it is too large
Load Diff
2781
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/mach3mill.cps
Normal file
2781
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/mach3mill.cps
Normal file
File diff suppressed because it is too large
Load Diff
3549
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/mazak.cps
Normal file
3549
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/mazak.cps
Normal file
File diff suppressed because it is too large
Load Diff
2294
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/mazatrol fusion640m.cps
Normal file
2294
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/mazatrol fusion640m.cps
Normal file
File diff suppressed because it is too large
Load Diff
2242
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/mektronix.cps
Normal file
2242
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/mektronix.cps
Normal file
File diff suppressed because it is too large
Load Diff
2215
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/meldas.cps
Normal file
2215
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/meldas.cps
Normal file
File diff suppressed because it is too large
Load Diff
2285
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/millplus.cps
Normal file
2285
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/millplus.cps
Normal file
File diff suppressed because it is too large
Load Diff
2319
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/milltronics.cps
Normal file
2319
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/milltronics.cps
Normal file
File diff suppressed because it is too large
Load Diff
123
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/minimal.cps
Normal file
123
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/minimal.cps
Normal file
@ -0,0 +1,123 @@
|
|||||||
|
/**
|
||||||
|
Copyright (C) 2012-2014 by Autodesk, Inc.
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Minimal post processor configuration.
|
||||||
|
|
||||||
|
$Revision: 44139 80d5b547398dd7ca370e73d92fa55ce8cbc140b9 $
|
||||||
|
$Date: 2022-10-17 08:12:41 $
|
||||||
|
|
||||||
|
FORKID {96F3CC76-19C0-4828-BF27-6A50AED3B187}
|
||||||
|
*/
|
||||||
|
|
||||||
|
description = "Minimal Heidenhain";
|
||||||
|
vendor = "Heidenhain";
|
||||||
|
vendorUrl = "http://www.heidenhain.com";
|
||||||
|
legal = "Copyright (C) 2012-2014 by Autodesk, Inc.";
|
||||||
|
certificationLevel = 2;
|
||||||
|
|
||||||
|
longDescription = "Minimal milling post for Heidenhain.";
|
||||||
|
|
||||||
|
extension = "h";
|
||||||
|
setCodePage("ansi");
|
||||||
|
|
||||||
|
capabilities = CAPABILITY_MILLING;
|
||||||
|
|
||||||
|
var spindleAxisTable = new Table(["X", "Y", "Z"], {force:true});
|
||||||
|
|
||||||
|
var radiusCompensationTable = new Table(
|
||||||
|
[" R0", " RL", " RR"],
|
||||||
|
{initial:RADIUS_COMPENSATION_OFF},
|
||||||
|
"Invalid radius compensation"
|
||||||
|
);
|
||||||
|
|
||||||
|
var xyzFormat = createFormat({decimals:(unit == MM ? 3 : 4), forceSign:true});
|
||||||
|
var feedFormat = createFormat({decimals:(unit == MM ? 0 : 2), scale:(unit == MM ? 1 : 10)});
|
||||||
|
var rpmFormat = createFormat({decimals:0});
|
||||||
|
var mFormat = createFormat({prefix:"M", decimals:0});
|
||||||
|
|
||||||
|
var xOutput = createVariable({prefix:" X"}, xyzFormat);
|
||||||
|
var yOutput = createVariable({prefix:" Y"}, xyzFormat);
|
||||||
|
var zOutput = createVariable({prefix:" Z"}, xyzFormat);
|
||||||
|
var feedOutput = createVariable({prefix:" F"}, feedFormat);
|
||||||
|
|
||||||
|
var blockNumber = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Writes the specified block.
|
||||||
|
*/
|
||||||
|
function writeBlock(block) {
|
||||||
|
writeln(blockNumber + SP + block);
|
||||||
|
++blockNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
function onOpen() {
|
||||||
|
writeBlock(
|
||||||
|
"BEGIN PGM" + (programName ? (SP + programName) : "") + ((unit == MM) ? " MM" : " INCH")
|
||||||
|
);
|
||||||
|
writeBlock(mFormat.format(3)); // spindle on - clockwise
|
||||||
|
|
||||||
|
machineConfiguration.setRetractPlane(-1.0); // safe machine retract plane (M91)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Invalidates the current position and feedrate. Invoke this function to
|
||||||
|
force X, Y, Z, and F in the following block.
|
||||||
|
*/
|
||||||
|
function invalidate() {
|
||||||
|
xOutput.reset();
|
||||||
|
yOutput.reset();
|
||||||
|
zOutput.reset();
|
||||||
|
feedOutput.reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
function onSection() {
|
||||||
|
writeBlock("L Z" + xyzFormat.format(machineConfiguration.getRetractPlane()) + " M91");
|
||||||
|
var retracted = true;
|
||||||
|
|
||||||
|
writeBlock(
|
||||||
|
"TOOL CALL " + tool.number + SP + spindleAxisTable.lookup(spindleAxis) + " S" + rpmFormat.format(tool.spindleRPM)
|
||||||
|
);
|
||||||
|
|
||||||
|
setTranslation(currentSection.workOrigin);
|
||||||
|
setRotation(currentSection.workPlane);
|
||||||
|
|
||||||
|
invalidate();
|
||||||
|
|
||||||
|
var initialPosition = getFramePosition(currentSection.getInitialPosition());
|
||||||
|
if (!retracted) {
|
||||||
|
if (getCurrentPosition().z < initialPosition.z) {
|
||||||
|
writeBlock("L" + zOutput.format(initialPosition.z) + " FMAX");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
writeBlock("L" + xOutput.format(initialPosition.x) + yOutput.format(initialPosition.y) + zOutput.format(initialPosition.z));
|
||||||
|
}
|
||||||
|
|
||||||
|
function onRapid(x, y, z) {
|
||||||
|
var xyz = xOutput.format(x) + yOutput.format(y) + zOutput.format(z);
|
||||||
|
if (xyz) {
|
||||||
|
writeBlock("L" + xyz + radiusCompensationTable.lookup(radiusCompensation) + " FMAX");
|
||||||
|
feedOutput.reset();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onLinear(x, y, z, feed) {
|
||||||
|
var xyz = xOutput.format(x) + yOutput.format(y) + zOutput.format(z);
|
||||||
|
var f = feedOutput.format(feed);
|
||||||
|
if (xyz) {
|
||||||
|
writeBlock("L" + xyz + radiusCompensationTable.lookup(radiusCompensation) + f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onSectionEnd() {
|
||||||
|
// full retract in machine coordinate system
|
||||||
|
writeBlock("L Z" + xyzFormat.format(machineConfiguration.getRetractPlane()) + " R0 FMAX " + mFormat.format(91));
|
||||||
|
invalidate();
|
||||||
|
}
|
||||||
|
|
||||||
|
function onClose() {
|
||||||
|
writeBlock(mFormat.format(30)); // stop program, spindle stop, coolant off
|
||||||
|
writeBlock(
|
||||||
|
"END PGM" + (programName ? (SP + programName) : "") + ((unit == MM) ? " MM" : " INCH")
|
||||||
|
);
|
||||||
|
}
|
||||||
2307
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/mitsubishi.cps
Normal file
2307
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/mitsubishi.cps
Normal file
File diff suppressed because it is too large
Load Diff
477
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/mori-apt.cps
Normal file
477
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/mori-apt.cps
Normal file
@ -0,0 +1,477 @@
|
|||||||
|
/**
|
||||||
|
Copyright (C) 2012-2021 by Autodesk, Inc.
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Mori APT post processor configuration.
|
||||||
|
|
||||||
|
$Revision: 43898 8a6a8a924f86fab9397f9d69d17b1e07897a7fe6 $
|
||||||
|
$Date: 2022-04-20 16:35:00 $
|
||||||
|
|
||||||
|
FORKID {CA87E621-8476-4a08-B127-3B3592563184}
|
||||||
|
*/
|
||||||
|
|
||||||
|
description = "Mori APT (MfgSuite)";
|
||||||
|
vendor = "DMG MORI";
|
||||||
|
vendorUrl = "http://www.dmgmori.com";
|
||||||
|
legal = "Copyright (C) 2012-2021 by Autodesk, Inc.";
|
||||||
|
certificationLevel = 2;
|
||||||
|
minimumRevision = 45702;
|
||||||
|
|
||||||
|
longDescription = "Use this post to interface with MfgSuite from DMG MORI using the APT-CL format.";
|
||||||
|
|
||||||
|
capabilities = CAPABILITY_INTERMEDIATE;
|
||||||
|
extension = "apt";
|
||||||
|
setCodePage("ansi");
|
||||||
|
|
||||||
|
// user-defined properties
|
||||||
|
properties = {
|
||||||
|
useTailStock: {
|
||||||
|
title : "Use tail stock",
|
||||||
|
description: "Enable to use the tail stock.",
|
||||||
|
group : "configuration",
|
||||||
|
type : "boolean",
|
||||||
|
value : false,
|
||||||
|
scope : "post"
|
||||||
|
},
|
||||||
|
useBarFeeder: {
|
||||||
|
title : "Use bar feeder",
|
||||||
|
description: "Enable to use the bar feeder.",
|
||||||
|
group : "configuration",
|
||||||
|
type : "boolean",
|
||||||
|
value : false,
|
||||||
|
scope : "post"
|
||||||
|
},
|
||||||
|
usePartCatcher: {
|
||||||
|
title : "Use part catcher",
|
||||||
|
description: "Enable to use the part catcher.",
|
||||||
|
group : "configuration",
|
||||||
|
type : "boolean",
|
||||||
|
value : false,
|
||||||
|
scope : "post"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
allowHelicalMoves = true;
|
||||||
|
allowedCircularPlanes = undefined; // allow any circular motion
|
||||||
|
allowSpiralMoves = true;
|
||||||
|
maximumCircularSweep = toRad(270);
|
||||||
|
|
||||||
|
var xyzFormat = createFormat({decimals:(unit == MM ? 6 : 7)});
|
||||||
|
var txyzFormat = createFormat({decimals:8});
|
||||||
|
var feedFormat = createFormat({decimals:(unit == MM ? 0 : 2)});
|
||||||
|
var rpmFormat = createFormat({decimals:3}); // spindle speed
|
||||||
|
var secFormat = createFormat({decimals:3}); // time
|
||||||
|
|
||||||
|
// collected state
|
||||||
|
var currentFeed;
|
||||||
|
var coolantActive = false;
|
||||||
|
var radiusCompensationActive = false;
|
||||||
|
|
||||||
|
function formatComment(text) {
|
||||||
|
return filterText(text, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789(.,)/-+*= \t");
|
||||||
|
}
|
||||||
|
|
||||||
|
function writeComment(text) {
|
||||||
|
writeln("PPRINT/ '" + formatComment(text) + "'");
|
||||||
|
}
|
||||||
|
|
||||||
|
function onOpen() {
|
||||||
|
writeln("PARTNO/ '" + programName + "'");
|
||||||
|
writeComment(programComment);
|
||||||
|
writeln("BEGIN");
|
||||||
|
|
||||||
|
writeln("UNITS/ " + ((unit == IN) ? "INCH" : "MM"));
|
||||||
|
|
||||||
|
{ // stock - workpiece
|
||||||
|
var workpiece = getWorkpiece();
|
||||||
|
var delta = Vector.diff(workpiece.upper, workpiece.lower);
|
||||||
|
if (delta.isNonZero()) {
|
||||||
|
writeln("MATERL/ TYPE, 5, COND, 6, XDIM, " + xyzFormat.format(delta.x) + ", YDIM, " + xyzFormat.format(delta.y) + ", ZDIM, " + xyzFormat.format(delta.z));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
if (machineId) {
|
||||||
|
var machineId = machineConfiguration.getModel();
|
||||||
|
writeln("MACHIN/ " + machineId); // not required
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
function onComment(comment) {
|
||||||
|
writeComment(comment);
|
||||||
|
}
|
||||||
|
|
||||||
|
var mapCommand = {
|
||||||
|
COMMAND_STOP : "STOP",
|
||||||
|
COMMAND_OPTIONAL_STOP: "OPSTOP",
|
||||||
|
COMMAND_STOP_SPINDLE : "SPINDL/ ON",
|
||||||
|
COMMAND_START_SPINDLE: "SPINDL/ OFF",
|
||||||
|
|
||||||
|
// COMMAND_ORIENTATE_SPINDLE
|
||||||
|
|
||||||
|
COMMAND_SPINDLE_CLOCKWISE : "SPINDL/ CLW",
|
||||||
|
COMMAND_SPINDLE_COUNTERCLOCKWISE: "SPINDL/ CCLW"
|
||||||
|
|
||||||
|
// COMMAND_ACTIVATE_SPEED_FEED_SYNCHRONIZATION
|
||||||
|
// COMMAND_DEACTIVATE_SPEED_FEED_SYNCHRONIZATION
|
||||||
|
};
|
||||||
|
|
||||||
|
function onCommand(command) {
|
||||||
|
switch (command) {
|
||||||
|
case COMMAND_LOCK_MULTI_AXIS:
|
||||||
|
writeln("CLAMP/ TABLE, ALL, AUTO");
|
||||||
|
return;
|
||||||
|
case COMMAND_UNLOCK_MULTI_AXIS:
|
||||||
|
writeln("CLAMP/ TABLE, ALL, OFF");
|
||||||
|
return;
|
||||||
|
case COMMAND_BREAK_CONTROL:
|
||||||
|
return;
|
||||||
|
case COMMAND_TOOL_MEASURE:
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mapCommand[command]) {
|
||||||
|
writeln(mapCommand[command]);
|
||||||
|
} else {
|
||||||
|
warning("Unsupported command: " + getCommandStringId(command));
|
||||||
|
writeComment("Unsupported command: " + getCommandStringId(command));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function setCoolant(coolant) {
|
||||||
|
if (coolant == COOLANT_OFF) {
|
||||||
|
if (coolantActive) {
|
||||||
|
writeln("COOLNT/ OFF");
|
||||||
|
coolantActive = false;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
switch (coolant) {
|
||||||
|
case COOLANT_FLOOD:
|
||||||
|
writeln("COOLNT/ " + "FLOOD");
|
||||||
|
break;
|
||||||
|
case COOLANT_MIST:
|
||||||
|
writeln("COOLNT/ " + "MIST");
|
||||||
|
break;
|
||||||
|
case COOLANT_TOOL:
|
||||||
|
writeln("COOLNT/ " + "THRU");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
warning("Unsupported coolant mode: " + coolant);
|
||||||
|
writeComment("Unsupported coolant mode: " + coolant);
|
||||||
|
}
|
||||||
|
if (!coolantActive) {
|
||||||
|
writeln("COOLNT/ ON");
|
||||||
|
coolantActive = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onCoolant() {
|
||||||
|
setCoolant(coolant);
|
||||||
|
}
|
||||||
|
|
||||||
|
function onSection() {
|
||||||
|
writeln("");
|
||||||
|
|
||||||
|
if (hasParameter("operation-comment")) {
|
||||||
|
var comment = getParameter("operation-comment");
|
||||||
|
if (comment) {
|
||||||
|
writeln("OPNAME/ '" + formatComment(comment) + "'"); // quotes are not required
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
writeln("APPLY/ " + ((currentSection.getType() == TYPE_TURNING) ? "TURN" : "MILL"));
|
||||||
|
// writeln("OPSKIP");
|
||||||
|
|
||||||
|
if (currentSection.getType() != TYPE_TURNING) {
|
||||||
|
writeln(
|
||||||
|
"MCSYS/ NUM, " + ((currentSection.workOffset > 0) ? currentSection.workOffset : 1) +
|
||||||
|
", POINT, " + xyzFormat.format(currentSection.workOrigin.x) + ", " + xyzFormat.format(currentSection.workOrigin.y) + ", " + xyzFormat.format(currentSection.workOrigin.z) +
|
||||||
|
", VECTOR, " + txyzFormat.format(currentSection.workPlane.right.x) + ", " + txyzFormat.format(currentSection.workPlane.right.y) + ", " + txyzFormat.format(currentSection.workPlane.right.z) +
|
||||||
|
", VECTOR, " + txyzFormat.format(currentSection.workPlane.up.x) + ", " + txyzFormat.format(currentSection.workPlane.up.y) + ", " + txyzFormat.format(currentSection.workPlane.up.z)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currentSection.isMultiAxis()) {
|
||||||
|
writeln("MULTAX/ ON");
|
||||||
|
writeln("TCP/ ON"); // alternatively TCPCTL
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((currentSection.getType() != TYPE_TURNING) && !currentSection.isMultiAxis()) {
|
||||||
|
onCommand(COMMAND_LOCK_MULTI_AXIS);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
var d = tool.diameter;
|
||||||
|
var r = tool.cornerRadius;
|
||||||
|
var e = 0;
|
||||||
|
var f = 0;
|
||||||
|
var a = 0;
|
||||||
|
var b = 0;
|
||||||
|
var h = tool.bodyLength;
|
||||||
|
writeln("CUTTER/ " + d + ", " + r + ", " + e + ", " + f + ", " + a + ", " + b + ", " + h);
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (currentSection.getType() == TYPE_TURNING) {
|
||||||
|
writeln("SELECT/ TRSPND, " + currentSection.spindle);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currentSection.getType() != TYPE_TURNING) {
|
||||||
|
writeln("TOOLNO/ " + tool.number + ", MILL, OSETNO, " + tool.lengthOffset + ", " + tool.diameterOffset);
|
||||||
|
}
|
||||||
|
|
||||||
|
setCoolant(tool.coolant);
|
||||||
|
|
||||||
|
var nextTool = getNextTool(tool.number);
|
||||||
|
if (!nextTool) {
|
||||||
|
nextTool = getSection(0).getTool();
|
||||||
|
}
|
||||||
|
writeln("LOAD/ TOOL, " + tool.number + ", '" + tool.comment + "', NEXTTL, " + nextTool.number);
|
||||||
|
|
||||||
|
if (currentSection.getType() != TYPE_TURNING) {
|
||||||
|
writeln("SPINDL/ RPM, " + rpmFormat.format(spindleSpeed) + ", " + (tool.clockwise ? "CLW" : "CCLW"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currentSection.getType() == TYPE_TURNING) {
|
||||||
|
writeln(
|
||||||
|
"SPINDL/ " + rpmFormat.format(spindleSpeed) + ", " + ((unit == IN) ? "SFM" : "SMM") + ", " + (tool.clockwise ? "CLW" : "CCLW")
|
||||||
|
);
|
||||||
|
|
||||||
|
writeln("TLSTCK/ QUILL, " + (getProperty("useTailStock") ? "IN" : "OUT")); // TAG: customize
|
||||||
|
}
|
||||||
|
|
||||||
|
writeln("CUTCOM/ ON, LENGTH, " + tool.lengthOffset); // also required for multi-axis
|
||||||
|
}
|
||||||
|
|
||||||
|
function onDwell(time) {
|
||||||
|
writeln("DELAY/ " + secFormat.format(time)); // in seconds / REV is also supported
|
||||||
|
}
|
||||||
|
|
||||||
|
function onRadiusCompensation() {
|
||||||
|
if (radiusCompensation == RADIUS_COMPENSATION_OFF) {
|
||||||
|
if (radiusCompensationActive) {
|
||||||
|
radiusCompensationActive = false;
|
||||||
|
writeln("CUTCOM/ OFF"); // only turns off diameter compensation
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (!radiusCompensationActive) {
|
||||||
|
radiusCompensationActive = true;
|
||||||
|
writeln("CUTCOM/ ON");
|
||||||
|
}
|
||||||
|
var direction = (radiusCompensation == RADIUS_COMPENSATION_LEFT) ? "LEFT" : "RIGHT";
|
||||||
|
if (true || (tool.diameterOffset != 0)) {
|
||||||
|
writeln("CUTCOM/ " + direction + ", XYPLAN, OSETNO, " + tool.diameterOffset);
|
||||||
|
} else {
|
||||||
|
writeln("CUTCOM/ " + direction + ", XYPLAN");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onSpindleSpeed(spindleSpeed) {
|
||||||
|
if (currentSection.getType() != TYPE_TURNING) {
|
||||||
|
writeln("SPINDL/ RPM, " + rpmFormat.format(spindleSpeed));
|
||||||
|
}
|
||||||
|
if (currentSection.getType() == TYPE_TURNING) {
|
||||||
|
writeln("SPINDL/ " + rpmFormat.format(spindleSpeed) + ", " + ((unit == IN) ? "SFM" : "SMM"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onRapid(x, y, z) {
|
||||||
|
writeln("RAPID");
|
||||||
|
writeln("GOTO/ " + xyzFormat.format(x) + ", " + xyzFormat.format(y) + ", " + xyzFormat.format(z));
|
||||||
|
}
|
||||||
|
|
||||||
|
function onLinear(x, y, z, feed) {
|
||||||
|
if (feed != currentFeed) {
|
||||||
|
currentFeed = feed;
|
||||||
|
writeln("FEDRAT/ PERMIN, " + feedFormat.format(feed));
|
||||||
|
}
|
||||||
|
writeln("GOTO/ " + xyzFormat.format(x) + ", " + xyzFormat.format(y) + ", " + xyzFormat.format(z));
|
||||||
|
}
|
||||||
|
|
||||||
|
function onRapid5D(x, y, z, dx, dy, dz) {
|
||||||
|
writeln("RAPID");
|
||||||
|
writeln("GOTO/ " + xyzFormat.format(x) + ", " + xyzFormat.format(y) + ", " + xyzFormat.format(z) + ", " + txyzFormat.format(dx) + ", " + txyzFormat.format(dy) + ", " + txyzFormat.format(dz));
|
||||||
|
}
|
||||||
|
|
||||||
|
function onLinear5D(x, y, z, dx, dy, dz, feed) {
|
||||||
|
if (feed != currentFeed) {
|
||||||
|
currentFeed = feed;
|
||||||
|
writeln("FEDRAT/ PERMIN, " + feedFormat.format(feed));
|
||||||
|
}
|
||||||
|
writeln("GOTO/ " + xyzFormat.format(x) + ", " + xyzFormat.format(y) + ", " + xyzFormat.format(z) + ", " + txyzFormat.format(dx) + ", " + txyzFormat.format(dy) + ", " + txyzFormat.format(dz));
|
||||||
|
}
|
||||||
|
|
||||||
|
function onCircular(clockwise, cx, cy, cz, x, y, z, feed) {
|
||||||
|
if (feed != currentFeed) {
|
||||||
|
currentFeed = feed;
|
||||||
|
writeln("FEDRAT/ PERMIN, " + feedFormat.format(feed));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isHelical()) {
|
||||||
|
switch (getCircularPlane()) {
|
||||||
|
case PLANE_XY:
|
||||||
|
writeln("ARCSLP/ " + xyzFormat.format((clockwise ? 1 : -1) * getHelicalDistance()));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
linearize(tolerance);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (getCircularPlane()) {
|
||||||
|
case PLANE_XY:
|
||||||
|
case PLANE_ZX:
|
||||||
|
case PLANE_YZ:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
linearize(tolerance);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var n = getCircularNormal();
|
||||||
|
if (clockwise) {
|
||||||
|
n = Vector.product(n, -1);
|
||||||
|
}
|
||||||
|
writeln(
|
||||||
|
"MOVARC/ CENTER, " + xyzFormat.format(cx) + ", " + xyzFormat.format(cy) + ", " + xyzFormat.format(cz) +
|
||||||
|
", AXIS, " + txyzFormat.format(n.x) + ", " + txyzFormat.format(n.y) + ", " + txyzFormat.format(n.z) + // ccw
|
||||||
|
", RADIUS, " + xyzFormat.format(getCircularRadius())
|
||||||
|
// ", TIMES, " + n
|
||||||
|
);
|
||||||
|
writeln("GOTO/ " + xyzFormat.format(x) + ", " + xyzFormat.format(y) + ", " + xyzFormat.format(z));
|
||||||
|
}
|
||||||
|
|
||||||
|
function onCycle() {
|
||||||
|
var d = cycle.depth - cycle.stock;
|
||||||
|
var f = cycle.feedrate;
|
||||||
|
var c = cycle.clearance - cycle.stock;
|
||||||
|
var r = cycle.clearance - cycle.retract;
|
||||||
|
var q = cycle.dwell;
|
||||||
|
var i = cycle.incrementalDepth; // for pecking
|
||||||
|
|
||||||
|
var statement;
|
||||||
|
|
||||||
|
switch (cycleType) {
|
||||||
|
case "drilling":
|
||||||
|
statement = "CYCLE/ DRILL, DEPTH, " + xyzFormat.format(d) + ", PERMIN, " + feedFormat.format(f) + ", CLEAR, " + xyzFormat.format(c) + ", RETURN, " + xyzFormat.format(c);
|
||||||
|
if (r > 0) {
|
||||||
|
statement += ", RAPTO, " + xyzFormat.format(r);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "counter-boring":
|
||||||
|
statement = "CYCLE/ FACE, DEPTH, " + xyzFormat.format(d) + ", PERMIN, " + feedFormat.format(f) + ", CLEAR, " + xyzFormat.format(c) + ", RETURN, " + xyzFormat.format(c);
|
||||||
|
if (r > 0) {
|
||||||
|
statement += ", RAPTO, " + xyzFormat.format(r);
|
||||||
|
}
|
||||||
|
if (q > 0) {
|
||||||
|
statement += ", DWELL, " + secFormat.format(q);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "reaming":
|
||||||
|
statement = "CYCLE/ REAM, DEPTH, " + xyzFormat.format(d) + ", PERMIN, " + feedFormat.format(f) + ", CLEAR, " + xyzFormat.format(c) + ", RETURN, " + xyzFormat.format(c);
|
||||||
|
if (r > 0) {
|
||||||
|
statement += ", RAPTO, " + xyzFormat.format(r);
|
||||||
|
}
|
||||||
|
if (q > 0) {
|
||||||
|
statement += ", DWELL, " + secFormat.format(q);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "boring":
|
||||||
|
statement = "CYCLE/ BORE, DEPTH, " + xyzFormat.format(d) + ", PERMIN, " + feedFormat.format(f) + ", CLEAR, " + xyzFormat.format(c) + ", RETURN, " + xyzFormat.format(c);
|
||||||
|
if (r > 0) {
|
||||||
|
statement += ", RAPTO, " + xyzFormat.format(r);
|
||||||
|
}
|
||||||
|
if (q > 0) {
|
||||||
|
statement += ", DWELL, " + secFormat.format(q);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "deep-drilling":
|
||||||
|
statement = "CYCLE/ DEEP, DEPTH, " + xyzFormat.format(d) + ", STEP, " + xyzFormat.format(i) + ", PERMIN, " + feedFormat.format(f) + ", CLEAR, " + xyzFormat.format(c) + ", RETURN, " + xyzFormat.format(c);
|
||||||
|
if (r > 0) {
|
||||||
|
statement += ", RAPTO, " + xyzFormat.format(r);
|
||||||
|
}
|
||||||
|
if (q > 0) {
|
||||||
|
statement += ", DWELL, " + secFormat.format(q);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "chip-breaking":
|
||||||
|
statement = "CYCLE/ BRKCHP, DEPTH, " + xyzFormat.format(d) + ", STEP, " + xyzFormat.format(i) + ", PERMIN, " + feedFormat.format(f) + ", CLEAR, " + xyzFormat.format(c) + ", RETURN, " + xyzFormat.format(c);
|
||||||
|
if (r > 0) {
|
||||||
|
statement += ", RAPTO, " + xyzFormat.format(r);
|
||||||
|
}
|
||||||
|
if (q > 0) {
|
||||||
|
statement += ", DWELL, " + secFormat.format(q);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "tapping":
|
||||||
|
if (tool.type == TOOL_TAP_LEFT_HAND) {
|
||||||
|
cycleNotSupported();
|
||||||
|
} else {
|
||||||
|
statement = "CYCLE/ TAP, DEPTH, " + xyzFormat.format(d) + ", PERMIN, " + feedFormat.format(f) + ", CLEAR, " + xyzFormat.format(c) + ", RETURN, " + xyzFormat.format(c);
|
||||||
|
if (r > 0) {
|
||||||
|
statement += ", RAPTO, " + xyzFormat.format(r);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "right-tapping":
|
||||||
|
statement = "CYCLE/ TAP, DEPTH, " + xyzFormat.format(d) + ", PERMIN, " + feedFormat.format(f) + ", CLEAR, " + xyzFormat.format(c) + ", RETURN, " + xyzFormat.format(c);
|
||||||
|
if (r > 0) {
|
||||||
|
statement += ", RAPTO, " + xyzFormat.format(r);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
cycleNotSupported();
|
||||||
|
}
|
||||||
|
writeln(statement);
|
||||||
|
}
|
||||||
|
|
||||||
|
function onCyclePoint(x, y, z) {
|
||||||
|
writeln("FEDRAT/ " + feedFormat.format(cycle.feedrate));
|
||||||
|
writeln("GOTO/ " + xyzFormat.format(x) + ", " + xyzFormat.format(y) + ", " + xyzFormat.format(cycle.stock));
|
||||||
|
}
|
||||||
|
|
||||||
|
function onCycleEnd() {
|
||||||
|
writeln("CYCLE/ OFF");
|
||||||
|
}
|
||||||
|
|
||||||
|
function onSectionEnd() {
|
||||||
|
if (currentSection.isMultiAxis()) {
|
||||||
|
writeln("TCP/ OFF");
|
||||||
|
writeln("MULTAX/ OFF");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (coolantActive) {
|
||||||
|
coolantActive = false;
|
||||||
|
writeln("COOLNT/ OFF");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (getProperty("usePartCatcher") &&
|
||||||
|
hasParameter("operation-strategy") &&
|
||||||
|
(getParameter("operation-strategy") == "turningPart")) {
|
||||||
|
writeln("");
|
||||||
|
writeln("CATCHR/ IN"); // TAG: customize
|
||||||
|
forceXYZ();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onClose() {
|
||||||
|
writeln("");
|
||||||
|
|
||||||
|
if (coolantActive) {
|
||||||
|
coolantActive = false;
|
||||||
|
writeln("COOLNT/ OFF");
|
||||||
|
}
|
||||||
|
writeln("GOHOME/");
|
||||||
|
|
||||||
|
if (getProperty("useBarFeeder")) {
|
||||||
|
writeln("BARFED/ 0, TO, 0"); // TAG: customize
|
||||||
|
}
|
||||||
|
|
||||||
|
writeln("END/");
|
||||||
|
}
|
||||||
|
|
||||||
|
function setProperty(property, value) {
|
||||||
|
properties[property].current = value;
|
||||||
|
}
|
||||||
1082
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/multicam hpgl.cps
Normal file
1082
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/multicam hpgl.cps
Normal file
File diff suppressed because it is too large
Load Diff
1558
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/multicam.cps
Normal file
1558
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/multicam.cps
Normal file
File diff suppressed because it is too large
Load Diff
1816
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/mydiycnc.cps
Normal file
1816
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/mydiycnc.cps
Normal file
File diff suppressed because it is too large
Load Diff
2156
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/num.cps
Normal file
2156
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/num.cps
Normal file
File diff suppressed because it is too large
Load Diff
4415
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/okuma.cps
Normal file
4415
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/okuma.cps
Normal file
File diff suppressed because it is too large
Load Diff
430
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/omax.cps
Normal file
430
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/omax.cps
Normal file
@ -0,0 +1,430 @@
|
|||||||
|
/**
|
||||||
|
Copyright (C) 2012-2021 by Autodesk, Inc.
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
OMAX waterjet post processor configuration.
|
||||||
|
|
||||||
|
$Revision: 44489 463fd7c2dd9948f82fbd288395b22f549b778dc5 $
|
||||||
|
$Date: 2023-05-17 14:08:01 $
|
||||||
|
|
||||||
|
FORKID {A806DFCD-07A4-4506-9AF6-04397CF5BF05}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
ATTENTION:
|
||||||
|
|
||||||
|
1. The initial head position must always match the WCS XY origin
|
||||||
|
specified in the CAM Setup.
|
||||||
|
|
||||||
|
2. The initial Z head position must always be zeroed just above the top of the stock.
|
||||||
|
*/
|
||||||
|
|
||||||
|
description = "OMAX Waterjet";
|
||||||
|
vendor = "OMAX";
|
||||||
|
vendorUrl = "https://www.omax.com";
|
||||||
|
legal = "Copyright (C) 2012-2021 by Autodesk, Inc.";
|
||||||
|
certificationLevel = 2;
|
||||||
|
minimumRevision = 45702;
|
||||||
|
extension = "omx";
|
||||||
|
setCodePage("ascii");
|
||||||
|
|
||||||
|
longDescription = "Post for OMAX Waterjet. 1) The initial head position must always match the WCS XY origin specified in the CAM Setup. 2) The initial Z head position must always be zeroed just above the top of the stock.";
|
||||||
|
|
||||||
|
// unit = IN; // only inch mode is supported
|
||||||
|
capabilities = CAPABILITY_MILLING | CAPABILITY_JET; // milling will be removed
|
||||||
|
tolerance = spatial(0.002, MM);
|
||||||
|
|
||||||
|
minimumChordLength = spatial(0.25, MM);
|
||||||
|
minimumCircularRadius = spatial(0.01, MM);
|
||||||
|
maximumCircularRadius = spatial(1000, MM);
|
||||||
|
minimumCircularSweep = toRad(0.01);
|
||||||
|
maximumCircularSweep = toRad(180);
|
||||||
|
allowHelicalMoves = false;
|
||||||
|
allowedCircularPlanes = 1 << PLANE_XY; // allow only XY circular motion
|
||||||
|
|
||||||
|
properties = {
|
||||||
|
etchQuality: {
|
||||||
|
title : "Etch quality",
|
||||||
|
description: "Defines the etch quality.",
|
||||||
|
type : "number",
|
||||||
|
value : 6,
|
||||||
|
scope : "post"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// use fixed width instead
|
||||||
|
var xyzFormat = createFormat({decimals:4, trim:false});
|
||||||
|
var bowFormat = createFormat({decimals:4, trim:false});
|
||||||
|
var tFormat = createFormat({decimals:4, trim:false});
|
||||||
|
var integerFormat = createFormat({decimals:0});
|
||||||
|
|
||||||
|
// fixed settings
|
||||||
|
var preamble = true;
|
||||||
|
|
||||||
|
var qualFeed = 0; // turn off waterjet
|
||||||
|
var tas = 0; // unused tilt start
|
||||||
|
var tae = 0; // unused tilt end
|
||||||
|
var thickness = 0;
|
||||||
|
|
||||||
|
// used for delaying moves
|
||||||
|
var xTemp = 0;
|
||||||
|
var yTemp = 0;
|
||||||
|
var zTemp = 0;
|
||||||
|
var bowTemp = 0;
|
||||||
|
var gotMove = false;
|
||||||
|
|
||||||
|
// center compensation
|
||||||
|
var _compensationOffset = 0;
|
||||||
|
|
||||||
|
var etchOperation = false; // though-cut unless set to true
|
||||||
|
|
||||||
|
var EOB = "R,R,R,R,R,R,[END]";
|
||||||
|
|
||||||
|
/**
|
||||||
|
Writes the specified block.
|
||||||
|
*/
|
||||||
|
function writeBlock() {
|
||||||
|
writeWords2("[0], ", arguments, EOB);
|
||||||
|
}
|
||||||
|
|
||||||
|
function convertJSDateToExcelDate(date) {
|
||||||
|
var returnDateTime = 25569.0 + ((date.getTime() - (date.getTimezoneOffset() * 60 * 1000)) / (1000 * 60 * 60 * 24));
|
||||||
|
return returnDateTime.toString().substr(0, 5);
|
||||||
|
}
|
||||||
|
|
||||||
|
var FIELD = " ";
|
||||||
|
|
||||||
|
/** Make sure fields are aligned. */
|
||||||
|
function f(text) {
|
||||||
|
var length = text.length;
|
||||||
|
if (length > 10) {
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
return FIELD.substr(0, 10 - length) + text;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Make sure fields are aligned. */
|
||||||
|
function fi(text, size) {
|
||||||
|
var length = text.length;
|
||||||
|
if (length > size) {
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
return FIELD.substr(0, size - length) + text;
|
||||||
|
}
|
||||||
|
|
||||||
|
function onOpen() {
|
||||||
|
|
||||||
|
if ((getProperty("etchQuality") != 6) && (getProperty("etchQuality") != 7)) {
|
||||||
|
error(localize("Etch quality must be either 6 or 7."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
setWordSeparator("");
|
||||||
|
|
||||||
|
switch (unit) {
|
||||||
|
case IN:
|
||||||
|
// Do nothing, Omax files can only be in IN
|
||||||
|
break;
|
||||||
|
case MM:
|
||||||
|
xyzFormat = createFormat({decimals:4, trim:false, scale:1 / 25.4}); // convert to inches
|
||||||
|
// error(localize("Program must be in inches."));
|
||||||
|
// return;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
{ // stock - workpiece
|
||||||
|
var workpiece = getWorkpiece();
|
||||||
|
var delta = Vector.diff(workpiece.upper, workpiece.lower);
|
||||||
|
if (delta.isNonZero()) {
|
||||||
|
// thickness = (workpiece.upper.z - workpiece.lower.z);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (preamble) {
|
||||||
|
writeln("// Slash Slash marks (//) represent remarks that are ignored by the computer");
|
||||||
|
writeln("// if the slashes are the first characters in the line");
|
||||||
|
writeln("// For additional information about .OMX files, consult the OMAX Interactive Reference.");
|
||||||
|
writeln("// The line below identifies this file as a .OMX file. Do not modify it, or the file will not open.");
|
||||||
|
writeln("This is an OMAX (.OMX) file. Do not modify the first " + "\"" + "2" + "\"" + " lines of this file. For information on this file format contact softwareengineering@omax.com or visit http://www.omax.com.");
|
||||||
|
writeln("2");
|
||||||
|
writeln("// Above is a flag that indicates the kind of data this file contains 2 means tool path data.");
|
||||||
|
writeln("// Below is the version of this file format. Do not modify it, unless you are confident you know what you are doing.");
|
||||||
|
writeln("2");
|
||||||
|
writeln("// Below is the date that this file was first created, in units of days since 1900.");
|
||||||
|
var dateNow = new Date();
|
||||||
|
writeln(convertJSDateToExcelDate(dateNow));
|
||||||
|
writeln("// The following fields are reserved for future use. Do not delete or modify them.");
|
||||||
|
writeln("[Reserved]");
|
||||||
|
writeln("[Reserved]");
|
||||||
|
writeln("[Reserved]");
|
||||||
|
writeln("[Reserved]");
|
||||||
|
writeln("[Reserved]");
|
||||||
|
writeln("[Reserved]");
|
||||||
|
writeln("// Insert any comments here. These may be displayed in some dialogs to the user,");
|
||||||
|
writeln("// Such as the dialog for the parametric shape library.");
|
||||||
|
writeln("[COMMENT]");
|
||||||
|
var product = "Autodesk CAM";
|
||||||
|
if (hasGlobalParameter("generated-by")) {
|
||||||
|
product = getGlobalParameter("generated-by");
|
||||||
|
}
|
||||||
|
writeln("Generated by " + product);
|
||||||
|
if (programComment) {
|
||||||
|
writeln(programComment);
|
||||||
|
}
|
||||||
|
writeln("[END]");
|
||||||
|
writeln("[VARIABLES]");
|
||||||
|
writeln("// Insert variable declarations here if making a parametric file.");
|
||||||
|
writeln("// Format is:");
|
||||||
|
writeln("// Variable Name, Min Value, Max Value, Default Value, LengthFlag (True or False)");
|
||||||
|
writeln("[END]");
|
||||||
|
writeln("// Tool path data is below.");
|
||||||
|
writeln("// Items marked with R are reserved for future use");
|
||||||
|
writeln("// Some features such as Thickness and Tilt may not yet be supported.");
|
||||||
|
writeln("// ");
|
||||||
|
writeln("// " + f("X") + " " + f("Y") + " " + f("Z") + " " + f("StartTilt") + " " + f("EndTilt") + " " + f("Bow") + " " + fi("Quality", 8) + " " + fi("Side", 6) + " " + fi("Thickness", 10));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (getNumberOfSections() > 0) {
|
||||||
|
var firstSection = getSection(0);
|
||||||
|
|
||||||
|
var remaining = firstSection.workPlane;
|
||||||
|
if (!isSameDirection(remaining.forward, new Vector(0, 0, 1))) {
|
||||||
|
error(localize("Tool orientation is not supported."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
setRotation(remaining);
|
||||||
|
|
||||||
|
var originZ = firstSection.getGlobalZRange().getMinimum(); // the cutting depth of the first section
|
||||||
|
|
||||||
|
for (var i = 0; i < getNumberOfSections(); ++i) {
|
||||||
|
var section = getSection(i);
|
||||||
|
var z = section.getGlobalZRange().getMinimum();
|
||||||
|
if ((z + 1e-9) < originZ) {
|
||||||
|
error(localize("You are trying to machine at multiple depths which is not allowed."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// always output X0 Y0 Z0 as the first move for OMAX - first position is always incremental from current head position
|
||||||
|
writeBlock(
|
||||||
|
f(xyzFormat.format(0)), ", ", f(xyzFormat.format(0)), ", ", f(xyzFormat.format(0)), ", ",
|
||||||
|
f(tFormat.format(tas)), ", ", f(tFormat.format(tae)), ", ", // need to switch format if this is going to be used
|
||||||
|
f(bowFormat.format(bowTemp)), ", ",
|
||||||
|
fi(integerFormat.format(qualFeed), 8), ", ",
|
||||||
|
fi(integerFormat.format(currentCompensationOffset), 6), ", ",
|
||||||
|
fi(integerFormat.format(thickness), 10), ", "
|
||||||
|
);
|
||||||
|
|
||||||
|
if (getNumberOfSections() > 0) {
|
||||||
|
var firstSection = getSection(0);
|
||||||
|
var initialPosition = getFramePosition(firstSection.getInitialPosition());
|
||||||
|
|
||||||
|
// move up to initial Z position
|
||||||
|
validate(xyzFormat.getResultingValue(initialPosition.z) >= 0, "Toolpath is unexpectedly below Z0."); // just for safety
|
||||||
|
writeBlock(
|
||||||
|
f(xyzFormat.format(0)), ", ", f(xyzFormat.format(0)), ", ", f(xyzFormat.format(initialPosition.z)), ", ",
|
||||||
|
f(tFormat.format(tas)), ", ", f(tFormat.format(tae)), ", ", // need to switch format if this is going to be used
|
||||||
|
f(bowFormat.format(bowTemp)), ", ",
|
||||||
|
fi(integerFormat.format(qualFeed), 8), ", ",
|
||||||
|
fi(integerFormat.format(currentCompensationOffset), 6), ", ",
|
||||||
|
fi(integerFormat.format(thickness), 10), ", "
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onSection() {
|
||||||
|
var remaining = currentSection.workPlane;
|
||||||
|
if (!isSameDirection(remaining.forward, new Vector(0, 0, 1))) {
|
||||||
|
error(localize("Tool orientation is not supported."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
setRotation(remaining);
|
||||||
|
|
||||||
|
etchOperation = false;
|
||||||
|
if (currentSection.getType() == TYPE_JET) {
|
||||||
|
|
||||||
|
switch (tool.type) {
|
||||||
|
case TOOL_WATER_JET:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
error(localize("The CNC does not support the required tool."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (currentSection.jetMode) {
|
||||||
|
case JET_MODE_THROUGH:
|
||||||
|
break;
|
||||||
|
case JET_MODE_ETCHING:
|
||||||
|
etchOperation = true;
|
||||||
|
break;
|
||||||
|
case JET_MODE_VAPORIZE:
|
||||||
|
error(localize("Vaporize is not supported by the CNC."));
|
||||||
|
return;
|
||||||
|
default:
|
||||||
|
error(localize("Unsupported cutting mode."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// currentSection.quality
|
||||||
|
|
||||||
|
} else if (currentSection.getType() == TYPE_MILLING) {
|
||||||
|
warning(localize("Milling toolpath will be used as waterjet through-cutting toolpath."));
|
||||||
|
} else {
|
||||||
|
error(localize("CNC doesn't support the toolpath."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onParameter(name, value) {
|
||||||
|
}
|
||||||
|
|
||||||
|
var currentQual = 0;
|
||||||
|
var currentCompensationOffset = 0; // center compensation
|
||||||
|
|
||||||
|
function flushMove() {
|
||||||
|
if (gotMove) {
|
||||||
|
if ((currentQual == 0) || (qualFeed == 0)) {
|
||||||
|
// the alternative would be to skip the moves where the compensation is changed - but this would cause the lead in/out to be different
|
||||||
|
currentCompensationOffset = _compensationOffset; // compensation offset may only be changed during quality 0
|
||||||
|
}
|
||||||
|
currentQual = qualFeed;
|
||||||
|
/*
|
||||||
|
if (currentCompensationOffset != compensationOffset) {
|
||||||
|
writeComment("Compensation mismatch");
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
validate(xyzFormat.getResultingValue(zTemp) >= 0, "Toolpath is unexpectedly below Z0."); // just for safety
|
||||||
|
writeBlock(
|
||||||
|
f(xyzFormat.format(xTemp)), ", ", f(xyzFormat.format(yTemp)), ", ", f(xyzFormat.format(zTemp)), ", ",
|
||||||
|
f(tFormat.format(tas)), ", ", f(tFormat.format(tae)), ", ", // need to switch format if this is going to be used
|
||||||
|
f(bowFormat.format(bowTemp)), ", ",
|
||||||
|
fi(integerFormat.format(qualFeed), 8), ", ",
|
||||||
|
fi(integerFormat.format(currentCompensationOffset), 6), ", ",
|
||||||
|
fi(integerFormat.format(thickness), 10), ", "
|
||||||
|
);
|
||||||
|
gotMove = false;
|
||||||
|
bowTemp = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onRapid(x, y, z) {
|
||||||
|
flushMove();
|
||||||
|
|
||||||
|
xTemp = x;
|
||||||
|
yTemp = y;
|
||||||
|
zTemp = z;
|
||||||
|
bowTemp = 0;
|
||||||
|
gotMove = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function onLinear(x, y, z, feed) {
|
||||||
|
flushMove();
|
||||||
|
|
||||||
|
xTemp = x;
|
||||||
|
yTemp = y;
|
||||||
|
zTemp = z;
|
||||||
|
bowTemp = 0;
|
||||||
|
gotMove = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function onCircular(clockwise, cx, cy, cz, x, y, z, feed) {
|
||||||
|
// spirals are not allowed - arcs must be < 360deg
|
||||||
|
// fail if radius compensation is changed for circular move
|
||||||
|
validate(gotMove, "Move expected before circular move.");
|
||||||
|
validate(bowTemp == 0);
|
||||||
|
bowTemp = (clockwise ? -1 : 1) * Math.tan(getCircularSweep() / 4); // ATTENTION: setting bow for the pending move!
|
||||||
|
|
||||||
|
flushMove();
|
||||||
|
|
||||||
|
xTemp = x;
|
||||||
|
yTemp = y;
|
||||||
|
zTemp = z;
|
||||||
|
bowTemp = 0;
|
||||||
|
gotMove = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function onMovement(movement) {
|
||||||
|
switch (movement) {
|
||||||
|
case MOVEMENT_CUTTING:
|
||||||
|
case MOVEMENT_FINISH_CUTTING:
|
||||||
|
if (etchOperation) {
|
||||||
|
qualFeed = getProperty("etchQuality");
|
||||||
|
} else {
|
||||||
|
switch (currentSection.quality) {
|
||||||
|
case 1:
|
||||||
|
qualFeed = 5;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
qualFeed = 4;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
qualFeed = 2;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
qualFeed = 3;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case MOVEMENT_LEAD_IN:
|
||||||
|
case MOVEMENT_LEAD_OUT:
|
||||||
|
if (etchOperation) {
|
||||||
|
qualFeed = getProperty("etchQuality");
|
||||||
|
} else {
|
||||||
|
qualFeed = 9; // make a user defined setting
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case MOVEMENT_RAPID:
|
||||||
|
qualFeed = 0; // turn off waterjet
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if (etchOperation) {
|
||||||
|
qualFeed = getProperty("etchQuality");
|
||||||
|
} else {
|
||||||
|
qualFeed = 0; // turn off waterjet - used for head down moves
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onRadiusCompensation() {
|
||||||
|
switch (radiusCompensation) {
|
||||||
|
case RADIUS_COMPENSATION_LEFT:
|
||||||
|
_compensationOffset = 1;
|
||||||
|
break;
|
||||||
|
case RADIUS_COMPENSATION_RIGHT:
|
||||||
|
_compensationOffset = 2;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
_compensationOffset = 0; // center compensation
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onCycle() {
|
||||||
|
error(localize("Canned cycles are not supported."));
|
||||||
|
}
|
||||||
|
|
||||||
|
function onSectionEnd() {
|
||||||
|
qualFeed = 0; // turn off waterjet
|
||||||
|
_compensationOffset = 0; // center compensation
|
||||||
|
|
||||||
|
if (!gotMove) {
|
||||||
|
var p = getCurrentPosition();
|
||||||
|
xTemp = p.x;
|
||||||
|
yTemp = p.y;
|
||||||
|
zTemp = p.z;
|
||||||
|
bowTemp = 0;
|
||||||
|
gotMove = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
validate(gotMove, "Move expected at end of operation to turn off waterjet.");
|
||||||
|
flushMove();
|
||||||
|
}
|
||||||
|
|
||||||
|
function onClose() {
|
||||||
|
}
|
||||||
|
|
||||||
|
function setProperty(property, value) {
|
||||||
|
properties[property].current = value;
|
||||||
|
}
|
||||||
228
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/operation-sheet-csv.cps
Normal file
228
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/operation-sheet-csv.cps
Normal file
@ -0,0 +1,228 @@
|
|||||||
|
/**
|
||||||
|
Copyright (C) 2012-2024 by Autodesk, Inc.
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Operation sheet CSV configuration.
|
||||||
|
|
||||||
|
$Revision: 44948 1104db9da08471dc1d758431fd9ef8822fd95c21 $
|
||||||
|
$Date: 2024-03-12 07:10:57 $
|
||||||
|
|
||||||
|
FORKID {FD67790C-7676-4ee2-B726-87942A6FAB34}
|
||||||
|
*/
|
||||||
|
|
||||||
|
description = "Operation Sheet CSV";
|
||||||
|
vendor = "Autodesk";
|
||||||
|
vendorUrl = "http://www.autodesk.com";
|
||||||
|
legal = "Copyright (C) 2012-2024 by Autodesk, Inc.";
|
||||||
|
certificationLevel = 2;
|
||||||
|
|
||||||
|
longDescription = "Setup sheet for exporting relevant info for each operation to an CSV file which can be imported easily into other applications like a spreadsheet.";
|
||||||
|
|
||||||
|
capabilities = CAPABILITY_SETUP_SHEET;
|
||||||
|
extension = "csv";
|
||||||
|
mimetype = "plain/csv";
|
||||||
|
setCodePage("ascii");
|
||||||
|
|
||||||
|
allowMachineChangeOnSection = true;
|
||||||
|
|
||||||
|
properties = {
|
||||||
|
decimal: {
|
||||||
|
title : "Decimal symbol",
|
||||||
|
description: "Defines the decimal symbol.",
|
||||||
|
type : "string",
|
||||||
|
value : ".",
|
||||||
|
scope : "post"
|
||||||
|
},
|
||||||
|
separator: {
|
||||||
|
title : "Separator symbol",
|
||||||
|
description: "Defines the field separator.",
|
||||||
|
type : "string",
|
||||||
|
value : ";",
|
||||||
|
scope : "post"
|
||||||
|
},
|
||||||
|
rapidFeed: {
|
||||||
|
title : "Rapid feed",
|
||||||
|
description: "Specifies the rapid traversal feed.",
|
||||||
|
type : "number",
|
||||||
|
value : 5000,
|
||||||
|
scope : "post"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var feedFormat = createFormat({decimals:(unit == MM ? 0 : 2)});
|
||||||
|
var toolFormat = createFormat({decimals:0});
|
||||||
|
var rpmFormat = createFormat({decimals:0});
|
||||||
|
var secFormat = createFormat({decimals:3});
|
||||||
|
var angleFormat = createFormat({decimals:0, scale:DEG});
|
||||||
|
var pitchFormat = createFormat({decimals:3});
|
||||||
|
var spatialFormat = createFormat({decimals:3});
|
||||||
|
var taperFormat = angleFormat; // share format
|
||||||
|
|
||||||
|
function quote(text) {
|
||||||
|
var result = "";
|
||||||
|
for (var i = 0; i < text.length; ++i) {
|
||||||
|
var ch = text.charAt(i);
|
||||||
|
switch (ch) {
|
||||||
|
case "\\":
|
||||||
|
case "\"":
|
||||||
|
result += "\\";
|
||||||
|
}
|
||||||
|
result += ch;
|
||||||
|
}
|
||||||
|
return "\"" + result + "\"";
|
||||||
|
}
|
||||||
|
|
||||||
|
function formatCycleTime(cycleTime) {
|
||||||
|
cycleTime += 0.5; // round up
|
||||||
|
var seconds = cycleTime % 60 | 0;
|
||||||
|
var minutes = ((cycleTime - seconds) / 60 | 0) % 60;
|
||||||
|
var hours = (cycleTime - minutes * 60 - seconds) / (60 * 60) | 0;
|
||||||
|
return subst("%1:%2:%3", hours, minutes, seconds);
|
||||||
|
}
|
||||||
|
|
||||||
|
function getStrategyDescription() {
|
||||||
|
if (!hasParameter("operation-strategy")) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
var strategies = {
|
||||||
|
"drill" : localize("Drilling"),
|
||||||
|
"probe" : localize("Probe"),
|
||||||
|
"face" : localize("Facing"),
|
||||||
|
"path3d" : localize("3D Path"),
|
||||||
|
"pocket2d" : localize("Pocket 2D"),
|
||||||
|
"contour2d" : localize("Contour 2D"),
|
||||||
|
"adaptive2d": localize("Adaptive 2D"),
|
||||||
|
"slot" : localize("Slot"),
|
||||||
|
"circular" : localize("Circular"),
|
||||||
|
"bore" : localize("Bore"),
|
||||||
|
"thread" : localize("Thread"),
|
||||||
|
|
||||||
|
"contour_new" : localize("Contour"),
|
||||||
|
"contour" : localize("Contour"),
|
||||||
|
"parallel_new" : localize("Parallel"),
|
||||||
|
"parallel" : localize("Parallel"),
|
||||||
|
"pocket_new" : localize("Pocket"),
|
||||||
|
"pocket" : localize("Pocket"),
|
||||||
|
"adaptive" : localize("Adaptive"),
|
||||||
|
"horizontal_new" : localize("Horizontal"),
|
||||||
|
"horizontal" : localize("Horizontal"),
|
||||||
|
"blend" : localize("Blend"),
|
||||||
|
"flow" : localize("Flow"),
|
||||||
|
"morph" : localize("Morph"),
|
||||||
|
"pencil_new" : localize("Pencil"),
|
||||||
|
"pencil" : localize("Pencil"),
|
||||||
|
"project" : localize("Project"),
|
||||||
|
"ramp" : localize("Ramp"),
|
||||||
|
"radial_new" : localize("Radial"),
|
||||||
|
"radial" : localize("Radial"),
|
||||||
|
"scallop_new" : localize("Scallop"),
|
||||||
|
"scallop" : localize("Scallop"),
|
||||||
|
"morphed_spiral" : localize("Morphed Spiral"),
|
||||||
|
"spiral_new" : localize("Spiral"),
|
||||||
|
"spiral" : localize("Spiral"),
|
||||||
|
"swarf5d" : localize("Multi-Axis Swarf"),
|
||||||
|
"multiAxisContour": localize("Multi-Axis Contour"),
|
||||||
|
"multiAxisBlend" : localize("Multi-Axis Blend")
|
||||||
|
};
|
||||||
|
var description = "";
|
||||||
|
if (strategies[getParameter("operation-strategy")]) {
|
||||||
|
description = strategies[getParameter("operation-strategy")];
|
||||||
|
} else {
|
||||||
|
description = localize("Unspecified");
|
||||||
|
}
|
||||||
|
return description;
|
||||||
|
}
|
||||||
|
|
||||||
|
var cachedParameters = {};
|
||||||
|
|
||||||
|
function onParameter(name, value) {
|
||||||
|
cachedParameters[name] = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
function onOpen() {
|
||||||
|
writeln(["OPERATION", "COMMENT", "STRATEGY", "TOLERANCE", "RADIAL STOCK TO LEAVE", "AXIAL STOCK TO LEAVE", "STEPDOWN", "STEPOVER", "TOOL #", "DIAMETER #", "LENGTH #", "TYPE", "COMMENT", "DIAMETER", "CORNER RADIUS", "ANGLE", "BODY LENGTH", "FLUTE #", "MAXIMUM FEED", "MAXIMUM SPINDLE SPEED", "FEED DISTANCE", "RAPID DISTANCE", "CYCLE TIME"].join(getProperty("separator")));
|
||||||
|
cachedParameters = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
function onSection() {
|
||||||
|
feedFormat.setDecimalSymbol(getProperty("decimal"));
|
||||||
|
secFormat.setDecimalSymbol(getProperty("decimal"));
|
||||||
|
angleFormat.setDecimalSymbol(getProperty("decimal"));
|
||||||
|
pitchFormat.setDecimalSymbol(getProperty("decimal"));
|
||||||
|
spatialFormat.setDecimalSymbol(getProperty("decimal"));
|
||||||
|
|
||||||
|
var s = getProperty("separator");
|
||||||
|
|
||||||
|
var tolerance = cachedParameters["operation:tolerance"];
|
||||||
|
var stockToLeave = cachedParameters["operation:stockToLeave"];
|
||||||
|
var axialStockToLeave = cachedParameters["operation:verticalStockToLeave"];
|
||||||
|
var maximumStepdown = cachedParameters["operation:maximumStepdown"];
|
||||||
|
var maximumStepover = cachedParameters["operation:maximumStepover"] ? cachedParameters["operation:maximumStepover"] : cachedParameters["operation:stepover"];
|
||||||
|
|
||||||
|
var record = "" + (getCurrentSectionId() + 1);
|
||||||
|
if (hasParameter("operation-comment")) {
|
||||||
|
var comment = getParameter("operation-comment");
|
||||||
|
record += s + quote(comment);
|
||||||
|
} else {
|
||||||
|
record += s;
|
||||||
|
}
|
||||||
|
record += s + quote(getStrategyDescription());
|
||||||
|
record += s + (tolerance ? spatialFormat.format(tolerance) : "");
|
||||||
|
record += s + (stockToLeave ? spatialFormat.format(stockToLeave) : "");
|
||||||
|
record += s + (axialStockToLeave ? spatialFormat.format(axialStockToLeave) : "");
|
||||||
|
record += s + (maximumStepdown ? spatialFormat.format(maximumStepdown) : "");
|
||||||
|
record += s + (maximumStepover ? spatialFormat.format(maximumStepover) : "");
|
||||||
|
|
||||||
|
record += s + "T" + toolFormat.format(tool.number);
|
||||||
|
record += s + "D" + toolFormat.format(tool.diameterOffset);
|
||||||
|
record += s + "L" + toolFormat.format(tool.lengthOffset);
|
||||||
|
record += s + quote(getToolTypeName(tool.type));
|
||||||
|
if (tool.comment) {
|
||||||
|
record += s + quote(tool.comment);
|
||||||
|
} else {
|
||||||
|
record += s;
|
||||||
|
}
|
||||||
|
record += s + spatialFormat.format(tool.diameter);
|
||||||
|
if (tool.cornerRadius) {
|
||||||
|
record += s + spatialFormat.format(tool.cornerRadius);
|
||||||
|
} else {
|
||||||
|
record += s;
|
||||||
|
}
|
||||||
|
if ((tool.taperAngle > 0) && (tool.taperAngle < Math.PI)) {
|
||||||
|
record += s + taperFormat.format(tool.taperAngle);
|
||||||
|
} else {
|
||||||
|
record += s;
|
||||||
|
}
|
||||||
|
record += s + spatialFormat.format(tool.bodyLength);
|
||||||
|
record += s + spatialFormat.format(tool.numberOfFlutes);
|
||||||
|
|
||||||
|
if (!isProbeOperation(currentSection)) {
|
||||||
|
var maximumFeed = currentSection.getMaximumFeedrate();
|
||||||
|
var maximumSpindleSpeed = currentSection.getMaximumSpindleSpeed();
|
||||||
|
var cuttingDistance = currentSection.getCuttingDistance();
|
||||||
|
var rapidDistance = currentSection.getRapidDistance();
|
||||||
|
var cycleTime = currentSection.getCycleTime();
|
||||||
|
|
||||||
|
if (getProperty("rapidFeed") > 0) {
|
||||||
|
cycleTime += rapidDistance / getProperty("rapidFeed") * 60;
|
||||||
|
}
|
||||||
|
|
||||||
|
record += s + feedFormat.format(maximumFeed);
|
||||||
|
record += s + maximumSpindleSpeed;
|
||||||
|
record += s + spatialFormat.format(cuttingDistance);
|
||||||
|
record += s + spatialFormat.format(rapidDistance);
|
||||||
|
record += s + formatCycleTime(cycleTime);
|
||||||
|
}
|
||||||
|
writeln(record);
|
||||||
|
|
||||||
|
skipRemainingSection();
|
||||||
|
}
|
||||||
|
|
||||||
|
function onSectionEnd() {
|
||||||
|
cachedParameters = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
function setProperty(property, value) {
|
||||||
|
properties[property].current = value;
|
||||||
|
}
|
||||||
1059
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/operation-sheet.cps
Normal file
1059
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/operation-sheet.cps
Normal file
File diff suppressed because it is too large
Load Diff
1290
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/opticut.cps
Normal file
1290
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/opticut.cps
Normal file
File diff suppressed because it is too large
Load Diff
2199
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/osai.cps
Normal file
2199
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/osai.cps
Normal file
File diff suppressed because it is too large
Load Diff
1910
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/othermill.cps
Normal file
1910
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/othermill.cps
Normal file
File diff suppressed because it is too large
Load Diff
2100
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/pocket nc.cps
Normal file
2100
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/pocket nc.cps
Normal file
File diff suppressed because it is too large
Load Diff
2140
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/prototrak.cps
Normal file
2140
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/prototrak.cps
Normal file
File diff suppressed because it is too large
Load Diff
1092
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/roeders rms6.cps
Normal file
1092
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/roeders rms6.cps
Normal file
File diff suppressed because it is too large
Load Diff
2158
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/roland iso.cps
Normal file
2158
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/roland iso.cps
Normal file
File diff suppressed because it is too large
Load Diff
1379
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/roland rml.cps
Normal file
1379
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/roland rml.cps
Normal file
File diff suppressed because it is too large
Load Diff
1762
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/rs274.cps
Normal file
1762
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/rs274.cps
Normal file
File diff suppressed because it is too large
Load Diff
275
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/scm.cps
Normal file
275
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/scm.cps
Normal file
@ -0,0 +1,275 @@
|
|||||||
|
/**
|
||||||
|
Copyright (C) 2012-2025 by Autodesk, Inc.
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
SCM post processor configuration.
|
||||||
|
|
||||||
|
$Revision: 45368 0d19ee6a7707c0a900d60dabd67224d4924c61f6 $
|
||||||
|
$Date: 2025-02-12 05:40:37 $
|
||||||
|
|
||||||
|
FORKID {F4EC72B8-D7E7-45c4-A703-7089F83842E9}
|
||||||
|
*/
|
||||||
|
|
||||||
|
description = "SCM-Prisma 110";
|
||||||
|
vendor = "SCM";
|
||||||
|
vendorUrl = "http://www.scmgroup.com";
|
||||||
|
legal = "Copyright (C) 2012-2025 by Autodesk, Inc.";
|
||||||
|
certificationLevel = 2;
|
||||||
|
minimumRevision = 45702;
|
||||||
|
|
||||||
|
longDescription = "Generic post for SCM-Prisma 110.";
|
||||||
|
|
||||||
|
extension = "xxl";
|
||||||
|
setCodePage("ascii");
|
||||||
|
|
||||||
|
capabilities = CAPABILITY_MILLING;
|
||||||
|
tolerance = spatial(0.002, MM);
|
||||||
|
minimumChordLength = spatial(0.25, MM);
|
||||||
|
minimumCircularRadius = spatial(0.01, MM);
|
||||||
|
maximumCircularRadius = spatial(1000, MM);
|
||||||
|
minimumCircularSweep = toRad(0.01);
|
||||||
|
maximumCircularSweep = toRad(180);
|
||||||
|
allowHelicalMoves = false;
|
||||||
|
allowedCircularPlanes = undefined; // allow any circular motion
|
||||||
|
|
||||||
|
// user-defined properties
|
||||||
|
properties = {
|
||||||
|
machineOrigin: {
|
||||||
|
title : "Machine origin",
|
||||||
|
description: "Depending on the type of machine, the point from which the distances are measured (machine origin) may be at the front or rear. For example: the Record and Ergon machines use the Front origin, while the Pratix and Tech machines use the Rear origin.",
|
||||||
|
group : "configuration",
|
||||||
|
type : "enum",
|
||||||
|
values : [
|
||||||
|
{title:"Front", id:"front"},
|
||||||
|
{title:"Rear", id:"rear"}
|
||||||
|
],
|
||||||
|
value: "front",
|
||||||
|
scope: "post"
|
||||||
|
},
|
||||||
|
writeTools: {
|
||||||
|
title : "Write tool list",
|
||||||
|
description: "Output a tool list in the header of the code.",
|
||||||
|
group : "formats",
|
||||||
|
type : "boolean",
|
||||||
|
value : true,
|
||||||
|
scope : "post"
|
||||||
|
},
|
||||||
|
useRadius: {
|
||||||
|
title : "Radius arcs",
|
||||||
|
description: "If yes is selected, arcs are output using radius values rather than IJK.",
|
||||||
|
group : "preferences",
|
||||||
|
type : "boolean",
|
||||||
|
value : true,
|
||||||
|
scope : "post"
|
||||||
|
},
|
||||||
|
reverseZaxis: {
|
||||||
|
title : "Invert Z-axis",
|
||||||
|
description: "Machines equipped with OSAI invert the Z-axis (Positive Z=towards the work table, negative Z=away from the work table.)",
|
||||||
|
group : "configuration",
|
||||||
|
type : "boolean",
|
||||||
|
value : false,
|
||||||
|
scope : "post"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var xyFormat = createFormat({decimals:3});
|
||||||
|
var zFormat = createFormat({decimals:3});
|
||||||
|
var abcFormat = createFormat({decimals:3, forceDecimal:true, scale:DEG});
|
||||||
|
var feedFormat = createFormat({decimals:(unit == MM ? 1 : 2)});
|
||||||
|
var toolFormat = createFormat({decimals:0});
|
||||||
|
var taperFormat = createFormat({decimals:1, scale:DEG});
|
||||||
|
var rpmFormat = createFormat({decimals:0});
|
||||||
|
|
||||||
|
var xOutput = createVariable({prefix:"X="}, xyFormat);
|
||||||
|
var yOutput = createVariable({prefix:"Y="}, xyFormat);
|
||||||
|
var zOutput = createVariable({prefix:"Z="}, zFormat);
|
||||||
|
|
||||||
|
var feedOutput = createVariable({prefix:"V="}, feedFormat);
|
||||||
|
|
||||||
|
// circular output
|
||||||
|
var iOutput = createVariable({prefix:"I=", force:true}, xyFormat);
|
||||||
|
var jOutput = createVariable({prefix:"J=", force:true}, xyFormat);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Writes the specified block.
|
||||||
|
*/
|
||||||
|
function writeBlock() {
|
||||||
|
writeWords(arguments);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Output a comment.
|
||||||
|
*/
|
||||||
|
function writeComment(text) {
|
||||||
|
if (text) {
|
||||||
|
writeln("; " + text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onOpen() {
|
||||||
|
if (getProperty("reverseZaxis") == true) {
|
||||||
|
zFormat.setScale(-1);
|
||||||
|
zOutput = createVariable({prefix:"Z="}, zFormat);
|
||||||
|
}
|
||||||
|
if (getProperty("useRadius")) {
|
||||||
|
maximumCircularSweep = toRad(90); // avoid potential center calculation errors for CNC
|
||||||
|
}
|
||||||
|
var workpiece = getWorkpiece();
|
||||||
|
writeBlock("H", "DX=" + xyFormat.format(workpiece.upper.x), "DY=" + xyFormat.format(workpiece.upper.y), "DZ=" + xyFormat.format(workpiece.upper.z - workpiece.lower.z), "-A", "*MM", "/DEF");
|
||||||
|
writeComment(programName);
|
||||||
|
if (programComment != programName) {
|
||||||
|
writeComment(programComment);
|
||||||
|
}
|
||||||
|
|
||||||
|
// dump tool information
|
||||||
|
if (getProperty("writeTools")) {
|
||||||
|
var zRanges = {};
|
||||||
|
if (is3D()) {
|
||||||
|
var numberOfSections = getNumberOfSections();
|
||||||
|
for (var i = 0; i < numberOfSections; ++i) {
|
||||||
|
var section = getSection(i);
|
||||||
|
var zRange = section.getGlobalZRange();
|
||||||
|
var tool = section.getTool();
|
||||||
|
if (zRanges[tool.number]) {
|
||||||
|
zRanges[tool.number].expandToRange(zRange);
|
||||||
|
} else {
|
||||||
|
zRanges[tool.number] = zRange;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var tools = getToolTable();
|
||||||
|
if (tools.getNumberOfTools() > 0) {
|
||||||
|
for (var i = 0; i < tools.getNumberOfTools(); ++i) {
|
||||||
|
var tool = tools.getTool(i);
|
||||||
|
var comment = "T" + toolFormat.format(tool.number) + " " +
|
||||||
|
"D=" + xyFormat.format(tool.diameter) + " " +
|
||||||
|
localize("CR") + "=" + xyFormat.format(tool.cornerRadius);
|
||||||
|
if ((tool.taperAngle > 0) && (tool.taperAngle < Math.PI)) {
|
||||||
|
comment += " " + localize("TAPER") + "=" + taperFormat.format(tool.taperAngle) + localize("deg");
|
||||||
|
}
|
||||||
|
if (zRanges[tool.number]) {
|
||||||
|
comment += " - " + localize("ZMIN") + "=" + zFormat.format(zRanges[tool.number].getMinimum());
|
||||||
|
}
|
||||||
|
comment += " - " + getToolTypeName(tool.type);
|
||||||
|
writeComment(comment);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onComment(message) {
|
||||||
|
writeComment(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Force output of X, Y, and Z. */
|
||||||
|
function forceXYZ() {
|
||||||
|
xOutput.reset();
|
||||||
|
yOutput.reset();
|
||||||
|
zOutput.reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Force output of X, Y, Z, and F on next output. */
|
||||||
|
function forceAny() {
|
||||||
|
forceXYZ();
|
||||||
|
feedOutput.reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
function onSection() {
|
||||||
|
var abc = currentSection.workPlane.getTurnAndTilt(0, 2);
|
||||||
|
writeBlock(
|
||||||
|
"XPL",
|
||||||
|
"X=" + xyFormat.format(currentSection.workOrigin.x),
|
||||||
|
"Y=" + xyFormat.format(currentSection.workOrigin.y),
|
||||||
|
"Z=" + zFormat.format(currentSection.workOrigin.z),
|
||||||
|
"Q=" + abcFormat.format(abc.z),
|
||||||
|
"R=" + abcFormat.format(abc.x)
|
||||||
|
);
|
||||||
|
|
||||||
|
forceAny();
|
||||||
|
|
||||||
|
var initialPosition = getFramePosition(currentSection.getInitialPosition());
|
||||||
|
|
||||||
|
writeBlock(
|
||||||
|
"XG0",
|
||||||
|
xOutput.format(initialPosition.x),
|
||||||
|
yOutput.format(initialPosition.y),
|
||||||
|
zOutput.format(initialPosition.z),
|
||||||
|
"T=" + toolFormat.format(tool.number),
|
||||||
|
"S=" + rpmFormat.format(spindleSpeed)
|
||||||
|
);
|
||||||
|
feedOutput.reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
function onSpindleSpeed(spindleSpeed) {
|
||||||
|
writeBlock("S=" + rpmFormat.format(spindleSpeed));
|
||||||
|
}
|
||||||
|
|
||||||
|
function onRadiusCompensation() {
|
||||||
|
if (radiusCompensation != RADIUS_COMPENSATION_OFF) {
|
||||||
|
error(localize("Radius compensation mode not supported."));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onRapid(_x, _y, _z) {
|
||||||
|
var x = xOutput.format(_x);
|
||||||
|
var y = yOutput.format(_y);
|
||||||
|
var z = zOutput.format(_z);
|
||||||
|
if (x || y || z) {
|
||||||
|
writeBlock(
|
||||||
|
"XG0", x, y, z,
|
||||||
|
"T=" + toolFormat.format(tool.number),
|
||||||
|
"S=" + rpmFormat.format(spindleSpeed)
|
||||||
|
);
|
||||||
|
feedOutput.reset();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onLinear(_x, _y, _z, feed) {
|
||||||
|
var x = xOutput.format(_x);
|
||||||
|
var y = yOutput.format(_y);
|
||||||
|
var z = zOutput.format(_z);
|
||||||
|
if (x || y || z) {
|
||||||
|
writeBlock("XL2P", x, y, z, feedOutput.format(feed));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onCircular(clockwise, cx, cy, cz, x, y, z, feed) {
|
||||||
|
if (isHelical() || (getCircularPlane() != PLANE_XY)) {
|
||||||
|
var t = tolerance;
|
||||||
|
if ((t == 0) && hasParameter("operation:tolerance")) {
|
||||||
|
t = getParameter("operation:tolerance");
|
||||||
|
}
|
||||||
|
linearize(t);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
xOutput.reset();
|
||||||
|
yOutput.reset();
|
||||||
|
if (!getProperty("useRadius")) {
|
||||||
|
zOutput.reset();
|
||||||
|
writeBlock("XA2P", "G=" + (clockwise ? 2 : 3), xOutput.format(x), yOutput.format(y), zOutput.format(z), iOutput.format(cx), jOutput.format(cy), feedOutput.format(feed));
|
||||||
|
} else {
|
||||||
|
var r = getCircularRadius();
|
||||||
|
if (toDeg(getCircularSweep()) > (180 + 1e-9)) {
|
||||||
|
r = -r; // allow up to <360 deg arcs
|
||||||
|
}
|
||||||
|
writeBlock("XAR2", xOutput.format(x), yOutput.format(y), "r=" + xyFormat.format(r), "G=" + (clockwise ? 2 : 3), feedOutput.format(feed));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onSectionEnd() {
|
||||||
|
writeBlock("XPL", "X=" + xyFormat.format(0), "Y=" + xyFormat.format(0), "Z=" + zFormat.format(0), "Q=" + abcFormat.format(0), "R=" + abcFormat.format(0)); // reset plane
|
||||||
|
writeComment("******************************");
|
||||||
|
|
||||||
|
forceAny();
|
||||||
|
}
|
||||||
|
|
||||||
|
function onClose() {
|
||||||
|
// home position
|
||||||
|
writeBlock("N", "X=" + xyFormat.format(0), "Y=" + xyFormat.format(0), "Z=" + zFormat.format(0), "; " + localize("home"));
|
||||||
|
}
|
||||||
|
|
||||||
|
function setProperty(property, value) {
|
||||||
|
properties[property].current = value;
|
||||||
|
}
|
||||||
2217
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/seicos.cps
Normal file
2217
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/seicos.cps
Normal file
File diff suppressed because it is too large
Load Diff
1731
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/selca.cps
Normal file
1731
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/selca.cps
Normal file
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@ -0,0 +1,980 @@
|
|||||||
|
/**
|
||||||
|
Copyright (C) 2012-2024 by Autodesk, Inc.
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Excel 2007 setup sheet configuration.
|
||||||
|
|
||||||
|
$Revision: 44984 d1fbfee84cee9490694878b7036b07214a678903 $
|
||||||
|
$Date: 2024-03-28 13:34:20 $
|
||||||
|
|
||||||
|
FORKID {CDDF7D05-7EFA-49b2-A6C8-D3CAEA690A7E}
|
||||||
|
*/
|
||||||
|
|
||||||
|
description = "Setup Sheet Excel 2007";
|
||||||
|
vendor = "Autodesk";
|
||||||
|
vendorUrl = "http://www.autodesk.com";
|
||||||
|
legal = "Copyright (C) 2012-2024 by Autodesk, Inc.";
|
||||||
|
certificationLevel = 2;
|
||||||
|
minimumRevision = 45702;
|
||||||
|
|
||||||
|
longDescription = "Setup sheet for generating spreadsheet in Excel 2007 format. Only supported on Windows.";
|
||||||
|
|
||||||
|
capabilities = CAPABILITY_SETUP_SHEET;
|
||||||
|
extension = "xlsx";
|
||||||
|
mimetype = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
|
||||||
|
keywords = "MODEL_IMAGE";
|
||||||
|
setCodePage("utf-8");
|
||||||
|
dependencies = "setup-sheet-excel-2007-template.xlsx";
|
||||||
|
|
||||||
|
allowMachineChangeOnSection = true;
|
||||||
|
|
||||||
|
properties = {
|
||||||
|
rapidFeed: {
|
||||||
|
title: "Rapid feed",
|
||||||
|
description: "Sets the rapid traversal feedrate. Set this to get more accurate cycle times.",
|
||||||
|
type: "number",
|
||||||
|
value: 5000,
|
||||||
|
scope: "post"
|
||||||
|
},
|
||||||
|
toolChangeTime: {
|
||||||
|
title: "Tool change time",
|
||||||
|
description: "Sets the tool change time in seconds. Set this to get more accurate cycle times.",
|
||||||
|
type: "number",
|
||||||
|
value: 15,
|
||||||
|
scope: "post"
|
||||||
|
},
|
||||||
|
listVariables: {
|
||||||
|
title: "List variables",
|
||||||
|
description: "If enabled, all available variables are outputted to the log.",
|
||||||
|
type: "boolean",
|
||||||
|
value: false,
|
||||||
|
scope: "post"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/** Sets variable prefix. */
|
||||||
|
function prepend(prefix, variables) {
|
||||||
|
var result = {};
|
||||||
|
var p = prefix + ".";
|
||||||
|
for (var k in variables) {
|
||||||
|
result[p + k] = variables[k];
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
function isProbeOperation(section) {
|
||||||
|
return section.hasParameter("operation-strategy") && (section.getParameter("operation-strategy") == "probe");
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Returns the global program information. */
|
||||||
|
function getProgramInfo() {
|
||||||
|
var result = {};
|
||||||
|
|
||||||
|
for (var p in properties) {
|
||||||
|
result[p] = properties[p];
|
||||||
|
}
|
||||||
|
|
||||||
|
result["name"] = (programName == undefined) ? "" : programName;
|
||||||
|
result["comment"] = (programComment == undefined) ? "" : programComment;
|
||||||
|
|
||||||
|
var now = new Date();
|
||||||
|
result["generationTime"] = (now.getTime()/1000.0 - now.getTimezoneOffset()*60)/(24*60*60) + 25569;
|
||||||
|
|
||||||
|
result["numberOfSections"] = getNumberOfSections();
|
||||||
|
var tools = getToolTable();
|
||||||
|
result["numberOfTools"] = tools.getNumberOfTools();
|
||||||
|
|
||||||
|
var maximumFeed = 0;
|
||||||
|
var maximumSpindleSpeed = 0;
|
||||||
|
var cuttingDistance = 0;
|
||||||
|
var rapidDistance = 0;
|
||||||
|
var cycleTime = 0;
|
||||||
|
|
||||||
|
var multipleWorkOffsets = false;
|
||||||
|
var workOffset;
|
||||||
|
var numberOfSections = getNumberOfSections();
|
||||||
|
var currentTool;
|
||||||
|
for (var i = 0; i < numberOfSections; ++i) {
|
||||||
|
var section = getSection(i);
|
||||||
|
|
||||||
|
if (workOffset == undefined) {
|
||||||
|
workOffset = section.workOffset;
|
||||||
|
} else {
|
||||||
|
if (workOffset != section.workOffset) {
|
||||||
|
multipleWorkOffsets = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isProbeOperation(section)) {
|
||||||
|
maximumFeed = Math.max(maximumFeed, section.getMaximumFeedrate());
|
||||||
|
maximumSpindleSpeed = Math.max(maximumSpindleSpeed, section.getMaximumSpindleSpeed());
|
||||||
|
cuttingDistance += section.getCuttingDistance();
|
||||||
|
rapidDistance += section.getRapidDistance();
|
||||||
|
cycleTime += section.getCycleTime();
|
||||||
|
if (getProperty("toolChangeTime") > 0) {
|
||||||
|
var tool = section.getTool();
|
||||||
|
if (currentTool != tool.number) {
|
||||||
|
currentTool = tool.number;
|
||||||
|
cycleTime += getProperty("toolChangeTime");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (getProperty("rapidFeed") > 0) {
|
||||||
|
cycleTime += rapidDistance/getProperty("rapidFeed") * 60;
|
||||||
|
}
|
||||||
|
|
||||||
|
result["workOffset"] = multipleWorkOffsets ? "" : workOffset;
|
||||||
|
result["maximumFeed"] = maximumFeed;
|
||||||
|
result["maximumSpindleSpeed"] = maximumSpindleSpeed;
|
||||||
|
result["cuttingDistance"] = cuttingDistance;
|
||||||
|
result["rapidDistance"] = rapidDistance;
|
||||||
|
result["cycleTime"] = formatTime(cycleTime);
|
||||||
|
|
||||||
|
return prepend("program", result);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Returns the tool information in an array. */
|
||||||
|
function getToolInfo() {
|
||||||
|
var result = [];
|
||||||
|
var tools = getToolTable();
|
||||||
|
for (var i = 0; i < tools.getNumberOfTools(); ++i) {
|
||||||
|
var tool = tools.getTool(i);
|
||||||
|
|
||||||
|
var first = true;
|
||||||
|
var minimumZ = 0;
|
||||||
|
var maximumZ = 0;
|
||||||
|
var maximumFeed = 0;
|
||||||
|
var maximumSpindleSpeed = 0;
|
||||||
|
var cuttingDistance = 0;
|
||||||
|
var rapidDistance = 0;
|
||||||
|
var cycleTime = 0;
|
||||||
|
|
||||||
|
var numberOfSections = getNumberOfSections();
|
||||||
|
for (var j = 0; j < numberOfSections; ++j) {
|
||||||
|
var section = getSection(j);
|
||||||
|
if (section.getTool().number != tool.number) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (is3D()) {
|
||||||
|
var zRange = section.getGlobalZRange();
|
||||||
|
if (first) {
|
||||||
|
minimumZ = zRange.getMinimum();
|
||||||
|
maximumZ = zRange.getMaximum();
|
||||||
|
} else {
|
||||||
|
minimumZ = Math.min(minimumZ, zRange.getMinimum());
|
||||||
|
maximumZ = Math.max(maximumZ, zRange.getMaximum());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isProbeOperation(section)) {
|
||||||
|
maximumFeed = Math.max(maximumFeed, section.getMaximumFeedrate());
|
||||||
|
maximumSpindleSpeed = Math.max(maximumSpindleSpeed, section.getMaximumSpindleSpeed());
|
||||||
|
cuttingDistance += section.getCuttingDistance();
|
||||||
|
rapidDistance += section.getRapidDistance();
|
||||||
|
cycleTime += section.getCycleTime();
|
||||||
|
}
|
||||||
|
first = false;
|
||||||
|
}
|
||||||
|
if (getProperty("rapidFeed") > 0) {
|
||||||
|
cycleTime += rapidDistance/getProperty("rapidFeed") * 60;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!is3D()) {
|
||||||
|
minimumZ = "";
|
||||||
|
maximumZ = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
var record = {
|
||||||
|
"number": tool.number,
|
||||||
|
"diameterOffset": tool.diameterOffset,
|
||||||
|
"lengthOffset": tool.lengthOffset,
|
||||||
|
"toolAngle": getToolAngle(tool),
|
||||||
|
"diameter": tool.diameter,
|
||||||
|
"cornerRadius": tool.cornerRadius,
|
||||||
|
"taperAngle": toDeg(tool.taperAngle),
|
||||||
|
"fluteLength": tool.fluteLength,
|
||||||
|
"shoulderLength": tool.shoulderLength,
|
||||||
|
"bodyLength": tool.bodyLength,
|
||||||
|
"numberOfFlutes": tool.numberOfFlutes,
|
||||||
|
"type": getToolTypeName(tool.type),
|
||||||
|
"maximumFeed": maximumFeed,
|
||||||
|
"maximumSpindleSpeed": maximumSpindleSpeed,
|
||||||
|
"cuttingDistance": cuttingDistance,
|
||||||
|
"rapidDistance": rapidDistance,
|
||||||
|
"cycleTime": formatTime(cycleTime),
|
||||||
|
|
||||||
|
"minimumZ": minimumZ,
|
||||||
|
"maximumZ": maximumZ,
|
||||||
|
|
||||||
|
"description": tool.description,
|
||||||
|
"comment": tool.comment,
|
||||||
|
"vendor": tool.vendor,
|
||||||
|
"productId": autoLink(getSectionParameterForTool(tool, "operation:tool_productLink"), tool.productId),
|
||||||
|
"holderDescription": tool.holderDescription,
|
||||||
|
"holderComment": tool.holderComment,
|
||||||
|
"holderVendor": tool.holderVendor,
|
||||||
|
"holderProductId": autoLink(getSectionParameterForTool(tool, "operation:holder_productLink"), tool.holderProductId)
|
||||||
|
};
|
||||||
|
|
||||||
|
result.push(prepend("tool", record));
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getSectionParameterForTool(tool, id) {
|
||||||
|
var numberOfSections = getNumberOfSections();
|
||||||
|
for (var i = 0; i < numberOfSections; ++i) {
|
||||||
|
var section = getSection(i);
|
||||||
|
if (section.getTool().number == tool.number) {
|
||||||
|
return section.getParameter(id, "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getToolAngle(tool) {
|
||||||
|
var toolAngle = getSectionParameterForTool(tool, "operation:tool_angle");
|
||||||
|
if (typeof toolAngle == "number") {
|
||||||
|
switch (toolAngle) {
|
||||||
|
case 0:
|
||||||
|
return "Radial";
|
||||||
|
case 90:
|
||||||
|
case -90:
|
||||||
|
return "Axial";
|
||||||
|
default:
|
||||||
|
return toolAngle + " deg";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
//** Returns a HTML link if text looks like a link. */
|
||||||
|
function autoLink(link, description) {
|
||||||
|
if (!description) {
|
||||||
|
description = "";
|
||||||
|
}
|
||||||
|
if (!link) {
|
||||||
|
if ((description.toLowerCase().indexOf("https://") == 0) || (description.toLowerCase().indexOf("http://") == 0)) {
|
||||||
|
link = description;
|
||||||
|
if (description.length > 16) {
|
||||||
|
description = localize("click to visit");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!link) {
|
||||||
|
return description;
|
||||||
|
}
|
||||||
|
if (link.toLowerCase().indexOf("https://") == 0) {
|
||||||
|
if (!description) {
|
||||||
|
description = link.substr(8);
|
||||||
|
if (description.length > 16) {
|
||||||
|
description = localize("click to visit");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (link.toLowerCase().indexOf("http://") == 0) {
|
||||||
|
if (!description) {
|
||||||
|
description = link.substr(7);
|
||||||
|
if (description.length > 16) {
|
||||||
|
description = localize("click to visit");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (!description) {
|
||||||
|
description = link;
|
||||||
|
if (description.length > 16) {
|
||||||
|
description = localize("click to visit");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
link = "http://" + link;
|
||||||
|
}
|
||||||
|
return link ? "HYPERLINK(\"" + link + "\",\"" + description + "\")" : description;
|
||||||
|
}
|
||||||
|
|
||||||
|
var programInfo = {};
|
||||||
|
var operationInfo = [];
|
||||||
|
var toolInfo = [];
|
||||||
|
var global = (function(){return this;}).call();
|
||||||
|
|
||||||
|
function getVariable(variables, id) {
|
||||||
|
// log("LOOKUP: " + id + "=" + variables[id]);
|
||||||
|
var value = variables[id];
|
||||||
|
if (value != undefined) {
|
||||||
|
var i = id.indexOf("(");
|
||||||
|
if ((i >= 0) && (id.indexOf(")", i + 1) > i)) { // assume function
|
||||||
|
try {
|
||||||
|
value = eval.call(global, id); // TAG: not supported
|
||||||
|
} catch(e) {
|
||||||
|
value = undefined;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (value != undefined) {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
// warning(subst(localize("The variable '%1' is unknown."), id));
|
||||||
|
if (false) {
|
||||||
|
variables[id] = "$" + id; // avoid future warnings
|
||||||
|
return "$" + id;
|
||||||
|
}
|
||||||
|
variables[id] = ""; // avoid future warnings
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
function replaceVariables(variables, xml) {
|
||||||
|
/*jsl:ignore*/
|
||||||
|
default xml namespace = "http://schemas.openxmlformats.org/spreadsheetml/2006/main";
|
||||||
|
|
||||||
|
var cs = xml..c;
|
||||||
|
for (var i = 0; i < cs.length(); ++i) {
|
||||||
|
var c = cs[i];
|
||||||
|
var v = c.v;
|
||||||
|
if (c.@t == "s") { // string
|
||||||
|
var text = getString(c.v);
|
||||||
|
if (text.charAt(0) == "$") { // variable
|
||||||
|
var value = getVariable(variables, text.substr(1));
|
||||||
|
switch (typeof(value)) {
|
||||||
|
case "boolean":
|
||||||
|
delete c.@t;
|
||||||
|
c.v = value ? 1 : 0;
|
||||||
|
break;
|
||||||
|
case "number":
|
||||||
|
delete c.@t;
|
||||||
|
c.v = value;
|
||||||
|
break;
|
||||||
|
case "string":
|
||||||
|
default:
|
||||||
|
if ((value.indexOf("$") < 0) && (text.substr(text.length - 4) == "Time")) {
|
||||||
|
delete c.@t;
|
||||||
|
c.v = value;
|
||||||
|
} else if ((value.indexOf("$") < 0) && (value.substr(0,9) == "HYPERLINK")) {
|
||||||
|
var pId = String(value).split('"');
|
||||||
|
delete c.v;
|
||||||
|
c.@t = "str";
|
||||||
|
c.f = value;
|
||||||
|
c.v = pId[3];
|
||||||
|
} else {
|
||||||
|
c.@t = "inlineStr";
|
||||||
|
delete c.v;
|
||||||
|
c.is = <is/>;
|
||||||
|
c.is.t = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*jsl:end*/
|
||||||
|
}
|
||||||
|
|
||||||
|
var cachedParameters = {};
|
||||||
|
var globalParameters = true;
|
||||||
|
|
||||||
|
function onParameter(name, value) {
|
||||||
|
if (globalParameters) {
|
||||||
|
if (name.substr(name.length - 6) == "marker") {
|
||||||
|
globalParameters = false;
|
||||||
|
} else {
|
||||||
|
programInfo[name] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cachedParameters[name] = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
var temporaryFolder;
|
||||||
|
|
||||||
|
function onOpen() {
|
||||||
|
if (getPlatform() != "WIN32") {
|
||||||
|
error(localize("This post is only supported on Windows."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!FileSystem.isFolder(FileSystem.getTemporaryFolder())) {
|
||||||
|
FileSystem.makeFolder(FileSystem.getTemporaryFolder());
|
||||||
|
}
|
||||||
|
temporaryFolder = FileSystem.getTemporaryFile("setup-sheet-excel-2007");
|
||||||
|
|
||||||
|
FileSystem.removeFolderRecursive(temporaryFolder);
|
||||||
|
|
||||||
|
var templatePath = FileSystem.getCombinedPath(getConfigurationFolder(), "setup-sheet-excel-2007-template.xlsx");
|
||||||
|
|
||||||
|
FileSystem.makeFolder(temporaryFolder);
|
||||||
|
ZipFile.unzipTo(templatePath, temporaryFolder);
|
||||||
|
|
||||||
|
programInfo = getProgramInfo();
|
||||||
|
|
||||||
|
programInfo["program.jobDescription"] = hasGlobalParameter("job-description") ? getGlobalParameter("job-description") : "";
|
||||||
|
programInfo["program.partPath"] = hasGlobalParameter("document-path") ? getGlobalParameter("document-path") : "";
|
||||||
|
programInfo["program.partName"] = FileSystem.getFilename(programInfo["program.partPath"]);
|
||||||
|
programInfo["program.user"] = hasGlobalParameter("username") ? getGlobalParameter("username") : "";
|
||||||
|
|
||||||
|
var workpiece = getWorkpiece();
|
||||||
|
var delta = Vector.diff(workpiece.upper, workpiece.lower);
|
||||||
|
programInfo["program.stockLowerX"] = workpiece.lower.x;
|
||||||
|
programInfo["program.stockLowerY"] = workpiece.lower.y;
|
||||||
|
programInfo["program.stockLowerZ"] = workpiece.lower.z;
|
||||||
|
programInfo["program.stockUpperX"] = workpiece.upper.x;
|
||||||
|
programInfo["program.stockUpperY"] = workpiece.upper.y;
|
||||||
|
programInfo["program.stockUpperZ"] = workpiece.upper.z;
|
||||||
|
programInfo["program.stockDX"] = delta.x;
|
||||||
|
programInfo["program.stockDY"] = delta.y;
|
||||||
|
programInfo["program.stockDZ"] = delta.z;
|
||||||
|
|
||||||
|
var partLowerX = hasGlobalParameter("part-lower-x") ? getGlobalParameter("part-lower-x") : 0;
|
||||||
|
var partLowerY = hasGlobalParameter("part-lower-y") ? getGlobalParameter("part-lower-y") : 0;
|
||||||
|
var partLowerZ = hasGlobalParameter("part-lower-z") ? getGlobalParameter("part-lower-z") : 0;
|
||||||
|
var partUpperX = hasGlobalParameter("part-upper-x") ? getGlobalParameter("part-upper-x") : 0;
|
||||||
|
var partUpperY = hasGlobalParameter("part-upper-y") ? getGlobalParameter("part-upper-y") : 0;
|
||||||
|
var partUpperZ = hasGlobalParameter("part-upper-z") ? getGlobalParameter("part-upper-z") : 0;
|
||||||
|
|
||||||
|
programInfo["program.partLowerX"] = partLowerX;
|
||||||
|
programInfo["program.partLowerY"] = partLowerY;
|
||||||
|
programInfo["program.partLowerZ"] = partLowerZ;
|
||||||
|
programInfo["program.partUpperX"] = partUpperX;
|
||||||
|
programInfo["program.partUpperY"] = partUpperY;
|
||||||
|
programInfo["program.partUpperZ"] = partUpperZ;
|
||||||
|
programInfo["program.partDX"] = partUpperX - partLowerX;
|
||||||
|
programInfo["program.partDY"] = partUpperY - partLowerY;
|
||||||
|
programInfo["program.partDZ"] = partUpperZ - partLowerZ;
|
||||||
|
|
||||||
|
toolInfo = getToolInfo();
|
||||||
|
|
||||||
|
cachedParameters = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
function onSection() {
|
||||||
|
skipRemainingSection();
|
||||||
|
}
|
||||||
|
|
||||||
|
function getStrategy() {
|
||||||
|
if (hasParameter("operation-strategy")) {
|
||||||
|
var strategies = {
|
||||||
|
drill: localize("Drilling"),
|
||||||
|
face: localize("Facing"),
|
||||||
|
path3d: localize("3D Path"),
|
||||||
|
pocket2d: localize("Pocket 2D"),
|
||||||
|
contour2d: localize("Contour 2D"),
|
||||||
|
adaptive2d: localize("Adaptive 2D"),
|
||||||
|
slot: localize("Slot"),
|
||||||
|
circular: localize("Circular"),
|
||||||
|
bore: localize("Bore"),
|
||||||
|
thread: localize("Thread"),
|
||||||
|
probe: localize("Probe"),
|
||||||
|
|
||||||
|
contour_new: localize("Contour"),
|
||||||
|
contour: localize("Contour"),
|
||||||
|
parallel_new: localize("Parallel"),
|
||||||
|
parallel: localize("Parallel"),
|
||||||
|
pocket_new: localize("Pocket"),
|
||||||
|
pocket: localize("Pocket"),
|
||||||
|
adaptive: localize("Adaptive"),
|
||||||
|
horizontal_new: localize("Horizontal"),
|
||||||
|
horizontal: localize("Horizontal"),
|
||||||
|
flow: localize("Flow"),
|
||||||
|
morph: localize("Morph"),
|
||||||
|
pencil_new: localize("Pencil"),
|
||||||
|
pencil: localize("Pencil"),
|
||||||
|
project: localize("Project"),
|
||||||
|
ramp: localize("Ramp"),
|
||||||
|
radial_new: localize("Radial"),
|
||||||
|
radial: localize("Radial"),
|
||||||
|
scallop_new: localize("Scallop"),
|
||||||
|
scallop: localize("Scallop"),
|
||||||
|
morphed_spiral: localize("Morphed Spiral"),
|
||||||
|
spiral_new: localize("Spiral"),
|
||||||
|
spiral: localize("Spiral"),
|
||||||
|
swarf5d: localize("Multi-Axis Swarf"),
|
||||||
|
multiAxisContour: localize("Multi-Axis Contour")
|
||||||
|
};
|
||||||
|
if (strategies[getParameter("operation-strategy")]) {
|
||||||
|
return strategies[getParameter("operation-strategy")];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Returns the specified coolant as a string.
|
||||||
|
*/
|
||||||
|
function getCoolantName(coolant) {
|
||||||
|
switch (coolant) {
|
||||||
|
case COOLANT_OFF:
|
||||||
|
return localize("Off");
|
||||||
|
case COOLANT_FLOOD:
|
||||||
|
return localize("Flood");
|
||||||
|
case COOLANT_MIST:
|
||||||
|
return localize("Mist");
|
||||||
|
case COOLANT_THROUGH_TOOL:
|
||||||
|
return localize("Through tool");
|
||||||
|
case COOLANT_AIR:
|
||||||
|
return localize("Air");
|
||||||
|
case COOLANT_AIR_THROUGH_TOOL:
|
||||||
|
return localize("Air through tool");
|
||||||
|
case COOLANT_SUCTION:
|
||||||
|
return localize("Suction");
|
||||||
|
case COOLANT_FLOOD_MIST:
|
||||||
|
return localize("Flood and mist");
|
||||||
|
case COOLANT_FLOOD_THROUGH_TOOL:
|
||||||
|
return localize("Flood and through tool");
|
||||||
|
default:
|
||||||
|
return localize("Unknown");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onSectionEnd() {
|
||||||
|
var operationParameters = {};
|
||||||
|
|
||||||
|
operationParameters["id"] = currentSection.getId() + 1;
|
||||||
|
operationParameters["description"] = hasParameter("operation-comment") ? getParameter("operation-comment") : "";
|
||||||
|
operationParameters["strategy"] = getStrategy();
|
||||||
|
operationParameters["workOffset"] = currentSection.workOffset;
|
||||||
|
|
||||||
|
var tolerance = cachedParameters["operation:tolerance"];
|
||||||
|
var stockToLeave = cachedParameters["operation:stockToLeave"];
|
||||||
|
var axialStockToLeave = cachedParameters["operation:verticalStockToLeave"];
|
||||||
|
var maximumStepdown = cachedParameters["operation:maximumStepdown"];
|
||||||
|
var maximumStepover = cachedParameters["operation:maximumStepover"] ? cachedParameters["operation:maximumStepover"] : cachedParameters["operation:stepover"];
|
||||||
|
|
||||||
|
operationParameters["tolerance"] = tolerance;
|
||||||
|
operationParameters["stockToLeave"] = stockToLeave;
|
||||||
|
operationParameters["axialStockToLeave"] = axialStockToLeave;
|
||||||
|
operationParameters["maximumStepdown"] = maximumStepdown;
|
||||||
|
operationParameters["maximumStepover"] = maximumStepover;
|
||||||
|
|
||||||
|
if (!isProbeOperation(currentSection)) {
|
||||||
|
var cycleTime = currentSection.getCycleTime();
|
||||||
|
|
||||||
|
if (is3D()) {
|
||||||
|
var zRange = currentSection.getGlobalZRange();
|
||||||
|
operationParameters["minimumZ"] = zRange.getMinimum();
|
||||||
|
operationParameters["maximumZ"] = zRange.getMaximum();
|
||||||
|
} else {
|
||||||
|
operationParameters["minimumZ"] = "";
|
||||||
|
operationParameters["maximumZ"] = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
operationParameters["maximumFeed"] = currentSection.getMaximumFeedrate();
|
||||||
|
operationParameters["maximumSpindleSpeed"] = currentSection.getMaximumSpindleSpeed();
|
||||||
|
operationParameters["cuttingDistance"] = currentSection.getCuttingDistance();
|
||||||
|
operationParameters["rapidDistance"] = currentSection.getRapidDistance();
|
||||||
|
if (getProperty("rapidFeed") > 0) {
|
||||||
|
cycleTime += currentSection.getRapidDistance()/getProperty("rapidFeed") * 60;
|
||||||
|
}
|
||||||
|
operationParameters["cycleTime"] = formatTime(cycleTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
var tool = currentSection.getTool();
|
||||||
|
operationParameters["tool.number"] = tool.number;
|
||||||
|
operationParameters["tool.diameterOffset"] = tool.diameterOffset;
|
||||||
|
operationParameters["tool.lengthOffset"] = tool.lengthOffset;
|
||||||
|
operationParameters["tool.diameter"] = tool.diameter;
|
||||||
|
operationParameters["tool.cornerRadius"] = tool.cornerRadius;
|
||||||
|
operationParameters["tool.taperAngle"] = toDeg(tool.taperAngle);
|
||||||
|
operationParameters["tool.fluteLength"] = tool.fluteLength;
|
||||||
|
operationParameters["tool.shoulderLength"] = tool.shoulderLength;
|
||||||
|
operationParameters["tool.bodyLength"] = tool.bodyLength;
|
||||||
|
operationParameters["tool.numberOfFlutes"] = tool.numberOfFlutes;
|
||||||
|
operationParameters["tool.type"] = getToolTypeName(tool.type);
|
||||||
|
operationParameters["tool.spindleSpeed"] = tool.spindleSpeed;
|
||||||
|
operationParameters["tool.coolant"] = getCoolantName(tool.coolant);
|
||||||
|
operationParameters["tool.description"] = tool.description;
|
||||||
|
operationParameters["tool.comment"] = tool.comment;
|
||||||
|
operationParameters["tool.vendor"] = tool.vendor;
|
||||||
|
operationParameters["tool.productId"] = autoLink(getSectionParameterForTool(tool, "operation:tool_productLink"), tool.productId);
|
||||||
|
operationParameters["tool.holderDescription"] = tool.holderDescription;
|
||||||
|
operationParameters["tool.holderComment"] = tool.holderComment;
|
||||||
|
operationParameters["tool.holderVendor"] = tool.holderVendor;
|
||||||
|
operationParameters["tool.holderProductId"] = autoLink(getSectionParameterForTool(tool, "operation:holder_productLink"), tool.holderProductId);
|
||||||
|
|
||||||
|
operationInfo.push(prepend("operation", operationParameters));
|
||||||
|
|
||||||
|
cachedParameters = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
function formatTime(cycleTime) {
|
||||||
|
var epoc = new Date(1900, 0, 1, 0, 0, 0, 0);
|
||||||
|
cycleTime = cycleTime + 0.5; // round up
|
||||||
|
return cycleTime/(24.0*60*60);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Loads XML from the specified file.
|
||||||
|
*/
|
||||||
|
function loadXML(path) {
|
||||||
|
var xml = loadText(path, "utf-8");
|
||||||
|
xml = xml.replace(/<\?xml (.*?)\?>/, "");
|
||||||
|
return new XML(xml);
|
||||||
|
}
|
||||||
|
|
||||||
|
function dumpIds() {
|
||||||
|
// only for debugging
|
||||||
|
|
||||||
|
for (var k in programInfo) {
|
||||||
|
log(k + " = " + programInfo[k]);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var i = 0; i < toolInfo.length; ++i) {
|
||||||
|
log("TOOL " + i);
|
||||||
|
var variables = toolInfo[i];
|
||||||
|
for (var k in variables) {
|
||||||
|
log(k + " = " + variables[k]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var i = 0; i < operationInfo.length; ++i) {
|
||||||
|
log("OPERATION " + i);
|
||||||
|
var variables = operationInfo[i];
|
||||||
|
for (var k in variables) {
|
||||||
|
log(k + " = " + variables[k]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var sharedStringsPath;
|
||||||
|
var sharedStrings = [];
|
||||||
|
var sharedStringsXML;
|
||||||
|
|
||||||
|
function loadSharedStrings() {
|
||||||
|
|
||||||
|
var path = FileSystem.getCombinedPath(temporaryFolder, "xl\\_rels\\workbook.xml.rels");
|
||||||
|
var Relationships = loadXML(path);
|
||||||
|
|
||||||
|
default xml namespace = "http://schemas.openxmlformats.org/package/2006/relationships";
|
||||||
|
|
||||||
|
var rs = Relationships.Relationship;
|
||||||
|
for (var i = 0; i < rs.length(); ++i) {
|
||||||
|
var r = rs[i];
|
||||||
|
if (r.@Type == "http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings") {
|
||||||
|
var target = r.@Target;
|
||||||
|
var path = FileSystem.getCombinedPath(temporaryFolder, "xl\\" + target.replace(/\//g, "\\"));
|
||||||
|
sharedStringsPath = path;
|
||||||
|
|
||||||
|
var sst = loadXML(path);
|
||||||
|
|
||||||
|
default xml namespace = "http://schemas.openxmlformats.org/spreadsheetml/2006/main";
|
||||||
|
|
||||||
|
var ts = sst.si.t;
|
||||||
|
for (var i = 0; i < ts.length(); ++i) {
|
||||||
|
var t = ts[i];
|
||||||
|
sharedStrings.push(t);
|
||||||
|
}
|
||||||
|
|
||||||
|
sharedStringsXML = sst;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function saveSharedStrings() {
|
||||||
|
if (!sharedStringsPath) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
default xml namespace = "http://schemas.openxmlformats.org/spreadsheetml/2006/main";
|
||||||
|
|
||||||
|
var ts = sharedStringsXML.si.t;
|
||||||
|
for (var i = 0; i < ts.length(); ++i) {
|
||||||
|
var t = ts[i];
|
||||||
|
if (t.charAt(0) != "$") { // variable
|
||||||
|
ts[i] = localize(t);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
var file = new TextFile(sharedStringsPath, true, "utf-8");
|
||||||
|
file.writeln("<?xml version='1.0' encoding='utf-8'?>");
|
||||||
|
file.write(sharedStringsXML.toXMLString());
|
||||||
|
file.close();
|
||||||
|
} catch (e) {
|
||||||
|
error(localize("Failed to write shared string."));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getString(index) {
|
||||||
|
return sharedStrings[index];
|
||||||
|
}
|
||||||
|
|
||||||
|
function addString(text) {
|
||||||
|
sharedStrings.push(text);
|
||||||
|
return sharedStrings.length - 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateWorksheet(path) {
|
||||||
|
var worksheet = loadXML(path);
|
||||||
|
|
||||||
|
default xml namespace = "http://schemas.openxmlformats.org/spreadsheetml/2006/main";
|
||||||
|
var rr = new Namespace("http://schemas.openxmlformats.org/officeDocument/2006/relationships");
|
||||||
|
|
||||||
|
// find operation rows to fill
|
||||||
|
var rows = worksheet.sheetData.row;
|
||||||
|
for (var i = 0; i < rows.length(); ++i) {
|
||||||
|
var row = rows[i];
|
||||||
|
var cs = row.c;
|
||||||
|
var found = false;
|
||||||
|
for (var j = 0; j < cs.length(); ++j) {
|
||||||
|
var c = cs[j];
|
||||||
|
if (c.@t == "s") { // string
|
||||||
|
var text = getString(c.v);
|
||||||
|
if (text == "$OPERATION_ROW") {
|
||||||
|
found = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (found) {
|
||||||
|
var r = parseInt(row.@r);
|
||||||
|
|
||||||
|
var rows = worksheet.sheetData.row;
|
||||||
|
for (var j = 0; j < rows.length(); ++j) {
|
||||||
|
var _row = rows[j];
|
||||||
|
var rr = parseInt(_row.@r);
|
||||||
|
if (rr> r) {
|
||||||
|
_row.@r = rr + (operationInfo.length - 1);
|
||||||
|
delete _row.c.@r;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// insert new rows
|
||||||
|
var sheetData = row.parent();
|
||||||
|
for (var j = operationInfo.length - 1; j >= 0; --j) {
|
||||||
|
var filledRow = row.copy(); // uses a lot of memory
|
||||||
|
delete filledRow.c.@r;
|
||||||
|
if (!operationInfo[j]) {
|
||||||
|
log(localize("Invalid operation information."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
replaceVariables(operationInfo[j], filledRow);
|
||||||
|
filledRow.@r = r + j;
|
||||||
|
worksheet.sheetData.insertChildAfter(row, filledRow);
|
||||||
|
}
|
||||||
|
delete worksheet.sheetData.row[i]; // remove original row
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// find tool rows to fill
|
||||||
|
for (var i = 0; i < rows.length(); ++i) {
|
||||||
|
var row = rows[i];
|
||||||
|
var cs = row.c;
|
||||||
|
var found = false;
|
||||||
|
for (var j = 0; j < cs.length(); ++j) {
|
||||||
|
var c = cs[j];
|
||||||
|
if (c.@t == "s") { // string
|
||||||
|
var text = getString(c.v);
|
||||||
|
if (text == "$TOOL_ROW") {
|
||||||
|
found = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (found) {
|
||||||
|
var r = parseInt(row.@r);
|
||||||
|
|
||||||
|
var rows = worksheet.sheetData.row;
|
||||||
|
for (var j = 0; j < rows.length(); ++j) {
|
||||||
|
var _row = rows[j];
|
||||||
|
var rr = parseInt(_row.@r);
|
||||||
|
if (rr> r) {
|
||||||
|
_row.@r = rr + (toolInfo.length - 1);
|
||||||
|
delete _row.c.@r;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// insert new rows
|
||||||
|
var sheetData = row.parent();
|
||||||
|
for (var j = toolInfo.length - 1; j >= 0; --j) {
|
||||||
|
var filledRow = row.copy(); // uses a lot of memory
|
||||||
|
delete filledRow.c.@r;
|
||||||
|
if (!toolInfo[j]) {
|
||||||
|
log(localize("Invalid tool information."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
replaceVariables(toolInfo[j], filledRow);
|
||||||
|
filledRow.@r = r + j;
|
||||||
|
worksheet.sheetData.insertChildAfter(row, filledRow);
|
||||||
|
}
|
||||||
|
delete worksheet.sheetData.row[i]; // remove original row
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!programInfo) {
|
||||||
|
log(localize("Invalid program information."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
replaceVariables(programInfo, worksheet); // we need to subst correct type
|
||||||
|
|
||||||
|
/* we translate shared strings
|
||||||
|
|
||||||
|
var cs = worksheet..c;
|
||||||
|
for (var i = 0; i < cs.length(); ++i) {
|
||||||
|
var c = cs[i];
|
||||||
|
if (c.@t == "s") { // string
|
||||||
|
var text = getString(c.v);
|
||||||
|
c.@t = "inlineStr";
|
||||||
|
delete c.v;
|
||||||
|
c.is = <is/>;
|
||||||
|
c.is.t = localize(text); // only allowed for strings
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
var vs = worksheet..v;
|
||||||
|
for (var i = 0; i < vs.length(); ++i) {
|
||||||
|
var v = vs[i];
|
||||||
|
if (v == "#VALUE!") {
|
||||||
|
delete v.parent().v;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
var file = new TextFile(path, true, "utf-8");
|
||||||
|
file.writeln("<?xml version='1.0' encoding='utf-8'?>");
|
||||||
|
file.write(worksheet.toXMLString());
|
||||||
|
file.close();
|
||||||
|
} catch (e) {
|
||||||
|
error(localize("Failed to write worksheet."));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateWorksheets() {
|
||||||
|
// see http://msdn.microsoft.com/en-us/library/bb332058%28v=office.12%29.aspx
|
||||||
|
|
||||||
|
var path = FileSystem.getCombinedPath(temporaryFolder, "xl\\_rels\\workbook.xml.rels");
|
||||||
|
var Relationships = loadXML(path);
|
||||||
|
|
||||||
|
default xml namespace = "http://schemas.openxmlformats.org/package/2006/relationships";
|
||||||
|
|
||||||
|
var rs = Relationships.Relationship;
|
||||||
|
for (var i = 0; i < rs.length(); ++i) {
|
||||||
|
var r = rs[i];
|
||||||
|
if (r.@Type == "http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet") {
|
||||||
|
var target = r.@Target;
|
||||||
|
var path = FileSystem.getCombinedPath(temporaryFolder, "xl\\" + target.replace(/\//g, "\\"));
|
||||||
|
if (FileSystem.isFile(path)) {
|
||||||
|
updateWorksheet(path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateWorkbook() {
|
||||||
|
var path = FileSystem.getCombinedPath(temporaryFolder, "xl\\workbook.xml");
|
||||||
|
var workbook = loadXML(path);
|
||||||
|
|
||||||
|
default xml namespace = "http://schemas.openxmlformats.org/spreadsheetml/2006/main";
|
||||||
|
var sheets = workbook.sheets.sheet;
|
||||||
|
for (var i = 0; i < sheets.length(); ++i) {
|
||||||
|
var sheet = sheets[i];
|
||||||
|
sheet.@name = localize(sheet.@name);
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
var file = new TextFile(path, true, "utf-8");
|
||||||
|
file.writeln("<?xml version='1.0' encoding='utf-8'?>");
|
||||||
|
file.write(workbook.toXMLString());
|
||||||
|
file.close();
|
||||||
|
} catch (e) {
|
||||||
|
error(localize("Failed to write workbook."));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onClose() {
|
||||||
|
if (getProperty("listVariables")) {
|
||||||
|
dumpIds();
|
||||||
|
}
|
||||||
|
|
||||||
|
loadSharedStrings();
|
||||||
|
|
||||||
|
if (false) {
|
||||||
|
for (var i = 0; i < sharedStrings.length; ++i) {
|
||||||
|
log("sharedStrings[" + i + "]=" + getString(i));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
updateWorksheets();
|
||||||
|
updateWorkbook();
|
||||||
|
saveSharedStrings();
|
||||||
|
}
|
||||||
|
|
||||||
|
function onTerminate() {
|
||||||
|
if (!modelImagePath) {
|
||||||
|
var extensions = ["jpg", "png"];
|
||||||
|
for (var i = 0; i < extensions.length; ++i) {
|
||||||
|
var modelImageName = FileSystem.replaceExtension(getOutputPath(), extensions[i]);
|
||||||
|
if (FileSystem.isFile(FileSystem.getCombinedPath(FileSystem.getFolderPath(getOutputPath()), modelImageName))) {
|
||||||
|
modelImagePath = modelImageName;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (modelImagePath) {
|
||||||
|
|
||||||
|
/*
|
||||||
|
// find job image
|
||||||
|
var path = FileSystem.getCombinedPath(temporaryFolder, "xl\\drawings\\drawing1.xml");
|
||||||
|
var wsDr = loadXML(path);
|
||||||
|
|
||||||
|
default xml namespace = "http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing";
|
||||||
|
var a = new Namespace("http://schemas.openxmlformats.org/drawingml/2006/main");
|
||||||
|
var r = new Namespace("http://schemas.openxmlformats.org/package/2006/relationships");
|
||||||
|
|
||||||
|
var pics = wsDr..pic;
|
||||||
|
for (var i = 0; i < pics.length(); ++i) {
|
||||||
|
var pic = pics[i];
|
||||||
|
if (pic.nvPicPr.cNvPr.@descr == "Job preview") {
|
||||||
|
var blipFill = pic..blipFill;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
var destFolder = FileSystem.getCombinedPath(temporaryFolder, "xl\\media");
|
||||||
|
|
||||||
|
var original = FileSystem.getCombinedPath(destFolder, "image1.png");
|
||||||
|
FileSystem.remove(original);
|
||||||
|
|
||||||
|
// extension must be png or excel fails to load file - still works if file is actually in jpg format
|
||||||
|
var imageFilename = "model.png"; // do NOT use non-ASCII characters - and do NOT use spaces
|
||||||
|
// var imageFilename = FileSystem.replaceExtension(FileSystem.getFilename(modelImagePath).replace(/ /g, "_"), "png");
|
||||||
|
|
||||||
|
var src = FileSystem.getCombinedPath(FileSystem.getFolderPath(getOutputPath()), modelImagePath);
|
||||||
|
var dest = FileSystem.getCombinedPath(destFolder, imageFilename);
|
||||||
|
try {
|
||||||
|
FileSystem.copyFile(src, dest);
|
||||||
|
} catch (e) {
|
||||||
|
warning(subst(localize("Failed to copy image from '%1' to '%2'."), src, dest));
|
||||||
|
}
|
||||||
|
|
||||||
|
var path = FileSystem.getCombinedPath(temporaryFolder, "xl\\drawings\\_rels\\drawing1.xml.rels");
|
||||||
|
var Relationships = loadXML(path);
|
||||||
|
|
||||||
|
default xml namespace = "http://schemas.openxmlformats.org/package/2006/relationships";
|
||||||
|
var rs = Relationships.Relationship;
|
||||||
|
for (var i = 0; i < rs.length(); ++i) {
|
||||||
|
var r = rs[i];
|
||||||
|
if (r.@Type == "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image") {
|
||||||
|
if (r.@Target == "../media/image1.png") {
|
||||||
|
r.@Target = "../media/" + imageFilename;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
var file = new TextFile(path, true, "utf-8");
|
||||||
|
file.writeln("<?xml version='1.0' encoding='utf-8'?>");
|
||||||
|
file.write(Relationships.toXMLString());
|
||||||
|
file.close();
|
||||||
|
} catch (e) {
|
||||||
|
error(localize("Failed to write shared string."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ZipFile.zipTo(temporaryFolder, getOutputPath());
|
||||||
|
FileSystem.removeFolderRecursive(temporaryFolder);
|
||||||
|
|
||||||
|
// executeNoWait("excel", "\"" + getOutputPath() + "\"", false, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
function setProperty(property, value) {
|
||||||
|
properties[property].current = value;
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
661
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/setup-sheet-excel.cps
Normal file
661
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/setup-sheet-excel.cps
Normal file
@ -0,0 +1,661 @@
|
|||||||
|
/**
|
||||||
|
Copyright (C) 2012-2024 by Autodesk, Inc.
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Excel setup sheet configuration.
|
||||||
|
|
||||||
|
$Revision: 44950 86f283c49a2bb5324a205abec3cea6ae68b4e30e $
|
||||||
|
$Date: 2024-03-12 15:03:07 $
|
||||||
|
|
||||||
|
FORKID {F4FA39E1-B6CA-4fbe-A094-8761870B1F78}
|
||||||
|
*/
|
||||||
|
|
||||||
|
description = "Setup Sheet Excel";
|
||||||
|
vendor = "Autodesk";
|
||||||
|
vendorUrl = "http://www.autodesk.com";
|
||||||
|
legal = "Copyright (C) 2012-2024 by Autodesk, Inc.";
|
||||||
|
certificationLevel = 2;
|
||||||
|
minimumRevision = 45948;
|
||||||
|
|
||||||
|
longDescription = "Setup sheet for generating spreadsheet in Excel format. Consider using the Setup Sheet Excel 2007 post instead which also supports preview picture of the model.";
|
||||||
|
|
||||||
|
capabilities = CAPABILITY_SETUP_SHEET;
|
||||||
|
extension = "xls";
|
||||||
|
mimetype = "text/xml";
|
||||||
|
keywords = "MODEL_IMAGE";
|
||||||
|
setCodePage("utf-8");
|
||||||
|
dependencies = "setup-sheet-excel-template.xls";
|
||||||
|
|
||||||
|
allowMachineChangeOnSection = true;
|
||||||
|
|
||||||
|
properties = {
|
||||||
|
rapidFeed: {
|
||||||
|
title: "Rapid feed",
|
||||||
|
description: "Sets the rapid traversal feedrate. Set this to get more accurate cycle times.",
|
||||||
|
type: "number",
|
||||||
|
value: 5000,
|
||||||
|
scope: "post"
|
||||||
|
},
|
||||||
|
toolChangeTime: {
|
||||||
|
title: "Tool change time",
|
||||||
|
description: "Sets the tool change time in seconds. Set this to get more accurate cycle times.",
|
||||||
|
type: "number",
|
||||||
|
value: 15,
|
||||||
|
scope: "post"
|
||||||
|
},
|
||||||
|
listVariables: {
|
||||||
|
title: "List variables",
|
||||||
|
description: "If enabled, all available variables are outputted to the log.",
|
||||||
|
type: "boolean",
|
||||||
|
value: false,
|
||||||
|
scope: "post"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var timeFormat = createFormat({width:2, zeropad:true, decimals:0});
|
||||||
|
|
||||||
|
/** Sets variable prefix. */
|
||||||
|
function prepend(prefix, variables) {
|
||||||
|
var result = {};
|
||||||
|
var p = prefix + ".";
|
||||||
|
for (var k in variables) {
|
||||||
|
result[p + k] = variables[k];
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Returns the global program information. */
|
||||||
|
function getProgramInfo() {
|
||||||
|
var result = {};
|
||||||
|
|
||||||
|
for (var p in properties) {
|
||||||
|
result[p] = properties[p];
|
||||||
|
}
|
||||||
|
|
||||||
|
result["name"] = (programName == undefined) ? "" : programName;
|
||||||
|
result["comment"] = (programComment == undefined) ? "" : programComment;
|
||||||
|
|
||||||
|
// 2003-06-11T00:00:00.000
|
||||||
|
var now = new Date();
|
||||||
|
result["generationTime"] = subst(
|
||||||
|
"%1-%2-%3T%4:%5:%6.000",
|
||||||
|
now.getFullYear(),
|
||||||
|
timeFormat.format(now.getMonth() + 1),
|
||||||
|
timeFormat.format(now.getDate()),
|
||||||
|
timeFormat.format(now.getHours()),
|
||||||
|
timeFormat.format(now.getMinutes()),
|
||||||
|
timeFormat.format(now.getSeconds())
|
||||||
|
);
|
||||||
|
|
||||||
|
result["numberOfSections"] = getNumberOfSections();
|
||||||
|
var tools = getToolList("number", "lengthOffset");
|
||||||
|
result["numberOfTools"] = tools.length;
|
||||||
|
|
||||||
|
var maximumFeed = 0;
|
||||||
|
var maximumSpindleSpeed = 0;
|
||||||
|
var cuttingDistance = 0;
|
||||||
|
var rapidDistance = 0;
|
||||||
|
var cycleTime = 0;
|
||||||
|
|
||||||
|
var multipleWorkOffsets = false;
|
||||||
|
var workOffset;
|
||||||
|
var numberOfSections = getNumberOfSections();
|
||||||
|
var currentTool;
|
||||||
|
for (var i = 0; i < numberOfSections; ++i) {
|
||||||
|
var section = getSection(i);
|
||||||
|
|
||||||
|
if (workOffset == undefined) {
|
||||||
|
workOffset = section.workOffset;
|
||||||
|
} else {
|
||||||
|
if (workOffset != section.workOffset) {
|
||||||
|
multipleWorkOffsets = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isProbeOperation(section)) {
|
||||||
|
maximumFeed = Math.max(maximumFeed, section.getMaximumFeedrate());
|
||||||
|
maximumSpindleSpeed = Math.max(maximumSpindleSpeed, section.getMaximumSpindleSpeed());
|
||||||
|
cuttingDistance += section.getCuttingDistance();
|
||||||
|
rapidDistance += section.getRapidDistance();
|
||||||
|
cycleTime += section.getCycleTime();
|
||||||
|
if (getProperty("toolChangeTime") > 0) {
|
||||||
|
var tool = section.getTool();
|
||||||
|
if (currentTool != tool.number) {
|
||||||
|
currentTool = tool.number;
|
||||||
|
cycleTime += getProperty("toolChangeTime");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (getProperty("rapidFeed") > 0) {
|
||||||
|
cycleTime += rapidDistance/getProperty("rapidFeed") * 60;
|
||||||
|
}
|
||||||
|
|
||||||
|
result["workOffset"] = multipleWorkOffsets ? "" : workOffset;
|
||||||
|
result["maximumFeed"] = maximumFeed;
|
||||||
|
result["maximumSpindleSpeed"] = maximumSpindleSpeed;
|
||||||
|
result["cuttingDistance"] = cuttingDistance;
|
||||||
|
result["rapidDistance"] = rapidDistance;
|
||||||
|
result["cycleTime"] = formatTime(cycleTime);
|
||||||
|
|
||||||
|
return prepend("program", result);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function getSectionParameterForTool(tool, id) {
|
||||||
|
var numberOfSections = getNumberOfSections();
|
||||||
|
for (var i = 0; i < numberOfSections; ++i) {
|
||||||
|
var section = getSection(i);
|
||||||
|
if (section.getTool().number == tool.number) {
|
||||||
|
return section.hasParameter(id) ? section.getParameter(id) : undefined;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getToolAngle(tool) {
|
||||||
|
var toolAngle = getSectionParameterForTool(tool, "operation:tool_angle");
|
||||||
|
if (toolAngle != undefined) {
|
||||||
|
switch (toolAngle) {
|
||||||
|
case 0:
|
||||||
|
return "Radial";
|
||||||
|
case 90:
|
||||||
|
case -90:
|
||||||
|
return "Axial";
|
||||||
|
default:
|
||||||
|
return toolAngle + " deg";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Returns the tool information in an array. */
|
||||||
|
function getToolInfo() {
|
||||||
|
var result = [];
|
||||||
|
var tools = getToolList("number", "lengthOffset");
|
||||||
|
for (var i = 0; i < tools.length; ++i) {
|
||||||
|
var tool = tools[i].tool;
|
||||||
|
var first = true;
|
||||||
|
var minimumZ = 0;
|
||||||
|
var maximumZ = 0;
|
||||||
|
var maximumFeed = 0;
|
||||||
|
var maximumSpindleSpeed = 0;
|
||||||
|
var cuttingDistance = 0;
|
||||||
|
var rapidDistance = 0;
|
||||||
|
var cycleTime = 0;
|
||||||
|
|
||||||
|
var numberOfSections = getNumberOfSections();
|
||||||
|
for (var j = 0; j < numberOfSections; ++j) {
|
||||||
|
var section = getSection(j);
|
||||||
|
if (section.getTool().number != tool.number) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (is3D()) {
|
||||||
|
var zRange = section.getGlobalZRange();
|
||||||
|
if (first) {
|
||||||
|
minimumZ = zRange.getMinimum();
|
||||||
|
maximumZ = zRange.getMaximum();
|
||||||
|
} else {
|
||||||
|
minimumZ = Math.min(minimumZ, zRange.getMinimum());
|
||||||
|
maximumZ = Math.max(maximumZ, zRange.getMaximum());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isProbeOperation(section)) {
|
||||||
|
maximumFeed = Math.max(maximumFeed, section.getMaximumFeedrate());
|
||||||
|
maximumSpindleSpeed = Math.max(maximumSpindleSpeed, section.getMaximumSpindleSpeed());
|
||||||
|
cuttingDistance += section.getCuttingDistance();
|
||||||
|
rapidDistance += section.getRapidDistance();
|
||||||
|
cycleTime += section.getCycleTime();
|
||||||
|
}
|
||||||
|
first = false;
|
||||||
|
}
|
||||||
|
if (getProperty("rapidFeed") > 0) {
|
||||||
|
cycleTime += rapidDistance/getProperty("rapidFeed") * 60;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!is3D()) {
|
||||||
|
minimumZ = "";
|
||||||
|
maximumZ = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
var record = {
|
||||||
|
"number": tool.number,
|
||||||
|
"diameterOffset": tool.diameterOffset,
|
||||||
|
"lengthOffset": tool.lengthOffset,
|
||||||
|
"toolAngle": getToolAngle(tool),
|
||||||
|
"diameter": tool.diameter,
|
||||||
|
"cornerRadius": tool.cornerRadius,
|
||||||
|
"taperAngle": toDeg(tool.taperAngle),
|
||||||
|
"fluteLength": tool.fluteLength,
|
||||||
|
"shoulderLength": tool.shoulderLength,
|
||||||
|
"bodyLength": tool.bodyLength,
|
||||||
|
"numberOfFlutes": tool.numberOfFlutes,
|
||||||
|
"type": getToolTypeName(tool.type),
|
||||||
|
"maximumFeed": maximumFeed,
|
||||||
|
"maximumSpindleSpeed": maximumSpindleSpeed,
|
||||||
|
"cuttingDistance": cuttingDistance,
|
||||||
|
"rapidDistance": rapidDistance,
|
||||||
|
"cycleTime": formatTime(cycleTime),
|
||||||
|
|
||||||
|
"minimumZ": minimumZ,
|
||||||
|
"maximumZ": maximumZ,
|
||||||
|
|
||||||
|
"description": tool.description,
|
||||||
|
"comment": tool.comment,
|
||||||
|
"vendor": tool.vendor,
|
||||||
|
"productId": tool.productId,
|
||||||
|
"holderDescription": tool.holderDescription,
|
||||||
|
"holderComment": tool.holderComment,
|
||||||
|
"holderVendor": tool.holderVendor,
|
||||||
|
"holderProductId": tool.holderProductId
|
||||||
|
};
|
||||||
|
|
||||||
|
result.push(prepend("tool", record));
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
var programInfo = {};
|
||||||
|
var operationInfo = [];
|
||||||
|
var toolInfo = [];
|
||||||
|
var global = (function(){return this;}).call();
|
||||||
|
|
||||||
|
function getVariable(variables, id) {
|
||||||
|
// log("LOOKUP: " + id + "=" + variables[id]);
|
||||||
|
var value = variables[id];
|
||||||
|
if (value != undefined) {
|
||||||
|
var i = id.indexOf("(");
|
||||||
|
if ((i >= 0) && (id.indexOf(")", i + 1) > i)) { // assume function
|
||||||
|
try {
|
||||||
|
value = eval.call(global, id);
|
||||||
|
} catch(e) {
|
||||||
|
value = undefined;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (value != undefined) {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
// warning(subst(localize("The variable '%1' is unknown."), id));
|
||||||
|
if (false) {
|
||||||
|
variables[id] = "$" + id; // avoid future warnings
|
||||||
|
return "$" + id;
|
||||||
|
}
|
||||||
|
variables[id] = ""; // avoid future warnings
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
function replaceVariables(variables, xml) {
|
||||||
|
/*eslint-disable*/
|
||||||
|
var ss = new Namespace("urn:schemas-microsoft-com:office:spreadsheet");
|
||||||
|
var datas = xml..ss::Data;
|
||||||
|
for (var i = 0; i < datas.length(); ++i) {
|
||||||
|
var e = datas[i];
|
||||||
|
var t = e.valueOf();
|
||||||
|
if (/*(t.length() > 1) &&*/ (t.charAt(0) == "$")) { // variable
|
||||||
|
var value = getVariable(variables, t.substr(1));
|
||||||
|
switch (typeof(value)) {
|
||||||
|
case "boolean":
|
||||||
|
e.@ss::Type = "Boolean";
|
||||||
|
value = value ? 1 : 0;
|
||||||
|
break;
|
||||||
|
case "number":
|
||||||
|
e.@ss::Type = "Number"; // always using decimal .
|
||||||
|
break;
|
||||||
|
case "string":
|
||||||
|
default:
|
||||||
|
if ((value.indexOf("$") < 0) && (t.substr(t.length - 4) == "Time")) {
|
||||||
|
e.@ss::Type = "DateTime";
|
||||||
|
} else {
|
||||||
|
e.@ss::Type = "String";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
datas[i] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*eslint-enable*/
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateWorksheet(worksheet) {
|
||||||
|
default xml namespace = "urn:schemas-microsoft-com:office:spreadsheet";
|
||||||
|
var ss = new Namespace("urn:schemas-microsoft-com:office:spreadsheet");
|
||||||
|
|
||||||
|
worksheet.@ss::Name = localize(worksheet.@ss::Name); // title
|
||||||
|
|
||||||
|
// find operation rows to fill
|
||||||
|
var datas = worksheet..ss::Row.ss::Cell.ss::Data.(function::valueOf() == "$OPERATION_ROW");
|
||||||
|
for (var i = 0; i < datas.length(); ++i) {
|
||||||
|
var row = datas[i].parent().parent();
|
||||||
|
var table = row.parent();
|
||||||
|
delete row.ss::Cell.ss::Data.(function::valueOf() == "$OPERATION_ROW")[0];
|
||||||
|
|
||||||
|
for (var j = operationInfo.length - 1; j >= 0; --j) {
|
||||||
|
var filledRow = row.copy(); // uses a lot of memory
|
||||||
|
replaceVariables(operationInfo[j], filledRow);
|
||||||
|
table.insertChildAfter(row, filledRow);
|
||||||
|
}
|
||||||
|
|
||||||
|
var offset = getNumberOfSections() - 1;
|
||||||
|
var base = row.childIndex();
|
||||||
|
|
||||||
|
var rows = table.ss::Row;
|
||||||
|
for (var r = 0; r < rows.length(); ++r) {
|
||||||
|
var rr = rows[r];
|
||||||
|
var index = parseInt(rr.@ss::Index);
|
||||||
|
if ((index >= 0) && (rr.childIndex() > (base + offset))) {
|
||||||
|
rr.@ss::Index = index + offset;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
delete table.children()[base];
|
||||||
|
table.@ss::ExpandedRowCount = parseInt(table.@ss::ExpandedRowCount) + offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
// find tool rows to fill
|
||||||
|
var datas = worksheet..ss::Row.ss::Cell.ss::Data.(function::valueOf() == "$TOOL_ROW");
|
||||||
|
for (var i = 0; i < datas.length(); ++i) {
|
||||||
|
var row = datas[i].parent().parent();
|
||||||
|
var table = row.parent();
|
||||||
|
delete row.ss::Cell.ss::Data.(function::valueOf() == "$TOOL_ROW")[0];
|
||||||
|
|
||||||
|
for (var j = toolInfo.length - 1; j >= 0; --j) {
|
||||||
|
var filledRow = row.copy(); // uses a lot of memory
|
||||||
|
replaceVariables(toolInfo[j], filledRow);
|
||||||
|
table.insertChildAfter(row, filledRow);
|
||||||
|
}
|
||||||
|
|
||||||
|
var offset = getNumberOfSections() - 1;
|
||||||
|
var base = row.childIndex();
|
||||||
|
|
||||||
|
var rows = table.ss::Row;
|
||||||
|
for (var r = 0; r < rows.length(); ++r) {
|
||||||
|
var rr = rows[r];
|
||||||
|
var index = parseInt(rr.@ss::Index);
|
||||||
|
if ((index >= 0) && (rr.childIndex() > (base + offset))) {
|
||||||
|
rr.@ss::Index = index + offset;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
delete table.children()[base];
|
||||||
|
table.@ss::ExpandedRowCount = parseInt(table.@ss::ExpandedRowCount) + offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
replaceVariables(programInfo, worksheet);
|
||||||
|
|
||||||
|
var datas = worksheet..ss::Data.(@ss::Type == "String");
|
||||||
|
for (var i = 0; i < datas.length(); ++i) {
|
||||||
|
var e = datas[i];
|
||||||
|
var texts = e.text();
|
||||||
|
for (var j = 0; j < texts.length(); ++j) {
|
||||||
|
var t = texts[j];
|
||||||
|
texts[j] = localize(t); // only allowed for strings
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var cachedParameters = {};
|
||||||
|
var globalParameters = true;
|
||||||
|
|
||||||
|
function onParameter(name, value) {
|
||||||
|
if (globalParameters) {
|
||||||
|
if (name.substr(name.length - 6) == "marker") {
|
||||||
|
globalParameters = false;
|
||||||
|
} else {
|
||||||
|
programInfo[name] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cachedParameters[name] = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
function onOpen() {
|
||||||
|
programInfo = getProgramInfo();
|
||||||
|
|
||||||
|
programInfo["program.jobDescription"] = hasGlobalParameter("job-description") ? getGlobalParameter("job-description") : "";
|
||||||
|
programInfo["program.partPath"] = hasGlobalParameter("document-path") ? getGlobalParameter("document-path") : "";
|
||||||
|
programInfo["program.partName"] = FileSystem.getFilename(programInfo["program.partPath"]);
|
||||||
|
programInfo["program.user"] = hasGlobalParameter("username") ? getGlobalParameter("username") : "";
|
||||||
|
|
||||||
|
var workpiece = getWorkpiece();
|
||||||
|
var delta = Vector.diff(workpiece.upper, workpiece.lower);
|
||||||
|
programInfo["program.stockLowerX"] = workpiece.lower.x;
|
||||||
|
programInfo["program.stockLowerY"] = workpiece.lower.y;
|
||||||
|
programInfo["program.stockLowerZ"] = workpiece.lower.z;
|
||||||
|
programInfo["program.stockUpperX"] = workpiece.upper.x;
|
||||||
|
programInfo["program.stockUpperY"] = workpiece.upper.y;
|
||||||
|
programInfo["program.stockUpperZ"] = workpiece.upper.z;
|
||||||
|
programInfo["program.stockDX"] = delta.x;
|
||||||
|
programInfo["program.stockDY"] = delta.y;
|
||||||
|
programInfo["program.stockDZ"] = delta.z;
|
||||||
|
|
||||||
|
var partLowerX = hasGlobalParameter("part-lower-x") ? getGlobalParameter("part-lower-x") : 0;
|
||||||
|
var partLowerY = hasGlobalParameter("part-lower-y") ? getGlobalParameter("part-lower-y") : 0;
|
||||||
|
var partLowerZ = hasGlobalParameter("part-lower-z") ? getGlobalParameter("part-lower-z") : 0;
|
||||||
|
var partUpperX = hasGlobalParameter("part-upper-x") ? getGlobalParameter("part-upper-x") : 0;
|
||||||
|
var partUpperY = hasGlobalParameter("part-upper-y") ? getGlobalParameter("part-upper-y") : 0;
|
||||||
|
var partUpperZ = hasGlobalParameter("part-upper-z") ? getGlobalParameter("part-upper-z") : 0;
|
||||||
|
|
||||||
|
programInfo["program.partLowerX"] = toPreciseUnit(partLowerX, MM);
|
||||||
|
programInfo["program.partLowerY"] = toPreciseUnit(partLowerY, MM);
|
||||||
|
programInfo["program.partLowerZ"] = toPreciseUnit(partLowerZ, MM);
|
||||||
|
programInfo["program.partUpperX"] = toPreciseUnit(partUpperX, MM);
|
||||||
|
programInfo["program.partUpperY"] = toPreciseUnit(partUpperY, MM);
|
||||||
|
programInfo["program.partUpperZ"] = toPreciseUnit(partUpperZ, MM);
|
||||||
|
programInfo["program.partDX"] = toPreciseUnit(partUpperX - partLowerX, MM);
|
||||||
|
programInfo["program.partDY"] = toPreciseUnit(partUpperY - partLowerY, MM);
|
||||||
|
programInfo["program.partDZ"] = toPreciseUnit(partUpperZ - partLowerZ, MM);
|
||||||
|
|
||||||
|
toolInfo = getToolInfo();
|
||||||
|
|
||||||
|
cachedParameters = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
function onSection() {
|
||||||
|
skipRemainingSection();
|
||||||
|
}
|
||||||
|
|
||||||
|
function getStrategy() {
|
||||||
|
if (hasParameter("operation-strategy")) {
|
||||||
|
var strategies = {
|
||||||
|
drill: localize("Drilling"),
|
||||||
|
face: localize("Facing"),
|
||||||
|
path3d: localize("3D Path"),
|
||||||
|
pocket2d: localize("Pocket 2D"),
|
||||||
|
contour2d: localize("Contour 2D"),
|
||||||
|
adaptive2d: localize("Adaptive 2D"),
|
||||||
|
slot: localize("Slot"),
|
||||||
|
circular: localize("Circular"),
|
||||||
|
bore: localize("Bore"),
|
||||||
|
thread: localize("Thread"),
|
||||||
|
probe: localize("Probe"),
|
||||||
|
|
||||||
|
contour_new: localize("Contour"),
|
||||||
|
contour: localize("Contour"),
|
||||||
|
parallel_new: localize("Parallel"),
|
||||||
|
parallel: localize("Parallel"),
|
||||||
|
pocket_new: localize("Pocket"),
|
||||||
|
pocket: localize("Pocket"),
|
||||||
|
adaptive: localize("Adaptive"),
|
||||||
|
horizontal_new: localize("Horizontal"),
|
||||||
|
horizontal: localize("Horizontal"),
|
||||||
|
flow: localize("Flow"),
|
||||||
|
morph: localize("Morph"),
|
||||||
|
pencil_new: localize("Pencil"),
|
||||||
|
pencil: localize("Pencil"),
|
||||||
|
project: localize("Project"),
|
||||||
|
ramp: localize("Ramp"),
|
||||||
|
radial_new: localize("Radial"),
|
||||||
|
radial: localize("Radial"),
|
||||||
|
scallop_new: localize("Scallop"),
|
||||||
|
scallop: localize("Scallop"),
|
||||||
|
morphed_spiral: localize("Morphed Spiral"),
|
||||||
|
spiral_new: localize("Spiral"),
|
||||||
|
spiral: localize("Spiral"),
|
||||||
|
swarf5d: localize("Multi-Axis Swarf"),
|
||||||
|
multiAxisContour: localize("Multi-Axis Contour")
|
||||||
|
};
|
||||||
|
if (strategies[getParameter("operation-strategy")]) {
|
||||||
|
return strategies[getParameter("operation-strategy")];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Returns the specified coolant as a string.
|
||||||
|
*/
|
||||||
|
function getCoolantName(coolant) {
|
||||||
|
switch (coolant) {
|
||||||
|
case COOLANT_OFF:
|
||||||
|
return localize("Off");
|
||||||
|
case COOLANT_FLOOD:
|
||||||
|
return localize("Flood");
|
||||||
|
case COOLANT_MIST:
|
||||||
|
return localize("Mist");
|
||||||
|
case COOLANT_THROUGH_TOOL:
|
||||||
|
return localize("Through tool");
|
||||||
|
case COOLANT_AIR:
|
||||||
|
return localize("Air");
|
||||||
|
case COOLANT_AIR_THROUGH_TOOL:
|
||||||
|
return localize("Air through tool");
|
||||||
|
case COOLANT_SUCTION:
|
||||||
|
return localize("Suction");
|
||||||
|
case COOLANT_FLOOD_MIST:
|
||||||
|
return localize("Flood and mist");
|
||||||
|
case COOLANT_FLOOD_THROUGH_TOOL:
|
||||||
|
return localize("Flood and through tool");
|
||||||
|
default:
|
||||||
|
return localize("Unknown");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onSectionEnd() {
|
||||||
|
var operationParameters = {};
|
||||||
|
|
||||||
|
operationParameters["id"] = currentSection.getId() + 1;
|
||||||
|
operationParameters["description"] = hasParameter("operation-comment") ? getParameter("operation-comment") : "";
|
||||||
|
operationParameters["strategy"] = getStrategy();
|
||||||
|
operationParameters["workOffset"] = currentSection.workOffset;
|
||||||
|
|
||||||
|
var tolerance = cachedParameters["operation:tolerance"];
|
||||||
|
var stockToLeave = cachedParameters["operation:stockToLeave"];
|
||||||
|
var axialStockToLeave = cachedParameters["operation:verticalStockToLeave"];
|
||||||
|
var maximumStepdown = cachedParameters["operation:maximumStepdown"];
|
||||||
|
var maximumStepover = cachedParameters["operation:maximumStepover"] ? cachedParameters["operation:maximumStepover"] : cachedParameters["operation:stepover"];
|
||||||
|
|
||||||
|
operationParameters["tolerance"] = tolerance;
|
||||||
|
operationParameters["stockToLeave"] = stockToLeave;
|
||||||
|
operationParameters["axialStockToLeave"] = axialStockToLeave;
|
||||||
|
operationParameters["maximumStepdown"] = maximumStepdown;
|
||||||
|
operationParameters["maximumStepover"] = maximumStepover;
|
||||||
|
|
||||||
|
if (!isProbeOperation(currentSection)) {
|
||||||
|
var cycleTime = currentSection.getCycleTime();
|
||||||
|
|
||||||
|
if (is3D()) {
|
||||||
|
var zRange = currentSection.getGlobalZRange();
|
||||||
|
operationParameters["minimumZ"] = zRange.getMinimum();
|
||||||
|
operationParameters["maximumZ"] = zRange.getMaximum();
|
||||||
|
} else {
|
||||||
|
operationParameters["minimumZ"] = "";
|
||||||
|
operationParameters["maximumZ"] = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
operationParameters["maximumFeed"] = currentSection.getMaximumFeedrate();
|
||||||
|
operationParameters["maximumSpindleSpeed"] = currentSection.getMaximumSpindleSpeed();
|
||||||
|
operationParameters["cuttingDistance"] = currentSection.getCuttingDistance();
|
||||||
|
operationParameters["rapidDistance"] = currentSection.getRapidDistance();
|
||||||
|
if (getProperty("rapidFeed") > 0) {
|
||||||
|
cycleTime += currentSection.getRapidDistance()/getProperty("rapidFeed") * 60;
|
||||||
|
}
|
||||||
|
operationParameters["cycleTime"] = formatTime(cycleTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
var tool = currentSection.getTool();
|
||||||
|
operationParameters["tool.number"] = tool.number;
|
||||||
|
operationParameters["tool.diameterOffset"] = tool.diameterOffset;
|
||||||
|
operationParameters["tool.lengthOffset"] = tool.lengthOffset;
|
||||||
|
operationParameters["tool.diameter"] = tool.diameter;
|
||||||
|
operationParameters["tool.cornerRadius"] = tool.cornerRadius;
|
||||||
|
operationParameters["tool.taperAngle"] = toDeg(tool.taperAngle);
|
||||||
|
operationParameters["tool.fluteLength"] = tool.fluteLength;
|
||||||
|
operationParameters["tool.shoulderLength"] = tool.shoulderLength;
|
||||||
|
operationParameters["tool.bodyLength"] = tool.bodyLength;
|
||||||
|
operationParameters["tool.numberOfFlutes"] = tool.numberOfFlutes;
|
||||||
|
operationParameters["tool.type"] = getToolTypeName(tool.type);
|
||||||
|
operationParameters["tool.spindleSpeed"] = tool.spindleSpeed;
|
||||||
|
operationParameters["tool.coolant"] = getCoolantName(tool.coolant);
|
||||||
|
operationParameters["tool.description"] = tool.description;
|
||||||
|
operationParameters["tool.comment"] = tool.comment;
|
||||||
|
operationParameters["tool.vendor"] = tool.vendor;
|
||||||
|
operationParameters["tool.productId"] = tool.productId;
|
||||||
|
operationParameters["tool.holderDescription"] = tool.holderDescription;
|
||||||
|
operationParameters["tool.holderComment"] = tool.holderComment;
|
||||||
|
operationParameters["tool.holderVendor"] = tool.holderVendor;
|
||||||
|
operationParameters["tool.holderProductId"] = tool.holderProductId;
|
||||||
|
|
||||||
|
operationInfo.push(prepend("operation", operationParameters));
|
||||||
|
|
||||||
|
cachedParameters = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
function formatTime(cycleTime) {
|
||||||
|
cycleTime = cycleTime + 0.5; // round up
|
||||||
|
var d = new Date(1899, 11, 31, 0, 0, cycleTime, 0);
|
||||||
|
return subst(
|
||||||
|
"%1-%2-%3T%4:%5:%6.000",
|
||||||
|
d.getFullYear(),
|
||||||
|
timeFormat.format(d.getMonth() + 1),
|
||||||
|
timeFormat.format(d.getDate()),
|
||||||
|
timeFormat.format(d.getHours()),
|
||||||
|
timeFormat.format(d.getMinutes()),
|
||||||
|
timeFormat.format(d.getSeconds())
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function dumpIds() {
|
||||||
|
for (var k in programInfo) {
|
||||||
|
log(k + " = " + programInfo[k]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (toolInfo.length > 0) {
|
||||||
|
var variables = toolInfo[0];
|
||||||
|
for (var k in variables) {
|
||||||
|
log(k + " = " + variables[k]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (operationInfo.length > 0) {
|
||||||
|
var variables = operationInfo[0];
|
||||||
|
for (var k in variables) {
|
||||||
|
log(k + " = " + variables[k]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onClose() {
|
||||||
|
if (getProperty("listVariables")) {
|
||||||
|
dumpIds();
|
||||||
|
}
|
||||||
|
|
||||||
|
var xml = loadText("setup-sheet-excel-template.xls", "utf-8");
|
||||||
|
var xml = xml.replace(/<\?xml (.*?)\?>/, "");
|
||||||
|
var d = new XML(xml);
|
||||||
|
|
||||||
|
default xml namespace = "urn:schemas-microsoft-com:office:spreadsheet";
|
||||||
|
var ss = new Namespace("urn:schemas-microsoft-com:office:spreadsheet");
|
||||||
|
|
||||||
|
var worksheets = d.ss::Worksheet;
|
||||||
|
for (var w in worksheets) {
|
||||||
|
updateWorksheet(worksheets[w]);
|
||||||
|
}
|
||||||
|
|
||||||
|
writeln("<?xml version='1.0' encoding='utf-8'?>");
|
||||||
|
write(d.toXMLString());
|
||||||
|
}
|
||||||
|
|
||||||
|
function onTerminate() {
|
||||||
|
//openUrl(getOutputPath());
|
||||||
|
executeNoWait("excel", "\"" + getOutputPath() + "\"", false, "");
|
||||||
|
}
|
||||||
1941
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/setup-sheet.cps
Normal file
1941
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/setup-sheet.cps
Normal file
File diff suppressed because it is too large
Load Diff
184
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/setup-sheet.css
Normal file
184
Mod/cam-dev/ref-fusion/CAM360/Data/Posts/setup-sheet.css
Normal file
@ -0,0 +1,184 @@
|
|||||||
|
/**
|
||||||
|
Copyright (C) 2012-2018 by Autodesk, Inc.
|
||||||
|
http://www.autodesk.com
|
||||||
|
All rights reserved
|
||||||
|
*/
|
||||||
|
|
||||||
|
body {
|
||||||
|
background-color: White;
|
||||||
|
font-family: Arial, Helvetica, sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
font-size: 15pt;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
font-size: 13pt;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
font-size: 11pt;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3.section {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
table {
|
||||||
|
border: none;
|
||||||
|
border-spacing: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.jobhead {
|
||||||
|
width: 18cm;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.job, table.sheet {
|
||||||
|
width: 18cm;
|
||||||
|
border: thin solid Gray;
|
||||||
|
}
|
||||||
|
|
||||||
|
th {
|
||||||
|
background-color: #e0e0e0;
|
||||||
|
border-bottom: 1px solid Gray;
|
||||||
|
}
|
||||||
|
|
||||||
|
tr.space td {
|
||||||
|
border-bottom: 1px solid Gray;
|
||||||
|
height: 1px;
|
||||||
|
font-size: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.info {
|
||||||
|
padding-top: 0.1cm;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.info td {
|
||||||
|
padding-left: 0.1cm;
|
||||||
|
}
|
||||||
|
|
||||||
|
.job td {
|
||||||
|
padding: 0.1cm 0.1cm 0.1cm 0.1cm;
|
||||||
|
}
|
||||||
|
|
||||||
|
.model img {
|
||||||
|
width: 12cm;
|
||||||
|
border: 2px solid Black;
|
||||||
|
}
|
||||||
|
|
||||||
|
.preview img {
|
||||||
|
border: 2px solid Black;
|
||||||
|
}
|
||||||
|
|
||||||
|
tr {
|
||||||
|
border: 1 solid Black;
|
||||||
|
page-break-inside: avoid;
|
||||||
|
padding-top: 30px;
|
||||||
|
padding-bottom: 20px;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.even td {
|
||||||
|
background-color: White;
|
||||||
|
}
|
||||||
|
|
||||||
|
.odd td {
|
||||||
|
background-color: #f0f0f0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jobhead td {
|
||||||
|
font-size: 12pt;
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
|
||||||
|
td {
|
||||||
|
font-size: 9pt;
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toolimage {
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
td.image {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notes {
|
||||||
|
white-space: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre {
|
||||||
|
padding-left: 0.5cm;
|
||||||
|
font-size: 8pt;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
white-space: nowrap;
|
||||||
|
font-size: 12pt;
|
||||||
|
text-indent: 1cm;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.jobhead td .description {
|
||||||
|
display: inline;
|
||||||
|
font-variant: small-caps;
|
||||||
|
}
|
||||||
|
|
||||||
|
td .description {
|
||||||
|
font-size: 8pt;
|
||||||
|
display: inline;
|
||||||
|
font-variant: small-caps;
|
||||||
|
}
|
||||||
|
|
||||||
|
.value {
|
||||||
|
display: inline;
|
||||||
|
font-family: Geneva, sans-serif;
|
||||||
|
color: #606060;
|
||||||
|
}
|
||||||
|
|
||||||
|
td .percentage {
|
||||||
|
display: inline;
|
||||||
|
font-size: 7pt;
|
||||||
|
}
|
||||||
|
|
||||||
|
.longtext {
|
||||||
|
white-space: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
img.logo {
|
||||||
|
height: 0.75cm;
|
||||||
|
vertical-align: middle;
|
||||||
|
margin-right: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer {
|
||||||
|
font-size: 9pt;
|
||||||
|
color: Silver;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
line {
|
||||||
|
stroke-width: 1px;
|
||||||
|
vector-effect:non-scaling-stroke;
|
||||||
|
}
|
||||||
|
|
||||||
|
path.holder {
|
||||||
|
stroke-width: 0.5px;
|
||||||
|
vector-effect: non-scaling-stroke;
|
||||||
|
}
|
||||||
|
|
||||||
|
path.cutter {
|
||||||
|
stroke-width: 1px;
|
||||||
|
vector-effect:non-scaling-stroke;
|
||||||
|
}
|
||||||
|
|
||||||
|
path.holderIE {
|
||||||
|
stroke-width: 0; // non-scaling not worker
|
||||||
|
}
|
||||||
|
|
||||||
|
path.cutterIE {
|
||||||
|
stroke-width: 0; // non-scaling not worker
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user