Wpf方式解析CAD

admin | 2026-05-31 17:21 | 阅读 23 次

当前 WPF CAD 逻辑 现在 BoardImageWpfPlugin 的 CAD 整板图不是走 DisplayEx,也不是直接显示数据库里的位图。流程是:

  • 选择料号/层/批号后,在 BoardImageWpfViewModel.cs 读取板号、LayerBitmap/LayerBitmapMatrixJobCADNameLayerCADNameMasterStepName、机台 CAD 路径、Step 轮廓、旋转和镜像。
  • 先尝试 CAD:检查 missing-cad 负缓存、检查本地 cadcache 是否已有当前 jobCadName + masterStepName + layerCadName,没有就从机台共享目录复制 CAD。
  • CAD 可用时,走 WpfCadPanelService.cs:用 CADLib/ODBBuilder 打开 ODB,解析 step/layer,按 AOILayerRotation 和 mirror 创建 CADPlacement,算出 CAD bounds。
  • 显示时,WPF 维护一个当前视野 ROI,在 BoardImageWpfView.xaml.cs 异步渲染当前视野。
  • 渲染本质是从 CAD 矢量数据按当前 ROI 重新栅格化成当前窗口大小的 BitmapSource/WriteableBitmap,不是放大一张固定底图;所以严格说“源数据是矢量 CAD,屏幕最终是按视野实时生成的高清位图”。
  • Step 轮廓、缺陷箭头、选中高亮、tooltip、双击定位缩略图这些不是 CAD 控件画的,而是 WPF Canvas overlay 叠加在 CAD 渲染图上,逻辑在 BoardImageWpfView.xaml.cs

和旧 BoardImageViewPlugin 的区别BoardImageViewPlugin 的主 CAD 显示是嵌入 VVS 的 WinForms DisplayEx,入口在 BoardImageViewView.xaml.cs。它创建 DisplayEx,把 ImageUtil.Layer 加进去,设置 Rotate/FlipX/ROI,然后 UpdatePicture(),缩放、框选、ROI 和部分交互主要由 DisplayEx 控件自己处理。

当前 WPF 插件和旧插件相同的是:CAD 来源、CAD cache/回退位图策略、AOILayerRotation、mirror、钻孔层叠加、缺陷/轮廓数据来源基本一致。不同的是:旧插件依赖 DisplayEx/ImageUtil/WinFormsHost 这一套重控件;WPF 插件自己用 CADLib 渲染当前视野,自己管理缩放、平移、框选、方向键和 overlay,所以依赖更轻、行为更可控,但不是把 VVS 的矢量控件原封不动搬过来。

评论 (42)

发表评论
支持 Markdown 格式
r
rkysxyykdv 2026-05-31 18:39

fqfwjfzfovuqmrqlkktihqdwyvvken

r
rkysxyykdv 2026-05-31 18:39

fqfwjfzfovuqmrqlkktihqdwyvvken

r
rkysxyykdv 2026-05-31 18:39

fqfwjfzfovuqmrqlkktihqdwyvvken

r
rkysxyykdv 2026-05-31 18:39

fqfwjfzfovuqmrqlkktihqdwyvvken

r
rkysxyykdv 2026-05-31 18:39

fqfwjfzfovuqmrqlkktihqdwyvvken

r
rkysxyykdv 2026-05-31 18:39

fqfwjfzfovuqmrqlkktihqdwyvvken

r
rkysxyykdv 2026-05-31 18:39

fqfwjfzfovuqmrqlkktihqdwyvvken

r
rkysxyykdv 2026-05-31 18:39

fqfwjfzfovuqmrqlkktihqdwyvvken

r
rkysxyykdv 2026-05-31 18:39

fqfwjfzfovuqmrqlkktihqdwyvvken

r
rkysxyykdv 2026-05-31 18:38

fqfwjfzfovuqmrqlkktihqdwyvvken

r
rkysxyykdv 2026-05-31 18:38

fqfwjfzfovuqmrqlkktihqdwyvvken

r
rkysxyykdv 2026-05-31 18:38

fqfwjfzfovuqmrqlkktihqdwyvvken

r
rkysxyykdv 2026-05-31 18:38

fqfwjfzfovuqmrqlkktihqdwyvvken

r
rkysxyykdv 2026-05-31 18:38

fqfwjfzfovuqmrqlkktihqdwyvvken

r
rkysxyykdv 2026-05-31 18:38

fqfwjfzfovuqmrqlkktihqdwyvvken

r
rkysxyykdv 2026-05-31 18:38

fqfwjfzfovuqmrqlkktihqdwyvvken

r
rkysxyykdv 2026-05-31 18:38

fqfwjfzfovuqmrqlkktihqdwyvvken

r
rkysxyykdv 2026-05-31 18:38

fqfwjfzfovuqmrqlkktihqdwyvvken

r
rkysxyykdv 2026-05-31 18:38

fqfwjfzfovuqmrqlkktihqdwyvvken

r
rkysxyykdv 2026-05-31 18:38

fqfwjfzfovuqmrqlkktihqdwyvvken

r
rkysxyykdv 2026-05-31 18:38

fqfwjfzfovuqmrqlkktihqdwyvvken

t
tljrmxnser 2026-05-31 18:38

wsjyfstgomhnghpvysgutknktviiko

t
tljrmxnser 2026-05-31 18:38

wsjyfstgomhnghpvysgutknktviiko

t
tljrmxnser 2026-05-31 18:38

wsjyfstgomhnghpvysgutknktviiko

t
tljrmxnser 2026-05-31 18:38

wsjyfstgomhnghpvysgutknktviiko

t
tljrmxnser 2026-05-31 18:38

wsjyfstgomhnghpvysgutknktviiko

t
tljrmxnser 2026-05-31 18:38

wsjyfstgomhnghpvysgutknktviiko

t
tljrmxnser 2026-05-31 18:38

wsjyfstgomhnghpvysgutknktviiko

t
tljrmxnser 2026-05-31 18:38

wsjyfstgomhnghpvysgutknktviiko

t
tljrmxnser 2026-05-31 18:38

wsjyfstgomhnghpvysgutknktviiko

t
tljrmxnser 2026-05-31 18:38

wsjyfstgomhnghpvysgutknktviiko

t
tljrmxnser 2026-05-31 18:38

wsjyfstgomhnghpvysgutknktviiko

t
tljrmxnser 2026-05-31 18:38

wsjyfstgomhnghpvysgutknktviiko

t
tljrmxnser 2026-05-31 18:38

wsjyfstgomhnghpvysgutknktviiko

t
tljrmxnser 2026-05-31 18:38

wsjyfstgomhnghpvysgutknktviiko

t
tljrmxnser 2026-05-31 18:38

wsjyfstgomhnghpvysgutknktviiko

t
tljrmxnser 2026-05-31 18:38

wsjyfstgomhnghpvysgutknktviiko

t
tljrmxnser 2026-05-31 18:38

wsjyfstgomhnghpvysgutknktviiko

t
tljrmxnser 2026-05-31 18:38

wsjyfstgomhnghpvysgutknktviiko

t
tljrmxnser 2026-05-31 18:37

wsjyfstgomhnghpvysgutknktviiko

t
tljrmxnser 2026-05-31 18:37

wsjyfstgomhnghpvysgutknktviiko

t
tljrmxnser 2026-05-31 18:37

wsjyfstgomhnghpvysgutknktviiko