浏览代码

添加自动计算其他切孔方法

wb_han 5 年之前
父节点
当前提交
b7f0a5b067
共有 3 个文件被更改,包括 91 次插入4 次删除
  1. 1 2
      HOZProject/FormHOZMain.cs
  2. 81 0
      HOZProject/UserControls/UControl_Init.cs
  3. 9 2
      MeasureData/MeasureFile.cs

+ 1 - 2
HOZProject/FormHOZMain.cs

@@ -592,7 +592,6 @@ namespace HOZProject
             }
             }
         }
         }
         #endregion
         #endregion
-
-       
+        
     }
     }
 }
 }

+ 81 - 0
HOZProject/UserControls/UControl_Init.cs

@@ -95,7 +95,88 @@ namespace HOZProject
         /// <param name="e"></param>
         /// <param name="e"></param>
         private void pbCutHoleAuto_Click(object sender, EventArgs e)
         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
         #endregion
 
 

+ 9 - 2
MeasureData/MeasureFile.cs

@@ -235,8 +235,12 @@ namespace MeasureData
                 XmlNode root = doc.SelectSingleNode("XMLData");
                 XmlNode root = doc.SelectSingleNode("XMLData");
                 Serialize(true, doc, root);
                 Serialize(true, doc, root);
                 doc.Save(this.FileName);
                 doc.Save(this.FileName);
+                return true;
+            }
+            else
+            {
+                return false;
             }
             }
-            return true;
         }
         }
 
 
         //从文件生成切割孔信息
         //从文件生成切割孔信息
@@ -353,7 +357,10 @@ namespace MeasureData
             }         
             }         
         }
         }
 
 
-        
+        public List<CutHole> GetCutHolesFromAnalysisPosition()
+        {
+            return null;
+        }
         #endregion
         #endregion
     }
     }
 }
 }