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

news2024/11/24 22:54:02

文章目录

    • 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/100136.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

细说OA系统的繁荣发展

改革开放以来,科技发展突飞猛进,我们生活的方方面面都受到了巨大影响。随着信息化时代的到来,企业的办公方式也发生了巨大的改变,OA系统随之走进了大众的视野。细数这四十几年,OA办公系统已经由一个异想天开的想法变成…

centos7.8离线安装pg和postgis

安装包下载地址: 链接:https://pan.baidu.com/s/1MxJc-5Ws6OPTRAoC-2srJw 提取码:is2q 1.centos7.8 离线安装pg操作步骤 这里基于centos7.8空白系统操作实践写的文档,系统一致的情况下可以照搬教程操作安装,镜像为…

1.0、Hibernate-快速入门初体验

1.0、Hibernate-快速入门初体验 Hibernate 和 mybatis 一样是 ORM (Object Relation Mapping) 对象关系映射框架,将面向对象映射成面向关系。 如何使用呢? 1、导入依赖; 2、创建 Hibernate 配置文件; 3、创建实体类; 4…

Allegro172版本多人协同在线设计操作指导

Allegro172版本多人协同在线设计操作指导 Allegro升级到172版本,可以支持多人协同设计,并且实时同步,具体操作如下 首先用户需要在同一个局域网下,并且Allegro172的版本必须一致,比如都是S082的版本 第一个用户打开PCB,选择Symphony Team design 选择 Start Symphony …

2022年度总结

自我介绍 大家好,我又回来了!我在一年之前在 CSDN 写了第一篇文章,到现在也有一年时间了。这次回来呢,也是因为 CSDN 官方发的消息,让写一篇年度总结的文章。在离开的这几个月里,主要是因为工作繁忙&#…

ASO优化:总结APP被下架的5点原因

随着苹果的App Store的监管力度的不断加强,每个APP都会有被下架的风险,而对于开发者来说,APP被下架是一件很严重的事情,不仅会造成用户的流失,还会降低用户对APP 的信任。所以,我们要了解APP被下架的原因&a…

【大数据技术Spark】Spark SQL操作Dataframe、读写MySQL、Hive数据库实战(附源码)

需要源码和依赖请点赞关注收藏后评论区留言私信~~~ 一、Dataframe操作 步骤如下 1)利用IntelliJ IDEA新建一个maven工程,界面如下 2)修改pom.XML添加相关依赖包 3)在工程名处点右键,选择Open Module Settings 4&a…

整数的大小端序

在存储整数时,一般按字节为逻辑单位进行存储,有“小端序”和“大端序”之分。小端序(little-endian) 是指将表示整数的低位字节存储在内存地址的低位,高位字节存储在内存地址的高位。如果将整数 1982062410 存储至内存…

【CANN训练营第三季】2022年度第三季新手班之昇腾AI入门课

本次参加CANN训练营,本来我报名的是进阶班课程,再看一遍新手班,学习一下目前CANN的最新进展也是不错的,巩固一下。 视频课程大家可以从这里看到 (1)【CANN训练营第三季】- 昇腾AI入门课(上&am…

使用Keepalived工具实现集群节点的高可用

GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。作者:蟹黄瓜子文章来源:社区投稿 1.前言 在集群当中离不开的一个词就是是高可用,用本文来…

OpenWrt + 每步科技DDNS 实现ipv6动态域名解析方法

其实好几个月前我就已经把这个动态域名设置好了,后面重新刷了系统,忘记保存,又得重新再来,这次把过程记录一下,免得下次再从头百度。 工具 刷好openWrt的路由器一个每步科技注册的域名(我为什么选择这个&…

数字电子技术(八)D/A和A/D转换

D/A和A/D转换概述D/A转换A/D转换例题练习模拟信号:在时间与数值上都连续 数字信号:在时间与数值上都离散 概述 D/A转换:数字信号——模拟信号 (D/A转换器简称DAC)A/D转换:模拟信号——数字信号 &#xff0…

修改物料编号格式及长度

修改物料编号格式及长度(OMSL) 路径:IMG--后勤常规--物料主数据--基本设置--定义物料编号的输出格式

毕业设计 - 基于JSP的合同信息管理系统【源码+论文】

文章目录前言一、项目设计1. 模块设计数据库设计2. 实现效果二、部分源码项目源码前言 今天学长向大家分享一个 java web jsp 项目: 基于JSP的合同信息管理系统 适合用于毕业设计、课程设计 一、项目设计 1. 模块设计 需求分析是从客户的需求中提取出软件系统能够帮助用户…

java互联网医院系统HIS源码带本地搭建教程

技术架构 技术框架:SpringBoot MySql MyBatis nginx Vue2.6 原生APP 运行环境:jdk8 IntelliJ IDEA maven 宝塔面板 Android Studio 文字本地搭建教程 下载源码,小皮面板安装mysql5.7数据库,创建一个新数据库,…

引力波探测,冷冻电镜研究:两项诺奖GPU功不可没

我们的日常工作固然重要,但并非每一份重要的工作都能够助力他人获得诺贝尔奖。然而,就在2017年10月,GPU 计算便两度成为了助力获得诺贝尔奖的幕后英雄。 三名美国物理学家Rainer Weiss、Barry Barish和Kip Thorne因探测到了爱因斯坦百年前预测…

从“跨域融合”到“中央计算”,这家Tier1如何率先抢跑?

全球汽车产业已经进入以智能化为主旋律的下半场竞赛,同时整车电子电气架构也在加速跨入集中式电子电气架构时代。 在这样的背景之下,智能驾驶域控制器成为了当前最大的增量市场之一,由此也带动了上游芯片、OS、中间件等域控相关软硬件产品的…

第13讲:Python列表对象中元素的删操作

文章目录1.列表元素删操作的方法2.调用remove方法一次删除一个指定的元素3.调用pop方法一次只删除一个指定索引的元素3.1.使用pop方法删除列表中索引为2的元素3.2.使用pop方法不指定索引3.3.使用pop方法指定的索引不存在时同样也会抛出错误4.使用del语句一次至少删除一个元素4.…

nodejs+vue082新生入学管理系统-vscode msyql

一章 绪论 3 1.1课题背景 3 1.2课题研究的目的和意义 3 1.3 研究现状 4 1.4论文所做的主要工作 4 第二章 技术介绍 5 2.1 B/S结构 5 2.2MySQL介绍 5 2.3MySQL环境配置 6 第三章 系统分析与设计 8 3.1系统说明 8 3.2系统可行性分析 8 3.2.1 技术可行性 8 3.2.2 经济可行性 8 3…

Vue3——路由和嵌套路由的使用

路由的作用 用来在前端的页面实现页面的切换,比如下图中acwing的页面应该就是采用了路由来设计导航栏,在每一次点击不同选项时只有网址后面的索引发生变化,网页并没有刷新 路由的使用方法: 根据导航栏处的跳转的页面的不同&…