WPF 激光打标软件中,如何把 CAD 图纸放进任务界面?

0 阅读4分钟

开发打标软件时,读取 DXF 文件只是第一步。操作人员还需要看到图形、选中本次要处理的对象;如果轮廓要调整,最好在同一个任务界面完成。对开发者来说,这意味着文件读取、图形显示、鼠标交互和任务数据要衔接起来。

下面以汽车零部件上的标识图为例,讨论 WPF 应用如何组织这部分功能。这是用于说明设计思路的场景,不代表已经完成设备集成或实机测试。

先分清图纸处理和设备控制

打标任务至少涉及两个不同的问题:一是从 DXF 中读取图形,并在界面里查看、选择或修改;二是把确认后的内容按设备要求处理,再执行打标。本文使用 CAD .NET 讨论前一部分。参数设置、控制卡通信和实际打标结果,需要由项目自身的设备接口与业务逻辑负责。

一个值得先定下来的数据边界是:**图纸中的对象不应只以屏幕上的像素位置传给后续流程。**界面显示会缩放、平移,业务代码还要明确所选对象、图纸坐标、单位,以及修改后以哪一份数据为准。否则屏幕上看着位置正确,传入任务的数据却可能不一致。

显示图纸和编辑图形,控件怎么选?

CAD .NET 是面向 .NET 应用的 CAD 开发库。它提供基于 Windows Forms 的图纸控件,可以承载在 WPF 界面中。本文关注两个用途不同的控件:

界面需求控件集成时仍需处理的事
在任务页展示图纸CADPictureBox按业务需要补充选择、任务操作等界面逻辑
在任务页选取和调整对象CADEditorControl将编辑后的对象与当前任务关联,并保存或交给后续处理

CADPictureBox 提供基本的图形显示区域。CADEditorControl 包含平移、缩放、对象选取,以及借助控制点和捕捉等功能进行可视化编辑的交互。项目只需要看图时,可以先从显示需求出发;需要修改图形时,再核对编辑能力与授权范围。厂商将可视化添加和编辑图形列为 Enterprise 版能力。

WPF 页面怎样承载图纸控件?

这两个控件基于 Windows Forms。在 WPF 中,可以使用 WindowsFormsHost 给控件留出位置。下面只展示宿主关系,cadControl 表示项目已经创建的 CAD .NET 控件实例;图纸加载、事件处理等代码需要按实际 SDK 和项目版本补充。

<WindowsFormsHost x:Name="DrawingHost" />
// cadControl 为已创建的 CADPictureBox 或 CADEditorControl 实例
DrawingHost.Child = cadControl;

这里的代码是集成位置示意,不是可独立运行的完整示例。落到项目中,还要检查 WPF 与 Windows Forms 混用时的焦点、缩放及叠放显示。例如工具栏与图纸区域如何交互,鼠标操作是否影响 WPF 页面其他控件,都应该在实际界面里验证。

从图纸操作到打标任务,还要接哪些环节?

以一张 DXF 标识图为例,可以把任务处理拆成以下几步:

  1. 导入并显示。 读取图纸,让操作人员检查线条和文字是否完整,确认本次需要处理的对象。
  2. 选择与修改。 如果任务允许现场调整,在图纸界面中选取对象、放大局部并修改;记录最终采用的是原图还是修改后的图。
  3. 形成任务数据。 业务代码取得已确认的图形数据,按设备要求处理坐标、单位及打标参数。这一步的转换规则由项目确定。
  4. 交给设备并核对。 通过实际使用的设备接口执行任务,再检查工件上的位置、内容和效果。

图纸控件处理的是开发者在界面中展示和操作 CAD 图形的问题。即使图纸显示、编辑都正常,仍需用项目的实际 DXF 文件检查字体、线条和对象类型,并用目标设备验证从图纸数据到实物标记的整条流程。

资料依据: CADSoftTools 的 CAD .NET 产品说明及控件 FAQ;Microsoft Learn 的 Host a Windows Forms control in WPF。文中的 WPF 代码仅说明承载方式,未声称完成 CAD .NET 项目编译或设备联调。