|
@@ -95,7 +95,88 @@ namespace HOZProject
|
|
|
/// <param name="e"></param>
|
|
|
private void pbCutHoleAuto_Click(object sender, EventArgs e)
|
|
|
{
|
|
|
+ if (FormHOZMainObject.m_MeasureFile == null)
|
|
|
+ {
|
|
|
+ MessageBox.Show("请新建一个测量文件");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if (!FormHOZMainObject.m_MeasureFile.GetCutHolesFromFile(""))
|
|
|
+ {
|
|
|
+ MessageBox.Show("导入切孔失败");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ List<CutHole> ListCutHole = FormHOZMainObject.m_MeasureFile.ListCutHole;
|
|
|
+ //根据切孔文件的一个切孔,自动计算其他切孔位置
|
|
|
|
|
|
+ //文件路径
|
|
|
+ string CutHoleFilePath = FormHOZMainObject.m_MeasureFile.CutHoleFilePath;
|
|
|
+ FormHOZMainObject.CreateCutHoleList(ListCutHole);
|
|
|
+ //显示导入的切孔数量
|
|
|
+ lblCutHoleCount.Text = string.Format("成功导入{0}个切孔", ListCutHole.Count);
|
|
|
+ tbCutHoleFilePath.Text = CutHoleFilePath;
|
|
|
+ //保存测量文件
|
|
|
+ if (FormHOZMainObject.IsSave)
|
|
|
+ {
|
|
|
+ FormHOZMainObject.m_MeasureFile.Save();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 根据一个切孔点计算其他切孔信息
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="centerX"></param>
|
|
|
+ /// <param name="centerY"></param>
|
|
|
+ /// <param name="firstX"></param>
|
|
|
+ /// <param name="firstY"></param>
|
|
|
+ /// <param name="distance"></param>
|
|
|
+ /// <param name="rag"></param>
|
|
|
+ /// <param name="ptsx"></param>
|
|
|
+ /// <param name="ptsy"></param>
|
|
|
+ public void AnalysisPosition(Double centerX, Double centerY, Double firstX, Double firstY, Double distance, int rag, ref List<Double> ptsx, ref List<Double> ptsy)
|
|
|
+ {
|
|
|
+ //求样品1的水平角度
|
|
|
+ double angle = 0;
|
|
|
+
|
|
|
+ //清空所有点信息
|
|
|
+ ptsx.Clear();
|
|
|
+ ptsy.Clear();
|
|
|
+ //将第一个点加入到点信息中
|
|
|
+ ptsx.Add(firstX);
|
|
|
+ ptsy.Add(firstY);
|
|
|
+
|
|
|
+ //计算第一个点与X轴的交角度数
|
|
|
+ angle = Math.Atan2(ptsy[0] - centerY, centerX - ptsx[0]) * 180 / Math.PI;
|
|
|
+
|
|
|
+ //这里是求与第一个点横向排列的其他点的移动角度
|
|
|
+ //就是按45度向左向右移动的度
|
|
|
+ angle = 45 - angle;
|
|
|
+ angle = angle * Math.PI / 180;
|
|
|
+
|
|
|
+ double tx = 0;
|
|
|
+ double ty = 0;
|
|
|
+ for (int j = 0; j < rag; j++)
|
|
|
+ {
|
|
|
+ //计算每行第一个点的坐标
|
|
|
+ if (j > 0)
|
|
|
+ {
|
|
|
+ tx = distance * j * Math.Sin(angle);
|
|
|
+ ty = distance * j * Math.Cos(angle);
|
|
|
+ ptsx.Add(tx + ptsx[0]);
|
|
|
+ ptsy.Add(ptsy[0] - ty);
|
|
|
+ }
|
|
|
+ //计算每行其他点的坐标
|
|
|
+ for (int i = 1; i < rag; i++)
|
|
|
+ {
|
|
|
+ tx = distance * i * Math.Cos(angle);
|
|
|
+ ty = distance * i * Math.Sin(angle);
|
|
|
+ ptsx.Add(tx + ptsx[j * rag]);
|
|
|
+ ptsy.Add(ty + ptsy[j * rag]);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
#endregion
|
|
|
|