开发打标软件时,读取 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 标识图为例,可以把任务处理拆成以下几步:
- 导入并显示。 读取图纸,让操作人员检查线条和文字是否完整,确认本次需要处理的对象。
- 选择与修改。 如果任务允许现场调整,在图纸界面中选取对象、放大局部并修改;记录最终采用的是原图还是修改后的图。
- 形成任务数据。 业务代码取得已确认的图形数据,按设备要求处理坐标、单位及打标参数。这一步的转换规则由项目确定。
- 交给设备并核对。 通过实际使用的设备接口执行任务,再检查工件上的位置、内容和效果。
图纸控件处理的是开发者在界面中展示和操作 CAD 图形的问题。即使图纸显示、编辑都正常,仍需用项目的实际 DXF 文件检查字体、线条和对象类型,并用目标设备验证从图纸数据到实物标记的整条流程。
资料依据: CADSoftTools 的 CAD .NET 产品说明及控件 FAQ;Microsoft Learn 的 Host a Windows Forms control in WPF。文中的 WPF 代码仅说明承载方式,未声称完成 CAD .NET 项目编译或设备联调。