Browse Source

Merge branch 'Release2.3' of http://36.129.163.148:10080/gaoshipeng/OTS2_0 into Release2.3

gsp 4 years ago
parent
commit
8d2051cc53

+ 22 - 2
OTS.sln

@@ -47,6 +47,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OTSLog", "OTSCPP\OTSLog\OTS
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OTSCleanReportApp", "OTSCleanReportApp\OTSCleanReportApp.csproj", "{BFD11203-CDF9-47D8-B00B-0743A8BE1212}"
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OTSExtremum", "OTSExtremum\OTSExtremum.csproj", "{BBA845E8-27ED-4832-90FA-32F737E1FCA7}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -60,8 +62,8 @@ Global
 		Release|x86 = Release|x86
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{3FBF0B16-5E6C-4AA1-995B-471C47C5367D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{3FBF0B16-5E6C-4AA1-995B-471C47C5367D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{3FBF0B16-5E6C-4AA1-995B-471C47C5367D}.Debug|Any CPU.ActiveCfg = Debug|x64
+		{3FBF0B16-5E6C-4AA1-995B-471C47C5367D}.Debug|Any CPU.Build.0 = Debug|x64
 		{3FBF0B16-5E6C-4AA1-995B-471C47C5367D}.Debug|x64.ActiveCfg = Debug|x64
 		{3FBF0B16-5E6C-4AA1-995B-471C47C5367D}.Debug|x64.Build.0 = Debug|x64
 		{3FBF0B16-5E6C-4AA1-995B-471C47C5367D}.Debug|x86.ActiveCfg = Debug|Any CPU
@@ -321,6 +323,24 @@ Global
 		{BFD11203-CDF9-47D8-B00B-0743A8BE1212}.Release|x64.Build.0 = Release|x64
 		{BFD11203-CDF9-47D8-B00B-0743A8BE1212}.Release|x86.ActiveCfg = Release|x86
 		{BFD11203-CDF9-47D8-B00B-0743A8BE1212}.Release|x86.Build.0 = Release|x86
+		{BBA845E8-27ED-4832-90FA-32F737E1FCA7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{BBA845E8-27ED-4832-90FA-32F737E1FCA7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{BBA845E8-27ED-4832-90FA-32F737E1FCA7}.Debug|x64.ActiveCfg = Debug|x64
+		{BBA845E8-27ED-4832-90FA-32F737E1FCA7}.Debug|x64.Build.0 = Debug|x64
+		{BBA845E8-27ED-4832-90FA-32F737E1FCA7}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{BBA845E8-27ED-4832-90FA-32F737E1FCA7}.Debug|x86.Build.0 = Debug|Any CPU
+		{BBA845E8-27ED-4832-90FA-32F737E1FCA7}.Release_oxford50|Any CPU.ActiveCfg = Release|Any CPU
+		{BBA845E8-27ED-4832-90FA-32F737E1FCA7}.Release_oxford50|Any CPU.Build.0 = Release|Any CPU
+		{BBA845E8-27ED-4832-90FA-32F737E1FCA7}.Release_oxford50|x64.ActiveCfg = Release|Any CPU
+		{BBA845E8-27ED-4832-90FA-32F737E1FCA7}.Release_oxford50|x64.Build.0 = Release|Any CPU
+		{BBA845E8-27ED-4832-90FA-32F737E1FCA7}.Release_oxford50|x86.ActiveCfg = Release|Any CPU
+		{BBA845E8-27ED-4832-90FA-32F737E1FCA7}.Release_oxford50|x86.Build.0 = Release|Any CPU
+		{BBA845E8-27ED-4832-90FA-32F737E1FCA7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{BBA845E8-27ED-4832-90FA-32F737E1FCA7}.Release|Any CPU.Build.0 = Release|Any CPU
+		{BBA845E8-27ED-4832-90FA-32F737E1FCA7}.Release|x64.ActiveCfg = Release|Any CPU
+		{BBA845E8-27ED-4832-90FA-32F737E1FCA7}.Release|x64.Build.0 = Release|Any CPU
+		{BBA845E8-27ED-4832-90FA-32F737E1FCA7}.Release|x86.ActiveCfg = Release|Any CPU
+		{BBA845E8-27ED-4832-90FA-32F737E1FCA7}.Release|x86.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE

+ 8 - 8
OTSIncAMeasureApp/0-OTSModel/Measure/ParamData/COTSMsrPrjResultData.cs

@@ -1588,10 +1588,10 @@ namespace OTSModelSharp
                 xSystype.AssignValue(m_nPackId.ToString());
                 xstrPathName.AssignValue(m_strPathName);
                 xholeBSEImgs.Clear();
-                foreach (var hole in m_listHoleBSEImg)
-                {
-                    xholeBSEImgs.addItem(hole);
-                }
+                //foreach (var hole in m_listHoleBSEImg)
+                //{
+                //    xholeBSEImgs.addItem(hole);
+                //}
                 xsamples.Clear();
                 foreach (var sample in m_listSamples)
                 {
@@ -1605,10 +1605,10 @@ namespace OTSModelSharp
                 slo.Serialize(false, classDoc, rootNode);
                 m_strPathName = xstrPathName.value();
                 m_listHoleBSEImg.Clear();
-                for (int i = 0; i < xholeBSEImgs.size(); i++)
-                {
-                    m_listHoleBSEImg.Add(xholeBSEImgs.getItem(i));
-                }
+                //for (int i = 0; i < xholeBSEImgs.size(); i++)
+                //{
+                //    m_listHoleBSEImg.Add(xholeBSEImgs.getItem(i));
+                //}
                 m_listSamples.Clear();
                 for (int i = 0; i < (int)xsamples.size(); i++)
                 {

+ 24 - 2
OTSIncAMeasureApp/4-OTSSamplespaceGraphicsPanel/CreateRectangle.cs

@@ -812,6 +812,27 @@ namespace OTSMeasureApp
                 Pen pen = new Pen(myColor, 1);
                 e.Graphics.DrawRectangle(pen, m_Region);
             }
+
+
+
+
+
+            //绘制多边形测量区域
+            else if (createType == (int)CreateRectangleType.CircleByThreePoints)
+            {
+                Color myColor = selColor;
+                System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(myColor);
+                Pen p = new Pen(myColor, 1);
+                e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;  //图片柔顺模式选择
+                e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;//高质量
+                e.Graphics.CompositingQuality = CompositingQuality.HighQuality;//再加一点
+                GraphicsPath MeasureAreaPath = new GraphicsPath();
+
+                
+                    MeasureAreaPath.AddEllipse(m_RegionF);
+                    e.Graphics.DrawEllipse(p, m_Region);
+                
+            }
         }
         public override bool IsDragging
         {
@@ -956,8 +977,9 @@ namespace OTSMeasureApp
         //多边形
         Polygon = 15,
         //多边形完成标识
-        DrawPolygonFinish = 16
-
+        DrawPolygonFinish = 16,
+        //圆形三点法
+        CircleByThreePoints=17
     }
     public enum ContextMenuType
     {

+ 4 - 0
OTSIncAMeasureApp/4-OTSSamplespaceGraphicsPanel/OTSSamplespaceGraphicsPanelFun.cs

@@ -1387,6 +1387,10 @@ namespace OTSMeasureApp
                 PolygonMeasurePath.AddPolygon(measureItem.PolygonPointRegionF.ToArray());
                 GPath = PolygonMeasurePath;
             }
+            else if(measureItem.CreateType == (int)CreateRectangleType.CircleByThreePoints)
+            {
+                GPath.AddEllipse(rectPara);
+            }
             else
             {
                 if (measureItem.Shape == (int)CreateRectangleType.Circle)

+ 136 - 2
OTSIncAMeasureApp/4-OTSSamplespaceGraphicsPanel/OTSSamplespaceWindow.cs

@@ -131,6 +131,8 @@ namespace OTSMeasureApp
         bool m_IsDrawPolygonFinish = false;
         //手动绘制测量区域的形状类型
         int m_DrawMeasureType = 1;
+        //是否为3点发画圆形
+        bool IsCirCleByThree = false;
         //是否手绘标识准备
         public bool m_IsDrawMeasureReady = false;
         //是否手绘标识
@@ -255,6 +257,20 @@ namespace OTSMeasureApp
             m_PolygonPoint = new List<PointF>();
             this.Cursor = Cursors.Hand;
         }
+
+        /// <summary>
+        /// 三点画圆形测试区域 事件  先多边形后圆形
+        /// </summary>
+        public void Rev_DDrawCircleMeasureByThreePoints_MeasureAppToSampleWindow_Event()
+        {
+            //手绘测量区域类型为圆形
+            m_DrawMeasureType = (int)CreateRectangleType.CircleByThreePoints;
+            m_IsDrawMeasureReady = true;
+            m_IsDrawMeasure = true;
+            m_RectangIsDragging = false;
+            m_PolygonPoint = new List<PointF>();
+            this.Cursor = Cursors.Hand;
+        }
         /// <summary>
         /// 当修改了GRID 的样品台测量精度、放大倍数和图片像素大小 时,SAMPLEWINDOW重新绘制样品台
         /// </summary>
@@ -905,7 +921,26 @@ namespace OTSMeasureApp
             }
         }
         #endregion
+        private void GetTriangleExcenterRadius(PointF px1, PointF px2, PointF px3, out float R, out PointF center)
+        {
+            float x1, y1, x2, y2, x3, y3;
+            float a, b;
+            x1 = px1.X;
+            y1 = px1.Y;
+            x2 = px2.X;
+            y2 = px2.Y;
+            x3 = px3.X;
+            y3 = px3.Y;
+            a = ((y2 - y1) * (y3 * y3 - y1 * y1 + x3 * x3 - x1 * x1) - (y3 - y1) * (y2 * y2 - y1 * y1 + x2 * x2 - x1 * x1)) / (2 * ((x3 - x1) * (y2 - y1) - (x2 - x1) * (y3 - y1)));
+            b = ((x2 - x1) * (x3 * x3 - x1 * x1 + y3 * y3 - y1 * y1) - (x3 - x1) * (x2 * x2 - x1 * x1 + y2 * y2 - y1 * y1)) / (2 * ((y3 - y1) * (x2 - x1) - (y2 - y1) * (x3 - x1)));
+            center = new PointF(a, b);
+            R = (float)Math.Sqrt((x1 - a) * (x1 - a) + (y1 - b) * (y1 - b));
+        }
 
+        private float GetDistance(PointF A, PointF B)
+        {
+            return (float)Math.Sqrt(Math.Pow((A.X - B.X), 2) + Math.Pow((A.Y - B.Y), 2));
+        }
         #region 窗体事件
         private void OTSSamplespaceWindow_Load(object sender, EventArgs e)
         {
@@ -1085,6 +1120,94 @@ namespace OTSMeasureApp
                     }
                     return;
                 }
+                else if(m_DrawMeasureType == (int)CreateRectangleType.CircleByThreePoints)
+                {
+
+                    //添加多边形点信息
+                    m_MouseDownPoint = new Point((int)(m_MouseDownPoint.X), (int)(m_MouseDownPoint.Y));
+                    m_PolygonPoint.Add(m_MouseDownPoint);
+                    CreateRectangle createPoint = new CreateRectangle(m_PolygonPoint, (int)CreateRectangleType.Polygon, m_DrawMeasureType, sampleHoleName, sampleName, Color.Red);
+                    if (m_DrawMeasureGDIObjects.Count > 0)
+                    {
+                        m_DrawMeasureGDIObjects[0] = createPoint;
+                    }
+                    else
+                    {
+                        m_DrawMeasureGDIObjects.Add(createPoint);
+                    }
+
+                    //显示绘制多边形完成标识
+                    if (m_PolygonPoint.Count == 3)
+                    {
+                        //转为圆形这里
+                        m_DrawMeasureType = (int)CreateRectangleType.Circle;
+                        float r = 0;
+                        PointF Centerpoint = new PointF();
+                        GetTriangleExcenterRadius(m_PolygonPoint[0], m_PolygonPoint[1], m_PolygonPoint[2], out r, out Centerpoint);
+                        //RectangleF rectangleThree = new RectangleF(new PointF((Centerpoint.X-r) / m_GlobalZoomNum, (Centerpoint.Y-r) / m_GlobalZoomNum), new SizeF(r*2 / m_GlobalZoomNum, r*2 / m_GlobalZoomNum));
+                        RectangleF rectangleThree = new RectangleF(new PointF(Centerpoint.X - r, Centerpoint.Y - r), new SizeF(r * 2, r * 2));
+                        //在样品台内部缩放
+                        if (OTSSamplespaceGraphicsPanelFun.CheckMeasureAreaIsBeyondStageArea(new Rectangle(new Point((int)(Centerpoint.X - r), (int)(Centerpoint.Y - r)), new Size((int)r * 2, (int)r * 2)), m_RectangleGDIObjects[0].Region, (int)CreateRectangleType.Circle))
+                        {
+                            m_IsDrawMeasure = true;
+                        }
+                        else
+                        {
+                            m_IsDrawMeasure = false;
+                            return;
+                        }
+                        Color MeasureColor = Color.Red;
+                        CreateRectangle createRectangle = new CreateRectangle(rectangleThree, m_PolygonPoint[0], (int)CreateRectangleType.CircleByThreePoints, m_DrawMeasureType, sampleName, sampleName, MeasureColor);
+                        //在鼠标点击时添加一个默认大小与位置的图形
+                        //createRectangle.RegionF = createRectangle.Region;
+                        createRectangle.RegionF = new RectangleF(createRectangle.RegionF.X / m_GlobalZoomNum, createRectangle.RegionF.Y / m_GlobalZoomNum, createRectangle.RegionF.Width / m_GlobalZoomNum, createRectangle.RegionF.Height / m_GlobalZoomNum);
+                        createRectangle.DrawRegionF = createRectangle.Region;
+                        if (m_DrawMeasureGDIObjects.Count > 0)
+                        {
+                            m_DrawMeasureGDIObjects[0] = createRectangle;
+                        }
+                        else
+                        {
+                            m_DrawMeasureGDIObjects.Add(createRectangle);
+                        }
+
+                        //清除当前的样品测量区域
+                        for (int measureIndex = m_MeasureGDIObjects.Count - 1; measureIndex >= 0; measureIndex--)
+                        {
+                            if (m_MeasureGDIObjects[measureIndex].SampleName == sampleName)
+                            {
+                                m_MeasureGDIObjects.RemoveAt(measureIndex);
+                                break;
+                            }
+                        }
+                        //删除存在的帧图
+                        for (int singleIndex = m_SingleGDIObjects.Count - 1; singleIndex >= 0; singleIndex--)
+                        {
+                            if (m_SingleGDIObjects[singleIndex].SampleName == sampleName)
+                            {
+                                m_SingleGDIObjects.RemoveAt(singleIndex);
+                            }
+                        }
+                        m_MeasureGDIObjects.Add(m_DrawMeasureGDIObjects[0]);
+                        m_DrawMeasureGDIObjects.Clear();
+                        if (OTSSamplespaceGraphicsPanelFun.SetWorkSamplHoleAndMeasureArea(m_MeasureGDIObjects[0], m_MeasureAppForm, m_OTSSampleStageData, m_RectangleGDIObjects[0], IsWidth, Width, Height, m_WDomain))
+                        {
+                            m_MeasureAppForm.m_MessageStates = (int)MessageState.StartMeasure;
+                            CMeasureThreadWrapper.DoRunType = (int)MSR_THREAD_RunSTATUS.RUNMEASURE;
+                            //showSingleInfo();
+                            // 设置工作样品
+                            m_MeasureAppForm.Rev_SoluWindowReqSwitchWSample_Event(m_SampleSelectName);
+                            Invalidate();
+                        }
+
+                        //设置手绘标识
+                        m_IsDrawMeasureReady = false;
+                        this.Cursor = Cursors.Default;
+                        return;
+
+                    }
+                    return;
+                }
                 else
                 {
                     //在样品台内部缩放
@@ -1615,6 +1738,18 @@ namespace OTSMeasureApp
                         }
                     }
                 }
