/// <summary> /// 开始直线插补运动 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btStartLiner_Click(object sender, EventArgs e) { if (dgvLinePos.Rows.Count == 0) { MessageBox.Show("请设置差补运动的轴数量"); return; } List <int> axisIDs = new List <int>(); List <double> trgtPoses = new List <double>(); for (int i = 0; i < dgvLinePos.Rows.Count; i++) { string axisIDText = dgvLinePos.Rows[i].Cells[0].Value as string; if (string.IsNullOrEmpty(axisIDText)) { MessageBox.Show("请设置差补轴" + (i + 1) + " 的轴序号"); return; } int axisID = Convert.ToInt32(axisIDText); axisIDs.Add(axisID); string trgtPos = dgvLinePos.Rows[i].Cells[1].Value as string; if (string.IsNullOrEmpty(trgtPos)) { MessageBox.Show("请设置差补轴" + (i + 1) + " 的目标位置"); return; } double dVal = 0; if (!double.TryParse(trgtPos, out dVal)) { MessageBox.Show("差补轴" + (i + 1) + " 的目标位置不是一个数字,请重新输入"); return; } if (!_IsAxisCanMove(axisID)) { return; } trgtPoses.Add(dVal); } if (dgvLinePos.Rows.Count == 0) { MessageBox.Show("请设置差补运动的轴数量"); return; } object omp = null; if (!ucLineParam.GetParamValue(out omp)) { MessageBox.Show("未能获取运动参数,请检查输入"); return; } JFMotionParam mp = (JFMotionParam)omp; if (!_isMotionParamValid(mp)) { return; } int err = 0; if (chkAbsLine.Checked) { err = _module.AbsLine_P(axisIDs.ToArray(), trgtPoses.ToArray(), mp); } else { err = _module.RelLine_P(axisIDs.ToArray(), trgtPoses.ToArray(), mp); } if (err != 0) { MessageBox.Show("操作失败:" + _module.GetErrorInfo(err)); } else { ShowTips("开始插补运动"); } }