犀牛插件开发-基础核心-技术概览-总体架构-教程

1.概述

《Rhinoceros》由许多层组成——用多种语言书写——层层叠加。最基础的内容在底层,但顶层绝不应该被认为是肤浅的……

在这里插入图片描述
让我们依次讨论每一层,从最下面的开始。

2.基础核心

2.1.C++ Rhino 核心

Rhino的c++ Core是最古老和最广泛的代码集。我们在一些地方使用微软的MFC,包括SDK。这是管理运行时文档的地方,是所有OpenGL视口绘图代码存在的地方,也是数学家编写的计算几何代码存在的地方。Rhino的许多命令都在这里。大量的用户界面——Rhino核心中的命令行、应用程序主机、状态栏和许多命令的对话框。

2.2.openNURBS

openNURBS是免费的c++源代码,可以让您读写Rhino 3dm文件—一直追溯到版本1。openNURBS是我们的第一个开源项目。该代码可在Windows、macOS、Linux、iOS和Android上编译。它被用于各种第三方应用程序,如ArchiCAD, SolidWorks, Inventor, SketchUp和许多其他产品,直接读取或写入3dm文件。openNURBS是Rhino本地用于读取/写入3dm文件的工具。该工具包在Rhino之前发布,因此任何产品,包括我们的竞争对手,都可以与最新的3dm文件兼容。Rhino写入的3dm文件与使用openNURBS读写3dm的其他应用程序没有区别。有关openNURBS的更多信息,请参阅openNURBS指南。

2.3.C++ SDK

最重要的是我们的c++ SDK,只能在Windows上使用。针对c++ SDK进行编译需要特定版本的Microsoft Visual Studio和Microsoft C- runtime。您必须为Rhino的每个主要版本重新编译。Rhino所能做的几乎所有事情都是通过c++ SDK公开的。一些命令和特性还没有公开,但是这个SDK非常广泛和丰富。不幸的是,由于它与Rhino Core紧密耦合,插件开发人员需要为每个Rhino版本重新编译他们的插件。有关c++ SDK的更多信息,请查看C/ c++指南。

3.C++ Stack

上面堆栈图的右列是Rhino的c++部分。c++栈允许我们(以及第三方插件开发人员)使用与开发Rhino本身相同的c++ SDK编写Rhino插件。注意,您不能使用c++编写Grasshopper组件。

3.1.C++ Plugins

C++ SDK之上是C++插件。Rhino附带的许多特性,包括一些命令、文件I/O、渲染器实际上都是C++插件。还有很多第三方C++插件,比如Asuni的VisualARQ, MecSoft的RhinoCAM, 以及Chaos Software的V-Ray。有关C++ SDK的更多信息,请查看C/C++指南。

3.2.RhinoScript

Rhino附带的c++插件之一是RhinoScript。RhinoScript通过VBScript(一种广泛使用和流行的脚本语言)公开了Rhino SDK的一个有用子集。RhinoScript不仅允许您访问Rhino,还允许您访问Windows上的任何其他COM对象。有关更多信息,请参阅RhinoScript指南,更具体地说,什么是VBScript和RhinoScript?指南。

4.NET Stack

.NET SDK在这里分为三层:

C API
.NET Framework
RhinoCommon
Eto

4.1.C API

一个直接的C API包装了c++ SDK,允许我们将平台调用(P/Invoke)集成到c++ SDK中,在原生c++代码和托管的.net层之间形成了一座桥梁。

4.2.NET Framework

微软开发了.net框架,.net使得用c#、f#、VB编写插件成为可能.NET,以及任何其他编译成微软IL的语言。微软.net框架随Windows一起发布。在Rhino for Mac产品中,我们嵌入了Mono运行时,它是.net运行时的部分跨平台实现。有关.net以及它与Rhino开发的关系的更多信息,请参阅什么是Mono和Xamarin?。

4.3.RhinoCommon

RhinoCommon是我们面向Rhino的.net SDK,构建在Windows和macOS(通过Mono)上通用的.net框架之上。RhinoCommon允许开发人员在Windows版和Mac版Rhino上运行. net代码。有关RhinoCommon的更多信息,请参阅RhinoCommon指南,或者更具体地说,参阅什么是RhinoCommon?指南。

4.4.Eto

使用RhinoCommon,你可以编写适用于Windows和Mac的.net插件,除了用户界面。Mono团队没有克隆WinForms或WPF,所以这两种技术都不能在Mac上工作。为了解决这个问题,Rhino现在附带了etto .forms。Eto允许您一次性用c#、XAML或JSON编写用户界面,并在Windows和macOS上使用。实际上,用Eto编写的UI也可以在iOS、Android和Linux上运行。有关Eto的更多信息,请查看Eto。GitHub上的表单。

4.5.net插件

在RhinoCommon之上构建了许多插件,包括内部插件和第三方开发的插件。例如,Grasshopper是一个RhinoCommon插件。Rhino中的一些命令、渲染器和文件IO插件实际上被写成了RhinoCommon插件。随着时间的推移,我们将越来越多的功能转移到RhinoCommon中。.NET插件,以便在平台之间共享更多的代码。许多成功的第三方插件也是使用RhinoCommon和. net编写的,例如GEMVision的RhinoGold和Matrix,以及Orca3D。有关RhinoCommon的更多信息,请参阅RhinoCommon指南。

4.6.Grasshopper组件

Rhino现在附带Grasshopper,这是我们用于算法和参数化设计的可视化编程语言。Grasshopper本身是一个开发平台,拥有数百个第三方编写的Grasshopper组件,用于做各种事情,从物理模拟到创建自定义用户界面,再到工业机器人编程和控制。有关Grasshopper的更多信息,特别是开发Grasshopper组件,请查看Grasshopper指南。

4.7.Python脚本

Rhino附带的一个.net插件是RhinoPython。使用IronPython (python运行时的. net实现)编写的RhinoPython将整个RhinoCommon SDK公开给python脚本语言。这意味着每当我们向RhinoCommon添加一个特性时,它都会自动显示在RhinoPython中。有关RhinoPython的更多信息,请参阅RhinoPython指南。

5.相关主题

C/C++ guides
openNURBS guides
RhinoScript guides
Microsoft .NET Framework (on microsoft.com)
What is RhinoCommon?
RhinoCommon guides
What are Mono & Xamarin?
Mono Project
Eto.Forms on GitHub
Grasshopper guides
RhinoPython guides

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值