新增NCBuilder接口;优化部分类型定义,格式化代码;
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "cut-abstractions",
|
"name": "cut-abstractions",
|
||||||
"version": "0.2.2",
|
"version": "0.3.0",
|
||||||
"description": "",
|
"description": "",
|
||||||
"files": [
|
"files": [
|
||||||
"dist/**/*"
|
"dist/**/*"
|
||||||
|
@@ -4,7 +4,7 @@ import { ConfigBase } from "./models/config";
|
|||||||
/**
|
/**
|
||||||
* 加工处理器上下文
|
* 加工处理器上下文
|
||||||
*/
|
*/
|
||||||
export interface ProcessorContext<TInput, TOutput, TConfig extends ConfigBase> {
|
export interface ProcessorContext<TInput = any, TOutput = any, TConfig extends ConfigBase = ConfigBase> {
|
||||||
/**
|
/**
|
||||||
* 输入数据
|
* 输入数据
|
||||||
*/
|
*/
|
||||||
|
@@ -2,8 +2,8 @@
|
|||||||
* 配置基类,下划线开头的变量不会被序列化
|
* 配置基类,下划线开头的变量不会被序列化
|
||||||
*/
|
*/
|
||||||
export class ConfigBase {
|
export class ConfigBase {
|
||||||
name: string = '';
|
readonly name: string = '';
|
||||||
version:string = '1.0.0';
|
readonly version: string = '1.0.0';
|
||||||
[key: string]: any;
|
[key: string]: any;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
117
src/nc/ncBuilder.ts
Normal file
117
src/nc/ncBuilder.ts
Normal file
@@ -0,0 +1,117 @@
|
|||||||
|
import { Knife } from "../models/knife";
|
||||||
|
|
||||||
|
/** 基础G代码 */
|
||||||
|
export const GCode = {
|
||||||
|
/**
|
||||||
|
* 快速定位
|
||||||
|
* @param X X 坐标
|
||||||
|
* @param Y Y 坐标
|
||||||
|
* @param Z Z 坐标
|
||||||
|
* @param F 给进速度 mm/min
|
||||||
|
* @example G0 X0 Y0 F25000
|
||||||
|
*/
|
||||||
|
G0: 'G0',
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 直线插补
|
||||||
|
* @param X X 坐标
|
||||||
|
* @param Y Y 坐标
|
||||||
|
* @param Z Z 坐标
|
||||||
|
* @param F 给进速度 mm/min
|
||||||
|
* @example G1 X0 Y0 F25000
|
||||||
|
*/
|
||||||
|
G1: 'G1',
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 顺时针圆弧插补
|
||||||
|
* @param X X 坐标
|
||||||
|
* @param Y Y 坐标
|
||||||
|
* @param Z Z 坐标
|
||||||
|
* @param I (圆心坐标模式)从圆弧起点到圆心在X轴上的**增量距离**
|
||||||
|
* @param J (圆心坐标模式)从圆弧起点到圆心在Y轴上的**增量距离**
|
||||||
|
* @param K (圆心坐标模式)从圆弧起点到圆心在Z轴上的**增量距离**
|
||||||
|
* @param R (圆弧半径模式)指定圆弧的半径
|
||||||
|
* @example
|
||||||
|
* ; 假设当前刀具在 (X10, Y0)
|
||||||
|
* G2 X0 Y10 I-10 J0 F150 ; 顺时针圆弧到X0 Y10,圆心在(0,0) (10 + (-10) = 0, 0 + 0 = 0)
|
||||||
|
* G2 X0 Y10 R10 F150 ; 顺时针圆弧到X0 Y10,半径10 (小于等于180度)
|
||||||
|
*/
|
||||||
|
G2: 'G2',
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 逆时针圆弧插补
|
||||||
|
* @param X X 坐标
|
||||||
|
* @param Y Y 坐标
|
||||||
|
* @param Z Z 坐标
|
||||||
|
* @param I (圆心坐标模式)从圆弧起点到圆心在X轴上的**增量距离**
|
||||||
|
* @param J (圆心坐标模式)从圆弧起点到圆心在Y轴上的**增量距离**
|
||||||
|
* @param K (圆心坐标模式)从圆弧起点到圆心在Z轴上的**增量距离**
|
||||||
|
* @param R (圆弧半径模式)指定圆弧的半径
|
||||||
|
* @example
|
||||||
|
* ; 假设当前刀具在 (X10, Y0)
|
||||||
|
* G3 X0 Y-10 I-10 J0 F150 ; 逆时针圆弧到X0 Y-10,圆心在(0,0)
|
||||||
|
* G3 X0 Y-10 R-10 F150 ; 逆时针圆弧到X0 Y-10,半径10 (大于180度)
|
||||||
|
*/
|
||||||
|
G3: 'G3',
|
||||||
|
} as const;
|
||||||
|
|
||||||
|
/** */
|
||||||
|
export class GCodeParams {
|
||||||
|
/** X坐标值 mm */
|
||||||
|
x: number = 0;
|
||||||
|
/** Y坐标值 mm */
|
||||||
|
y: number = 0;
|
||||||
|
/** Z坐标值 mm */
|
||||||
|
z: number = 0;
|
||||||
|
/** 使用圆弧指令(G2,G3)的圆弧半径模式(R)时,定义圆弧半径 */
|
||||||
|
r: number = 0;
|
||||||
|
/** 使用圆弧指令(G2,G3)的圆心坐标模式(I,J,K)时,定义圆心坐标在X轴上的增量距离 */
|
||||||
|
i: number = 0;
|
||||||
|
/** 使用圆弧指令(G2,G3)的圆心坐标模式(I,J,K)时,定义圆心坐标在Y轴上的增量距离 */
|
||||||
|
j: number = 0;
|
||||||
|
/** 给进速度(Feed Rate) mm/min */
|
||||||
|
f: number = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type NcActionType = string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* NC代码构建器接口,实现该接口来定义一个处理器用的NC代码构建器
|
||||||
|
* @author CZY
|
||||||
|
* @since 0.3.0
|
||||||
|
* @version 0.1.0
|
||||||
|
*/
|
||||||
|
export interface INcBuilder {
|
||||||
|
/** 添加G代码 */
|
||||||
|
gCode(code: keyof typeof GCode, params: Partial<Pick<GCodeParams, 'x' | 'y' | 'z' | 'f'> & { bul: number; }>): void;
|
||||||
|
|
||||||
|
/** 基于刀具实体执行换刀操作 */
|
||||||
|
changeKnife(knife: Knife): void;
|
||||||
|
|
||||||
|
/** 添加一行注释 */
|
||||||
|
comment(content: string): void;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 记录一次NC加工操作
|
||||||
|
*
|
||||||
|
* NC加工操作指的是一次完整的加工过程,例如一次排钻,一次造型切割,或是一次小板加工
|
||||||
|
*
|
||||||
|
* 一次NC加工操作可能包含多行的GCode
|
||||||
|
*
|
||||||
|
* 该方法旨在为NC文件提供记录加工步骤的能力
|
||||||
|
*
|
||||||
|
* 返回本次NC操作的ID,此ID由内部生成
|
||||||
|
* @param type NC操作类型
|
||||||
|
* @returns 本次NC操作的ID
|
||||||
|
*/
|
||||||
|
recordAction(type: NcActionType): string;
|
||||||
|
|
||||||
|
/** 直接在末尾追加任意字符串 */
|
||||||
|
append(str: string): void;
|
||||||
|
|
||||||
|
/** 直接在末尾追加一行任意字符串 */
|
||||||
|
appendLine(str: string): void;
|
||||||
|
|
||||||
|
/** 返回当前构建的NC代码 */
|
||||||
|
toString(): string;
|
||||||
|
}
|
Reference in New Issue
Block a user