+                //圆形三点法
+                else if (m_DrawMeasureType == (int)CreateRectangleType.CircleByThreePoints)
+                {
+                    PointF startPoint = new PointF();
+                    PointF endPoint = new PointF();
+                    //显示直线开始点与鼠标当前位置的直线
+                    if (m_PolygonPoint.Count > 0)
+                    {
+                        startPoint = m_PolygonPoint[0];
+                        endPoint = m_PolygonPoint[m_PolygonPoint.Count - 1];
+                    }
+                }
                 else
                 {
                     if (m_DrawMeasureGDIObjects == null || m_RectangleGDIObjects == null)
@@ -2097,7 +2232,7 @@ namespace OTSMeasureApp
                 //获取当前的鼠标点击位置
                 this.m_MouseUpPoint = new Point(e.X, e.Y);
                 //绘制多边形
-                if (m_DrawMeasureType != (int)CreateRectangleType.Polygon)
+                if (m_DrawMeasureType != (int)CreateRectangleType.Polygon && m_DrawMeasureType != (int)CreateRectangleType.CircleByThreePoints)
                 {
                     foreach (var item in m_DrawMeasureGDIObjects)
                     {
@@ -2261,7 +2396,6 @@ namespace OTSMeasureApp
                                                         //减少样品数量
                                                         sampleHoleCountItem.SampleCount -= 1;
                                                     }
-
                                                 }
                                             }
                                         }

+ 519 - 0
OTSIncAMeasureApp/7-OTSProgMgrInfo/Stage/DlgStageEdit.Designer.cs

