天天看點

Linux下基于.NET5開發CAX應用

<<.NET5下的三維應用程式開發>>一文中介紹了如何在.NET5下使用AnyCAD開發應用程式。相比.NET4.x,.NET5一大進步便是可以跨平台,即可以在Linux、Mac也可以使用,實作代碼最大程度的複用。本文介紹如何在Linux下基于.NET5來開發三維應用程式。

<<.NET5下的三維應用程式開發>>一文中介紹了如何在.NET5下使用AnyCAD開發應用程式。相比.NET4.x,.NET5一大進步便是可以跨平台,即可以在Linux、Mac也可以使用,實作代碼最大程度的複用。本文介紹如何在Linux下基于.NET5來開發三維應用程式。

1. 環境準備

1.1 下載下傳按照包

連結: https://pan.baidu.com/s/1bygB0ugyiUYLaS4dY3nW4Q 
提取碼: 95q8       

以上連結包括.NET5 SDK for Linux和AnyCAD Rapid .NET5 SDK for Linux。

1.2 .NET5 SDK

解壓dotnet-sdk-5.0.100-linux-x64.tar.gz到 $HOME/dotnet/,即在$HOME/dotnet/目錄下可以找到dotnet可執行程式。可執行程式dotnet是編譯.NET程式的入口。

p.s. 這裡使用的是免安裝方式,你也可以參考微軟官方教程安裝.NET5 SDK。

1.3 解壓AnyCAD SDK

解壓anycad.rapid.NET.linux.zip 到某一目錄,裡面包含示例程式和SDK

2. 編譯和運作

SDK裡已經準備好了build的shell腳本,在終端運作即可:

./build.sh      

在bin目錄即可看到編譯好的HiCAD可執行程式。

在終端運作之:

./bin/Debug/HiCAD      

可以看到運作界面:

3. 項目結構

項目主要有工程檔案和代碼檔案組成。

3.1 HiCAD.csproj

<Project Sdk="Microsoft.NET.Sdk">

 <PropertyGroup>
   <OutputType>Exe</OutputType>
   <TargetFramework>net5.0</TargetFramework>
   <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
   <OutputPath>./bin/$(Configuration)</OutputPath>
 </PropertyGroup>
 <ItemGroup>
   <Reference Include="AnyCAD.Foundation.NET5">
     <HintPath>./bin/$(Configuration)/AnyCAD.Foundation.NET5.dll</HintPath>
   </Reference>
 </ItemGroup>
</Project>      

3.2 Program.cs

using AnyCAD.Foundation;
using System;

namespace anycad.test
{
   class Program
   {
       static void Main(string[] args)
       {
         //初始化程式
           GlobalInstance.Initialize();
         //建立三維視窗
           WindowCanvas canvas = new WindowCanvas("AnyCAD .NET5", true);
           canvas.Initialize(0, 600, 400);
         //建立個盒子
           var box = ShapeBuilder.MakeBox(GP.XOY(), 10,20,30);
           var node = BrepSceneNode.Create(box, null, null, 0.01);
           var scene = canvas.GetContext().GetScene();
           scene.AddNode(node);
           
           // 顯示視窗
           canvas.Run();
           
           //釋放資源
           canvas.Destroy();
           GlobalInstance.Destroy();

       }
   }
}      

小結

繼續閱讀