Files
XplorePlane/ReleaseFiles/CalibrationConfig.json
XplorePlane Developer 957157ae80 fix: 修复编译错误、BGA向导预览、算子重复插入及状态栏消息
## Compilation fixes
- Fix XAML namespace reference XplorePlane.Converters → XplorePlane.Helpers (EventLogView, StateDisplayView)
- Add missing using for ISampleTypeRepository / JsonSampleTypeRepository in App.xaml.cs
- Fix ILoggerService.Warn() calls using Exception as first arg instead of message string
- Serialize CncProgram to JSON when passing to MatrixLayout (expects string, not CncProgram object)
- Suppress CS8632 nullable annotation warnings project-wide

## BGA wizard fixes
- Fix preview not showing on step 3: force RefreshBgaPreview() when entering final step
- Add step validation in CanNext() to prevent skipping to preview with invalid inputs
- Notify NextCommand.CanExecuteChanged when inputs change
- Fix RunProgress runtime binding error: set Mode=OneWay for ProgressBar.Value

## Operator toolbox: prevent duplicate insertion
- Add static OperatorTarget property for direct dispatch to active pipeline
- PipelineEditorView registers as toolbox target on load (floating window only)
- CNC page sets initial target; PipelineEditorWindow resets to CNC pipeline on close
- '+' button inserts only to the active pipeline instead of broadcasting to all subscribers

## Pipeline editor status bar messages
- Add StatusBarMessageEvent / StatusBarMessagePayload to CommonEvents.cs
- PipelineEditorViewModel publishes status on all ops (add/remove/reorder/save/execute)
- MainViewModel subscribes and displays on main window bottom status bar
- Auto-clear after timeout (3s info, 5s error)

## docs
- Merge three architecture docs into consolidated XplorePlane-架构与结构说明.md
2026-07-24 15:59:16 +08:00

129 lines
3.0 KiB
JSON

{
"DetectorCentering": {
"Name": "探测器居中标定",
"Type": "DetectorCentering",
"MotionTimeoutMs": 30000,
"SettleDelayMs": 500,
"FrameCount": 1,
"Steps": [
{
"Index": 0,
"Description": "探测器居中位置",
"StageX": 0.0,
"StageY": 0.0,
"SourceZ": -200.0,
"DetectorZ": 300.0,
"DetectorSwing": 0.0,
"StageRotation": 0.0
}
]
},
"ZCalibration": {
"Name": "Z轴标定",
"Type": "ZCalibration",
"MotionTimeoutMs": 30000,
"SettleDelayMs": 500,
"FrameCount": 1,
"Steps": [
{
"Index": 0,
"Description": "Z标定 - 位置1",
"StageX": 0.0,
"StageY": 0.0,
"SourceZ": -150.0,
"DetectorZ": 250.0,
"DetectorSwing": 0.0,
"StageRotation": 0.0
},
{
"Index": 1,
"Description": "Z标定 - 位置2",
"StageX": 0.0,
"StageY": 0.0,
"SourceZ": -200.0,
"DetectorZ": 300.0,
"DetectorSwing": 0.0,
"StageRotation": 0.0
},
{
"Index": 2,
"Description": "Z标定 - 位置3",
"StageX": 0.0,
"StageY": 0.0,
"SourceZ": -250.0,
"DetectorZ": 350.0,
"DetectorSwing": 0.0,
"StageRotation": 0.0
}
]
},
"RotationTableCenter": {
"Name": "旋转中心检测",
"Type": "RotationTableCenter",
"MotionTimeoutMs": 60000,
"SettleDelayMs": 1000,
"FrameCount": 1,
"Steps": [
{
"Index": 0,
"Description": "旋转0°",
"StageX": 0.0,
"StageY": 0.0,
"SourceZ": -200.0,
"DetectorZ": 300.0,
"DetectorSwing": 0.0,
"StageRotation": 0.0
},
{
"Index": 1,
"Description": "旋转90°",
"StageX": 0.0,
"StageY": 0.0,
"SourceZ": -200.0,
"DetectorZ": 300.0,
"DetectorSwing": 0.0,
"StageRotation": 90.0
},
{
"Index": 2,
"Description": "旋转180°",
"StageX": 0.0,
"StageY": 0.0,
"SourceZ": -200.0,
"DetectorZ": 300.0,
"DetectorSwing": 0.0,
"StageRotation": 180.0
},
{
"Index": 3,
"Description": "旋转270°",
"StageX": 0.0,
"StageY": 0.0,
"SourceZ": -200.0,
"DetectorZ": 300.0,
"DetectorSwing": 0.0,
"StageRotation": 270.0
}
]
},
"CTCalibration": {
"Name": "CT标定",
"Type": "CTCalibration",
"MotionTimeoutMs": 60000,
"SettleDelayMs": 1000,
"FrameCount": 1,
"Steps": [
{
"Index": 0,
"Description": "CT标定 - 起始位",
"StageX": 0.0,
"StageY": 0.0,
"SourceZ": -200.0,
"DetectorZ": 300.0,
"DetectorSwing": 0.0,
"StageRotation": 0.0
}
]
}
}