@@ -0,0 +1,519 @@
+
+namespace OTSMeasureApp._7_OTSProgMgrInfo.Stage
+{
+    partial class DlgStageEdit
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.m_ctrlStagePicture = new System.Windows.Forms.PictureBox();
+            this.label1 = new System.Windows.Forms.Label();
+            this.tStageName = new System.Windows.Forms.TextBox();
+            this.label2 = new System.Windows.Forms.Label();
+            this.radioButton_OTS = new System.Windows.Forms.RadioButton();
+            this.radioButton_SEM = new System.Windows.Forms.RadioButton();
+            this.label3 = new System.Windows.Forms.Label();
+            this.groupBox1 = new System.Windows.Forms.GroupBox();
+            this.tBoundaryHeight = new System.Windows.Forms.TextBox();
+            this.label8 = new System.Windows.Forms.Label();
+            this.tBoundaryWide = new System.Windows.Forms.TextBox();
+            this.label7 = new System.Windows.Forms.Label();
+            this.tBoundaryY = new System.Windows.Forms.TextBox();
+            this.label6 = new System.Windows.Forms.Label();
+            this.tBoundaryX = new System.Windows.Forms.TextBox();
+            this.label5 = new System.Windows.Forms.Label();
+            this.label4 = new System.Windows.Forms.Label();
+            this.radioButton_BoundarySquare = new System.Windows.Forms.RadioButton();
+            this.radioButton_BoundaryCircle = new System.Windows.Forms.RadioButton();
+            this.groupBox2 = new System.Windows.Forms.GroupBox();
+            this.tStandardsampleHeight = new System.Windows.Forms.TextBox();
+            this.label9 = new System.Windows.Forms.Label();
+            this.tStandardsampleWide = new System.Windows.Forms.TextBox();
+            this.label10 = new System.Windows.Forms.Label();
+            this.tStandardsampleY = new System.Windows.Forms.TextBox();
+            this.label11 = new System.Windows.Forms.Label();
+            this.tStandardsampleX = new System.Windows.Forms.TextBox();
+            this.label12 = new System.Windows.Forms.Label();
+            this.label13 = new System.Windows.Forms.Label();
+            this.radioButton__StandardsampleSqare = new System.Windows.Forms.RadioButton();
+            this.radioButton_StandardsampleCircle = new System.Windows.Forms.RadioButton();
+            this.label14 = new System.Windows.Forms.Label();
+            this.button_Generate = new System.Windows.Forms.Button();
+            this.dataGridView_Holes = new System.Windows.Forms.DataGridView();
+            this.button_AddHole = new System.Windows.Forms.Button();
+            this.button_DelHole = new System.Windows.Forms.Button();
+            this.groupBox3 = new System.Windows.Forms.GroupBox();
+            ((System.ComponentModel.ISupportInitialize)(this.m_ctrlStagePicture)).BeginInit();
+            this.groupBox1.SuspendLayout();
+            this.groupBox2.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.dataGridView_Holes)).BeginInit();
+            this.groupBox3.SuspendLayout();
+            this.SuspendLayout();
+            // 
+            // m_ctrlStagePicture
+            // 
+            this.m_ctrlStagePicture.BackColor = System.Drawing.Color.White;
+            this.m_ctrlStagePicture.Location = new System.Drawing.Point(831, 13);
+            this.m_ctrlStagePicture.Margin = new System.Windows.Forms.Padding(4);
+            this.m_ctrlStagePicture.Name = "m_ctrlStagePicture";
+            this.m_ctrlStagePicture.Size = new System.Drawing.Size(917, 848);
+            this.m_ctrlStagePicture.TabIndex = 2;
+            this.m_ctrlStagePicture.TabStop = false;
+            // 
+            // label1
+            // 
+            this.label1.AutoSize = true;
+            this.label1.Location = new System.Drawing.Point(26, 15);
+            this.label1.Name = "label1";
+            this.label1.Size = new System.Drawing.Size(116, 18);
+            this.label1.TabIndex = 3;
+            this.label1.Text = "样品台名称:";
+            // 
+            // tStageName
+            // 
+            this.tStageName.Location = new System.Drawing.Point(148, 12);
+            this.tStageName.Name = "tStageName";
+            this.tStageName.Size = new System.Drawing.Size(664, 28);
+            this.tStageName.TabIndex = 4;
+            // 
+            // label2
+            // 
+            this.label2.AutoSize = true;
+            this.label2.Location = new System.Drawing.Point(26, 64);
+            this.label2.Name = "label2";
+            this.label2.Size = new System.Drawing.Size(98, 18);
+            this.label2.TabIndex = 5;
+            this.label2.Text = "坐标系统:";
+            // 
+            // radioButton_OTS
+            // 
+            this.radioButton_OTS.AutoSize = true;
+            this.radioButton_OTS.Location = new System.Drawing.Point(148, 64);
+            this.radioButton_OTS.Name = "radioButton_OTS";
+            this.radioButton_OTS.Size = new System.Drawing.Size(132, 22);
+            this.radioButton_OTS.TabIndex = 6;
+            this.radioButton_OTS.TabStop = true;
+            this.radioButton_OTS.Text = "OTS坐标系统";
+            this.radioButton_OTS.UseVisualStyleBackColor = true;
+            // 
+            // radioButton_SEM
+            // 
+            this.radioButton_SEM.AutoSize = true;
+            this.radioButton_SEM.Location = new System.Drawing.Point(314, 64);
+            this.radioButton_SEM.Name = "radioButton_SEM";
+            this.radioButton_SEM.Size = new System.Drawing.Size(132, 22);
+            this.radioButton_SEM.TabIndex = 10;
+            this.radioButton_SEM.TabStop = true;
+            this.radioButton_SEM.Text = "SEM坐标系统";
+            this.radioButton_SEM.UseVisualStyleBackColor = true;
+            // 
+            // label3
+            // 
+            this.label3.AutoSize = true;
+            this.label3.Location = new System.Drawing.Point(19, 37);
+            this.label3.Name = "label3";
+            this.label3.Size = new System.Drawing.Size(152, 18);
+            this.label3.TabIndex = 8;
+            this.label3.Text = "样品台边框形状:";
+            // 
+            // groupBox1
+            // 
+            this.groupBox1.Controls.Add(this.tBoundaryHeight);
+            this.groupBox1.Controls.Add(this.label8);
+            this.groupBox1.Controls.Add(this.tBoundaryWide);
+            this.groupBox1.Controls.Add(this.label7);
+            this.groupBox1.Controls.Add(this.tBoundaryY);
+            this.groupBox1.Controls.Add(this.label6);
+            this.groupBox1.Controls.Add(this.tBoundaryX);
+            this.groupBox1.Controls.Add(this.label5);
+            this.groupBox1.Controls.Add(this.label4);
+            this.groupBox1.Controls.Add(this.radioButton_BoundarySquare);
+            this.groupBox1.Controls.Add(this.radioButton_BoundaryCircle);
+            this.groupBox1.Controls.Add(this.label3);
+            this.groupBox1.Location = new System.Drawing.Point(6, 92);
+            this.groupBox1.Name = "groupBox1";
+            this.groupBox1.Size = new System.Drawing.Size(806, 171);
+            this.groupBox1.TabIndex = 12;
+            this.groupBox1.TabStop = false;
+            this.groupBox1.Text = "样品台边框";
+            // 
+            // tBoundaryHeight
+            // 
+            this.tBoundaryHeight.Location = new System.Drawing.Point(534, 114);
+            this.tBoundaryHeight.Name = "tBoundaryHeight";
+            this.tBoundaryHeight.Size = new System.Drawing.Size(123, 28);
+            this.tBoundaryHeight.TabIndex = 19;
+            // 
+            // label8
+            // 
+            this.label8.AutoSize = true;
+            this.label8.Location = new System.Drawing.Point(449, 117);
+            this.label8.Name = "label8";
+            this.label8.Size = new System.Drawing.Size(62, 18);
+            this.label8.TabIndex = 18;
+            this.label8.Text = "高度:";
+            // 
+            // tBoundaryWide
+            // 
+            this.tBoundaryWide.Location = new System.Drawing.Point(534, 71);
+            this.tBoundaryWide.Name = "tBoundaryWide";
+            this.tBoundaryWide.Size = new System.Drawing.Size(123, 28);
+            this.tBoundaryWide.TabIndex = 17;
+            // 
+            // label7
+            // 
+            this.label7.AutoSize = true;
+            this.label7.Location = new System.Drawing.Point(449, 74);
+            this.label7.Name = "label7";
+            this.label7.Size = new System.Drawing.Size(62, 18);
+            this.label7.TabIndex = 16;
+            this.label7.Text = "宽度:";
+            // 
+            // tBoundaryY
+            // 
+            this.tBoundaryY.Location = new System.Drawing.Point(227, 114);
+            this.tBoundaryY.Name = "tBoundaryY";
+            this.tBoundaryY.Size = new System.Drawing.Size(123, 28);
+            this.tBoundaryY.TabIndex = 15;
+            // 
+            // label6
+            // 
+            this.label6.AutoSize = true;
+            this.label6.Location = new System.Drawing.Point(186, 117);
+            this.label6.Name = "label6";
+            this.label6.Size = new System.Drawing.Size(35, 18);
+            this.label6.TabIndex = 14;
+            this.label6.Text = "Y:";
+            // 
+            // tBoundaryX
+            // 
+            this.tBoundaryX.Location = new System.Drawing.Point(227, 71);
+            this.tBoundaryX.Name = "tBoundaryX";
+            this.tBoundaryX.Size = new System.Drawing.Size(123, 28);
+            this.tBoundaryX.TabIndex = 13;
+            // 
+            // label5
+            // 
+            this.label5.AutoSize = true;
+            this.label5.Location = new System.Drawing.Point(186, 74);
+            this.label5.Name = "label5";
+            this.label5.Size = new System.Drawing.Size(35, 18);
+            this.label5.TabIndex = 12;
+            this.label5.Text = "X:";
+            // 
+            // label4
+            // 
+            this.label4.AutoSize = true;
+            this.label4.Location = new System.Drawing.Point(20, 74);
+            this.label4.Name = "label4";
+            this.label4.Size = new System.Drawing.Size(116, 18);
+            this.label4.TabIndex = 11;
+            this.label4.Text = "中心点坐标:";
+            // 
+            // radioButton_BoundarySquare
+            // 
+            this.radioButton_BoundarySquare.AutoSize = true;
+            this.radioButton_BoundarySquare.Location = new System.Drawing.Point(281, 35);
+            this.radioButton_BoundarySquare.Name = "radioButton_BoundarySquare";
+            this.radioButton_BoundarySquare.Size = new System.Drawing.Size(69, 22);
+            this.radioButton_BoundarySquare.TabIndex = 10;
+            this.radioButton_BoundarySquare.TabStop = true;
+            this.radioButton_BoundarySquare.Text = "方形";
+            this.radioButton_BoundarySquare.UseVisualStyleBackColor = true;
+            this.radioButton_BoundarySquare.Click += new System.EventHandler(this.radioButton_BoundarySquare_Click);
+            // 
+            // radioButton_BoundaryCircle
+            // 
+            this.radioButton_BoundaryCircle.AutoSize = true;
+            this.radioButton_BoundaryCircle.Location = new System.Drawing.Point(189, 35);
+            this.radioButton_BoundaryCircle.Name = "radioButton_BoundaryCircle";
+            this.radioButton_BoundaryCircle.Size = new System.Drawing.Size(69, 22);
+            this.radioButton_BoundaryCircle.TabIndex = 9;
+            this.radioButton_BoundaryCircle.TabStop = true;
+            this.radioButton_BoundaryCircle.Text = "圆形";
+            this.radioButton_BoundaryCircle.UseVisualStyleBackColor = true;
+            this.radioButton_BoundaryCircle.Click += new System.EventHandler(this.radioButton_BoundaryCircle_Click);
+            // 
+            // groupBox2
+            // 
+            this.groupBox2.Controls.Add(this.tStandardsampleHeight);
+            this.groupBox2.Controls.Add(this.label9);
+            this.groupBox2.Controls.Add(this.tStandardsampleWide);
+            this.groupBox2.Controls.Add(this.label10);
+            this.groupBox2.Controls.Add(this.tStandardsampleY);
+            this.groupBox2.Controls.Add(this.label11);
+            this.groupBox2.Controls.Add(this.tStandardsampleX);
+            this.groupBox2.Controls.Add(this.label12);
+            this.groupBox2.Controls.Add(this.label13);
+            this.groupBox2.Controls.Add(this.radioButton__StandardsampleSqare);
+            this.groupBox2.Controls.Add(this.radioButton_StandardsampleCircle);
+            this.groupBox2.Controls.Add(this.label14);
+            this.groupBox2.Location = new System.Drawing.Point(6, 269);
+            this.groupBox2.Name = "groupBox2";
+            this.groupBox2.Size = new System.Drawing.Size(806, 161);
+            this.groupBox2.TabIndex = 13;
+            this.groupBox2.TabStop = false;
+            this.groupBox2.Text = "标样";
+            // 
+            // tStandardsampleHeight
+            // 
+            this.tStandardsampleHeight.Location = new System.Drawing.Point(534, 114);
+            this.tStandardsampleHeight.Name = "tStandardsampleHeight";
+            this.tStandardsampleHeight.Size = new System.Drawing.Size(123, 28);
+            this.tStandardsampleHeight.TabIndex = 19;
+            // 
+            // label9
+            // 
+            this.label9.AutoSize = true;
+            this.label9.Location = new System.Drawing.Point(449, 117);
+            this.label9.Name = "label9";
+            this.label9.Size = new System.Drawing.Size(62, 18);
+            this.label9.TabIndex = 18;
+            this.label9.Text = "高度:";
+            // 
+            // tStandardsampleWide
+            // 
+            this.tStandardsampleWide.Location = new System.Drawing.Point(534, 71);
+            this.tStandardsampleWide.Name = "tStandardsampleWide";
+            this.tStandardsampleWide.Size = new System.Drawing.Size(123, 28);
+            this.tStandardsampleWide.TabIndex = 17;
+            // 
+            // label10
+            // 
+            this.label10.AutoSize = true;
+            this.label10.Location = new System.Drawing.Point(449, 74);
+            this.label10.Name = "label10";
+            this.label10.Size = new System.Drawing.Size(62, 18);
+            this.label10.TabIndex = 16;
+            this.label10.Text = "宽度:";
+            // 
+            // tStandardsampleY
+            // 
+            this.tStandardsampleY.Location = new System.Drawing.Point(227, 114);
+            this.tStandardsampleY.Name = "tStandardsampleY";
+            this.tStandardsampleY.Size = new System.Drawing.Size(123, 28);
+            this.tStandardsampleY.TabIndex = 15;
+            // 
+            // label11
+            // 
+            this.label11.AutoSize = true;
+            this.label11.Location = new System.Drawing.Point(186, 117);
+            this.label11.Name = "label11";
+            this.label11.Size = new System.Drawing.Size(35, 18);
+            this.label11.TabIndex = 14;
+            this.label11.Text = "Y:";
+            // 
+            // tStandardsampleX
+            // 
+            this.tStandardsampleX.Location = new System.Drawing.Point(227, 71);
+            this.tStandardsampleX.Name = "tStandardsampleX";
+            this.tStandardsampleX.Size = new System.Drawing.Size(123, 28);
+            this.tStandardsampleX.TabIndex = 13;
+            // 
+            // label12
+            // 
+            this.label12.AutoSize = true;
+            this.label12.Location = new System.Drawing.Point(186, 74);
+            this.label12.Name = "label12";
+            this.label12.Size = new System.Drawing.Size(35, 18);
+            this.label12.TabIndex = 12;
+            this.label12.Text = "X:";
+            // 
+            // label13
+            // 
+            this.label13.AutoSize = true;
+            this.label13.Location = new System.Drawing.Point(20, 74);
+            this.label13.Name = "label13";
+            this.label13.Size = new System.Drawing.Size(116, 18);
+            this.label13.TabIndex = 11;
+            this.label13.Text = "中心点坐标:";
+            // 
+            // radioButton__StandardsampleSqare
+            // 
+            this.radioButton__StandardsampleSqare.AutoSize = true;
+            this.radioButton__StandardsampleSqare.Location = new System.Drawing.Point(281, 35);
+            this.radioButton__StandardsampleSqare.Name = "radioButton__StandardsampleSqare";
+            this.radioButton__StandardsampleSqare.Size = new System.Drawing.Size(69, 22);
+            this.radioButton__StandardsampleSqare.TabIndex = 10;
+            this.radioButton__StandardsampleSqare.TabStop = true;
+            this.radioButton__StandardsampleSqare.Text = "方形";
+            this.radioButton__StandardsampleSqare.UseVisualStyleBackColor = true;
+            this.radioButton__StandardsampleSqare.Click += new System.EventHandler(this.radioButton__StandardsampleSqare_Click);
+            // 
+            // radioButton_StandardsampleCircle
+            // 
+            this.radioButton_StandardsampleCircle.AutoSize = true;
+            this.radioButton_StandardsampleCircle.Location = new System.Drawing.Point(189, 35);
+            this.radioButton_StandardsampleCircle.Name = "radioButton_StandardsampleCircle";
+            this.radioButton_StandardsampleCircle.Size = new System.Drawing.Size(69, 22);
+            this.radioButton_StandardsampleCircle.TabIndex = 9;
+            this.radioButton_StandardsampleCircle.TabStop = true;
+            this.radioButton_StandardsampleCircle.Text = "圆形";
+            this.radioButton_StandardsampleCircle.UseVisualStyleBackColor = true;
+            this.radioButton_StandardsampleCircle.Click += new System.EventHandler(this.radioButton_StandardsampleCircle_Click);
+            // 
+            // label14
+            // 
+            this.label14.AutoSize = true;
+            this.label14.Location = new System.Drawing.Point(19, 37);
+            this.label14.Name = "label14";
+            this.label14.Size = new System.Drawing.Size(98, 18);
+            this.label14.TabIndex = 8;
+            this.label14.Text = "标样形状:";
+            // 
+            // button_Generate
+            // 
+            this.button_Generate.Location = new System.Drawing.Point(848, 879);
+            this.button_Generate.Name = "button_Generate";
+            this.button_Generate.Size = new System.Drawing.Size(898, 44);
+            this.button_Generate.TabIndex = 16;
+            this.button_Generate.Text = "生成";
+            this.button_Generate.UseVisualStyleBackColor = true;
+            // 
+            // dataGridView_Holes
+            // 
+            this.dataGridView_Holes.AllowUserToAddRows = false;
+            this.dataGridView_Holes.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.ColumnHeader;
+            this.dataGridView_Holes.BackgroundColor = System.Drawing.SystemColors.Menu;
+            this.dataGridView_Holes.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
+            this.dataGridView_Holes.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+            this.dataGridView_Holes.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.dataGridView_Holes.Location = new System.Drawing.Point(3, 24);
+            this.dataGridView_Holes.Name = "dataGridView_Holes";
+            this.dataGridView_Holes.RowHeadersVisible = false;
+            this.dataGridView_Holes.RowHeadersWidth = 62;
+            this.dataGridView_Holes.RowTemplate.Height = 30;
+            this.dataGridView_Holes.Size = new System.Drawing.Size(773, 466);
+            this.dataGridView_Holes.TabIndex = 17;
+            // 
+            // button_AddHole
+            // 
+            this.button_AddHole.Location = new System.Drawing.Point(788, 454);
+            this.button_AddHole.Name = "button_AddHole";
+            this.button_AddHole.Size = new System.Drawing.Size(34, 127);
+            this.button_AddHole.TabIndex = 18;
+            this.button_AddHole.Text = "增加样品孔";
+            this.button_AddHole.UseVisualStyleBackColor = true;
+            // 
+            // button_DelHole
+            // 
+            this.button_DelHole.Location = new System.Drawing.Point(788, 587);
+            this.button_DelHole.Name = "button_DelHole";
+            this.button_DelHole.Size = new System.Drawing.Size(34, 127);
+            this.button_DelHole.TabIndex = 19;
+            this.button_DelHole.Text = "删除样品孔";
+            this.button_DelHole.UseVisualStyleBackColor = true;
+            // 
+            // groupBox3
+            // 
+            this.groupBox3.Controls.Add(this.dataGridView_Holes);
+            this.groupBox3.Location = new System.Drawing.Point(6, 430);
+            this.groupBox3.Name = "groupBox3";
+            this.groupBox3.Size = new System.Drawing.Size(779, 493);
+            this.groupBox3.TabIndex = 20;
+            this.groupBox3.TabStop = false;
+            this.groupBox3.Text = "样品孔信息:";
+            // 
+            // DlgStageEdit
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(144F, 144F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
+            this.ClientSize = new System.Drawing.Size(1758, 935);
+            this.Controls.Add(this.button_DelHole);
+            this.Controls.Add(this.groupBox3);
+            this.Controls.Add(this.button_Generate);
+            this.Controls.Add(this.button_AddHole);
+            this.Controls.Add(this.groupBox2);
+            this.Controls.Add(this.groupBox1);
+            this.Controls.Add(this.radioButton_SEM);
+            this.Controls.Add(this.radioButton_OTS);
+            this.Controls.Add(this.label2);
+            this.Controls.Add(this.tStageName);
+            this.Controls.Add(this.label1);
+            this.Controls.Add(this.m_ctrlStagePicture);
+            this.MaximizeBox = false;
+            this.MaximumSize = new System.Drawing.Size(1780, 991);
+            this.MinimizeBox = false;
+            this.MinimumSize = new System.Drawing.Size(1780, 991);
+            this.Name = "DlgStageEdit";
+            this.ShowIcon = false;
+            this.ShowInTaskbar = false;
+            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+            this.Text = "DlgStageEdit";
+            this.Load += new System.EventHandler(this.DlgStageEdit_Load);
+            ((System.ComponentModel.ISupportInitialize)(this.m_ctrlStagePicture)).EndInit();
+            this.groupBox1.ResumeLayout(false);
+            this.groupBox1.PerformLayout();
+            this.groupBox2.ResumeLayout(false);
+            this.groupBox2.PerformLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.dataGridView_Holes)).EndInit();
+            this.groupBox3.ResumeLayout(false);
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.PictureBox m_ctrlStagePicture;
+        private System.Windows.Forms.Label label1;
+        private System.Windows.Forms.TextBox tStageName;
+        private System.Windows.Forms.Label label2;
+        private System.Windows.Forms.RadioButton radioButton_OTS;
+        private System.Windows.Forms.RadioButton radioButton_SEM;
+        private System.Windows.Forms.Label label3;
+        private System.Windows.Forms.GroupBox groupBox1;
+        private System.Windows.Forms.TextBox tBoundaryHeight;
+        private System.Windows.Forms.Label label8;
+        private System.Windows.Forms.TextBox tBoundaryWide;
+        private System.Windows.Forms.Label label7;
+        private System.Windows.Forms.TextBox tBoundaryY;
+        private System.Windows.Forms.Label label6;
+        private System.Windows.Forms.TextBox tBoundaryX;
+        private System.Windows.Forms.Label label5;
+        private System.Windows.Forms.Label label4;
+        private System.Windows.Forms.RadioButton radioButton_BoundarySquare;
+        private System.Windows.Forms.RadioButton radioButton_BoundaryCircle;
+        private System.Windows.Forms.GroupBox groupBox2;
+        private System.Windows.Forms.TextBox tStandardsampleHeight;
+        private System.Windows.Forms.Label label9;
+        private System.Windows.Forms.TextBox tStandardsampleWide;
+        private System.Windows.Forms.Label label10;
+        private System.Windows.Forms.TextBox tStandardsampleY;
+        private System.Windows.Forms.Label label11;
+        private System.Windows.Forms.TextBox tStandardsampleX;
+        private System.Windows.Forms.Label label12;
+        private System.Windows.Forms.Label label13;
+        private System.Windows.Forms.RadioButton radioButton__StandardsampleSqare;
+        private System.Windows.Forms.RadioButton radioButton_StandardsampleCircle;
+        private System.Windows.Forms.Label label14;
+        private System.Windows.Forms.Button button_Generate;
+        private System.Windows.Forms.DataGridView dataGridView_Holes;
+        private System.Windows.Forms.Button button_AddHole;
+        private System.Windows.Forms.Button button_DelHole;
+        private System.Windows.Forms.GroupBox groupBox3;
+    }
+}

