优化NCWriter G代码参数定义,添加自定义参数
This commit is contained in:
		@@ -1,5 +1,48 @@
 | 
				
			|||||||
import { Knife } from "../models/knife";
 | 
					import { Knife } from "../models/knife";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * NC代码构建器接口,实现该接口来定义一个处理器用的NC代码构建器
 | 
				
			||||||
 | 
					 * @author CZY
 | 
				
			||||||
 | 
					 * @since 0.3.0
 | 
				
			||||||
 | 
					 * @version 0.1.1
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					export interface INcWriter {
 | 
				
			||||||
 | 
					    get ncActions(): NcAction[];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /** 添加G代码 */
 | 
				
			||||||
 | 
					    gCode<TCode extends keyof typeof GCode & keyof typeof CCode>(code: TCode, params: Partial<TCode extends keyof typeof GCode ? GCodeParams : CCodeParams>): 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;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** 基础G代码 */
 | 
					/** 基础G代码 */
 | 
				
			||||||
export const GCode = {
 | 
					export const GCode = {
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@@ -55,7 +98,19 @@ export const GCode = {
 | 
				
			|||||||
    G3: 'G3',
 | 
					    G3: 'G3',
 | 
				
			||||||
} as const;
 | 
					} as const;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**  */
 | 
					/** 自定义数控代码,由内部解析并实现,不直接输出给设备 */
 | 
				
			||||||
 | 
					export const CCode = {
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 自动圆弧插补
 | 
				
			||||||
 | 
					     * @param X X 坐标
 | 
				
			||||||
 | 
					     * @param Y Y 坐标
 | 
				
			||||||
 | 
					     * @param Z Z 坐标
 | 
				
			||||||
 | 
					     * @param B Bulge圆弧凸度,表示圆弧所包含角度的四分之一的正切值。当B=0时,圆弧为直线,当B>0时,圆弧为顺时针圆弧,当B<0时,圆弧为逆时针圆弧 (所谓“顺时针”和“逆时针”是指从起始点到结束点的绘制角度)
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    CArc: 'CArc',
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** NC GCode 参数结构 */
 | 
				
			||||||
export class GCodeParams {
 | 
					export class GCodeParams {
 | 
				
			||||||
    /** X坐标值 mm */
 | 
					    /** X坐标值 mm */
 | 
				
			||||||
    x: number = 0;
 | 
					    x: number = 0;
 | 
				
			||||||
@@ -73,6 +128,18 @@ export class GCodeParams {
 | 
				
			|||||||
    f: number = 0;
 | 
					    f: number = 0;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** 自定义数控代码参数结构 */
 | 
				
			||||||
 | 
					export class CCodeParams {
 | 
				
			||||||
 | 
					    /** X坐标值 mm */
 | 
				
			||||||
 | 
					    x: number = 0;
 | 
				
			||||||
 | 
					    /** Y坐标值 mm */
 | 
				
			||||||
 | 
					    y: number = 0;
 | 
				
			||||||
 | 
					    /** Z坐标值 mm */
 | 
				
			||||||
 | 
					    z: number = 0;
 | 
				
			||||||
 | 
					    /** 使用自动圆弧(CArc)命令时,定义圆弧凸度 */
 | 
				
			||||||
 | 
					    b: number = 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** 单次NC加工行为 */
 | 
					/** 单次NC加工行为 */
 | 
				
			||||||
export interface NcAction {
 | 
					export interface NcAction {
 | 
				
			||||||
    readonly id: string;
 | 
					    readonly id: string;
 | 
				
			||||||
@@ -81,46 +148,3 @@ export interface NcAction {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export type NcActionType = string;
 | 
					export type NcActionType = string;
 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * NC代码构建器接口,实现该接口来定义一个处理器用的NC代码构建器
 | 
					 | 
				
			||||||
 * @author CZY
 | 
					 | 
				
			||||||
 * @since 0.3.0
 | 
					 | 
				
			||||||
 * @version 0.1.0
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
export interface INcWriter {
 | 
					 | 
				
			||||||
    get ncActions(): NcAction[];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /** 添加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