Wpf方式解析CAD
admin |
2026-05-31 17:21 |
阅读 23 次
当前 WPF CAD 逻辑
现在 BoardImageWpfPlugin 的 CAD 整板图不是走 DisplayEx,也不是直接显示数据库里的位图。流程是:
- 选择料号/层/批号后,在 BoardImageWpfViewModel.cs 读取板号、
LayerBitmap/LayerBitmapMatrix、JobCADName、LayerCADName、MasterStepName、机台 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 的矢量控件原封不动搬过来。
fqfwjfzfovuqmrqlkktihqdwyvvken
fqfwjfzfovuqmrqlkktihqdwyvvken
fqfwjfzfovuqmrqlkktihqdwyvvken
fqfwjfzfovuqmrqlkktihqdwyvvken
fqfwjfzfovuqmrqlkktihqdwyvvken
fqfwjfzfovuqmrqlkktihqdwyvvken
fqfwjfzfovuqmrqlkktihqdwyvvken
fqfwjfzfovuqmrqlkktihqdwyvvken
fqfwjfzfovuqmrqlkktihqdwyvvken
fqfwjfzfovuqmrqlkktihqdwyvvken
fqfwjfzfovuqmrqlkktihqdwyvvken
fqfwjfzfovuqmrqlkktihqdwyvvken
fqfwjfzfovuqmrqlkktihqdwyvvken
fqfwjfzfovuqmrqlkktihqdwyvvken
fqfwjfzfovuqmrqlkktihqdwyvvken
fqfwjfzfovuqmrqlkktihqdwyvvken
fqfwjfzfovuqmrqlkktihqdwyvvken
fqfwjfzfovuqmrqlkktihqdwyvvken
fqfwjfzfovuqmrqlkktihqdwyvvken
fqfwjfzfovuqmrqlkktihqdwyvvken
fqfwjfzfovuqmrqlkktihqdwyvvken
wsjyfstgomhnghpvysgutknktviiko
wsjyfstgomhnghpvysgutknktviiko
wsjyfstgomhnghpvysgutknktviiko
wsjyfstgomhnghpvysgutknktviiko
wsjyfstgomhnghpvysgutknktviiko
wsjyfstgomhnghpvysgutknktviiko
wsjyfstgomhnghpvysgutknktviiko
wsjyfstgomhnghpvysgutknktviiko
wsjyfstgomhnghpvysgutknktviiko
wsjyfstgomhnghpvysgutknktviiko
wsjyfstgomhnghpvysgutknktviiko
wsjyfstgomhnghpvysgutknktviiko
wsjyfstgomhnghpvysgutknktviiko
wsjyfstgomhnghpvysgutknktviiko
wsjyfstgomhnghpvysgutknktviiko
wsjyfstgomhnghpvysgutknktviiko
wsjyfstgomhnghpvysgutknktviiko
wsjyfstgomhnghpvysgutknktviiko
wsjyfstgomhnghpvysgutknktviiko
wsjyfstgomhnghpvysgutknktviiko
wsjyfstgomhnghpvysgutknktviiko