+ 106 - 0
OTSIncAMeasureApp/7-OTSProgMgrInfo/Stage/DlgStageEdit.cs

@@ -0,0 +1,106 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace OTSMeasureApp._7_OTSProgMgrInfo.Stage
+{
+    public partial class DlgStageEdit : Form
+    {
+        public DlgStageEdit()
+        {
+            InitializeComponent();
+        }
+
+        private void DlgStageEdit_Load(object sender, EventArgs e)
+        {
+            radioButton_OTS.Checked = true;
+            radioButton_BoundarySquare.Checked = true;
+            radioButton__StandardsampleSqare.Checked = true;
+            dataGridView_Holes.Columns.Add("HoleName", "样品孔名称");
+            //dataGridView_Holes.Columns.Add("HoleShape", "样品孔形状");
+            DataGridViewComboBoxColumn HoleShape = new DataGridViewComboBoxColumn();//新建一个列,列的类型是DataGridViewComboBoxColumn
+            HoleShape.HeaderText = "样品孔形状";
+            HoleShape.Items.Add("圆形");//下拉列表选项
+            HoleShape.Items.Add("方形");
+            HoleShape.DefaultCellStyle.NullValue = HoleShape.Items[0];
+            dataGridView_Holes.Columns.Add(HoleShape);//把d这个列添加到datagridview里
+            dataGridView_Holes.Columns.Add("CenterCoordinatesX", "中心x坐标");
+            dataGridView_Holes.Columns.Add("CenterCoordinatesY", "中心y坐标");
+            dataGridView_Holes.Columns.Add("Param1", "宽度或直径");
+            dataGridView_Holes.Columns.Add("Param2", "高度或0");
+            dataGridView_Holes.Rows.Add("", HoleShape.Items[0], "", "", "", "");
+            //SetDataGridViewStyle();
+        }
+        private void SetDataGridViewStyle()
+        {
+            //用户不能调整标题的高度
+            dataGridView_Holes.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
+
+            //用户不能调整 行高
+            dataGridView_Holes.AllowUserToResizeRows = false;
+
+            //点击选择整行
+            //dataGridView_Holes.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
+
+            //居中显示
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
+            dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
+            dataGridView_Holes.DefaultCellStyle = dataGridViewCellStyle1;
+            dataGridView_Holes.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
+
+            //再次重覆禁用拖动表头高度,居然有效果了
+            dataGridView_Holes.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
+
+            //设置grid可以复制
+            //dataGridView_Holes.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText;
+
+            //设置每列的宽度
+            //dataGridView_Holes.Columns[0].Width = 100;//第一列序号的宽度设置一下吧,要不太丑
+            //dataGridView_Holes.Columns[1].Width = 150;
+            //dataGridView_Holes.Columns[dataGridView_Holes.Columns.Count - 1].Width = 450;
+            //dataGridView_Holes.Columns[dataGridView_Holes.Columns.Count - 1].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft;
+
+            //设置序号列不排序
+            dataGridView_Holes.Columns[0].SortMode = DataGridViewColumnSortMode.NotSortable;
+
+            //设置序号列不可以设置宽度
+            //dataGridView_Holes.Columns[0].Resizable = DataGridViewTriState.False;
+
+            dataGridView_Holes.RowsDefaultCellStyle.BackColor = Color.Azure;
+        }
+
+        private void radioButton_BoundaryCircle_Click(object sender, EventArgs e)
+        {
+            label8.Visible = false;
+            tBoundaryHeight.Visible = false;
+            label7.Text = "半径:";
+        }
+
+        private void radioButton_BoundarySquare_Click(object sender, EventArgs e)
+        {
+            label8.Visible = true;
+            tBoundaryHeight.Visible = true;
+            label7.Text = "高度:";
+        }
+
+        private void radioButton_StandardsampleCircle_Click(object sender, EventArgs e)
+        {
+            label9.Visible = false;
+            tStandardsampleHeight.Visible = false;
+            label10.Text = "半径:";
+        }
+
+        private void radioButton__StandardsampleSqare_Click(object sender, EventArgs e)
+        {
+            label9.Visible = true;
+            tStandardsampleHeight.Visible = true;
+            label10.Text = "高度:";
+        }
+    }
+}

