天天看點

Linux下開發基于.NET的三維繪圖程式

很多人可能知道使用.NET Core可以開發跨平台(包括Windows,Linux、MacOS)的App,但知道在Linux下使用.NET Core可以開發三維程式的恐怕就很少了。本文通過借助.NET三維繪圖控件,可以友善地用C#程式設計語言在Linux下搭建一個集三維模組化和三維顯示于一身的.NET Core App。

很多人可能知道使用.NET Core可以開發跨平台(包括Windows,Linux、MacOS)的App,但知道在Linux下使用.NET Core可以開發三維程式的恐怕就很少了。本文通過借助.NET三維繪圖控件,可以友善地用C#程式設計語言在Linux下搭建一個集三維模組化和三維顯示于一身的.NET Core App。

1 .NET Core環境搭建

Linux下的編輯器推薦使用VS Code。

以Ubuntu20.04為例,搭建開發環境的步驟為:

1.1 配置一下微軟的包伺服器

配置一下包伺服器

wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb      

1.2 下載下傳和安裝SDK:

sudo apt-get update
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install dotnet-sdk-3.1      

1.3 下載下傳和安裝.NET Core運作時

sudo apt-get update
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install dotnet-runtime-3.1      

2 建立一個.NET Core App

在控制台建立一個控制台App

new console -o MyFirstApp      

編譯一下:

dotnet build      

就可以生成一個可執行程式。接下來我們要基于這個程式增加代碼,來內建AnyCAD .NET Core三維控件。

3 內建AnyCAD .NET Core

3.1 引用程式集

修改csproj檔案

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <Reference Include="AnyCAD.Foundation.NetCore">
      <HintPath>netcoreapp3.1/AnyCAD.Foundation.NetCore.dll</HintPath>
    </Reference>
  </ItemGroup>
</Project>      

3.2 添加代碼建立一個長方體

修改program.cs

using AnyCAD.Foundation;
using System;

namespace anycad.netcore.test
{
    class Program
    {
        static void Main(string[] args)
        {
            GlobalInstance.Initialize();

            WindowCanvas canvas = new WindowCanvas("AnyCAD DotNetCore");
            canvas.Initialize(0, 600, 400);

            var box = ShapeBuilder.MakeBox(GP.XOY(), 10,20,30);
            var node = ShapeSceneNode.Create(box, 0.01);
            var scene = canvas.GetContext().GetScene();
            scene.AddNode(node);
            canvas.Run();
            canvas.Destroy();

            GlobalInstance.Destroy();

            Console.WriteLine("Hello World!");
        }
    }
}      

如果想建立更複雜的模型,可以參考AnyCAD github上的例子: ​​https://github.com/anycad/anycad.rapid.net.sample​​

3.3 編譯運作

效果如下:

Linux下開發基于.NET的三維繪圖程式

總結

繼續閱讀