三分钟上手 .NET 6 + AnyCAD 打造 WPF 三维应用

44 阅读3分钟

前言

工业软件和三维可视化需求的不断增长,将三维模型展示功能集成到桌面应用程序中已成为许多开发的刚需。

WPF 作为 Windows 平台强大的 UI 框架,结合现代 .NET 版本,具备出色的图形渲染能力。

本文将带大家使用 .NET 6 和 AnyCAD Rapid SDK,在短短三分钟内搭建一个具备三维显示能力的 WPF 应用程序。整个过程简单直观,无需深厚的三维开发背景,即可让你的应用"高大上"起来。

正文

1、创建项目

首先,确保你已安装 Visual Studio 2022。打开后选择"创建新项目",然后选择"WPF 应用 (.NET)"。

图片

为项目起一个酷酷的名字,并选择保存位置。

图片

在配置界面中,选择目标框架为 .NET 6。

图片

2、配置项目

通过 NuGet 包管理器安装 AnyCAD Rapid SDK 2022。在“管理 NuGet 程序包”中搜索 AnyCAD.Rapid.SDK 并安装。

图片

3、设计界面

在 XAML 文件中引入 AnyCAD 的命名空间:

xmlns:anycad="clr-namespace:AnyCAD.WPF;assembly=AnyCAD.WPF.NET6"

采用经典的左右布局,右侧用于显示三维内容。

完整的 XAML 代码如下:

<Window x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp1"
        xmlns:anycad="clr-namespace:AnyCAD.WPF;assembly=AnyCAD.WPF.NET6"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition MinWidth="100" Width="0.3*"/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <anycad:RenderControl Grid.Column="1" x:Name="mRenderCtrl"/>
    </Grid>
</Window>

运行程序,可以看到三维渲染区域已就位。

图片

4、显示三维模型

为 RenderControl 添加 ViewerReady 事件,确保在控件初始化完成后再进行操作:

图片

<anycad:RenderControl Grid.Column="1" x:Name="mRenderCtrl" ViewerReady="mRenderCtrl_ViewerReady"/>

在事件处理函数中创建一个球体并显示:

private void mRenderCtrl_ViewerReady()
{
    var shape = ShapeBuilder.MakeSphere(new GPnt(000), 100);
    mRenderCtrl.ShowShape(shape, ColorTable.AliceBlue);
}

⚠️ 注意:必须在 ViewerReady 事件触发后才能操作渲染控件,否则可能导致异常。

再次运行程序,你将看到一个蓝色的球体出现在三维视图中。

图片

5、资源释放

在调试模式下,若程序退出时出现 Access violation 错误(返回值 0xc0000005),是因为 AnyCAD SDK 未正确释放底层资源。

为避免此问题,需在 App.xaml 中添加启动和退出事件:

<Application x:Class="WpfApp1.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:WpfApp1"
             StartupUri="MainWindow.xaml" 
             Exit="Application_Exit" 
             Startup="Application_Startup">
    <Application.Resources>
    </Application.Resources>
</Application>

并在 App.xaml.cs 中实现初始化与销毁逻辑:

public partial class App : Application
{
    private void Application_Startup(object sender, StartupEventArgs e)
    {
        AnyCAD.Foundation.GlobalInstance.Initialize();
    }

    private void Application_Exit(object sender, ExitEventArgs e)
    {
        AnyCAD.Foundation.GlobalInstance.Destroy();
    }
}

总结

本文演示了如何在 .NET6 环境下,利用 AnyCAD Rapid SDK 快速为 WPF 应用添加三维显示能力。虽然 WPF 的 XAML 与代码分离模式初看略显复杂,但一旦熟悉,其灵活性和表现力远超 WinForms。通过简单的几步配置,我们成功创建了一个可显示三维球体的应用,并确保了资源的正确释放。

AnyCAD Rapid SDK 不仅支持三维显示,还涵盖造型、STEP/IGES 文件读取等强大功能,适用于 CAD 设计、CAE 仿真、CAM 加工、机器人模拟等多种工业场景,广泛服务于建筑、机械、电力、化工和自动化等领域。对于希望快速集成三维能力的开发来说,这是一条高效且可靠的路径。

关键词

#WPF、.NET6、#AnyCAD#三维可视化#RenderControl#ShapeBuilder#ViewerReady#资源释放#工业软件#三维建模

最后

如果你觉得这篇文章对你有帮助,不妨点个赞支持一下!你的支持是我继续分享知识的动力。如果有任何疑问或需要进一步的帮助,欢迎随时留言。

也可以加入微信公众号 [DotNet技术匠] 社区,与其他热爱技术的同行一起交流心得,共同成长!

优秀是一种习惯,欢迎大家留言学习!