/// 增加引线C000条件0828
/// 增加无屑加工条件0829
/// 增加模拟用程序面0829
/// 增加普通斜度度数独一行0929
/// 增加普通斜度退刀0929
/// 上下异形退刀0929
using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
using System.Reflection;
using System.Text;
using XYCAM.Entites;
namespace XYCAM.Script
{
public class XycamScriptClass : ScriptBase
{
#region 自定义方法
///
/// 自定义的放电参数库
///
private Dictionary 内孔放电参数字典 = new Dictionary
{
//数字表示对应高度,花括号内表示 1~9 刀 对应的条件代码
{ 5, new string[] { "C001", "C002", "C003", "C904", "C905", "C906", "C907", "C908", "C909", } },
{ 10, new string[] { "C001", "C002", "C003", "C904", "C905", "C906", "C907", "C908", "C909", } },
{ 15, new string[] { "C001", "C002", "C003", "C904", "C905", "C906", "C907", "C908", "C909", } },
{ 20, new string[] { "C001", "C002", "C003", "C904", "C905", "C906", "C907", "C908", "C909", } },
{ 30, new string[] { "C001", "C002", "C003", "C904", "C905", "C906", "C907", "C908", "C909", } },
{ 40, new string[] { "C001", "C002", "C003", "C904", "C905", "C906", "C907", "C908", "C909", } },
{ 50, new string[] { "C001", "C002", "C003", "C904", "C905", "C906", "C907", "C908", "C909", } },
{ 60, new string[] { "C001", "C002", "C003", "C904", "C905", "C906", "C907", "C908", "C909", } },
{ 70, new string[] { "C001", "C002", "C003", "C904", "C905", "C906", "C907", "C908", "C909", } },
{ 80, new string[] { "C001", "C002", "C003", "C904", "C905", "C906", "C907", "C908", "C909", } },
{ 90, new string[] { "C001", "C002", "C003", "C904", "C905", "C906", "C907", "C908", "C909", } },
{ 100, new string[] { "C001", "C002", "C003", "C904", "C905", "C906", "C907", "C908", "C909", } },
{ 120, new string[] { "C001", "C002", "C003", "C904", "C905", "C906", "C907", "C908", "C909", } },
{ 150, new string[] { "C001", "C002", "C003", "C904", "C905", "C906", "C907", "C908", "C909", } },
{ 200, new string[] { "C001", "C002", "C003", "C904", "C905", "C906", "C907", "C908", "C909", } },
};
///
/// 自定义的放电参数库
///
private Dictionary 外形放电参数字典 = new Dictionary
{
//数字表示对应高度,花括号内表示 1~9 刀 对应的条件代码
{ 5, new string[] { "C001", "C002", "C003", "C904", "C905", "C906", "C907", "C908", "C909", } },
{ 10, new string[] { "C001", "C002", "C003", "C904", "C905", "C906", "C907", "C908", "C909", } },
{ 15, new string[] { "C001", "C002", "C003", "C904", "C905", "C906", "C907", "C908", "C909", } },
{ 20, new string[] { "C001", "C002", "C003", "C904", "C905", "C906", "C907", "C908", "C909", } },
{ 30, new string[] { "C001", "C002", "C003", "C904", "C905", "C906", "C907", "C908", "C909", } },
{ 40, new string[] { "C001", "C002", "C003", "C904", "C905", "C906", "C907", "C908", "C909", } },
{ 50, new string[] { "C001", "C002", "C003", "C904", "C905", "C906", "C907", "C908", "C909", } },
{ 60, new string[] { "C001", "C002", "C003", "C904", "C905", "C906", "C907", "C908", "C909", } },
{ 70, new string[] { "C001", "C002", "C003", "C904", "C905", "C906", "C907", "C908", "C909", } },
{ 80, new string[] { "C001", "C002", "C003", "C904", "C905", "C906", "C907", "C908", "C909", } },
{ 90, new string[] { "C001", "C002", "C003", "C904", "C905", "C906", "C907", "C908", "C909", } },
{ 100, new string[] { "C001", "C002", "C003", "C904", "C905", "C906", "C907", "C908", "C909", } },
{ 120, new string[] { "C001", "C002", "C003", "C904", "C905", "C906", "C907", "C908", "C909", } },
{ 150, new string[] { "C001", "C002", "C003", "C904", "C905", "C906", "C907", "C908", "C909", } },
{ 200, new string[] { "C001", "C002", "C003", "C904", "C905", "C906", "C907", "C908", "C909", } },
};
///
/// 获取当前刀次的放电参数
///
private string E2
{
get
{
Dictionary dict = V1 == 0 ? 内孔放电参数字典 : 外形放电参数字典;
var keys = dict.Keys.ToList();
//搜寻对应高度的参数数组下标
var keyIndex = keys.BinarySearch((int)V22);
if (keyIndex < 0) keyIndex = ~keyIndex;
//获取参数数组
var values = dict[keys[keyIndex]];
if (V12 > (V32 + 1))//切断单独补正时
{
return values[0];
}
else
{
//返回对应刀次的参数
return values[V12 - 1];
}
}
}
//总线长的变量
private double totalLength = 0;
///
/// 判断是否为开粗工序,且不为切断
///
private bool 是否为开粗工序
{
get
{
return V12 == 1 && V36 != 1;
}
}
///
/// 判断上下异形2个面的起点是否在同一位置
///
private bool 上下异形垂直进刀
{
get
{
return Math.Abs(XS.Value - XS2.Value) < 1E-3
&& Math.Abs(YS.Value - YS2.Value) < 1E-3;
//判断程序面起点X和Y坐标是否和辅助面起点X和Y坐标一致
// return XS.Value == XS2.Value && YS.Value == YS2.Value;
}
}
///
/// 是否关闭加工电源
///
private bool 是否关闭加工电源;
///
/// 每刀对应的标题集合
///
private string[] titles = new string[] { "1ST", "2ND", "3RD", "4TH", "5TH", "6TH", "7TH", "8TH", "9TH", "10TH", };
///
/// 当前刀次对应的标题
///
private string currentTitle
{
get
{
if (V36 == 1)
{
return "CutOff";//切断
}
else if (V36 == 3)
{
return "NoCoreInner";//无屑内芯
}
else
{
return titles[V12 - 1];
}
}
}
///
/// 运行2d轨迹
///
///
private void Run2()
{
//锥度输出,与上一个锥度不同时
if (T != LastT)
{
Add(G41orG42 ? G52 : G51);
Add(T2);
}
//添加默认的坐标
Add(Cut, X, Y);
//为圆弧时
if ((int)CuttingMode > 1)
{
//添加圆弧坐标
Add(I, J);
//获取半径或直径的字符,这里用三元表达式,同统赢的一样
string r = IsCircle ? Fmt("D", R * 2) : R;
//添加半径或者直径标识字符
Add("( ", r, " )");
}
//刀口模式,修刀不输出
if (V87 == 9 && !(V57 == 1 && V12 > 1))
{
//同R时加入同R的机器字符
Add(Fmt("R", R3));
}
//换行
AddL();
}
///
/// 运行3d轨迹
///
///
private void Run3()
{
if (Cut == G1 || Cut == G0)
{
//两平面格式
Add(Cut, X, Y);
}
else
{
//两平面格式
Add(Cut, X, Y, I, J);
}
//辅助面的加工逻辑
//如果是会员版,可以将以下 的Cut改成Cut2
//这样的话支持同一段路径,一个走直线一个走圆弧
if (Cut == G1 || Cut == G0)
{
//两平面格式
Add(":" + Cut, X2, Y2);
}
else
{
//两平面格式
Add(":", Cut, X2, Y2, I2, J2);
}
// if (Cut2 == G1 || Cut2 == G0)
// {
// //两平面格式
// Add(":" + Cut2, X2, Y2);
// }
// else
// {
// //两平面格式
// Add(":", Cut2, X2, Y2, I2, J2);
// }
AddL();
}
///
/// 记录上一个标签
///
string preTitle = "";
///
/// 程序面字典, 查询键为字符(程序面+辅助面) ,对应的值为 整数类型(子程序面呼叫号码)
///
Dictionary progamPlaneDictionary = new Dictionary();
///
/// 子程序面集合字符,最后加入到程序结尾操作区域
///
string progamPlanes = "";
#endregion
///
/// 初始化参数
///
protected override void Init()
{
V4 = 0;
D.Set(3, "H");
D1.Set(3, "H");
Dv.Set(3);
E.Set(3, "C");
E1.Set(3, "C");
N.Set(4, "N");
F.Set(3, "F");
T.Set(4, "A");
T1.Set(4, "A");
X.Set(4, "X");
Y.Set(4, "Y");
U.Set(4, "U");
V.Set(4, "V");
W.Set(3, "W");
I.Set(4, "I");
J.Set(4, "J");
XS.Set(4, "X");
YS.Set(4, "Y");
US.Set(4, "U");
VS.Set(4, "V");
XS1.Set(4, "X");
YS1.Set(4, "Y");
XS2.Set(4, "X");
YS2.Set(4, "Y");
X2.Set(4, "X");//两平面时的辅助面X
Y2.Set(4, "Y");//两平面时的辅助面Y
I2.Set(4, "I");//两平面时的辅助面I
J2.Set(4, "J");//两平面时的辅助面J
R.Set(3, "R");
K.Set(4, "K");
L.Set(4, "L");
Z1.Set(3, "Z");
Z2.Set(3, "I");
StartX.Set(4, "X");
StartY.Set(4, "Y");
//补正分组关闭(1:开启)
V11 = 0;
MachineType = "沙迪克";
V55 = 1;//上下同R走沙迪克模式
V33 = 1;//每行代码后面加上;
// V61 = ".NC";
// V62 = 0.001;//上下异形圆弧分段(如果设置数值,则按照数值表示的进度分段)
}
///
/// 补偿列
///
/// 补偿组编号
///
protected override string OffsetRow(int i)
{
//如果不想输出,可改为 return "";
string str = ((char)('A' + i)).ToString();
return "(" + str + ")" + QN;
}
///
/// 补正项
///
/// 补偿编号
/// 补偿值
///
protected override string OffsetItem(int d, double dv)
{
// 格式化补偿值
string fmtVal = dv.ToString("+000000.0000");
return Fmt("H", d, 3) + "=" + fmtVal;
}
///
/// 程序开始
///
///
public override void ProgamStart()
{
AddL("(" + Date + ")");
AddL("H996=+000000.0020 (PUNCH-1 外形开粗)");
AddL("H997=+000000.0020 (PUNCH-1 外形修刀)");
AddL("H998=+000000.0050 (PUNCH-1 内孔开粗)");
AddL("H999=+000000.0020 (PUNCH-1 内孔修刀)");
AddL("H000=+000000.0000");
AddL(OffsetGroup());//添加补正组
AddL("");
{
// if (V2 == 0&& V31==0 && V29 == 0&&!HasAngle) {AddL("(主程序面="+V25.ToString("0.000")+"副程序面="+V31.ToString("0.000")+"工件顶面="+V25.ToString("0.000")+"工件底部=0.0 TP"+V25.ToString("0.000")+" TN"+V31.ToString("0.000")+ ")"); }
if (V2 == 0&& V31==0 && V29 == 0&& HasAngle) {AddL("(主程序面="+V29.ToString("0.000")+"副程序面="+V25.ToString("0.000")+"工件顶面="+V25.ToString("0.000")+"工件底部=0.0 TP"+V29.ToString("0.000")+" TN"+V25.ToString("0.000")+ ")"); }
if (V2== 0&&V29!=0&&V31!=0) {AddL("(主程序面="+V29.ToString("0.000")+"副程序面="+V31.ToString("0.000")+"工件顶面="+V25.ToString("0.000")+"工件底部=0.0 TP"+V29.ToString("0.000")+" TN"+V31.ToString("0.000")+ ")"); }
if (V2== 0&&V29==0&&V31!=0) {AddL("(主程序面="+V29.ToString("0.000")+"副程序面="+V31.ToString("0.000")+"工件顶面="+V25.ToString("0.000")+"工件底部=0.0 TP"+V29.ToString("0.000")+" TN"+V31.ToString("0.000")+ ")"); }
if (V2== 0&&V29!=0&&V31==0) {AddL("(主程序面="+V29.ToString("0.000")+"副程序面="+V31.ToString("0.000")+"工件顶面="+V25.ToString("0.000")+"工件底部=0.0 TP"+V29.ToString("0.000")+" TN"+V31.ToString("0.000")+ ")"); }
if (V2== 1&&V31==0&&V29==0) {AddL("(主程序面="+V29.ToString("0.000")+"副程序面="+V25.ToString("0.000")+"工件顶面="+V25.ToString("0.000")+"工件底部=0.0 TP"+V29.ToString("0.000")+" TN"+V25.ToString("0.000")+ ")"); }
if (V2== 1&&V29!=0&&V31!=0) {AddL("(主程序面="+V29.ToString("0.000")+"副程序面="+V31.ToString("0.000")+"工件顶面="+V25.ToString("0.000")+"工件底部=0.0 TP"+V29.ToString("0.000")+" TN"+V31.ToString("0.000")+ ")"); }
if (V2== 1&&V28==0&&V29==0&&V31!=0) {AddL("(主程序面="+V29.ToString("0.000")+"副程序面="+V31.ToString("0.000")+"工件顶面="+V25.ToString("0.000")+"工件底部=0.0 TP"+V29.ToString("0.000")+" TN"+V31.ToString("0.000")+ ")"); }
if (V2== 1&&V28!=0&&V29==0&&V31!=0) {AddL("(主程序面="+V29.ToString("0.000")+"副程序面="+V31.ToString("0.000")+"工件顶面="+V25.ToString("0.000")+"工件底部=0.0 TP"+V29.ToString("0.000")+" TN"+V31.ToString("0.000")+ ")"); }
}
AddL("");
AddL("TP20.00");
AddL("TN0.00");
AddL("G90");
AddL("G54");
AddL("G11 (改成G12开启排短路功能)");
}
///
/// 程序结束
///
///
public override void ProgamEnd()
{
//添加程序面集合
AddL(progamPlanes);
//AddL("(:: Total Length Of Cutting Feed = ", Fmt("", totalLength, 3), ")");
AddL("T83 C777\r\nM00\r\nM00\r\nM02\r\nN9999 ( SHORT )\r\nG91\r\nWT0 WS33\r\nG01X0.001\r\nG04X4.0\r\nWT22 WS33\r\nG01X-0.001\r\nG04X4.0\r\nWT160 WS70\r\nG90\r\nM99\r\n(WIRE=SODICK)");
}
///
/// 孔开始
///
///
protected override void Start()
{
//叠加线长,记录总线长
totalLength += V41;
if (N == 1)
{
if (Is3d)
{
AddL("HOLD(请检查程式面后在加工!!!)");
}
}
// 根据Is3d判断添加不同的后缀
if (Is3d)
{
AddL(N + "( --- SODICK.3D --- )");
}
else
{
AddL(N + "( --- SODICK.2D --- )");
}
AddL(Cut, X, Y);//跳步XY坐标
}
///
/// 添加程式面
///
private void AddProamPlane()
{
//将当前孔的程序面+辅助面组合成字符,用做key查询字典
string key = V29 + "," + V31;
int index;
//查询字典中有没有存在对应的元素,如果没有
if (!progamPlaneDictionary.ContainsKey(key))
{
//记录字典中元素的数量
int count = progamPlaneDictionary.Count;
//设置子程序号
index = count + 8001;
//存入 程序面+辅助面组合 作为键 , 子程序号码 作为值
progamPlaneDictionary.Add(key, index);
//这个progamPlanes是一个自定义变量,在上面的用户自定义变量中,
//用变量承载子程序的字符,最后加入到程序结尾操作区域
progamPlanes += "(<--- Plane " + (count + 1) + " --->)" + QN;
progamPlanes += "N" + index + QN;
progamPlanes += "G92 " + Fmt("J", V29) + " " + Fmt("I", V31) + QN;
progamPlanes += "M99" + QN + QN;
}
//如果有对应的元素,则获取对应的子程序号码
else
{
index = progamPlaneDictionary[key];
}
//在当前程序执行处加入呼叫子程序的代码
AddL("M98P", index);
}
///
/// 补正偏移
///
///
protected override void Offset()
{
}
///
/// 进刀点
///
///
protected override void Feed()
{
//如果加工电源被关闭,那么打开它
if (是否关闭加工电源)
{
是否关闭加工电源 = false;
}
//切断第一刀,且修线头打开时
if (V47 && V36 == 1 && V12 == 1)
{
AddL("");
AddL("M00");
}
AddL("CRT(------ " + N + "-" + currentTitle + " ------)");
if (V36 == 3)//无屑内芯
{
AddL("T84C000" );
AddL("/M98P9999");
}
if (V12 == 1 && !V39 &&V36!=1)//不为无屑外圈时
{
AddL("T84C000" );
AddL("/M98P9999");
}
if (V12 == 1 && V36==1)//不为无屑外圈时
{
AddL("T84C000" );
}
if (V12 > 1 )//不为无屑外圈时
{
AddL("T85" + E2 + "(" + D + ")");
}
if (!HasAngle&&V36 == 3){Add(G41orG42 ? G40 + "H000" + G52 : G40 + "H000" + G51, "A0.");AddL(Cut + X + Y); }
if (HasAngle&&V36 == 3){Add(G41orG42 ? G40 + "H000" + G52 : G40 + "H000" + G51, T2);AddL(Cut + X + Y); }
if (V36 != 3){Add(G41orG42 ? G42 + "H000" + G52 : G41 + "H000" + G51, "A0."); AddL(Cut + X + Y);}
if (V36 != 3)//无屑内芯不用切换
{
string zhuibu = "";
if (!HasAngle)
{
if (V1 == 0)
{
zhuibu = (V12 == 1) ? "AH998" : "AH999";
}
else
{
zhuibu = (V12 == 1) ? "AH996" : "AH997";
}
}
if (HasAngle&&V36!=2&&V36!=3&&V57==1)
{
if (V12==1) {AddL(G41orG42 ? G52 : G51, T2);}
}
if (HasAngle&&V36!=2&&V36!=3&&V57!=1){AddL(G41orG42 ? G52 : G51, T2);}
if (HasAngle&&V36==2) {AddL(G41orG42 ? G51 : G52, "A",V28.ToString("0.000")); }
if (V12 == 1 )//不为无屑外圈时
{
AddL("T84" + E2 + "(" + D + ")");
}
// 拼接输出 避免多;符号
if (string.IsNullOrEmpty(zhuibu))
{
AddL(D);
}
else
{
AddL(string.Format("{0} {1}", D, zhuibu));
}
}
}
///
/// 暂停点
///
///
protected override void M01()
{
Run2();
if (!V47)
{
AddL("M00C000");
}
}
///
/// 闭合点
///
///
protected override void Close()
{
Run2();
}
///
/// 过切点
///
///
protected override void OverCut()
{
Run2();
}
///
/// 脱离点
///
///
protected override void Out()
{
Add("G40H000G50A0.0");
if (V1 == 0)//内孔
{
if (HasAngle )//内孔并且包含角度时
{
AddL("M05G00", XS1, YS1);
}
else if (!HasAngle && V5 != 2)//内孔并且包含角度时
{
AddL("M05G00", XS1, YS1);
}
else
{
AddL("M05G00", X, Y);
}
}
else//外形,开形
{
AddL(Cut, X, Y);
}
//判断是否为外形第一刀
if (是否为开粗工序 && V1 == 1)
{
//加入暂停3秒
AddL("G04X3.");
}
}
///
/// 常规加工
///
///
protected override void Default()
{
Run2();
}
///
/// 同一个孔中的跳步(如内孔旋转进刀,外形多线头)
///
///
protected override void Move()
{
//内孔
if (V1 == 0)
{
if (V35)
{
AddL(G0, X, Y);
}
}
//开放路径
else if (V1 == 2)
{
//开形转外形也需要读这里
AddL(G0, X, Y);
}
else if (V8 < 3000) //否则剪线再跳步,并穿线
{
AddL("T90");
AddL(G0, X, Y);
AddL("T91");
}
}
///
/// 上下异形进刀
///
///
protected override void Feed3d()
{
//如果加工电源被关闭,那么打开它
if (是否关闭加工电源)
{
是否关闭加工电源 = false;
}
//切断第一刀,且修线头打开时
if (V47 && V36 == 1 && V12 == 1)
{
AddL("T90");
AddL("T91");
}
AddL("CRT(------ " + N + "-" + currentTitle + " ------)");
if (V36 == 3)//无屑内芯
{
AddL("T84", E2);
AddL("/M98P9999");
AddL("G149G249G349G449G549G649G749");
}
else if (V12 == 1 && !V39)//不为无屑外圈时
{
AddL("T84", E2);
AddL("/M98P9999");
}
else
{
AddL("T85", E2);
}
Add(G41orG42 ? "G142H000" : "G141H000");
Run3();
if (V36 != 3)//无屑内芯不用切换
{
//开粗时进刀线后加入正常补正码
AddL(D);
}
}
///
/// 补正
///
///
protected override void Offset3d()
{
}
///
/// 常规路径
///
///
protected override void Default3d()
{
Run3();
}
///
/// 上下异形脱离
///
///
protected override void Out3d()
{
if (上下异形垂直进刀 == false ) {AddL("H000");Run3();} ////斜进斜出两平面
if (V1==2&&上下异形垂直进刀 == true) {AddL("H000"); AddL(G1, X+0.001 , Y, ":", G1, X+0.001 , Y);AddL("G140", G1, X, Y);}//外形//脱离距离
if (V1 ==1&&上下异形垂直进刀 == true&&V36!=1) {AddL("H000");Run3(); AddL(G1, X+0.001 , Y, ":", G1, X+0.001 , Y);AddL("G140", G1, X, Y);}//外形//脱离距离
if (V1 ==1&&上下异形垂直进刀 == true&&V36==1) {AddL("H000");AddL(G1, X+0.001 , Y, ":", G1, X+0.001 , Y);AddL("G140", G1, X, Y);}//外形//切断脱离距离
if (V1== 0&&上下异形垂直进刀 == true&&V5!=2&&!V35) {AddL("H000");Run3();AddL(G0, XS+0.001 , YS, ":", G0, XS+0.001 , YS);AddL("M05G140", G0, XS, YS);}//脱离到起割点//内孔不旋转边割边修 非自动化
if (V1== 0&&上下异形垂直进刀 == true&&V5!=2&&V35) {AddL("H000");Run3();AddL(G0, XS1+0.001 , YS1, ":", G0, XS1+0.001 , YS1);AddL("M05G140", G0, XS1, YS1);}//脱离//内孔旋转边割边修,非自动化
if (V1== 0&&上下异形垂直进刀 == true&&V5==2&&N<1000&&V12==1) {AddL("H000");Run3(); AddL("T90");AddL(G0, XS+0.001 , YS, ":", G0, XS+0.001 , YS);AddL("M05G140", G0, XS, YS); }//自动化加工粗割.内孔
if (V1== 0&&上下异形垂直进刀 == true&&V5==2&&N>1000&&V12==1) {AddL("BACK0.4M00");AddL("H000"); Run3();AddL(G0, XS+0.001 , YS, ":", G0, XS+0.001 , YS);AddL("M05G140", G0, XS, YS);AddL("T90");}//自动化加工粗割切断.内孔
if (V1== 0&&上下异形垂直进刀 == true&&V5==2&&V12>1&&V35) {AddL("H000");Run3(); AddL(G0, XS1+0.001 , YS1, ":", G0, XS1+0.001 , YS1);AddL("M05G140", G0, XS1, YS1); }//自动化加工修刀.旋转内孔
if (V1== 0&&上下异形垂直进刀 == true&&V5==2&&V12>1&&!V35) {AddL("H000");Run3();AddL(G0, XS+0.001 , YS, ":", G0, XS+0.001 , YS);AddL("M05G140", G0, XS, YS);}//自动化加工修刀.不旋转内孔
if (V1 == 1&&V12==1 ){AddL("G4X10.");}
}
///
/// 上下异形前置暂停点
///
protected override void M013d()
{
Run3();
if (!V47)
AddL("M01");
}
///
/// 上下异形过切点
///
protected override void OverCut3d()
{
Run3();
}
///
/// 上下异形闭合点
///
protected override void Close3d()
{
Run3();
}
///
/// 工序1开始
///
public override void StartProcess1()
{
}
///
/// 工序2开始
///
public override void StartProcess2()
{
}
///
/// 工序3开始
///
public override void StartProcess3()
{
}
///
/// 工序4开始
///
public override void StartProcess4()
{
}
///
/// 穿线
///
protected override void WireOn()
{
AddL("T91");
if (N == 1)
{
AddL("HOLD(请核对坐标再继续)");
}
}
///
/// 剪线
///
protected override void WireOff()
{
AddL("T90");
}
///
/// 进刀分段
///
protected override void SegmentFeed()
{
Run2();
}
///
/// 上下异形进刀分段
///
protected override void SegmentFeed3d()
{
Run3();
}
///
/// 返回线的进刀点
///
protected override void BackLineFeed()
{
//关闭电源,更新标记
是否关闭加工电源 = true;
//输出关闭电源代码
Add(G41orG42 ? G42 : G41);
Run2();
}
///
/// 返回线的结束点
///
protected override void BackLineEnd()
{
Default();
//正常参数
AddL(E);
}
///
/// 返回线的结束前的过渡区域
///
protected override void TransitionZoneBeforeBackLineEnd()
{
Default();
//如果加工电源被关闭,那么打开它
if (是否关闭加工电源)
{
是否关闭加工电源 = false;
}
//输出过度的弱条件
AddL("C000");
}
///
/// 局部无屑和水平自动化引线的共用起点
///
protected override void NoOffsetFeed()
{
AddL("C000");
//无补正加工
Add("G40");
Run2();
}
///
/// 在剪线之前的动作(其实也就是孔结束的时候)
///
protected override void BeforeWireOff()
{
//记录上一个标签
preTitle = Title;
}
}
}
//key,123456