浏览代码

add bse se choices in the oxfordextender testing form.

gsp 1 年之前
父节点
当前提交
e8d78267d2

+ 2 - 2
Bin/x64/Debug/Config/ProData/HardwareConfig.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?xml version="1.0" encoding="UTF-8"?>
 <XMLData PathName="HardwareConfig.xml" ID="1">
 <XMLData PathName="HardwareConfig.xml" ID="1">
-  <Member RegName="SemControllerName" Value="OffLine" ImageInputSources="BSE" />
-  <Member RegName="EDSName" Value="OffLine" />
+  <Member RegName="SemControllerName" Value="Oxford" ImageInputSources="SE" />
+  <Member RegName="EDSName" Value="Oxford" />
   <Member RegName="BrukerDllVersion" Version="Bruker.API.Esprit64.dll" />
   <Member RegName="BrukerDllVersion" Version="Bruker.API.Esprit64.dll" />
   <Member RegName="FEIIP" Value="192.168.0.1" />
   <Member RegName="FEIIP" Value="192.168.0.1" />
   <Member RegName="FEIPORT" Value="7520" />
   <Member RegName="FEIPORT" Value="7520" />

+ 73 - 1
Bin/x64/Debug/Config/SysData/OTSStage.stg

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?xml version="1.0" encoding="UTF-8"?>
-<XMLData Modify="true" PathName=".\Config\SysData\OTSStage.stg" WorkingStageId="0">
+<XMLData Modify="true" PathName=".\Config\SysData\OTSStage.stg" WorkingStageId="6">
   <Collection RegName="Stagelist">
   <Collection RegName="Stagelist">
     <Member strName="圆形九圆孔50mm">
     <Member strName="圆形九圆孔50mm">
       <Member RegName="boundary" PolygonPoint="" rectDomian="0,0,50000,0" shape="0:ROUND" />
       <Member RegName="boundary" PolygonPoint="" rectDomian="0,0,50000,0" shape="0:ROUND" />
@@ -54,5 +54,77 @@
         <Member HoleName="7" rectDomian="-23000,0,15000,0" shape="0" />
         <Member HoleName="7" rectDomian="-23000,0,15000,0" shape="0" />
       </Collection>
       </Collection>
     </Member>
     </Member>
