基于AvaloniaUI開發跨平臺.NET三維應用:環境搭建
本文介紹在Vistual Studio 2022中使用Avalonia和集成AnyCAD AvaloniaUI三維控件的的過程。
0 初始化環境
安裝Avalonia.Templates
dotnet new install Avalonia.Templates
若之前安裝過可忽略此步驟。
1 創建項目
選擇創建AvaloniaUI項目

選一下.NET6版本和Avalonia版本

2 集成AnyCAD AvaloniaUI
從nuget.org上安裝AnyCAD AvaloniaUI。

3 設計界面
在MainWindow.axaml里面集成AnyCAD Rapid控件:
- 首先引入程序集:
xmlns:anycad="clr-namespace:AnyCAD.AvaloniaUI;assembly=AnyCAD.AvaloniaUI"
- 設計布局
直接加個Button和三維控件。完整的xaml如下:
<Window xmlns="https://github.com/avaloniaui"
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:anycad="clr-namespace:AnyCAD.AvaloniaUI;assembly=AnyCAD.AvaloniaUI"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="AnyCAD.AvaloniaApp.MainWindow"
Title="AnyCAD.AvaloniaApp">
<StackPanel>
<Button Content="打開" Width="160"/>
<anycad:RenderControl x:Name="mRenderView" Width="800" Height="600"></anycad:RenderControl>
</StackPanel>
</Window>
4 初始化控件
在Program.cs修改初始化代碼, Main函數做修改
[STAThread]
public static void Main(string[] args)
{
// 初始化
AnyCAD.Foundation.GlobalInstance.Initialize();
BuildAvaloniaApp()
.StartWithClassicDesktopLifetime(args);
// 釋放資源
AnyCAD.Foundation.GlobalInstance.Destroy();
}
運行一下:

5 顯示模型
- MainWindow函數中響應一下Buttond的Click事件
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
public void OnOpen(object sender, RoutedEventArgs e)
{
var dlg = new OpenFileDialog();
dlg.Filters.Add(new FileDialogFilter() { Name = "Model Files", Extensions = { "step", "stp", "iges", "igs" } });
var result = dlg.ShowAsync(this);
if (result == null)
return;
string fileName = result.Result[0];
var shape = ShapeIO.Open(fileName);
if(shape != null)
{
var node = BrepSceneNode.Create(shape, null, null);
var scene = mRenderView.ViewContext.GetScene();
scene.AddNode(node);
mRenderView.ViewContext.RequestUpdate(EnumUpdateFlags.Scene);
}
}
}
再運行一下,打開個模型

6 總結
AvaloniaUI一款優秀的跨平臺.NET UI庫,結合AnyCAD Rapid SDK for AvaloniaUI,就可以快速開發跨平臺的三維應用。
AnyCAD Rapid SDK的更多功能請參考anycad.rapid.net.sample。
本文完整代碼:https://gitee.com/anycad/anycad.rapid.net.sample/tree/master/AnyCAD.AvaloniaApp

浙公網安備 33010602011771號