public override ScanData DoTask(ScanData source) { LastError = string.Empty; if (!ValidFile) { string file = ShowDialog(); if (!string.IsNullOrEmpty(file)) { this.Filename = file; } } if (ValidFile) { this.Status = eTaskStatus.Working; UpdatePercent(0, null); ScanData ret = ScanDataIO.Read(this.Filename); this.Status = eTaskStatus.Finished; UpdatePercent(100, ret); return(ret); } else { this.Status = eTaskStatus.Error; LastError = String.Format("Invalid File {0}", this.Filename); } return(null); }
private void MainForm_Load(object sender, EventArgs e) { //FillCameraComboBox(); AlignInterface(); this.OpenPointsDlg.DefaultExt = ScanDataIO.GetDialogFilter(); this.OpenPointsDlg.InitialDirectory = Program.UserDataPath; }
private void LoadDefaultScene() { string path = Path.Combine(Program.UserDataPath, "startup" + ScanDataIO.DefaultExtention); if (File.Exists(path)) { ScanData Points = ScanDataIO.Read(path); Scene.Clear(); Scene.Add(Points); Invalidate(); } }
public ScanData OpenColoreddPointArray(IScene3DViewer viewer) { if (this.OpenPointsDlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) { string path = Path.Combine(Program.UserDataPath, this.OpenPointsDlg.FileName); ScanData points = ScanDataIO.Read(path); if (viewer != null) { viewer.Scene.Clear(); viewer.Scene.Add(points); viewer.Invalidate(); } return(points); } return(null); }
string ShowDialog() { DialogResult result = DialogResult.Ignore; OpenFileDialog dlg = new OpenFileDialog(); dlg.Filter = ScanDataIO.GetDialogFilter(); dlg.InitialDirectory = Program.UserDataPath; dlg.CheckFileExists = true; if (CallerControl != null) { CallerControl.Invoke(new Action(() => result = dlg.ShowDialog())); } else { result = dlg.ShowDialog(); } if (result == DialogResult.OK) { return(dlg.FileName); } return(string.Empty); }
private void CorrectionMatrix_Load(object sender, EventArgs e) { try { if (File.Exists(QuickFileName)) { ProcessScanData(ScanDataIO.Read(QuickFileName)); } EnableLaser(true); } catch { EnableLaser(false); } Drag = new DragBallNavigator(PreviewPanel); Drag.Init(); this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint | ControlStyles.OptimizedDoubleBuffer | ControlStyles.Selectable, true); typeof(Panel).InvokeMember("DoubleBuffered", BindingFlags.SetProperty | BindingFlags.Instance | BindingFlags.NonPublic, null, PreviewPanel, new object[] { true }); PreviewPanel.TabStop = true; this.MouseWheel += Drag.MouseWheel; }
public override ScanData DoTask(ScanData source) { if (!HardwareAvailable) { throw new Exception(string.Format("HardWare missing : TURNTABLE:{0} LASER:{1} CAMERA:{2}", HardwarePresentTrace(TurnTable), HardwarePresentTrace(Laser), HardwarePresentTrace(Camera))); } RotationStep = (double)Math.Round(TurnTable.MinimumRotation() + (15f - TurnTable.MinimumRotation()) * ((100 - Precision) / 100f), 2); Settings settings = Settings.Get <Settings>(); CameraLoc.X = settings.Read(Settings.CAMERA, Settings.X, 0f); CameraLoc.Y = settings.Read(Settings.CAMERA, Settings.Y, 270f); CameraLoc.Z = settings.Read(Settings.CAMERA, Settings.Z, 70f); double thres = settings.Read(Settings.LASER_COMMON, Settings.MAGNITUDE_THRESHOLD, 10); int min = settings.Read(Settings.LASER_COMMON, Settings.MIN_WIDTH, 1); int max = settings.Read(Settings.LASER_COMMON, Settings.MAX_WIDTH, 60); ICameraProxy camera = Settings.Get <ICameraProxy>(); ImageProcessor = new ImageProcessor(thres, min, max); SizeF tableSize = new SizeF( (float)settings.Read(Settings.TABLE, Settings.DIAMETER, 20f), (float)settings.Read(Settings.TABLE, Settings.HEIGHT, 15f) ); Lasers = new List <LaserInfo>(LaserId.Length); for (int i = 0; i < LaserId.Length; i++) { Lasers.Add(new LaserInfo(LaserId[i], CameraLoc, tableSize)); } ScanData ret = new ScanData(); UpdatePercent(0, ret); int fadeTime = settings.Read(Settings.LASER_COMMON, Settings.FADE_DELAY, 100); TurnTable.InitialiseRotation(); int laserCount = Lasers.Count; // Scan all laser location, for (double currentAngle = 0; currentAngle < 360f; currentAngle += RotationStep) { if (this.CancelPending) { return(ret); } Laser.TurnAll(false); // All laser off Thread.Sleep(fadeTime); // wait fade laser Bitmap imgoff = GetCapture(); for (int laserIndex = 0; laserIndex < laserCount; laserIndex++) { Laser.Turn(Lasers[laserIndex].Id, true); Thread.Sleep(fadeTime); // wait fade laser Bitmap imgon = GetCapture(); Laser.Turn(Lasers[laserIndex].Id, false); List <PointF> laserloc = ImageProcessor.Process(imgoff, imgon, null); Point3DList samplePoints = Lasers[laserIndex].MapPoints(laserloc, UseTexture ? imgoff : null, UseCorrectionMatrix); PositionPostProcess(ref samplePoints, -Utils.DEGREES_TO_RADIANS(currentAngle)); ScanLine line = new ScanLine(laserIndex, samplePoints); line.DisplayAsLine = true; ret.Add(line); } int percent = (int)((currentAngle / 360f) * 100f); UpdatePercent(percent, ret); TurnTable.Rotate(currentAngle, false); } LineSort lineSort = new LineSort(); ret = lineSort.Run(ret, CallerControl, this.Worker, this.WorkerArg); if (!string.IsNullOrEmpty(FileName)) { string path = Path.Combine(Program.UserDataPath, FileName); ScanDataIO.Write(path, ret); } return(ret); }
protected virtual void Save(ScanData source) { ScanDataIO.Write(Filename, source); }