+    <Member strName="Apero">
+      <Member RegName="boundary" PolygonPoint="" rectDomian="0,0,130000,120000" shape="1:RECTANGLE" />
+      <Member RegName="std" PolygonPoint="" rectDomian="6300,0,2,0" shape="0:ROUND" />
+      <Collection RegName="Holes">
+        <Member HoleName="9" rectDomian="0,0,10000,0" shape="0" />
+        <Member HoleName="2" rectDomian="0,25000,10000,0" shape="0" />
+        <Member HoleName="3" rectDomian="-15000,25000,10000,0" shape="0" />
+        <Member HoleName="1" rectDomian="15000,25500,10000,0" shape="0" />
+        <Member HoleName="4" rectDomian="22000,13000,10000,0" shape="0" />
+        <Member HoleName="5" rectDomian="7000,13000,10000,0" shape="0" />
+        <Member HoleName="6" rectDomian="-7500,13000,10000,0" shape="0" />
+        <Member HoleName="7" rectDomian="-22500,13000,10000,0" shape="0" />
+        <Member HoleName="8" rectDomian="14000,0,10000,0" shape="0" />
+        <Member HoleName="10" rectDomian="-15000,0,10000,0" shape="0" />
+        <Member HoleName="11" rectDomian="-30000,0,10000,0" shape="0" />
+        <Member HoleName="12" rectDomian="22000,-12500,10000,0" shape="0" />
+        <Member HoleName="13" rectDomian="7000,-12500,10000,0" shape="0" />
+        <Member HoleName="14" rectDomian="-7500,-12500,10000,0" shape="0" />
+        <Member HoleName="15" rectDomian="-22500,-12500,10000,0" shape="0" />
+        <Member HoleName="16" rectDomian="14500,-24500,10000,0" shape="0" />
+        <Member HoleName="17" rectDomian="-500,-24500,10000,0" shape="0" />
+        <Member HoleName="18" rectDomian="-14500,-24500,10000,0" shape="0" />
+      </Collection>
+    </Member>
+    <Member strName="Apero12">
+      <Member RegName="boundary" PolygonPoint="" rectDomian="0,0,130000,120000" shape="1:RECTANGLE" />
+      <Member RegName="std" PolygonPoint="" rectDomian="6300,0,2,0" shape="0:ROUND" />
+      <Collection RegName="Holes">
+        <Member HoleName="9" rectDomian="0,0,12000,0" shape="0" />
+        <Member HoleName="2" rectDomian="0,25000,12000,0" shape="0" />
+        <Member HoleName="3" rectDomian="-15000,25000,12000,0" shape="0" />
+        <Member HoleName="1" rectDomian="15000,25500,12000,0" shape="0" />
+        <Member HoleName="4" rectDomian="22000,13000,12000,0" shape="0" />
+        <Member HoleName="5" rectDomian="7000,13000,12000,0" shape="0" />
+        <Member HoleName="6" rectDomian="-7500,13000,12000,0" shape="0" />
+        <Member HoleName="7" rectDomian="-22500,13000,12000,0" shape="0" />
+        <Member HoleName="8" rectDomian="14000,0,12000,0" shape="0" />
+        <Member HoleName="10" rectDomian="-15000,0,12000,0" shape="0" />
+        <Member HoleName="11" rectDomian="-30000,0,12000,0" shape="0" />
+        <Member HoleName="12" rectDomian="22000,-12500,12000,0" shape="0" />
+        <Member HoleName="13" rectDomian="7000,-12500,12000,0" shape="0" />
+        <Member HoleName="14" rectDomian="-7500,-12500,12000,0" shape="0" />
+        <Member HoleName="15" rectDomian="-22500,-12500,12000,0" shape="0" />
+        <Member HoleName="16" rectDomian="14500,-24500,12000,0" shape="0" />
+        <Member HoleName="17" rectDomian="-500,-24500,12000,0" shape="0" />
+        <Member HoleName="18" rectDomian="-14500,-24500,12000,0" shape="0" />
+      </Collection>
+    </Member>
+    <Member strName="Apero12_90">
+      <Member RegName="boundary" PolygonPoint="" rectDomian="0,0,90000,90000" shape="1:RECTANGLE" />
+      <Member RegName="std" PolygonPoint="" rectDomian="6300,0,2,0" shape="0:ROUND" />
+      <Collection RegName="Holes">
+        <Member HoleName="9" rectDomian="0,0,12000,0" shape="0" />
+        <Member HoleName="2" rectDomian="0,25000,12000,0" shape="0" />
+        <Member HoleName="3" rectDomian="-15000,25000,12000,0" shape="0" />
+        <Member HoleName="1" rectDomian="15000,25500,12000,0" shape="0" />
+        <Member HoleName="4" rectDomian="22000,13000,12000,0" shape="0" />
+        <Member HoleName="5" rectDomian="7000,13000,12000,0" shape="0" />
+        <Member HoleName="6" rectDomian="-7500,13000,12000,0" shape="0" />
+        <Member HoleName="7" rectDomian="-22500,13000,12000,0" shape="0" />
+        <Member HoleName="8" rectDomian="14000,0,12000,0" shape="0" />
+        <Member HoleName="10" rectDomian="-15000,0,12000,0" shape="0" />
+        <Member HoleName="11" rectDomian="-30000,0,12000,0" shape="0" />
+        <Member HoleName="12" rectDomian="22000,-12500,12000,0" shape="0" />
+        <Member HoleName="13" rectDomian="7000,-12500,12000,0" shape="0" />
+        <Member HoleName="14" rectDomian="-7500,-12500,12000,0" shape="0" />
+        <Member HoleName="15" rectDomian="-22500,-12500,12000,0" shape="0" />
+        <Member HoleName="16" rectDomian="14500,-24500,12000,0" shape="0" />
+        <Member HoleName="17" rectDomian="-500,-24500,12000,0" shape="0" />
+        <Member HoleName="18" rectDomian="-14500,-24500,12000,0" shape="0" />
+      </Collection>
+    </Member>
   </Collection>
   </Collection>
 </XMLData>
 </XMLData>

