public WorkAlignmentViewModel(IMachine machine) : base(machine)
        {
            AlignBoardCommand            = new RelayCommand(AlignBoard, CanAlignBoard);
            CancelBoardAlignmentCommand  = new RelayCommand(CancelBoardAlignment, CanCancelBoardAlignment);
            EnabledFiducialPickerCommand = new RelayCommand(() => Machine.PCBManager.IsSetFiducialMode = true);

            _positionManager = new BoardAlignmentPositionManager(Machine.PCBManager);
            _timer           = new Timer(Timer_Tick, null, Timeout.Infinite, Timeout.Infinite);
        }
        public BoardAlignmentManager(IMachine machine, ILogger logger, IPCBManager boardManager, IPointStabilizationFilter pointStabilizationFilter)
        {
            _machine                  = machine;
            _logger                   = logger;
            _boardManager             = boardManager;
            _machine.PropertyChanged += _machine_PropertyChanged;
            _pointStabilizationFilter = pointStabilizationFilter;

            _positionManager = new BoardAlignmentPositionManager(boardManager);

            _timer = new Timer(Timer_Tick, null, Timeout.Infinite, Timeout.Infinite);
        }