cut-abstractions/samples/gcodes.ts

528 lines
14 KiB
TypeScript
Raw Permalink Normal View History

2025-06-24 11:48:26 +08:00
import { CodeParams } from "./confClass"
function checkVal(val) {
let r = true
if ((val == undefined || val == '')) {
r = false
}
return r
}
/**G
* G0 - G3
*/
export enum GCode {
/**快速定位 空程移动 范例G00 X100 Y50刀具快速移动至X100、Y50位置 */
G0 = 'G0',
/**快速定位 空程移动 范例G00 X100 Y50刀具快速移动至X100、Y50位置*/
G00 = 'G00',
/**直线 直线插补 范例G01 X200 Y300 F150刀具以150mm/min的进给速度直线移动至X200、Y300*/
G1 = 'G1',
/**直线 范例G01 X200 Y300 F150刀具以150mm/min的进给速度直线移动至X200、Y300*/
G01 = 'G01',
/** 顺时针 范例G17 G02 X150 Y50 I50 J0 F100在XY平面以半径50mm顺时针圆弧插补至X150、Y50*/
G2 = 'G2',
/** 顺时针 范例G17 G02 X150 Y50 I50 J0 F100在XY平面以半径50mm顺时针圆弧插补至X150、Y50*/
G02 = 'G02',
/** 逆时针 范例G17 G03 X150 Y50 I50 J0 F100在XY平面以半径50mm逆时针圆弧插补至X150、Y50*/
G3 = 'G3',
/** 逆时针 范例G17 G03 X150 Y50 I50 J0 F100在XY平面以半径50mm逆时针圆弧插补至X150、Y50*/
G03 = 'G03',
/**暂停 范例G04 X2暂停2秒*/
G4 = 'G4',
/**暂停 范例G04 X2暂停2秒*/
G04 = 'G04',
/**
* 1.
* G05 X60 Z50 IX50 IZ60 F120 (50, 60) (60, 50)
* 2. HPCC
* G05 HPCC线
*
* G05 P10000P值设为10000
* G05 P0P值设为0
* 3
* 线HPCC模式
HPCC模式下G61G63退HPCC模式后恢复
RTCP STCP HPCC功能
C40/M00
线
* */
G5 = 'G5',
/** 通过中间点圆弧插补 */
G05 = 'G05',
/** 抛物线插补 */
G6 = 'G6',
/** 抛物线插补 */
G06 = 'G06',
/** z样条曲线插补 */
G7 = 'G7',
/** z样条曲线插补 */
G07 = 'G07',
/** 进给加速 */
G8 = 'G8',
/** 进给加速 */
G08 = 'G08',
/** 进给减速 */
G9 = 'G9',
/** 进给减速 */
G09 = 'G09',
/** 参数写入方式有效 */
G10 = 'G10',
/** 参数写入方式取消 */
G11 = 'G11',
/** 极坐标变成 */
G16 = 'G16',
/** XY平面选择 */
G17 = 'G17',
/** XZ平面选择 */
G18 = 'G18',
/** YZ平面选择 */
G19 = 'G19',
/** 英制输入 */
G20 = 'G20',
/** 公制输入 */
G21 = 'G21',
/** 半径尺寸编程方式 */
G22 = 'G22',
/** 系统操作界面上使用 */
G220 = 'G220',
/** 直径尺寸编程方式 */
G23 = 'G23',
/** 系统操作界面上使用 */
G230 = 'G230',
/** 子程序结束 */
G24 = 'G24',
/** 跳转加工 */
G25 = 'G25',
/** 循环加工 */
G26 = 'G26',
/** 参考点返回 */
G28 = 'G28',
/** 倍率注销 */
G30 = 'G30',
/** 倍率定义 */
G31 = 'G31',
/** 等螺距螺纹切削,英制 */
G32 = 'G32',
/** 等螺距螺纹切削,公制 */
G33 = 'G33',
/** 增螺距螺纹切削 */
G34 = 'G34',
/** 减螺距螺纹切削 */
G35 = 'G35',
//** 刀具半径补正取消 */
G40 = 'G40',
//** 刀具半径补正 左*/
G41 = 'G41',
//** 刀具半径补正 右*/
G42 = 'G42',
//** 刀具长度补正+ */
G43 = 'G43',
//** 刀具长度补正- */
G44 = 'G44',
//** 道具偏置+/+ */
G45 = 'G45',
//** 道具偏置+/- */
G46 = 'G46',
//** 道具偏置-/- */
G47 = 'G47',
//** 道具偏置-/+ */
G48 = 'G48',
//** 刀具长度 补正取消 */
G49 = 'G49',
//** 局部坐标系设定 */
G52 = 'G52',
//** 机床坐标系选择 */
G53 = 'G53',
//** 工件坐标系选择1 */
G54 = 'G54',
//** 工件坐标系选择2 */
G55 = 'G55',
//** 工件坐标系选择3 */
G56 = 'G56',
//** 工件坐标系选择4 */
G57 = 'G57',
//** 工件坐标系选择5 */
G58 = 'G58',
//** 工件坐标系选择6 */
G59 = 'G59',
//** 坐标系旋转有效 */
G68 = 'G68',
//** 坐标系旋转取消 */
G69 = 'G69',
/** 高速深孔钻 */
G73 = 'G73',
/** 精搪孔 */
G76 = 'G76',
/** 固定循环取消/取消循环指令 */
G80 = 'G80',
/**程序停止 */
M00 = 'M00',
/**选择性停止 */
M01 = 'M01',
/** 程序结束 */
M02 = 'M02',
/**主轴正转 */
M03 = 'M03',
/**主轴反转 */
M04 = 'M04',
/**主轴停止 */
M05 = 'M05',
/**自动换刀 */
M06 = 'M06',
}
/**G代码基类 */
export class GCodeAction {
/** 空程直线 */
G0(params: CodeParams) {
const { x, y, z, f, xKey, yKey, zKey, fKey, codeKey } = params
let val: string = GCode.G0
if (typeof (codeKey) == 'string' && codeKey != '') {
val = codeKey
}
let _xkey = xKey || 'X'
let _yKey = yKey || 'Y'
let _zKey = zKey || 'Z'
let _fKey = fKey || 'F'
if (checkVal(x)) {
val += ` ${_xkey}${x}`
}
if (checkVal(y)) {
val += ` ${_yKey}${y}`
}
if (checkVal(z)) {
val += ` ${_zKey}${z}`
}
if (checkVal(f)) {
val += ` ${_fKey}${f}`
}
return val
}
/** 空程直线 */
G00(params: CodeParams) {
const { x, y, z, f, xKey, yKey, zKey, fKey, codeKey } = params
let val: string = GCode.G00
if (typeof (codeKey) == 'string' && codeKey != '') {
val = codeKey
}
let _xkey = xKey || 'X'
let _yKey = yKey || 'Y'
let _zKey = zKey || 'Z'
let _fKey = fKey || 'F'
if (checkVal(x)) {
val += ` ${_xkey}${x}`
}
if (checkVal(y)) {
val += ` ${_yKey}${y}`
}
if (checkVal(z)) {
val += ` ${_zKey}${z}`
}
if (checkVal(f)) {
val += ` ${_fKey}${f}`
}
return val
}
/** 直线 */
G1(params: CodeParams) {
const { x, y, z, f, xKey, yKey, zKey, fKey, codeKey } = params
let val: string = GCode.G1
if (typeof (codeKey) == 'string' && codeKey != '') {
val = codeKey
}
let _xkey = xKey || 'X'
let _yKey = yKey || 'Y'
let _zKey = zKey || 'Z'
let _fKey = fKey || 'F'
if (checkVal(x)) {
val += ` ${_xkey}${x}`
}
if (checkVal(y)) {
val += ` ${_yKey}${y}`
}
if (checkVal(z)) {
val += ` ${_zKey}${z}`
}
if (checkVal(f)) {
val += ` ${_fKey}${f}`
}
return val
}
/** 直线 */
G01(params: CodeParams) {
const { x, y, z, f, xKey, yKey, zKey, fKey, codeKey } = params
let val: string = GCode.G01
if (typeof (codeKey) == 'string' && codeKey != '') {
val = codeKey
}
let _xkey = xKey || 'X'
let _yKey = yKey || 'Y'
let _zKey = zKey || 'Z'
let _fKey = fKey || 'F'
if (checkVal(x)) {
val += ` ${_xkey}${x}`
}
if (checkVal(y)) {
val += ` ${_yKey}${y}`
}
if (checkVal(z)) {
val += ` ${_zKey}${z}`
}
if (checkVal(f)) {
val += ` ${_fKey}${f}`
}
return val
}
/** 线
* @param x x坐标
* @param y y坐标
* @param z z坐标
* @param i x
* @param y Y
* @param z Y
* @param f
*/
G2(params: CodeParams) {
const { x, y, z, i, j, k, r, f, xKey, yKey, zKey, fKey, iKey, jKey, kKey, codeKey } = params
let val: string = GCode.G2
if (typeof (codeKey) == 'string' && codeKey != '') {
val = codeKey
}
let _xkey = xKey || 'X'
let _yKey = yKey || 'Y'
let _zKey = zKey || 'Z'
let _fKey = fKey || 'F'
let _iKey = iKey || 'I'
let _jKey = jKey || 'J'
let _kKey = kKey || 'K'
if (checkVal(x)) {
val += ` ${_xkey}${x}`
}
if (checkVal(y)) {
val += ` ${_yKey}${y}`
}
if (checkVal(z)) {
val += ` ${_zKey}${z}`
}
if (checkVal(r)) {
val += ` R${r}`
} else {
if (checkVal(i)) {
val += ` ${_iKey}${i}`
}
if (checkVal(j)) {
val += ` ${_jKey}${j}`
}
if (checkVal(k)) {
val += ` ${_kKey}${k}`
}
}
if (checkVal(f)) {
val += ` ${_fKey}${f}`
}
return val
}
/** 线
* @param x x坐标
* @param y y坐标
* @param z z坐标
* @param i x
* @param y Y
* @param z Y
* @param f
*/
G02(params: CodeParams) {
const { x, y, z, i, j, k, r, f, xKey, yKey, zKey, fKey, iKey, jKey, kKey, codeKey } = params
let val: string = GCode.G02
if (typeof (codeKey) == 'string' && codeKey != '') {
val = codeKey
}
let _xkey = xKey || 'X'
let _yKey = yKey || 'Y'
let _zKey = zKey || 'Z'
let _fKey = fKey || 'F'
let _iKey = iKey || 'I'
let _jKey = jKey || 'J'
let _kKey = kKey || 'K'
if (checkVal(x)) {
val += ` ${_xkey}${x}`
}
if (checkVal(y)) {
val += ` ${_yKey}${y}`
}
if (checkVal(z)) {
val += ` ${_zKey}${z}`
}
if (checkVal(r)) {
val += ` R${r}`
} else {
if (checkVal(i)) {
val += ` ${_iKey}${i}`
}
if (checkVal(j)) {
val += ` ${_jKey}${j}`
}
if (checkVal(k)) {
val += ` ${_kKey}${k}`
}
}
if (checkVal(f)) {
val += ` ${_fKey}${f}`
}
return val
}
/** 线
* @param x x坐标
* @param y y坐标
* @param z z坐标
* @param i x
* @param y Y
* @param z Y
* @param f
*/
G3(params: CodeParams) {
const { x, y, z, i, j, k, r, f, xKey, yKey, zKey, fKey, iKey, jKey, kKey, codeKey } = params
let val: string = GCode.G3
if (typeof (codeKey) == 'string' && codeKey != '') {
val = codeKey
}
let _xkey = xKey || 'X'
let _yKey = yKey || 'Y'
let _zKey = zKey || 'Z'
let _fKey = fKey || 'F'
let _iKey = iKey || 'I'
let _jKey = jKey || 'J'
let _kKey = kKey || 'K'
if (checkVal(x)) {
val += ` ${_xkey}${x}`
}
if (checkVal(y)) {
val += ` ${_yKey}${y}`
}
if (checkVal(z)) {
val += ` ${_zKey}${z}`
}
if (checkVal(r)) {
val += ` R${r}`
} else {
if (checkVal(i)) {
val += ` ${_iKey}${i}`
}
if (checkVal(j)) {
val += ` ${_jKey}${j}`
}
if (checkVal(k)) {
val += ` ${_kKey}${k}`
}
}
if (checkVal(f)) {
val += ` ${_fKey}${f}`
}
return val
}
/** 线
* @param x x坐标
* @param y y坐标
* @param z z坐标
* @param i x
* @param y Y
* @param z Y
* @param f
*/
G03(params: CodeParams) {
const { x, y, z, i, j, k, r, f, xKey, yKey, zKey, fKey, iKey, jKey, kKey, codeKey } = params
let val: string = GCode.G03
if (typeof (codeKey) == 'string' && codeKey != '') {
val = codeKey
}
let _xkey = xKey || 'X'
let _yKey = yKey || 'Y'
let _zKey = zKey || 'Z'
let _fKey = fKey || 'F'
let _iKey = iKey || 'I'
let _jKey = jKey || 'J'
let _kKey = kKey || 'K'
if (checkVal(x)) {
val += ` ${_xkey}${x}`
}
if (checkVal(y)) {
val += ` ${_yKey}${y}`
}
if (checkVal(z)) {
val += ` ${_zKey}${z}`
}
if (checkVal(r)) {
val += ` R${r}`
} else {
if (checkVal(i)) {
val += ` ${_iKey}${i}`
}
if (checkVal(j)) {
val += ` ${_jKey}${j}`
}
if (checkVal(k)) {
val += ` ${_kKey}${k}`
}
}
if (checkVal(f)) {
val += ` ${_fKey}${f}`
}
return val
}
/**
*
* @param s
*/
M03(s: any) {
let val: string = GCode.M03
if (checkVal(s)) {
val += ` S${s}`
}
return val
}
/**
* @param s
*/
M04(s: any) {
let val: string = GCode.M04
if (checkVal(s)) {
val += ` S${s}`
}
return val
}
/**主轴停止 */
M05() {
let val: string = GCode.M05
return val
}
/**换刀指令 */
M06(t: String) {
let val: string = GCode.M06
if (checkVal(t)) {
val += ` T${t}`
}
return val
}
}