+ 120 - 0
OTSIncAMeasureApp/7-OTSProgMgrInfo/Stage/DlgStageEdit.resx

@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>

+ 44 - 14
OTSIncAMeasureApp/7-OTSProgMgrInfo/Stage/DlgStageMgr.Designer.cs

@@ -29,6 +29,8 @@
         private void InitializeComponent()
         {
             this.groupBox1 = new System.Windows.Forms.GroupBox();
+            this.button_New = new System.Windows.Forms.Button();
+            this.button_edit = new System.Windows.Forms.Button();
             this.m_ctrlBtnExport = new System.Windows.Forms.Button();
             this.IDC_BTN_IMPORT = new System.Windows.Forms.Button();
             this.m_ctrlBtnRename = new System.Windows.Forms.Button();
@@ -42,6 +44,8 @@
             // 
             // groupBox1
             // 
+            this.groupBox1.Controls.Add(this.button_New);
+            this.groupBox1.Controls.Add(this.button_edit);
             this.groupBox1.Controls.Add(this.m_ctrlBtnExport);
             this.groupBox1.Controls.Add(this.IDC_BTN_IMPORT);
             this.groupBox1.Controls.Add(this.m_ctrlBtnRename);
@@ -50,17 +54,41 @@
             this.groupBox1.Controls.Add(this.m_ctrlStagePicture);
             this.groupBox1.Controls.Add(this.m_ctrlListBoxStageList);
             this.groupBox1.Location = new System.Drawing.Point(3, 2);
-            this.groupBox1.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+            this.groupBox1.Margin = new System.Windows.Forms.Padding(4);
             this.groupBox1.Name = "groupBox1";
-            this.groupBox1.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
+            this.groupBox1.Padding = new System.Windows.Forms.Padding(4);
             this.groupBox1.Size = new System.Drawing.Size(1046, 476);
             this.groupBox1.TabIndex = 0;
             this.groupBox1.TabStop = false;
             // 
+            // button_New
+            // 
+            this.button_New.Location = new System.Drawing.Point(654, 436);
+            this.button_New.Margin = new System.Windows.Forms.Padding(4);
+            this.button_New.Name = "button_New";
+            this.button_New.Size = new System.Drawing.Size(112, 34);
+            this.button_New.TabIndex = 8;
+            this.button_New.Text = "新建";
+            this.button_New.UseVisualStyleBackColor = true;
+            this.button_New.Visible = false;
+            this.button_New.Click += new System.EventHandler(this.button_New_Click);
+            // 
+            // button_edit
+            // 
+            this.button_edit.Location = new System.Drawing.Point(129, 436);
+            this.button_edit.Margin = new System.Windows.Forms.Padding(4);
+            this.button_edit.Name = "button_edit";
+            this.button_edit.Size = new System.Drawing.Size(99, 34);
+            this.button_edit.TabIndex = 7;
+            this.button_edit.Text = "编辑";
+            this.button_edit.UseVisualStyleBackColor = true;
+            this.button_edit.Visible = false;
+            this.button_edit.Click += new System.EventHandler(this.button_edit_Click);
+            // 
             // m_ctrlBtnExport
             // 
             this.m_ctrlBtnExport.Location = new System.Drawing.Point(928, 436);
-            this.m_ctrlBtnExport.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+            this.m_ctrlBtnExport.Margin = new System.Windows.Forms.Padding(4);
             this.m_ctrlBtnExport.Name = "m_ctrlBtnExport";
             this.m_ctrlBtnExport.Size = new System.Drawing.Size(112, 34);
             this.m_ctrlBtnExport.TabIndex = 6;
@@ -71,7 +99,7 @@
             // IDC_BTN_IMPORT
             // 
             this.IDC_BTN_IMPORT.Location = new System.Drawing.Point(788, 436);
-            this.IDC_BTN_IMPORT.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+            this.IDC_BTN_IMPORT.Margin = new System.Windows.Forms.Padding(4);
             this.IDC_BTN_IMPORT.Name = "IDC_BTN_IMPORT";
             this.IDC_BTN_IMPORT.Size = new System.Drawing.Size(112, 34);
             this.IDC_BTN_IMPORT.TabIndex = 5;
@@ -81,10 +109,10 @@
             // 
             // m_ctrlBtnRename
             // 
-            this.m_ctrlBtnRename.Location = new System.Drawing.Point(254, 436);
-            this.m_ctrlBtnRename.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+            this.m_ctrlBtnRename.Location = new System.Drawing.Point(339, 436);
+            this.m_ctrlBtnRename.Margin = new System.Windows.Forms.Padding(4);
             this.m_ctrlBtnRename.Name = "m_ctrlBtnRename";
-            this.m_ctrlBtnRename.Size = new System.Drawing.Size(112, 34);
+            this.m_ctrlBtnRename.Size = new System.Drawing.Size(97, 34);
             this.m_ctrlBtnRename.TabIndex = 4;
             this.m_ctrlBtnRename.Text = "重命名";
             this.m_ctrlBtnRename.UseVisualStyleBackColor = true;
@@ -92,10 +120,10 @@
             // 
             // m_ctrlBtnDelete
             // 
-            this.m_ctrlBtnDelete.Location = new System.Drawing.Point(130, 436);
-            this.m_ctrlBtnDelete.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+            this.m_ctrlBtnDelete.Location = new System.Drawing.Point(236, 436);
+            this.m_ctrlBtnDelete.Margin = new System.Windows.Forms.Padding(4);
             this.m_ctrlBtnDelete.Name = "m_ctrlBtnDelete";
-            this.m_ctrlBtnDelete.Size = new System.Drawing.Size(112, 34);
+            this.m_ctrlBtnDelete.Size = new System.Drawing.Size(95, 34);
             this.m_ctrlBtnDelete.TabIndex = 3;
             this.m_ctrlBtnDelete.Text = "删除";
             this.m_ctrlBtnDelete.UseVisualStyleBackColor = true;
@@ -104,7 +132,7 @@
             // m_ctrlBtnApply
             // 
             this.m_ctrlBtnApply.Location = new System.Drawing.Point(9, 436);
-            this.m_ctrlBtnApply.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+            this.m_ctrlBtnApply.Margin = new System.Windows.Forms.Padding(4);
             this.m_ctrlBtnApply.Name = "m_ctrlBtnApply";
             this.m_ctrlBtnApply.Size = new System.Drawing.Size(112, 34);
             this.m_ctrlBtnApply.TabIndex = 2;
@@ -116,7 +144,7 @@
             // 
             this.m_ctrlStagePicture.BackColor = System.Drawing.Color.White;
             this.m_ctrlStagePicture.Location = new System.Drawing.Point(474, 26);
-            this.m_ctrlStagePicture.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+            this.m_ctrlStagePicture.Margin = new System.Windows.Forms.Padding(4);
             this.m_ctrlStagePicture.Name = "m_ctrlStagePicture";
             this.m_ctrlStagePicture.Size = new System.Drawing.Size(567, 400);
             this.m_ctrlStagePicture.TabIndex = 1;
@@ -127,7 +155,7 @@
             this.m_ctrlListBoxStageList.FormattingEnabled = true;
             this.m_ctrlListBoxStageList.ItemHeight = 18;
             this.m_ctrlListBoxStageList.Location = new System.Drawing.Point(9, 26);
-            this.m_ctrlListBoxStageList.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+            this.m_ctrlListBoxStageList.Margin = new System.Windows.Forms.Padding(4);
             this.m_ctrlListBoxStageList.Name = "m_ctrlListBoxStageList";
             this.m_ctrlListBoxStageList.Size = new System.Drawing.Size(439, 400);
             this.m_ctrlListBoxStageList.TabIndex = 0;
@@ -140,7 +168,7 @@
             this.ClientSize = new System.Drawing.Size(1040, 454);
             this.Controls.Add(this.groupBox1);
             this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
-            this.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+            this.Margin = new System.Windows.Forms.Padding(4);
             this.MaximizeBox = false;
             this.MaximumSize = new System.Drawing.Size(1062, 510);
             this.MinimizeBox = false;
@@ -168,5 +196,7 @@
         private System.Windows.Forms.ListBox m_ctrlListBoxStageList;
         private System.Windows.Forms.Button m_ctrlBtnExport;
         private System.Windows.Forms.Button IDC_BTN_IMPORT;
+        private System.Windows.Forms.Button button_edit;
+        private System.Windows.Forms.Button button_New;
     }
 }