+ 2 - 2
OTSCPP/OTSControl/Bruker/OTSSEMBruker.cpp

@@ -549,7 +549,7 @@ namespace OTSController {
 		dPositionY = a_dPositionY;
 		dPositionY = a_dPositionY;
 		dRotation = a_dPositionR;
 		dRotation = a_dPositionR;
 		LogTrace(__FILE__, __LINE__, _T("COTSSEMBruker::Start to SetPositionXY "));
 		LogTrace(__FILE__, __LINE__, _T("COTSSEMBruker::Start to SetPositionXY "));
-		if (!m_pBrukerImplPtr->SetSEMStageData(dPositionX, dPositionY, dPositionZ, dTilt, dRotation))
+		if (!m_pBrukerImplPtr->SetSEMStageData(dPositionX, dPositionY, dPositionZ, 0, 0))//in the new version(>=2.3) ,the tilt and rotation must be 0.
 		{
 		{
 			// failed to call SetSEMStageData method
 			// failed to call SetSEMStageData method
 			LogErrorTrace(__FILE__, __LINE__, _T("COTSSEMBruker::SetPositionXY : failed to call SetSEMStageData method."));
 			LogErrorTrace(__FILE__, __LINE__, _T("COTSSEMBruker::SetPositionXY : failed to call SetSEMStageData method."));
@@ -585,7 +585,7 @@ namespace OTSController {
 		dPositionY = a_dPositionY;
 		dPositionY = a_dPositionY;
 		//dRotation = a_dPositionR;
 		//dRotation = a_dPositionR;
 		LogTrace(__FILE__, __LINE__, _T("COTSSEMBruker::Start to SetPositionXY "));
 		LogTrace(__FILE__, __LINE__, _T("COTSSEMBruker::Start to SetPositionXY "));
-		if (!m_pBrukerImplPtr->SetSEMStageData(dPositionX, dPositionY, dPositionZ, dTilt, dRotation))
+		if (!m_pBrukerImplPtr->SetSEMStageData(dPositionX, dPositionY, dPositionZ, 0, 0))
 		{
 		{
 			// failed to call SetSEMStageData method
 			// failed to call SetSEMStageData method
 			LogErrorTrace(__FILE__, __LINE__, _T("COTSSEMBruker::SetPositionXY : failed to call SetSEMStageData method."));
 			LogErrorTrace(__FILE__, __LINE__, _T("COTSSEMBruker::SetPositionXY : failed to call SetSEMStageData method."));

+ 4 - 5
OTSIncAMeasureApp/0-OTSModel/Measure/3-MeasureFlow/CMeasure.cs

@@ -457,17 +457,16 @@ namespace OTSModelSharp
             COTSSample pSampleHole = CreateHoleSample(a_pMeasureArea);
             COTSSample pSampleHole = CreateHoleSample(a_pMeasureArea);
         
         
             // create a sample measure object for the sample
             // create a sample measure object for the sample
-            CSmplMeasure pSmplMeasure = new CSmplMeasure(m_strWorkingFolder, pSampleHole);
+            CSmplMeasure pSmplMeasure = new CSmplMeasure(m_strWorkingFolder, m_pProjData.GetWorkingSample());
 
 
           
           
             // set measure thread
             // set measure thread
             pSmplMeasure.SetMsrThread(this);
             pSmplMeasure.SetMsrThread(this);
 
 
             // update thread measure status class, let the main thread know that this sample measurement starts
             // update thread measure status class, let the main thread know that this sample measurement starts
-            // set working folder string
-            pSmplMeasure.SetSample(pSampleHole);
+         
             pSmplMeasure.SetHolePreviewSample(pSampleHole);
             pSmplMeasure.SetHolePreviewSample(pSampleHole);
-            pSmplMeasure.SetWorkingFolder(m_strWorkingFolder);
+          
 
 
             // do measure
             // do measure
             pSmplMeasure.DoHolePreview();
             pSmplMeasure.DoHolePreview();
@@ -565,7 +564,7 @@ namespace OTSModelSharp
             poImageScanParam.SetStopMode(((int)OTS_MEASURE_STOP_MODE.CoverMode).ToString());
             poImageScanParam.SetStopMode(((int)OTS_MEASURE_STOP_MODE.CoverMode).ToString());
             poImageScanParam.SetStartImageMode(OTS_GET_IMAGE_MODE.FROM_CENTER);
             poImageScanParam.SetStartImageMode(OTS_GET_IMAGE_MODE.FROM_CENTER);
             poImageScanParam.SetScanImageSpeed(OTS_IMAGE_SCANSPEED_OPTIONS.low);
             poImageScanParam.SetScanImageSpeed(OTS_IMAGE_SCANSPEED_OPTIONS.low);
-            //poImageScanParam.SetImagePixelSize(OTS_FIVE_TIES_OPTIONS.TIE1);
+       
 
 
             CSampleParam poMsrParams = pHoleSample.GetMsrParams();
             CSampleParam poMsrParams = pHoleSample.GetMsrParams();
             poImageScanParam.SetImageResulotion(GetListMeasurableSamples()[0].GetMsrParams().GetImageScanParam().GetImageResulotion());//由于各样品分辨率应该一致,故此处没有读取选取的特定样品孔样品
             poImageScanParam.SetImageResulotion(GetListMeasurableSamples()[0].GetMsrParams().GetImageScanParam().GetImageResulotion());//由于各样品分辨率应该一致,故此处没有读取选取的特定样品孔样品

文件差异内容过多而无法显示
+ 285 - 286
OTSIncAMeasureApp/4-OTSSamplespaceGraphicsPanel/OTSSamplespaceWindow.cs


+ 1 - 4
OTSIncAMeasureApp/ServiceCenter/CPP(Bruker)API/SemController.cs

@@ -327,10 +327,7 @@ namespace OTSModelSharp.ServiceCenter
             
             
         }
         }
 
 
-        //public bool GetSemBeamOn()
-        //{
-        //    return sem.GetSemBeamOn();
-        //}
+    
 
 
         public bool SetSemBeamCurrent(bool a_dKV)
         public bool SetSemBeamCurrent(bool a_dKV)
         {
         {

+ 1 - 3
OTSIncAMeasureApp/ServiceCenter/OxfordExtender/OxfordSemController.cs

@@ -84,10 +84,8 @@ namespace OTSMeasureApp.ServiceCenter
 
 
         public bool GetSemPositionXY(ref double a_dPositionX, ref double a_dPositionY, ref double a_dPositionR)
         public bool GetSemPositionXY(ref double a_dPositionX, ref double a_dPositionY, ref double a_dPositionR)
         {
         {
-            //double a_dPositionZ = 0;
-            //double a_dPositionT = 0;
+         
           return  iExtender.MoveStageXY((float)a_dPositionX,(float) a_dPositionY);
           return  iExtender.MoveStageXY((float)a_dPositionX,(float) a_dPositionY);
-            //return ApiClass.GetSemPositionXYZRT(ref a_dPositionX, ref a_dPositionY, ref a_dPositionZ, ref a_dPositionR, ref a_dPositionT);
 
 
         }
         }
 
 

+ 7 - 7
OTSInclusionsTraceability/App.config

@@ -1,23 +1,23 @@
 <?xml version="1.0" encoding="utf-8"?>
 <?xml version="1.0" encoding="utf-8"?>
 <configuration>
 <configuration>
     <startup> 
     <startup> 
-        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1"/>
+        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/>
     </startup>
     </startup>
   <runtime>
   <runtime>
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      
      
       <probing privatePath="System;Common;SQLiteDll;Oxford;Bruker;FEIAutoScript;OpenCv;OpenCvSharp"/>
       <probing privatePath="System;Common;SQLiteDll;Oxford;Bruker;FEIAutoScript;OpenCv;OpenCvSharp"/>
       <dependentAssembly>
       <dependentAssembly>
-        <assemblyIdentity name="SQLitePCLRaw.core" publicKeyToken="1488e028ca7ab535" culture="neutral" />
-        <bindingRedirect oldVersion="0.0.0.0-2.0.7.1395" newVersion="2.0.7.1395" />
+        <assemblyIdentity name="SQLitePCLRaw.core" publicKeyToken="1488e028ca7ab535" culture="neutral"/>
+        <bindingRedirect oldVersion="0.0.0.0-2.0.7.1395" newVersion="2.0.7.1395"/>
       </dependentAssembly>
       </dependentAssembly>
       <dependentAssembly>
       <dependentAssembly>
-        <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
-        <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
+        <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
+        <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0"/>
       </dependentAssembly>
       </dependentAssembly>
       <dependentAssembly>
       <dependentAssembly>
-        <assemblyIdentity name="SQLitePCLRaw.provider.e_sqlite3" publicKeyToken="9c301db686d0bd12" culture="neutral" />
-        <bindingRedirect oldVersion="0.0.0.0-2.0.7.1395" newVersion="2.0.7.1395" />
+        <assemblyIdentity name="SQLitePCLRaw.provider.e_sqlite3" publicKeyToken="9c301db686d0bd12" culture="neutral"/>
+        <bindingRedirect oldVersion="0.0.0.0-2.0.7.1395" newVersion="2.0.7.1395"/>
       </dependentAssembly>
       </dependentAssembly>
     </assemblyBinding>
     </assemblyBinding>
   </runtime>
   </runtime>

+ 1 - 1
OTSInclusionsTraceability/OTSInclusionsTraceability.csproj

@@ -8,7 +8,7 @@
     <OutputType>WinExe</OutputType>
     <OutputType>WinExe</OutputType>
     <RootNamespace>OTSInclusionsTraceability</RootNamespace>
     <RootNamespace>OTSInclusionsTraceability</RootNamespace>
     <AssemblyName>OTSInclusionsTraceability</AssemblyName>
     <AssemblyName>OTSInclusionsTraceability</AssemblyName>
-    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
+    <TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
     <FileAlignment>512</FileAlignment>
     <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
     <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
     <Deterministic>true</Deterministic>
     <Deterministic>true</Deterministic>

+ 3 - 3
OxfordExtenderWrapper/ExtenderWrapper.cs

@@ -595,7 +595,7 @@ namespace OxfordExtenderWrapper
             currentCommand.commandType = OxfordCommandType.COLLECT_XRAYPOINTS;
             currentCommand.commandType = OxfordCommandType.COLLECT_XRAYPOINTS;
           
           
 
 
-            log.Info("线程:开始采集多点xray");
+            //log.Info("线程:开始采集多点xray");
             var PointXrayDatas = currentCommand.XrayPrmForPoints;
             var PointXrayDatas = currentCommand.XrayPrmForPoints;
             currentCommand.PointXrayDataReceived = 0;
             currentCommand.PointXrayDataReceived = 0;
 
 
@@ -610,7 +610,7 @@ namespace OxfordExtenderWrapper
                 prm.b_quant = a_bElementInfo;
                 prm.b_quant = a_bElementInfo;
                 EdSpectrumSettings.ScanSettings.AcquisitionRegion.CreatePointRegion(new System.Windows.Point(prm.x * m_dImagePixelsize, prm.y * m_dImagePixelsize));
                 EdSpectrumSettings.ScanSettings.AcquisitionRegion.CreatePointRegion(new System.Windows.Point(prm.x * m_dImagePixelsize, prm.y * m_dImagePixelsize));
 
 
-                log.Info("开始XrayStartAcquisition:t=" + dMilliSecondsTime.ToString() + "pos=" + "(" + prm.x.ToString() + "," + prm.y.ToString() + ")");
+                //log.Info("开始XrayStartAcquisition:t=" + dMilliSecondsTime.ToString() + "pos=" + "(" + prm.x.ToString() + "," + prm.y.ToString() + ")");
 
 
                 try
                 try
                 {
                 {
@@ -655,7 +655,7 @@ namespace OxfordExtenderWrapper
                 if (time2-time1 > EDSColletionTimeOut * 3)
                 if (time2-time1 > EDSColletionTimeOut * 3)
                 {
                 {
                     EdSpectrumAcquisitionController.EndMultipleAcquisition();
                     EdSpectrumAcquisitionController.EndMultipleAcquisition();
-                    log.Warn("XrayStartAcquisition 超时!");
+                    //log.Warn("XrayStartAcquisition 超时!");
                     currentCommand.returnType = false;
                     currentCommand.returnType = false;
                 }
                 }
             }
             }

文件差异内容过多而无法显示
+ 251 - 171
OxfordExtenderWrapper/Form1.Designer.cs


+ 9 - 1
OxfordExtenderWrapper/Form1.cs

@@ -363,7 +363,15 @@ namespace OxfordExtenderWrapper
             p.height = Convert.ToInt32(txtBSEHeight.Text);
             p.height = Convert.ToInt32(txtBSEHeight.Text);
             p.width = Convert.ToInt32(txtBSEWidth.Text);
             p.width = Convert.ToInt32(txtBSEWidth.Text);
             p.DwellTime = Convert.ToInt32(txtBSEDwell.Text);
             p.DwellTime = Convert.ToInt32(txtBSEDwell.Text);
-            p.sourceType = OINA.Extender.Data.Image.ImageInputSources.Bse;
+            if (cboSource.Text == "BSE")
+            {
+                p.sourceType = OINA.Extender.Data.Image.ImageInputSources.Bse;
+            }
+            else 
+            {
+                p.sourceType = OINA.Extender.Data.Image.ImageInputSources.SE;
+            }
+            
             p.ImageData = new byte[0];
             p.ImageData = new byte[0];
             var thread = new Thread(() =>
             var thread = new Thread(() =>
             {
             {

+ 1 - 1
OxfordExtenderWrapper/OxfordExtenderWrapper.csproj

@@ -37,7 +37,7 @@
     <Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
     <Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
       <SpecificVersion>False</SpecificVersion>
       <HintPath>..\OpenDll\Nlog\NLog.dll</HintPath>
       <HintPath>..\OpenDll\Nlog\NLog.dll</HintPath>
-      <Private>True</Private>
+      <Private>False</Private>
     </Reference>
     </Reference>
     <Reference Include="OINA.Extender, Version=6.1.0.0, Culture=neutral, PublicKeyToken=5efad68c95e0364e, processorArchitecture=MSIL">
     <Reference Include="OINA.Extender, Version=6.1.0.0, Culture=neutral, PublicKeyToken=5efad68c95e0364e, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
       <SpecificVersion>False</SpecificVersion>

+ 22 - 0
StageTxt/apero_10000.txt

@@ -0,0 +1,22 @@
+MIN: Apero
+COORDINATE_SYSTEM: 0
+BOUNDARY:1, 0, 0, 130000, 120000
+STD:0, 6300, 0, 2, 0
+HOLE: 9, 0, 0, 0, 10000, 0
+HOLE: 2, 0, 0, 25000, 10000, 0
+HOLE: 3, 0, -15000, 25000, 10000, 0
+HOLE: 1, 0, 15000, 25500, 10000, 0
+HOLE: 4, 0, 22000, 13000, 10000, 0
+HOLE: 5, 0, 7000, 13000, 10000, 0
+HOLE: 6, 0, -7500, 13000, 10000, 0
+HOLE: 7, 0, -22500, 13000, 10000, 0
+HOLE: 8, 0, 14000, 0, 10000, 0
+HOLE: 10, 0, -15000, 0, 10000, 0
+HOLE: 11, 0, -30000, 0, 10000, 0
+HOLE: 12, 0, 22000, -12500, 10000, 0
+HOLE: 13, 0, 7000, -12500, 10000, 0
+HOLE: 14, 0, -7500, -12500, 10000, 0
+HOLE: 15, 0, -22500, -12500, 10000, 0
+HOLE: 16, 0, 14500, -24500, 10000, 0
+HOLE: 17, 0, -500, -24500, 10000, 0
+HOLE: 18, 0, -14500, -24500, 10000, 0

+ 22 - 0
StageTxt/apero_12000.txt

@@ -0,0 +1,22 @@
+MIN: Apero12
+COORDINATE_SYSTEM: 0
+BOUNDARY:1, 0, 0, 130000, 120000
+STD:0, 6300, 0, 2, 0
+HOLE: 9, 0, 0, 0, 12000, 0
+HOLE: 2, 0, 0, 25000, 12000, 0
+HOLE: 3, 0, -15000, 25000, 12000, 0
+HOLE: 1, 0, 15000, 25500, 12000, 0
+HOLE: 4, 0, 22000, 13000, 12000, 0
+HOLE: 5, 0, 7000, 13000, 12000, 0
+HOLE: 6, 0, -7500, 13000, 12000, 0
+HOLE: 7, 0, -22500, 13000, 12000, 0
+HOLE: 8, 0, 14000, 0, 12000, 0
+HOLE: 10, 0, -15000, 0, 12000, 0
+HOLE: 11, 0, -30000, 0, 12000, 0
+HOLE: 12, 0, 22000, -12500, 12000, 0
+HOLE: 13, 0, 7000, -12500, 12000, 0
+HOLE: 14, 0, -7500, -12500, 12000, 0
+HOLE: 15, 0, -22500, -12500, 12000, 0
+HOLE: 16, 0, 14500, -24500, 12000, 0
+HOLE: 17, 0, -500, -24500, 12000, 0
+HOLE: 18, 0, -14500, -24500, 12000, 0

+ 22 - 0
StageTxt/apero_12000_边界90000.txt

@@ -0,0 +1,22 @@
+MIN: Apero12_90
+COORDINATE_SYSTEM: 0
+BOUNDARY:1, 0, 0, 90000, 90000
+STD:0, 6300, 0, 2, 0
+HOLE: 9, 0, 0, 0, 12000, 0
+HOLE: 2, 0, 0, 25000, 12000, 0
+HOLE: 3, 0, -15000, 25000, 12000, 0
+HOLE: 1, 0, 15000, 25500, 12000, 0
+HOLE: 4, 0, 22000, 13000, 12000, 0
+HOLE: 5, 0, 7000, 13000, 12000, 0
+HOLE: 6, 0, -7500, 13000, 12000, 0
+HOLE: 7, 0, -22500, 13000, 12000, 0
+HOLE: 8, 0, 14000, 0, 12000, 0
+HOLE: 10, 0, -15000, 0, 12000, 0
+HOLE: 11, 0, -30000, 0, 12000, 0
+HOLE: 12, 0, 22000, -12500, 12000, 0
+HOLE: 13, 0, 7000, -12500, 12000, 0
+HOLE: 14, 0, -7500, -12500, 12000, 0
+HOLE: 15, 0, -22500, -12500, 12000, 0
+HOLE: 16, 0, 14500, -24500, 12000, 0
+HOLE: 17, 0, -500, -24500, 12000, 0
+HOLE: 18, 0, -14500, -24500, 12000, 0

部分文件因为文件数量过多而无法显示