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
XplorePlane Developer
1f26d10358
修复算子工具箱插入错误 启动时 → target = CNC 流水线
...
打开实时流水线 → target = 实时流水线浮动窗口
在实时流水线窗口 → "+" 只插入实时流水线
关闭实时流水线 → target 回退到 CNC 流水线
在 CNC 页面 → "+" 只插入 CNC 模块
2026-07-24 15:46:18 +08:00
XplorePlane Developer
152ac39798
refactor: CNC 编排面板统一嵌入主界面,不再弹出独立窗口
2026-07-24 14:55:03 +08:00
XplorePlane Developer
78c552d413
移除将当前流水线插入CNC的功能
2026-07-24 14:46:49 +08:00
XplorePlane Developer
8f950ac6fa
refactor: 虚拟仿真默认导航图像从 相机1.bmp 改为 PhotoImage.png
2026-07-24 14:13:16 +08:00
XplorePlane Developer
b504dc44c0
refactor(P0): 泛型仓储基类 + MainViewModel partial 拆分
2026-07-24 14:01:53 +08:00
XplorePlane Developer
9a50e71758
fix: Splash关闭后MainWindow置顶显示
2026-07-24 11:57:12 +08:00
XplorePlane Developer
575f25d92f
refactor: 移除主视口检测池运行时界面层并清理对应死代码
2026-07-24 11:52:38 +08:00
XplorePlane Developer
d86a934fe8
引入向导
2026-07-24 11:36:46 +08:00
XplorePlane Developer
e1486ff7f0
更新架构文档说明
2026-07-24 10:43:45 +08:00
XplorePlane Developer
1e037199f2
修复编译错误
2026-07-24 10:22:20 +08:00
XplorePlane Developer
aeadc86ebe
feat: 检测池 YXLON 对标 - 任务2 BGA 引导式向导弹窗
2026-07-24 10:13:23 +08:00
XplorePlane Developer
4276ba00e0
feat: 检测池 YXLON 对标 - 任务1 样品类型一体化 UI 与多项 Cnc/图像处理改进
2026-07-24 09:56:11 +08:00
XplorePlane Developer
81e37a34df
refactor: merge DefaultPasswords and PermissionMatrix into PermissionService.cs
2026-07-24 09:41:33 +08:00
XplorePlane Developer
83b3a91176
refactor: move utility files to Helpers/, merge dialog interface into Views
2026-07-24 09:38:16 +08:00
XplorePlane Developer
0c0aebe306
refactor: merge Cnc service utility files
2026-07-24 09:33:43 +08:00
XplorePlane Developer
b6fbcc9708
refactor: merge StateChangedEventArgs into AppStateService.cs
2026-07-24 09:30:28 +08:00
XplorePlane Developer
c96fbe9c56
refactor: merge 3 Security model files into SecurityModels.cs
2026-07-24 09:29:24 +08:00
XplorePlane Developer
de52c8bee4
refactor: merge 3 ScaleBar enum files into ScaleBarOverlay.cs
2026-07-24 09:26:04 +08:00
XplorePlane Developer
cda6d234cf
refactor: move Converters.cs from Converters/ to Helpers/, update namespace
2026-07-24 09:25:06 +08:00
XplorePlane Developer
f41f581b5a
refactor: merge and simplify Inspection service files
...
Consolidates 33 Inspection service files by extracting shared utilities,
merging small/singleton classes, and eliminating code duplication (~275 lines
of net reduction).
Changes:
- Extract InspectionBitmapEncoder – centralizes Bmp/PngBitmapEncoder logic
previously duplicated in InspectionExecutionRecorder, PoolArchiveHelper,
InspectionMapStore
- Extract InspectionJsonDefaults – centralizes JsonSerializerOptions
previously defined in 4 files (InspectionDefinitionSnapshot,
JsonInspectionDefinitionRepository, InspectionMapStore, InspectionResultStore)
- Extract InspectionMetricHelper – shares Metrics→InspectionMetricResult
mapping between InspectionExecutionRecorder and PoolArchiveHelper
- Extract InspectionPixelAnalysis to its own file – detaches pixel utilities
from AdvancedInspectionExecutors so MosaicInspectionAcquisitionService can
reference them without a cross-concern dependency
- Merge InspectionDefinitionSnapshot.Clone → JsonInspectionDefinitionRepository
then delete standalone file
- Merge IPoolInteraction enum+interface into DefaultPoolInteraction.cs
- Merge InspectionManifestWriter.WriteAsync into InspectionResultStore as
WriteManifestAsync, delete separate file
- Combine IInspectionDefinitionDialogService + IInspectionPoolDialogService
into IInspectionDialogService, update all consumers
- Deduplicate coordinate validation by adding
InspectionCoordinateTransform.ValidateOrError() and calling it from
InspectionDefinitionValidator instead of inlining the same checks
- Delete: IInspectionDefinitionDialogService.cs, InspectionDefinitionSnapshot.cs,
InspectionRunDetailModels.cs (duplicate of Models namespace types)
2026-07-24 09:07:14 +08:00
XplorePlane Developer
a00ce714c8
fix: 主视口检测池面板默认可见 + 红线框立即绘制 + 新增方案入口
...
- InspectionPoolRuntimePanel 默认 Visible(之前 Collapsed 导致用户
找不到配置入口),无方案时显示"选择方案或创建新方案"
- 新增"新建方案"按钮,直接打开检测池设置窗口
- RenderInspectionPoolOverlay 移除对 RoiCanvas.CanvasWidth <= 0
的拦截,画布无图像时使用 1400×1400 默认尺寸绘制红线框预览
- RenderWithLogicalDivision 接收外部 canvasW/canvasH 参数,
不再硬绑定 RoiCanvas 当前尺寸
- 恢复误删的 ProgressBar + Null 安全检查
修改文件:
- Views/Main/ViewportPanelView.xaml
- Views/Main/ViewportPanelView.xaml.cs
2026-07-23 17:49:55 +08:00
XplorePlane Developer
60fb293ef1
feat: 检测池编辑器改为步骤树导航,对齐参考软件 UX
...
新增 EditorStepItem 步骤树模型,替换原来的平铺参数列表:
- 左侧改为双 Tab:「项目」列表 +「步骤」树
- 步骤树按执行顺序排列:基本设置 / BGA 焊球矩阵 / Overview
/ Tile[0,0]~Tile[1,1] / Restore Position
- 右侧属性面板根据选中的步骤动态切换内容
- 新增 Description 字段
- BGA 参数变更时自动重建步骤树
新增 1 文件,修改 3 文件:
- ViewModels/Inspection/Pool/EditorStepItem.cs(新)
- ViewModels/Inspection/Pool/InspectionPoolPageViewModel.cs
- Views/Inspection/Pool/InspectionPoolPageView.xaml
2026-07-23 17:24:27 +08:00
XplorePlane Developer
a594887bd8
feat: 检测池页面精简与全链路补齐
...
页面重组:
- 3-Tab 配置向导合并为一页式布局,减少操作层级
- BGA 参数变更时自动生成 Tile,不再需要手动点"生成 Tile"
- Tile 步距从 Magnification + Pitch 自动推算(mmPerPixel 换算)
- Tile DataGrid 改为只读预览,去除复杂的 Tile 增/删/排序编辑
- 去除"启用序列"复选框,BGA 默认走 Overview→Tiles→Restore 序列
- 新增 TilePreviewSummary 属性,实时显示"4 个 Tile · 4×4 Ball"
全链路补齐(之前已完成):
- Phase 1: BgaBallResult / OverallSummary 强类型化
- Phase 2: InspectionPoolResultWindow 结果弹窗
- Phase 3: ImageStitchingService 图像拼接 + 拼接图统一检测
- Phase 3: 红线框 Overlay + Ball 标注
- P1: IPoolInteraction Tile 失败重试/跳过/中止
- P1: PoolArchiveHelper 子 Run 归档 + CNC 主 Run 关联事件
新增 8 文件,修改 15 文件
2026-07-23 16:43:10 +08:00
XplorePlane Developer
58cb345ada
feat: 检测池 P0/P1 补齐 — 拼接/弹窗/强类型/交互/归档
...
Phase 1 — 结果模型强类型化:
- BgaBallResult(BallId/Status/Measured/Confidence/S/D/M/F/V)
- OverallSummary(Expected/Detected/Pass/Fail/Miss/Error)
- BgaTileResultMerger 产出 BallResults + Summary
Phase 2 — 结果弹窗 InspectionPoolResultWindow:
- 16 Ball 明细 + S/D/M/F/V + 汇总计数 + 总体判定横幅
- Continue/Abort 按钮 + FAILED 时备注提示
- 执行完成后主视口自动弹出
Phase 3 — 图像拼接 ImageStitchingService:
- 基于平台坐标计算像素偏移 + 羽化融合 + 质量评分
- 执行流改为「采集→拼接→统一 BGA 检测」
- 结果行通过 Ball ID 反算归属 Tile
Phase 1-P1 — Tile 异常交互与 CNC 子 Run 归档:
- IPoolInteraction 接口(Retry/Skip/Abort),最多 3 次重试
- CNC 语境默认跳过,独立运行弹窗交互
- PoolArchiveHelper:检测池子 Run 归档 + CNC 主 Run 追加摘要
- DI 注册新增服务
新增 8 文件,修改 12 文件
2026-07-23 16:31:16 +08:00
XplorePlane Developer
8dd9b67c3b
图像拼接
2026-07-23 16:26:38 +08:00
XplorePlane Developer
2c99df750a
feat: 检测池 P0 补齐 — 结果强类型化 + 结果弹窗
...
Phase 1 — 结果模型强类型化:
- InspectionDefinitionModels.cs 新增 BgaBallResult record(BallId, Status,
Measured, Confidence, Size/Displacement/SolderMass/Deformation/Voids,
SourceTileId, FailureReason)和 OverallSummary record(Expected/
Detected/Pass/Fail/Miss/Error计数)
- InspectionExecutionResult 新增 BallResults / Summary 属性
- BgaTileResultMerger.Merge() 同步产出强类型 BallResults 和 Summary,
MISS 行指标为 null、Measured=false
Phase 2 — 结果弹窗 InspectionPoolResultWindow:
- 新增窗口:16 Ball 明细 DataGrid(ID/Result/Confidence/S/D/M/F/V/Tile/
FailureReason)+ 汇总区(Expected/Detected/Pass/Fail/Miss/Error + 总
体 PASSED/FAILED 横幅)+ 备注 + Continue/Abort
- 新增 InspectionPoolResultViewModel
- InspectionPoolEvents.cs Payload 增加 BallResults/Summary 字段
- InspectionExecutionCoordinator PublishCompleted 传入 BallResults
- ViewportPanelView.xaml.cs 执行完成后弹出结果窗口,Continue/Abort
和备注反馈回状态栏
2026-07-23 16:20:13 +08:00
XplorePlane Developer
4f7b299da6
feat: Tile 生成从硬编码 2×2 升级为动态 N×M 网格
...
GenerateTwoByTwo() 仅支持将 BGA 网格一分为二(最多 4 个 Tile),
无法满足更大 BGA 阵列(如 9×9)需要更细 Tile 划分的场景。
修改:
- InspectionPoolSequenceEditorMapper.GenerateTwoByTwo() →
GenerateTiles(grid, tileRows, tileColumns, stepXmm, stepYmm)
支持任意行列划分,每 Tile 均匀分摊 Ball,超出 BGA 范围时自动截断
- InspectionPoolPageViewModel 新增 TileGridRows / TileGridColumns
属性(默认 2×2),命令名 GenerateTwoByTwoTilesCommand →
GenerateTilesCommand
- InspectionPoolPageView.xaml 增加 Tile 行数 / Tile 列数输入框,
替换原只有步距输入+2×2按钮的布局
- 测试同步更新,新增 9×9×3×3、6×6×2×2、溢出 BGA 等用例
2026-07-23 16:12:42 +08:00
XplorePlane Developer
9d28228839
feat: 统一 XP 文件扩展名体系 — 矩阵 .xpmatrix / 检测池 .xppool
...
原矩阵布局和检测池定义文件均使用泛型 .json 后缀,无法从文件名
区分内容类型。现按 xp- 前缀 + 全拼命名约定统一:
.xp → CNC 程序 (不变)
.xpm → 流水线模块 (不变)
.xpz → CNC 迁移包 (不变)
.xpmap → 检查标记图 (不变)
.xpmatrix → 矩阵布局方案 (原 .json)
.xppool → 检测池定义 (原 .json)
修改:
- Resources.resx / zh-CN / en-US / zh-TW:Matrix_JsonFileFilter →
Matrix_XpmatrixFileFilter(矩阵方案文件 *.xpmatrix)
- MatrixEditorViewModel.cs:保存/加载对话框默认扩展名
.json → .xpmatrix,filter 名同步更新
- JsonInspectionDefinitionRepository.cs:文件扫描模式
*.json → *.xppool,GetPath() 文件名模板同步更新
2026-07-23 15:45:05 +08:00
XplorePlane Developer
e1a656c244
fix(cnc): 补全 ResultTables 数据链路,BGA焊球明细表现在 UI 卡片中可显示
...
InspectionReportViewer 的 PopulateDetailPanel 从 detail.ResultTables
读出了 BGA焊球明细等结构化结果表,但从未传给 ViewModel/View 层,
导致 UI 仅显示了汇总指标(Metrics),明细表整段丢失。
修改:
- InspectionNodeCardViewModel 新增 resultTables 构造函数参数,
筛选本节点表数据,暴露 HasResultTables / ResultTableColumns / ResultTableRows
- InspectionReportViewerViewModel.PopulateDetailPanel 传递 detail.ResultTables
- InspectionReportViewerWindow.xaml 每个节点卡片底部添加检测明细 DataGrid
- InspectionReportViewerWindow.xaml.cs 代码后置动态生成列 + 不合格行标红
2026-07-23 15:33:39 +08:00
zhengxuan.zhang
e5f0aef9a7
增加 导入和导出功能
2026-07-23 13:22:17 +08:00
zhengxuan.zhang
6be3018566
新增CNC程序编辑恢复、导出与导入功能
...
编辑恢复:
- 新增 CncEditSessionStateService,记录编辑会话状态(session.json)并支持
5 秒防抖 autosave,用于程序异常退出/切换页面后继续编辑
- CncEditorViewModel 集成会话恢复:打开编辑器时优先询问是否恢复未保存的
autosave 内容,否则静默恢复上次打开的文件;保存/关闭/退出时写入会话状态
- CncNodeViewModel 新增 IsManualImageMissing 计算属性,CncPageView 树节点
据此标红提示手动图片文件缺失
导出(跨设备迁移):
- 新增 CncPackageExportService,将 .xp 程序及其引用的手动图片、模板匹配
资产打包为 .xpz(ZIP),资产路径重写为包内相对路径,生成含来源机器信息
和 SHA256 校验和的 manifest.json
- CncEditorViewModel 新增 ExportPackageCommand;MainWindow Ribbon「文件」
组新增「导出CNC包」按钮
导入(跨设备迁移):
- 新增 CncProgramIntegrityChecker,统一校验资产缺失(复用编辑恢复同一套
判定标准)、坐标越界(对照本机 MotionControlConfig 轴限位)、设备相关
参数人工核对提示,供编辑恢复/导出/导入三处场景共用
- 新增 CncPackageImportService,解压 .xpz、校验 manifest 中的 SHA256、
反序列化程序、把资产落地到本机 Plan/{程序名}_import_{时间戳}/Assets/
并重写为本机绝对路径,返回完整性报告
- CncEditorViewModel 新增 ImportPackageCommand:导入前对未保存修改二次
确认,导入后按报告弹出「X 个节点正常 / Y 个节点需人工核对」提示;
MainWindow Ribbon 新增「导入CNC包」按钮
- Resources 四语言资源文件补充导入/导出相关文案键
涉及文件:
- 新增 Services/Cnc/{CncEditSessionStateService,CncPackageExportService,
CncPackageImportService,CncProgramIntegrityChecker}.cs
- 新增 Models/Cnc/CncPackageModels.cs
- 修改 ViewModels/Cnc/{CncEditorViewModel,CncNodeViewModel}.cs
- 修改 ViewModels/Main/MainViewModel.cs
- 修改 Views/Main/MainWindow.xaml、Views/Cnc/CncPageView.xaml
- 修改 App.xaml.cs(服务注册)
- 修改 Resources/Resources*.resx(zh-CN/zh-TW/en-US/默认)
构建验证:dotnet build XplorePlane/XplorePlane.csproj -c Debug --no-restore
通过,0 个编译错误(existing 的 CS8604 可空引用警告与本次改动无关)
2026-07-23 13:21:42 +08:00
zhengxuan.zhang
74cb77b911
CNC编排算子预览受实时生效总开关控制
...
CncInspectionModulePipelineViewModel 新增 IsRealtimeApplyEnabled 属性,
TriggerDebouncedPreview 在开关关闭时跳过执行。与 PipelineEditorView 中
已有的眼睛按钮绑定一致,用户关闭后加载/启用算子不再触发实时预览。
2026-07-23 11:07:46 +08:00
zhengxuan.zhang
abd82b4403
CNC编排改为嵌入式面板,替换实时流水线显示
...
- CNC编排不再弹出独立窗口,改为在右侧面板中替换实时流水线
- MainViewModel新增IsCncEditorMode/ActivePanelContent属性控制面板切换
- ImagePanelView改为ContentControl绑定ActivePanelContent,CNC模式下
显示标题栏和"关闭编排"按钮
- 打开CNC时面板宽度扩大到540,关闭时恢复320
- 关闭CNC编排时检查IsModified,提示是否保存
- ExecuteCncEditorAction不再弹窗,统一走嵌入式面板
- 新增Cnc_ConfirmSaveBeforeClose多语言资源
2026-07-23 10:50:46 +08:00
zhengxuan.zhang
dda00f4a8a
优化检测记录查看器和Pipeline编辑器UI
...
检测记录查看器(InspectionReportViewerWindow):
- 左侧列表宽度从520缩小到380,右侧详情区获得更多空间
- 取消比例尺显示(ScaleBarDisplayMode枚举新增Hidden值)
- 节点卡片内图片和指标表从上下排列改为左右排列
- 摘要区域新增开始时间和完成时间字段
- 移除底部事件时间线区域(关键信息已合并到摘要)
Pipeline编辑器(PipelineEditorView):
- 输出控制GroupBox仅在算子存在OutputXxx参数时显示
- PipelineNodeViewModel新增HasOutputControls属性
- PipelineEditorView.xaml注册BooleanToVisibilityConverter
2026-07-23 10:30:15 +08:00
zhengxuan.zhang
b0d746c7bf
Merge branch 'Develop/XP' into Feature/TURBO-002-Cnc
2026-07-23 09:15:21 +08:00
zhengxuan.zhang
47a2df84c7
修复CNC执行错误提示和输出控制写入manifest
...
- 添加 Cnc_NodeExecutionFailed 多语言资源(中/英/繁),修复弹窗
显示资源键名而非本地化文本的问题
- ExtractResultTables 根据 Pipeline 参数中的 OutputXxx 控制项
动态过滤结果表的行字段和列定义,取消勾选的字段不再写入
manifest.json
- 新增 GetOutputConfig 辅助方法从 Pipeline 节点参数提取输出配置
2026-07-22 17:48:53 +08:00
zhengxuan.zhang
bcd0bbecf9
增加联网更新文档
2026-07-22 17:32:28 +08:00
ZHANG Zhengxuan
bce09243aa
已合并 PR 195: 累计功能
...
1、新增浮动调试工具栏,目前只有一个随机移动XY按钮;
2、解决启动速度问题
3、调整主界面,将硬件相关降低级别
4、完善CNC对齐命令
2026-07-22 17:14:59 +08:00
zhengxuan.zhang
9063b73938
完善联网更新功能:启动自动检查、设置页面配置、发布脚本
...
- 设置页面通用Tab新增"联网更新"配置卡片:更新服务器地址输入框、
启动时检查更新开关,保存后持久化到 App.config
- App.xaml.cs 启动完成后延迟5秒静默检查更新,有新版本弹窗提示重启
- SettingsViewModel 新增 UpdateServerUrl/UpdateCheckOnStartup 属性
- 修复标定文件写入路径:calibrationDir 改为数据目录避免安装目录权限问题,
TryAutoLoadCalibration 增加外层 try-catch 防止启动崩溃
- 新增 build-release.ps1 发布脚本:编译、vpk打包、部署到WampServer一键完成
2026-07-22 17:13:39 +08:00
zhengxuan.zhang
6c3faab87a
集成 Velopack 联网更新功能
...
- 添加 Velopack 1.2.0 NuGet 包
- 新建 AppUpdateService(IAppUpdateService),支持从内网 HTTP 服务器
检查版本、下载增量/全量包、应用更新并重启
- App.xaml.cs 入口添加 VelopackApp.Build().Run() 初始化钩子
- App.config 新增 Update:ServerUrl 和 Update:CheckOnStartup 配置项
- MainViewModel 新增 CheckForUpdateCommand,MainWindow Ribbon 帮助组
添加"检查更新"按钮
- DI 容器注册 IAppUpdateService 为单例
2026-07-22 16:36:17 +08:00
zhengxuan.zhang
f30c42ad1f
修复汇总:
...
CncNodeExecutionProgress record — 新增 ErrorMessage 可选参数,用于传递具体错误信息到 UI 层
CncExecutionService 主循环 —
新增 nodeErrorMessage 局部变量收集错误信息
Pipeline 返回 null 时设 nodeSucceeded = false 并记录默认错误描述
catch 块中同时记录 ex.Message 到 nodeErrorMessage
progress report 传递 ErrorMessage: nodeErrorMessage
CncEditorViewModel.OnExecutionProgress — Failed 状态时:
读取 progress.ErrorMessage 显示具体原因
StatusMessage 包含错误详情
新增弹窗通知:_dialogs.Show("Cnc_NodeExecutionFailed", ...) 弹出错误对话框
现在 CNC 执行中任何算子异常都会同时通过:
底部状态栏显示红色错误文字
节点树中节点变红(Failed 状态)
弹窗提醒用户具体哪个节点失败及原因
2026-07-22 16:24:29 +08:00
zhengxuan.zhang
d1f1c09988
CncPageView.xaml — 运动参数标签从 (μm) 改为 (mm):载物台 X/Y、射线源 Z、探测器 Z、FOD、FDD
...
StateModels.cs — MotionState record 注释修正:直线轴单位标注从 μm 改为 mm,与实际从 ActualPosition(mm)读取的值一致
2026-07-22 15:48:31 +08:00
zhengxuan.zhang
0abb204c82
1. 插入CNC后自动关闭窗体
...
三个 ViewModel 新增 Action RequestClose 属性
ExecuteInsertToCnc 成功后调用 RequestClose?.Invoke()
code-behind 中绑定 RequestClose = () => Close()
2. 输出控制 CheckBox 联动表格列显隐
新建 BindingProxy 辅助类(解决 DataGridColumn 不继承 DataContext 的问题)
三个面板的 DataGrid 列通过 Visibility="{Binding Data.OutputXxx, Source={StaticResource Proxy}, Converter={StaticResource BoolToVis}}" 绑定到对应的输出控制属性
取消勾选某项后,对应列即时隐藏;CNC 执行时 Processor 会读取这些 OutputXxx 参数来决定写入 manifest.json 的字段
2026-07-22 15:40:27 +08:00
zhengxuan.zhang
8b1d20bd34
高级算子模块 输出参数的控制
2026-07-22 15:40:20 +08:00
zhengxuan.zhang
98b7fe3d48
修复CNC检测模块Pipeline预览执行时源图像循环污染问题
...
编辑Pipeline(启用/禁用算子等)触发预览后,结果图像会更新到主视口,
导致下次预览从视口取到的是上次结果而非原图,形成输入循环。
修复方式:
- 选中检测模块时快照当前视口原始源图像并缓存到 _originalSourceImage
- ResolvePreviewSourceImage 优先返回缓存的原图
- 切换/取消选中模块时清空缓存
2026-07-22 14:51:12 +08:00
zhengxuan.zhang
c5327b0204
修复测量工具按钮激活态被hover覆盖的问题
...
- 为测量工具按钮(点点距、点线距、角度、通孔填锡率、气泡测量)
增加激活态自定义 ControlTemplate,彻底避免 Telerik RadRibbonButton
内部 VisualStateManager 的 hover 效果覆盖激活背景色
- 提取共享模板 ActiveMeasureButtonTemplate,减少重复定义
- 激活态模板使用 TemplateBinding Text 正确显示按钮文字
2026-07-22 14:19:09 +08:00
zhengxuan.zhang
00aaa5b97d
1、调整主界面按钮,将硬件相关按钮降低级别;2、将相机设置移入设置页面中
2026-07-22 13:06:34 +08:00
zhengxuan.zhang
83de6e3770
Merge branch 'Develop/XP' into Feature/TURBO-002-Cnc
2026-07-22 11:41:01 +08:00
zhengxuan.zhang
6f763e5669
修复生成输出位置的问题
2026-07-22 11:39:56 +08:00