Files
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

69 lines
1.6 KiB
C

{
"Id": "ae903de4-4fbf-4465-ae6f-92f68ae23852",
"Name": "新建模块",
"DeviceId": "",
"CreatedAt": "2026-07-06T06:17:08.0393627Z",
"UpdatedAt": "2026-07-06T06:17:08.0411194Z",
"Nodes": [
{
"Id": "b9f36939-264b-40c1-956b-eb40354eb3e5",
"OperatorKey": "HistogramEqualization",
"Order": 0,
"IsEnabled": false,
"Parameters": {
"Method": "Global",
"ClipLimit": 2,
"TileSize": 8
}
},
{
"Id": "1c01a4b7-df1e-4241-a73c-c6398dd275a6",
"OperatorKey": "Contrast",
"Order": 1,
"IsEnabled": true,
"Parameters": {
"Contrast": 1,
"Brightness": 0,
"AutoContrast": false,
"UseCLAHE": false,
"ClipLimit": 2
}
},
{
"Id": "a0119120-944e-40ed-b2ff-2a9e99c004e5",
"OperatorKey": "Gamma",
"Order": 2,
"IsEnabled": true,
"Parameters": {
"Gamma": 1,
"Gain": 1
}
},
{
"Id": "b9e7a12d-5ade-4e7b-9ceb-f77dd98e4eab",
"OperatorKey": "Sharpen",
"Order": 3,
"IsEnabled": false,
"Parameters": {
"Method": "Laplacian",
"Strength": 1,
"KernelSize": 3
}
},
{
"Id": "c26953b7-df7f-4b54-b495-9a60a3d98636",
"OperatorKey": "HDREnhancement",
"Order": 4,
"IsEnabled": false,
"Parameters": {
"Method": "AdaptiveLog",
"Gamma": 1,
"Saturation": 1,
"DetailBoost": 1.5,
"SigmaSpace": 20,
"SigmaColor": 30,
"Bias": 0.85
}
}
]
}