+ 12 - 0
OTSIncAMeasureApp/7-OTSProgMgrInfo/Stage/DlgStageMgr.cs

@@ -11,6 +11,7 @@ using OTSDataType;
 using static OTSModelSharp.ResourceManage.ResourceID;
 using static OTSModelSharp.ResourceManage.ResourceData;
 using System.Drawing.Drawing2D;
+using OTSMeasureApp._7_OTSProgMgrInfo.Stage;
 
 namespace OTSModelSharp.Measure.GetStageInfo
 {
@@ -734,6 +735,17 @@ namespace OTSModelSharp.Measure.GetStageInfo
 
         }
 
+        private void button_edit_Click(object sender, EventArgs e)
+        {
+
+        }
+
+        private void button_New_Click(object sender, EventArgs e)
+        {
+            DlgStageEdit dlgStageEdit = new DlgStageEdit();
+            dlgStageEdit.ShowDialog();
+        }
+
         //public CStageParam ShowStageMgrDialog(otsdataconst.OTS_SysType_ID a_nPackId, CStageParam a_pStageFile)
         //{
         //    if (a_pStageFile == null)

+ 16 - 0
OTSIncAMeasureApp/OTSIncAMeasureApp.csproj

@@ -101,6 +101,9 @@
     <OutputPath>..\bin\x64\Release_oxford50\</OutputPath>
     <Prefer32Bit>false</Prefer32Bit>
   </PropertyGroup>
+  <PropertyGroup>
+    <ApplicationIcon>Resources\OTSIncAMeasure.ico</ApplicationIcon>
+  </PropertyGroup>
   <ItemGroup>
     <Reference Include="CefSharp.Core, Version=51.0.0.0, Culture=neutral, PublicKeyToken=40c4b6fc221f4138, processorArchitecture=AMD64">
       <SpecificVersion>False</SpecificVersion>
@@ -135,6 +138,10 @@
       <SpecificVersion>False</SpecificVersion>
       <HintPath>..\OpenDll\WordApiDll\OTS.WinFormsUI.Docking.dll</HintPath>
     </Reference>
+    <Reference Include="SlmRuntimeCSharp, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\Bin\x64\Release_oxford50\SlmRuntimeCSharp.dll</HintPath>
+    </Reference>
     <Reference Include="SourceGrid, Version=4.40.7083.30975, Culture=neutral, PublicKeyToken=df6f5e538749e85d, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
       <HintPath>..\OpenDll\WordApiDll\SourceGrid.dll</HintPath>
@@ -243,6 +250,12 @@
     <Compile Include="5-OTSMeasureStatuImageFun\frmSpecialGrayParticle.Designer.cs">
       <DependentUpon>frmSpecialGrayParticle.cs</DependentUpon>
     </Compile>
+    <Compile Include="7-OTSProgMgrInfo\Stage\DlgStageEdit.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="7-OTSProgMgrInfo\Stage\DlgStageEdit.Designer.cs">
+      <DependentUpon>DlgStageEdit.cs</DependentUpon>
+    </Compile>
     <Compile Include="7-OTSProgMgrInfo\Stage\DlgStageMgr.cs">
       <SubType>Form</SubType>
     </Compile>
@@ -441,6 +454,9 @@
     <EmbeddedResource Include="5-OTSMeasureStatuImageFun\frmSpecialGrayParticle.resx">
       <DependentUpon>frmSpecialGrayParticle.cs</DependentUpon>
     </EmbeddedResource>
+    <EmbeddedResource Include="7-OTSProgMgrInfo\Stage\DlgStageEdit.resx">
+      <DependentUpon>DlgStageEdit.cs</DependentUpon>
+    </EmbeddedResource>
     <EmbeddedResource Include="7-OTSProgMgrInfo\Stage\DlgStageMgr.resx">
       <DependentUpon>DlgStageMgr.cs</DependentUpon>
     </EmbeddedResource>

+ 46 - 10
OTSIncAMeasureApp/OTSIncAMeasureAppForm.Designer.cs

@@ -69,6 +69,8 @@
             this.rbMeasureCircle = new System.Windows.Forms.RibbonButton();
             this.rbMeasureRectangle = new System.Windows.Forms.RibbonButton();
             this.ribCircle = new System.Windows.Forms.RibbonButton();
+            this.rbCircleCenter = new System.Windows.Forms.RibbonButton();
+            this.rbThreePoints = new System.Windows.Forms.RibbonButton();
             this.ribRectangle = new System.Windows.Forms.RibbonButton();
             this.ribPolygon = new System.Windows.Forms.RibbonButton();
             this.rbPanelFunction = new System.Windows.Forms.RibbonPanel();
@@ -462,9 +464,11 @@
             this.ribCircle.AltKey = null;
             this.ribCircle.DropDownArrowDirection = System.Windows.Forms.RibbonArrowDirection.Down;
             this.ribCircle.DropDownArrowSize = new System.Drawing.Size(5, 3);
+            this.ribCircle.DropDownItems.Add(this.rbCircleCenter);
+            this.ribCircle.DropDownItems.Add(this.rbThreePoints);
             this.ribCircle.Image = global::OTSMeasureApp.Properties.Resources.圆形32;
             this.ribCircle.SmallImage = ((System.Drawing.Image)(resources.GetObject("ribCircle.SmallImage")));
-            this.ribCircle.Style = System.Windows.Forms.RibbonButtonStyle.Normal;
+            this.ribCircle.Style = System.Windows.Forms.RibbonButtonStyle.SplitDropDown;
             this.ribCircle.Tag = "ribCircle";
             this.ribCircle.Text = "圆形";
             this.ribCircle.ToolTip = null;
@@ -472,6 +476,36 @@
             this.ribCircle.ToolTipTitle = null;
             this.ribCircle.Click += new System.EventHandler(this.ribCircle_Click);
             // 
+            // rbCircleCenter
+            // 
+            this.rbCircleCenter.AltKey = null;
+            this.rbCircleCenter.DropDownArrowDirection = System.Windows.Forms.RibbonArrowDirection.Left;
+            this.rbCircleCenter.DropDownArrowSize = new System.Drawing.Size(5, 3);
+            this.rbCircleCenter.Image = ((System.Drawing.Image)(resources.GetObject("rbCircleCenter.Image")));
+            this.rbCircleCenter.SmallImage = ((System.Drawing.Image)(resources.GetObject("rbCircleCenter.SmallImage")));
+            this.rbCircleCenter.Style = System.Windows.Forms.RibbonButtonStyle.Normal;
+            this.rbCircleCenter.Tag = null;
+            this.rbCircleCenter.Text = "圆心法";
+            this.rbCircleCenter.ToolTip = null;
+            this.rbCircleCenter.ToolTipImage = null;
+            this.rbCircleCenter.ToolTipTitle = null;
+            this.rbCircleCenter.Click += new System.EventHandler(this.ribCircle_Click);
+            // 
+            // rbThreePoints
+            // 
+            this.rbThreePoints.AltKey = null;
+            this.rbThreePoints.DropDownArrowDirection = System.Windows.Forms.RibbonArrowDirection.Left;
+            this.rbThreePoints.DropDownArrowSize = new System.Drawing.Size(5, 3);
+            this.rbThreePoints.Image = ((System.Drawing.Image)(resources.GetObject("rbThreePoints.Image")));
+            this.rbThreePoints.SmallImage = ((System.Drawing.Image)(resources.GetObject("rbThreePoints.SmallImage")));
+            this.rbThreePoints.Style = System.Windows.Forms.RibbonButtonStyle.Normal;
+            this.rbThreePoints.Tag = null;
+            this.rbThreePoints.Text = "三点法";
+            this.rbThreePoints.ToolTip = null;
+            this.rbThreePoints.ToolTipImage = null;
+            this.rbThreePoints.ToolTipTitle = null;
+            this.rbThreePoints.Click += new System.EventHandler(this.rbThreePoints_Click);
+            // 
             // ribRectangle
             // 
             this.ribRectangle.AltKey = null;
