건축작업/IT

[Rhino3d] C# .NET 7.0을 이용한 Rhinoceros3d Plug-in 구축 - 3

hoooooooon 2025. 2. 15. 21:00

혹여나 이 글을 보면서

Rhino3d Plug-in을 개발하고자 하는 사람들을 위해 첫 준비과정을 남긴다. 

 

Rhino3d의 Plug-in을 개발하기 위해선 기본적으로

Microsoft Visual Studio 2022를 이용해서 개발을 시작하면 된다.

링크를 아래에 첨부한다.

 

Visual Studio Tools 다운로드 - Windows, Mac, Linux용 무료 설치

Visual Studio IDE 또는 VS Code를 무료로 다운로드하세요. Windows 또는 Mac에서 Visual Studio Professional 또는 Enterprise Edition을 사용해 보세요.

visualstudio.microsoft.com

 

Rhino3d Plug-in을 개발하기 위해선 기본 C# 템플릿을 이용하는 것 보다는

McNeel에서 제공하는 Plug-in 개발용 템플릿을 이용하는 것이 훨씬 낫다.

링크를 아래에 첨부한다.

 

Releases · mcneel/RhinoVisualStudioExtensions

Visual Studio Extension for RhinoCommon Plugin Support - mcneel/RhinoVisualStudioExtensions

github.com

 

Microsoft Visual Studio 2022를 설치한 이후 해당 링크의 설치파일을 이용해 템플릿을 설치하면

너무나도 쉽게 Plug-in 개발을 시작할 수 있다.

 

Rhino.VisualStudio.Windows.2022-8.XX.0.vsix

와 같이 .vsix 확장자의 파일을 다운로드하여 설치하면 된다.

Rhino3d 7버전의 경우 C# .NET Framework 4.8 환경에서 개발을 할 수 있으며,

Rhino3d 8버전의 경우 C# .NET 7.0 환경에서 개발을 할 수 있다.

 

참고로 두 버전 모두 Microsoft사에서 수명이 종료되어 Deprecated(사용되지 않는) 버전이다.

현재는 .NET 9.0 버전이 권장되는 C# 개발환경이다.

덕분에 Plug-in을 만들기 위해 여러 NuGet 패키지를 사용하고자 하면

가끔 호환에 문제가 되어 개발을 더이상 진행할 수 없는 경우가 있다.

 

그래서 본인은 Rhino3d Plug-in을 개발할 때에는

코어 기능은 다른 환경 (.NET 9.0 또는 Python 등)에서 개발한 뒤

RESTful API 방식으로 Core 서버와 Plug-in 클라이언트를 분리하여 운용하기로 하였다.

 

나는 개발 전공자는 아니기 때문에 정확한 비유를 할 수는 없지만

웹개발의 경우에는 Front-end와 Back-end로 나뉘게 되는데,

 

Front-end(프론트엔드)는 웹브라우저를 통해

화면을 보면서 사용자가 직접 신호를 보낼 수 있도록 화면을 구성하는 클라이언트 단,

Back-end(백엔드)는 비즈니스 로직(클라이언트가 요청하는 데이터 등을 결과물로 처리해주는 과정)을 처리하는

뒷 코어 서버 단으로 기본적으로 나눈다고 보면된다.

 

이 경우 프론트엔드에서 사용자가 어떤 결과값을 요청하는 신호를 보내면,

백엔드에서 사용자가 원하는 결과값을 처리해서 결과값을 다시 사용자에게 송출하게 되는데

이 과정에서 가장 많이 사용하는 방식이  RESTful API(REST API)이다.

 

이렇게 REST API 방식를 이용해서 서버를 운용하게 되면,

백엔드에서 돌아가는 처리 로직을 프론트엔드의 사용자가 알기 어렵다는 장점도 있기 때문에

자신만의 영업비밀(?)을 공개하고 싶지 않다면 이런 처리 방식을 이용할 수도 있다.

 

그리고 프론트엔드에서는 고급 기능들을 구현할 필요가 없고,

즉, 사용자가 사용하는 기능에는 큰 변화가 없을 경우에

처음 한번만 프론트엔드 단을 구현하고 나면 굳이 더이상 개발하지 않아도 되는 장점이 있다.

Rhino3d Plug-in 개발환경처럼 Deprecated된 .NET 7.0 환경에서 개발하는 것을 극혐하는 나로서는

사용자가 실행할 수 있는 기능만 구현하면 될 뿐이고

이를 이용해서 구현해야하는 많은 기능들을

최신 환경에서 마음껏 써드파티 패키지를 이용해서 개발할 수 있다는 큰 장점이 있었다.

 

나는 이런 개념으로 일종의 프론트엔드인 .NET 7.0 환경의 Rhino3d Plug-in 프로그램과

백엔드를 해당 Plug-in을 이용하는 사람들의 요청 결과를 처리하는 Python 서버를 별도로 나누어 운용하기로 하였다.