.NET6三分钟搭建WPF三维应用

爱编程的鼠鼠 2023-12-08 12:49:29

要运行本文中的示例,请先安装Vistual Studio 2022,社区版就可以了。

1 创建项目

选择创建WPF应用

 

给程序起一个酷酷的名字,选一个酷酷的位置:

 

选一下.NET6

 

2 配置项目

从nuget.org上安装AnyCAD Rapid SDK 2022。

 

3 设计界面

  • 首先引入程序集:

  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>

运行一下:

 

5 显示模型

  • 增加一个ViewerReady事件

     

 <anycad:RenderControl Grid.Column="1" x:Name="mRenderCtrl" ViewerReady="mRenderCtrl_ViewerReady"/>
  • 在mRenderCtrl_ViewerReady中创建一个球

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

在三维控件初始化完成之前是不能进行对控件进行操作的

再运行一下:

 

6 资源释放

在调试模式下,程序退出的时候在输出窗口中,你可能会发现这样的错误:

程序“[57196] WpfApp1.exe”已退出,返回值为 3221225477 (0xc0000005) 'Access violation'。

这是因为AnyCAD Rapid SDK没有正确的释放资源。为保证三维控件资源能够正确释放,程序能够得到正常的返回值,只需要这样加一下Startup和Exit消息:

<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>

代码修改:

    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();        }    }

7 总结

相比WinForms程序,WPF程序需要经常在XAML和代码之间切换,使用门槛稍高,但熟悉就好了。

.NET6为开发者带来了高效的开发体验,而AnyCAD Rapid SDK也一样,通过简单几步即可为应用添加三维能力,让程序显得高大上!

AnyCAD Rapid SDK的包括三维显示、造型、STEP/IGES读取等场景的三维功能,能够满足大部分的三维工业软件应用场景,比如CAD设计、CAE仿真、CAM加工,机器人模拟等,可以应用在建筑、机械、电力、化工、自动化等多个领域。

 

DotNet开发跳槽 2023-12-08 00:08 发表于北京

...全文
29 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

6,506

社区成员

发帖
与我相关
我的任务
社区描述
微软技术社区为中国的开发者们提供一个技术干货传播平台,传递微软全球的技术和产品最新动态,分享各大技术方向的学习资源,同时也涵盖针对不同行业和场景的实践案例,希望可以全方位地帮助你获取更多知识和技能。
windowsmicrosoft 企业社区
社区管理员
  • 微软技术分享
  • 郑子铭
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

微软技术社区为中国的开发者们提供一个技术干货传播平台,传递微软全球的技术和产品最新动态,分享各大技术方向的学习资源,同时也涵盖针对不同行业和场景的实践案例,希望可以全方位地帮助你获取更多知识和技能。

予力众生,成就不凡!微软致力于用技术改变世界,助力企业实现数字化转型。

试试用AI创作助手写篇文章吧