@@ -705,11 +739,11 @@
             this.TSGrayVal,
             this.STSemCoordinate,
             this.toolStripStatusLabel1});
-            this.statusStrip1.Location = new System.Drawing.Point(0, 671);
+            this.statusStrip1.Location = new System.Drawing.Point(0, 1010);
             this.statusStrip1.Name = "statusStrip1";
-            this.statusStrip1.Padding = new System.Windows.Forms.Padding(1, 0, 9, 0);
+            this.statusStrip1.Padding = new System.Windows.Forms.Padding(2, 0, 14, 0);
             this.statusStrip1.RightToLeft = System.Windows.Forms.RightToLeft.Yes;
-            this.statusStrip1.Size = new System.Drawing.Size(1277, 26);
+            this.statusStrip1.Size = new System.Drawing.Size(1924, 35);
             this.statusStrip1.TabIndex = 2;
             this.statusStrip1.Text = "statusStrip1";
             // 
@@ -717,20 +751,20 @@
             // 
             this.TSGrayVal.BorderSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.Right;
             this.TSGrayVal.Name = "TSGrayVal";
-            this.TSGrayVal.Size = new System.Drawing.Size(48, 21);
+            this.TSGrayVal.Size = new System.Drawing.Size(68, 28);
             this.TSGrayVal.Text = "灰度值";
             // 
             // STSemCoordinate
             // 
             this.STSemCoordinate.BorderSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.Right;
             this.STSemCoordinate.Name = "STSemCoordinate";
-            this.STSemCoordinate.Size = new System.Drawing.Size(62, 21);
+            this.STSemCoordinate.Size = new System.Drawing.Size(88, 28);
             this.STSemCoordinate.Text = "SEM坐标";
             // 
             // toolStripStatusLabel1
             // 
             this.toolStripStatusLabel1.Name = "toolStripStatusLabel1";
-            this.toolStripStatusLabel1.Size = new System.Drawing.Size(54, 21);
+            this.toolStripStatusLabel1.Size = new System.Drawing.Size(77, 28);
             this.toolStripStatusLabel1.Text = "IsReady";
             this.toolStripStatusLabel1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
             this.toolStripStatusLabel1.Visible = false;
@@ -745,9 +779,9 @@
             this.dockPanel.DockLeftPortion = 0.21D;
             this.dockPanel.DockRightPortion = 0.27D;
             this.dockPanel.Location = new System.Drawing.Point(0, 130);
-            this.dockPanel.Margin = new System.Windows.Forms.Padding(4);
+            this.dockPanel.Margin = new System.Windows.Forms.Padding(6);
             this.dockPanel.Name = "dockPanel";
-            this.dockPanel.Size = new System.Drawing.Size(1277, 541);
+            this.dockPanel.Size = new System.Drawing.Size(1924, 880);
             dockPanelGradient1.EndColor = System.Drawing.SystemColors.ControlLight;
             dockPanelGradient1.StartColor = System.Drawing.SystemColors.ControlLight;
             autoHideStripSkin1.DockStripGradient = dockPanelGradient1;
@@ -822,7 +856,7 @@
             this.ribbonButton1.ToolTipImage = null;
             this.ribbonButton1.ToolTipTitle = null;
             // 
-            // ribbonOrbRecentItem1
+            // OTSIncAMeasureAppForm
             // 
             this.ribbonOrbRecentItem1.AltKey = null;
             this.ribbonOrbRecentItem1.DropDownArrowDirection = System.Windows.Forms.RibbonArrowDirection.Down;
@@ -917,6 +951,8 @@
         public System.Windows.Forms.RibbonButton ribPolygon;
         public System.Windows.Forms.RibbonButton rbSTDEdit;
         public System.Windows.Forms.RibbonButton rbReClassify;
+        private System.Windows.Forms.RibbonButton rbCircleCenter;
         private System.Windows.Forms.RibbonOrbRecentItem ribbonOrbRecentItem1;
+        private System.Windows.Forms.RibbonButton rbThreePoints;
     }
 }

+ 20 - 19
OTSIncAMeasureApp/OTSIncAMeasureAppForm.cs

@@ -143,18 +143,17 @@ namespace OTSMeasureApp
             try
             {
 
-/*
-                try
-                {
-                    SenseShield.DogDecrypting.decrypting(101);//参数为许可号
-                }
-                catch (Exception ex)
-                {
-                    MessageBox.Show(ex.Message, "错误:", MessageBoxButtons.OK, MessageBoxIcon.Error);
-                    System.Environment.Exit(0);
-                    return;
-                }
-*/
+                //try
+                //{
+                //    SenseShield.DogDecrypting.decrypting(101);//参数为许可号
+                //}
+                //catch (Exception ex)
+                //{
+                //    MessageBox.Show(ex.Message, "错误:", MessageBoxButtons.OK, MessageBoxIcon.Error);
+                //    System.Environment.Exit(0);
+                //    return;
+                //}
+
                 ArrangWorkspaceWindow();
 
                 log = NLog.LogManager.GetCurrentClassLogger();
@@ -650,15 +649,13 @@ namespace OTSMeasureApp
                     return;
                 }
                 //m_MeasureRetWindow.SetInit();
-
                 sWSampleName = m_ProjParam.GetWorkSampleName();
-                if ("" == sWSampleName)
+                if ("" != sWSampleName)
                 {
-                    log.Error("(OTSIncAMeasureAppForm.rbDeleteSample_Click)  m_DataMgrFun.GetWorkSampleName() = null Failed");
-                    return;
+                   
+                    m_SolutionWindows.m_TreeViewBase.GetTreeWorkSampleNode(sWSampleName);
+                    m_SolutionWindows.treeView1.Focus();
                 }
-                m_SolutionWindows.m_TreeViewBase.GetTreeWorkSampleNode(sWSampleName);
-                m_SolutionWindows.treeView1.Focus();
             }
             
         }
@@ -909,7 +906,11 @@ namespace OTSMeasureApp
             //修改工作样品的测量区域为圆形
             m_SamplepaceWindow.Rev_DDrawCircleMeasure_MeasureAppToSampleWindow_Event();
         }
