文章目录

  • 1.概述
  • 2.基础核心
    • 2.1.C++ Rhino 核心
    • 2.2.openNURBS
    • 2.3.C++ SDK
  • 3.C++ Stack
    • 3.1.C++ Plugins
    • 3.2.RhinoScript
  • 4.NET Stack
    • 4.1.C API
    • 4.2.NET Framework
    • 4.3.RhinoCommon
    • 4.4.Eto
    • 4.5.net插件
    • 4.6.Grasshopper组件
    • 4.7.Python脚本
  • 5.相关主题

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

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

  1. 基于ZYNQ 的多轴运动控制平台关键技术研发-总体架构设计(一)

    基于多轴运动控制平台的实时通信和同步控制需求,采用 Xilinx Zynq 7020 SoC 作为核心处理器,设计了双核 SoC 多轴运动控制平台的总体架构.结合多轴运动控 制系统与接口特征,完成了 ...

  2. Android之linux基础教学之二 总体架构

    进程从用户级到内核级有个转换过程.如下图: 大小: 33.4 KB 大小: 30.1 KB 查看图片附件

  3. Web Magic 总体架构

    1.2 总体架构 WebMagic的结构分为Downloader.PageProcessor.Scheduler.Pipeline四大组件,并由Spider将它们彼此组织起来.这四大组件对应爬虫生命周 ...

  4. 【云计算与大数据技术】大数据系统总体架构概述(Hadoop+MapReduce )

    一.总体架构设计原则 企业级大数据应用框架需要满足业务的需求,一是要求能够满足基于数据容量大,数据类型多,数据流通快的大数据基本处理需求,能够支持大数据的采集,存储,处理和分析,二是要能够满足企业级应 ...

  5. IoT 技术演进:揭秘无源零功耗物联网通信技术原理和总体架构

    近日,OPPO发布了<零功耗通信>报告,揭秘零功耗通信的概念.技术原理和总体架构.关键技术和挑战,以及与6G关键技术的融合. 自供电"黑科技",零功耗通信 零功耗设备主 ...

  6. Dubbo的总体架构

    Dubbo的总体架构,如图所示: Dubbo框架设计一共划分了10个层,最上面的Service层是留给实际想要使用Dubbo开发分布式服务的开发者实现业务逻辑的接口层.图中左边淡蓝背景的为服务消费方使 ...

  7. 模型可解释性技术概览

    XAI系列二:模型可解释性技术概览 传统网络安全威胁分析依赖专家知识及基本的数据分析,然而随着攻击技术的复杂化.安全数据接入的多元化,高性能人工智能技术越来越多的应用到威胁分析中,试图解放安全行业的生 ...

  8. 天龙源码框架分析_MySQL8-InnoDB总体架构和运行机制的系统分析(上)

    1. 前文回顾:四个阶段和两种方法 首先让我们回顾下,在上一篇文章介绍的MySQL8代码分析的四个阶段和两种方法. 四个阶段: 借鉴瀑布式软件开发流程,我们将从熟悉MySQL的使用和运维,到吃透MyS ...

  9. 转:Linux网络IO并行化技术概览

    转:http://codinginet.com/articles/view/201605-linux_net_parallel?simple=1&from=timeline&isapp ...

最新文章

  1. 数据结构与算法:11 Leetcode同步练习(四)
  2. POJ1816:Wild Words——题解
  3. 华人“军火专家”——黄仁勋 1
  4. np.newaxis 为 numpy.ndarray(多维数组)增加一个轴
  5. cxf发布rest风格的webService
  6. SQL WITH NOCHECK 和 CLUSTERED | NONCLUSTERED
  7. android 弹窗ui,Android 弹出窗口与对话框 UI设计
  8. 俩台电脑怎么设置同一局域网_方法 | 把手机上的照片传到电脑上
  9. 是未来的风口还是无声的战争,中国的saas平台究竟能不能做起来?
  10. 3.Dockerfile
  11. android 按下缩小效果松开恢复_22省份三季报:粤苏总量差距缩小,19省份实现正增长...
  12. 数据结构与算法 - 图论
  13. 模拟Post登陆带验证码的网站
  14. 网站打开速度慢如何压缩图片_8个免费实用的图片压缩网站、软件(含下载地址)吐血推荐...
  15. 老路用得上的商学课-61-80学习(读书)笔记
  16. [UOJ449][概率DP]集训队作业2018:喂鸽子
  17. 投入产出表matlab,投入产出分析投入产出表.doc
  18. LaTeX学习---字体设置
  19. php正则匹配一个汉字,php正则表达式匹配中文
  20. GC详解---JVM(三)

热门文章

  1. 掌财社:千亿市值“插座茅”被反垄断调查!高瓴、社保基金踩雷 公司火线回应
  2. 如何在程序中创建快捷方式?
  3. 雀友腾讯跨界联合 北京打造全球顶级麻将锦标赛
  4. python爬虫网页超链接_Python爬虫获取网页上的链接
  5. 仿冒银行升级助手的木马分析
  6. 文本主题模型之潜在语义分析(LSA)
  7. [网络安全自学篇] 五十.虚拟机基础之安装XP系统、文件共享、网络快照设置及Wireshark抓取BBS密码
  8. 【ARM】仅用三个GPIO口实现串行SSI信号读取
  9. Java高级工程师进阶学习,快来收藏!
  10. java 字符是否存在_java判断字符是否存在的方法