private Result executeMark(Pattern pattern, MarkCmdLine markCmdLine) { Log.Print("begin to execute Mark cmdline"); //系统坐标->机械坐标 markCmdLine.ModelFindPrm.PosInMachine = pattern.MachineAbs(markCmdLine.PosInPattern); //(markCmdLine.PosInPattern + pattern.GetOriginSys()).ToMachine(); Log.Print("move to position : " + markCmdLine.ModelFindPrm.PosInMachine); // 移动到安全高度 Result ret = Machine.Instance.Robot.MoveSafeZAndReply(); if (!ret.IsOk) { return(ret); } // 移动到拍照位置 ret = Machine.Instance.Robot.MovePosXYAndReply(markCmdLine.ModelFindPrm.PosInMachine, FluidProgram.Current.MotionSettings.VelXY, FluidProgram.Current.MotionSettings.AccXY); if (!ret.IsOk) { return(ret); } Log.Print("capture mark"); // 拍照并获取mark点位置 ret = Machine.Instance.CaptureMark(markCmdLine.ModelFindPrm); if (!ret.IsOk) { return(ret); } Log.Print("mark real position : " + markCmdLine.ModelFindPrm.TargetInMachine); return(ret); }
/// <summary> /// 寻找mark点命令在所有启用(Enabled==true)且不是注释的命令行中所处的索引位置 /// </summary> /// <param name="markCmdLine"></param> /// <returns></returns> private int findMarkCmdLineIndex(IEnumerable <CmdLine> cmdLineList, MarkCmdLine markCmdLine) { int index = 0; foreach (CmdLine cmdLine in cmdLineList) { if (cmdLine.Enabled) { if (cmdLine is MarkCmdLine) { if (cmdLine == markCmdLine) { return(index); } else { index++; } } else if (!(cmdLine is CommentCmdLine)) { // Mark点命令被限制添加在最前面,所以如果遇到其他命令,则后续不必再判断 break; } } } return(index); }