/// <summary> /// 나선 객체의 위치를 측정하여 해당 오류값을 넣기 /// </summary> /// <returns></returns> private static string CreateFieldCorrection(IRtc rtc) { ///현재 스캐너 보정 파일 var srcFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "correction", "cor_1to1.ct5"); ///신규로 생성할 스캐너 보정 파일 var targetFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "correction", $"newfile.ct5"); /// 2차원 스캐너 보정용 IRtcCorrection 객체 생성 /// 3x3 (9개) 위치에 대한 보정 테이블 입력 용 var correction = new RtcCorrection2D(0, kfactor, 3, 3, srcFile, targetFile); #region inputs relative error deviation : 상대적인 오차위치 값을 넣는 방법 correction.AddRelative(0, 0, new Vector2(-20, 20), new Vector2(0.01f, 0.01f)); correction.AddRelative(0, 1, new Vector2(0, 20), new Vector2(0.01f, 0.01f)); correction.AddRelative(0, 2, new Vector2(20, 20), new Vector2(0.01f, 0.01f)); correction.AddRelative(1, 0, new Vector2(-20, 0), new Vector2(0.01f, 0.01f)); correction.AddRelative(1, 1, new Vector2(0, 0), new Vector2(0.01f, 0.01f)); correction.AddRelative(1, 2, new Vector2(20, 0), new Vector2(0.01f, 0.01f)); correction.AddRelative(2, 0, new Vector2(-20, -20), new Vector2(0.01f, 0.01f)); correction.AddRelative(2, 1, new Vector2(0, -20), new Vector2(0.01f, 0.01f)); correction.AddRelative(2, 2, new Vector2(20, -20), new Vector2(0.01f, 0.01f)); #endregion #region inputs absolute position values : 오차값의 절대적인 위치 정보를 넣는 방법 //correction.AddAbsolute(0, 0, new Vector3(-20, 20, 0), new Vector3(-20.01f, 20.01f, 0)); //correction.AddAbsolute(0, 1, new Vector3(0, 20, 0), new Vector3(0.01f, 20.01f, 0)); //correction.AddAbsolute(0, 2, new Vector3(20, 20, 0), new Vector3(20.01f, 20.01f, 0)); //correction.AddAbsolute(1, 0, new Vector3(-20, 0, 0), new Vector3(-20.01f, 0.01f, 0)); //correction.AddAbsolute(1, 1, new Vector3(0, 0, 0), new Vector3(0.01f, 0.01f, 0)); //correction.AddAbsolute(1, 2, new Vector3(20, 0, 0), new Vector3(20.01f, 0.01f, 0)); //correction.AddAbsolute(2, 0, new Vector3(-20, -20, 0), new Vector3(-20.01f, -20.01f, 0)); //correction.AddAbsolute(2, 1, new Vector3(0, -20, 0), new Vector3(0.01f, -20.01f, 0)); //correction.AddAbsolute(2, 2, new Vector3(20, -20, 0), new Vector3(20.01f, -20.01f, 0)); #endregion ///신규 보정 파일 생성 실시 bool success = correction.Convert(); /// 보정 파일을 테이블 1번으로 로딩 success &= rtc.CtlLoadCorrectionFile(CorrectionTableIndex.Table1, targetFile); /// 테이블1 번을 1번 스캐너(Primary Head)에 지정 success &= rtc.CtlSelectCorrection(CorrectionTableIndex.Table1); if (success) { return(correction.ResultMessage); } else { return("fail to convert new correction file !"); } }