Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        /// <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);
        }