-
+        private void rbThreePoints_Click(object sender, EventArgs e)
+        {
+            //修改工作样品的测量区域为圆形
+            m_SamplepaceWindow.Rev_DDrawCircleMeasureByThreePoints_MeasureAppToSampleWindow_Event();
+        }
         //绘制矩形测量区域
         private void ribRectangle_Click(object sender, EventArgs e)
         {

+ 25 - 1
OTSIncAMeasureApp/OTSIncAMeasureAppForm.resx

@@ -154,18 +154,42 @@
         JQAAFiUBSVIk8AAAABNJREFUOE9jGAWjYBSMAjBgYAAABBAAAadEfGMAAAAASUVORK5CYII=
 </value>
   </data>
+
   <data name="ribbonOrbRecentItem1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
         YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAaSURBVFhH7cEBAQAAAIIg/69uSEAAAADAuRoQIAABnXhJ
         QwAAAABJRU5ErkJggg==
-</value>
+    </value>
   </data>
   <data name="ribbonOrbRecentItem1.SmallImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
         YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAATSURBVDhPYxgFo2AUjAIwYGAAAAQQAAGnRHxjAAAAAElF
         TkSuQmCC
+    </value>
+  </data>  <data name="rbCircleCenter.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAW
+        JQAAFiUBSVIk8AAAABpJREFUWEftwQEBAAAAgiD/r25IQAAAAMC5GhAgAAGdeElDAAAAAElFTkSuQmCC
+</value>
+  </data>
+  <data name="rbCircleCenter.SmallImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAW
+        JQAAFiUBSVIk8AAAABNJREFUOE9jGAWjYBSMAjBgYAAABBAAAadEfGMAAAAASUVORK5CYII=
+</value>
+  </data>
+  <data name="rbThreePoints.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAW
+        JQAAFiUBSVIk8AAAABpJREFUWEftwQEBAAAAgiD/r25IQAAAAMC5GhAgAAGdeElDAAAAAElFTkSuQmCC
+</value>
+  </data>
+  <data name="rbThreePoints.SmallImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAW
+        JQAAFiUBSVIk8AAAABNJREFUOE9jGAWjYBSMAjBgYAAABBAAAadEfGMAAAAASUVORK5CYII=
 </value>
   </data>
   <data name="ribCircle.SmallImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">

BIN
OTSIncAMeasureApp/Resources/OTSIncAMeasure.ico


+ 42 - 0
OTSIncAReportApp/1-UI/frmReportApp.Designer.cs

@@ -75,6 +75,8 @@
             this.rbFrame = new System.Windows.Forms.RibbonButton();
             this.rbStaff = new System.Windows.Forms.RibbonButton();
             this.rbRenew = new System.Windows.Forms.RibbonButton();
+            this.ribbonPanelOthers = new System.Windows.Forms.RibbonPanel();
+            this.rbHelp = new System.Windows.Forms.RibbonButton();
             this.rbGB1 = new System.Windows.Forms.RibbonButton();
             this.rbGB2 = new System.Windows.Forms.RibbonButton();
             this.statusStrip1 = new System.Windows.Forms.StatusStrip();
@@ -84,6 +86,7 @@
             this.ribbonOrbMenuItem5 = new System.Windows.Forms.RibbonOrbMenuItem();
             this.ribbonOrbMenuItem7 = new System.Windows.Forms.RibbonOrbMenuItem();
             this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
+            this.ribbonButton3 = new System.Windows.Forms.RibbonButton();
             ribbonPanel1 = new System.Windows.Forms.RibbonPanel();
             this.statusStrip1.SuspendLayout();
             this.SuspendLayout();
@@ -452,6 +455,7 @@
             // rbMenu
             // 
             this.rbMenu.Panels.Add(this.ribbonPanel2);
+            this.rbMenu.Panels.Add(this.ribbonPanelOthers);
             this.rbMenu.Tag = null;
             this.rbMenu.Text = "视域菜单";
             // 
@@ -510,6 +514,27 @@
             this.rbRenew.ToolTipTitle = null;
             this.rbRenew.Click += new System.EventHandler(this.rbRenew_Click);
             // 
+            // ribbonPanelOthers
+            // 
+            this.ribbonPanelOthers.Items.Add(this.rbHelp);
+            this.ribbonPanelOthers.Tag = null;
+            this.ribbonPanelOthers.Text = "其它";
+            // 
+            // rbHelp
+            // 
+            this.rbHelp.AltKey = null;
+            this.rbHelp.DropDownArrowDirection = System.Windows.Forms.RibbonArrowDirection.Down;
+            this.rbHelp.DropDownArrowSize = new System.Drawing.Size(5, 3);
+            this.rbHelp.Image = global::OTSIncAReportApp.Properties.Resources.find32;
+            this.rbHelp.SmallImage = ((System.Drawing.Image)(resources.GetObject("rbHelp.SmallImage")));
+            this.rbHelp.Style = System.Windows.Forms.RibbonButtonStyle.Normal;
+            this.rbHelp.Tag = "rbHelp";
+            this.rbHelp.Text = "帮助";
+            this.rbHelp.ToolTip = "rbHelp";
+            this.rbHelp.ToolTipImage = null;
+            this.rbHelp.ToolTipTitle = null;
+            this.rbHelp.Click += new System.EventHandler(this.rbHelp_Click);
+            // 
             // rbGB1
             // 
             this.rbGB1.AltKey = null;
@@ -648,6 +673,20 @@
             this.ribbonOrbMenuItem7.ToolTipImage = null;
             this.ribbonOrbMenuItem7.ToolTipTitle = null;
             // 
+            // ribbonButton3
+            // 
+            this.ribbonButton3.AltKey = null;
+            this.ribbonButton3.DropDownArrowDirection = System.Windows.Forms.RibbonArrowDirection.Down;
+            this.ribbonButton3.DropDownArrowSize = new System.Drawing.Size(5, 3);
+            this.ribbonButton3.Image = global::OTSIncAReportApp.Properties.Resources.帧图边框32;
+            this.ribbonButton3.SmallImage = ((System.Drawing.Image)(resources.GetObject("ribbonButton3.SmallImage")));
+            this.ribbonButton3.Style = System.Windows.Forms.RibbonButtonStyle.Normal;
+            this.ribbonButton3.Tag = "rbFrame";
+            this.ribbonButton3.Text = "帧图边框";
+            this.ribbonButton3.ToolTip = "rbFrame";
+            this.ribbonButton3.ToolTipImage = null;
+            this.ribbonButton3.ToolTipTitle = null;
+            // 
             // frmReportApp
             // 
             this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
@@ -719,6 +758,9 @@
         public System.Windows.Forms.RibbonOrbMenuItem dpbReDo;
         private System.Windows.Forms.ToolTip toolTip1;
         public System.Windows.Forms.RibbonOrbMenuItem ribbonOrbMenuItem_Extremum;
+        private System.Windows.Forms.RibbonPanel ribbonPanelOthers;
+        public System.Windows.Forms.RibbonButton ribbonButton3;
+        public System.Windows.Forms.RibbonButton rbHelp;
     }
 }
 

+ 6 - 0
OTSIncAReportApp/1-UI/frmReportApp.cs

@@ -1307,6 +1307,12 @@ namespace OTSIncAReportApp
                 log.Error("OTSPartA_STDEditor:" + ex.ToString());
             }
         }
+
+        private void rbHelp_Click(object sender, EventArgs e)
+        {
+            Help help = new Help();
+            help.ShowDialog();
+        }
     }
 }
 

+ 12 - 0
OTSIncAReportApp/1-UI/frmReportApp.resx

@@ -239,6 +239,12 @@
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAW
         JQAAFiUBSVIk8AAAABNJREFUOE9jGAWjYBSMAjBgYAAABBAAAadEfGMAAAAASUVORK5CYII=
+</value>
+  </data>
+  <data name="rbHelp.SmallImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAW
+        JQAAFiUBSVIk8AAAABNJREFUOE9jGAWjYBSMAjBgYAAABBAAAadEfGMAAAAASUVORK5CYII=
 </value>
   </data>
   <data name="rbGB1.SmallImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
@@ -283,6 +289,12 @@
   <metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>183, 17</value>
   </metadata>
+  <data name="ribbonButton3.SmallImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAW
+        JQAAFiUBSVIk8AAAABNJREFUOE9jGAWjYBSMAjBgYAAABBAAAadEfGMAAAAASUVORK5CYII=
+</value>
+  </data>
   <metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
     <value>144</value>
   </metadata>

+ 72 - 0
OTSIncAReportApp/Help.Designer.cs

@@ -0,0 +1,72 @@
+
+namespace OTSIncAReportApp
+{
+    partial class Help
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.richTextBox1 = new System.Windows.Forms.RichTextBox();
+            this.SuspendLayout();
+            // 
+            // richTextBox1
+            // 
+            this.richTextBox1.BackColor = System.Drawing.SystemColors.Info;
+            this.richTextBox1.Cursor = System.Windows.Forms.Cursors.Arrow;
+            this.richTextBox1.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.richTextBox1.Font = new System.Drawing.Font("宋体", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.richTextBox1.Location = new System.Drawing.Point(0, 0);
+            this.richTextBox1.Name = "richTextBox1";
+            this.richTextBox1.ReadOnly = true;
+            this.richTextBox1.Size = new System.Drawing.Size(601, 665);
+            this.richTextBox1.TabIndex = 0;
+            this.richTextBox1.Text = "";
+            // 
+            // Help
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(601, 665);
+            this.Controls.Add(this.richTextBox1);
+            this.MaximizeBox = false;
+            this.MaximumSize = new System.Drawing.Size(623, 721);
+            this.MinimizeBox = false;
+            this.MinimumSize = new System.Drawing.Size(623, 721);
+            this.Name = "Help";
+            this.ShowIcon = false;
+            this.ShowInTaskbar = false;
+            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+            this.Text = "Help";
+            this.Load += new System.EventHandler(this.Help_Load);
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.RichTextBox richTextBox1;
+    }
+}

+ 37 - 0
OTSIncAReportApp/Help.cs

@@ -0,0 +1,37 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace OTSIncAReportApp
+{
+    public partial class Help : Form
+    {
+        public Help()
+        {
+            InitializeComponent();
+        }
+
+        private void Help_Load(object sender, EventArgs e)
+        {
+            richTextBox1.Text = "部分缩写含义如下:\n";
+            richTextBox1.Text += "AREA:面积\n";
+            richTextBox1.Text += "D_MAX:最大卡规直径\n";
+            richTextBox1.Text += "D_MIN:最小卡规直径\n";
+            richTextBox1.Text += "D_PERP:与最大卡规直径正交的直径\n";
+            richTextBox1.Text += "D_FERI:周长\n";
+            richTextBox1.Text += "D_INSCR:最大内接圆直径\n";
+            richTextBox1.Text += "D_MEAN:所有内接圆直径平均值\n";
+            richTextBox1.Text += "D_LONG:展开长度\n";
+            richTextBox1.Text += "ASPECT_MAX:最长直径与平均宽度比值\n";
+            richTextBox1.Text += "ASPECT_ELONG:展开长度与平均宽度比值";
+            richTextBox1.SelectionStart = richTextBox1.TextLength;
+            //richTextBox1.Focus();
+        }
+    }
+}

+ 120 - 0
OTSIncAReportApp/Help.resx

@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>

+ 10 - 2
OTSIncAReportApp/OTSIncAReportApp.csproj

@@ -57,8 +57,7 @@
     <StartupObject>OTSIncAReportApp.Program</StartupObject>
   </PropertyGroup>
   <PropertyGroup>
-    <ApplicationIcon>
-    </ApplicationIcon>
+    <ApplicationIcon>Resources\OTSIncAReport.ico</ApplicationIcon>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release_oxford50|AnyCPU'">
     <OutputPath>..\Bin\x64\Release_oxford50\</OutputPath>
@@ -519,6 +518,12 @@
     <Compile Include="1-UI\OutputNlog.Designer.cs">
       <DependentUpon>OutputNlog.cs</DependentUpon>
     </Compile>
+    <Compile Include="Help.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="Help.Designer.cs">
+      <DependentUpon>Help.cs</DependentUpon>
+    </Compile>
     <Compile Include="Program.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="1-UI\OTSMgrInfo\frmReportSysConfig.cs">
@@ -1191,6 +1196,9 @@
     <EmbeddedResource Include="1-UI\OTSMgrInfo\frmReportSysConfig.resx">
       <DependentUpon>frmReportSysConfig.cs</DependentUpon>
     </EmbeddedResource>
+    <EmbeddedResource Include="Help.resx">
+      <DependentUpon>Help.cs</DependentUpon>
+    </EmbeddedResource>
     <EmbeddedResource Include="Properties\Resources.resx">
       <Generator>PublicResXFileCodeGenerator</Generator>
       <LastGenOutput>Resources.Designer.cs</LastGenOutput>

+ 4 - 0
OTSSysMgrApp/OTSSysMgrApp.csproj

@@ -95,6 +95,9 @@
     <ErrorReport>prompt</ErrorReport>
     <Prefer32Bit>false</Prefer32Bit>
   </PropertyGroup>
+  <PropertyGroup>
+    <ApplicationIcon>OTSSysMgr.ico</ApplicationIcon>
+  </PropertyGroup>
   <ItemGroup>
     <Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
@@ -195,6 +198,7 @@
   </ItemGroup>
   <ItemGroup>
     <EmbeddedResource Include="Resources\logo.jpg" />
+    <Content Include="OTSSysMgr.ico" />
     <Content Include="XMLData\SystemData.xml">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>

BIN
OTSSysMgrApp/Resources/OTSSysMgr.ico