此插件为官方原版未经修改,如需了解对应#rhino插件#的原版信息,可在页面底部点击跳转官方网站进行查看下载。
哪里可以下载到rhino插件
当然是访问建筑曲奇导航的Rhino插件板块,超全rhino 插件下载请访问: rhino插件大全
注意:通过Food4Rhino上的“评论”请求支持可能会被忽略
请在GitHub问题页面或讨论论坛(你可以提到@andheum,我会看到的)提交问题。
Grasshopper的JSON序列化 + 反序列化
详见这里:GitHub - jSwan项目页面
# jSwan
Grasshopper 3d的JSON序列化/反序列化
## 什么是jSwan?##
jSwan是一套用于轻松处理JSON格式数据的Grasshopper组件。它旨在与Grasshopper的组件逻辑和数据结构直观地工作。
### 什么是JSON?###
>JSON代表JavaScript Object Notation
>JSON是一种轻量级的数据存储和传输格式
>JSON通常用于服务器向网页发送数据时
>JSON是“自描述的”并且易于理解
这里有一个用JSON描述的示例对象:
{
"name": "John",
"age": 30,
"cars": [
{
"name": "Ford",
"models": [
"Fiesta",
"Focus",
"Mustang"
]
},
{
"name": "BMW",
"models": [
"320",
"X3",
"X5"
]
},
{
"name": "Fiat",
"models": [
"500",
"Panda"
]
}
]
}
## 如何使用jSwan?##
你可以使用`序列化JSON`组件来构建JSON对象。
这些组件与数据树直观地交互,右键选项允许你告诉组件是将数据作为单个项目/对象处理,还是作为数组处理。
反序列化JSON甚至更容易,使用`反序列化JSON`组件即可。
该组件自动为输入数据的每个唯一属性生成一个输出。每个组件实例一次反序列化一层嵌套,因此你最终得到的数据树完美反映了输入数据的结构。
## 我会用这个做什么?##
这取决于你!在Grasshopper中使用JSON格式有很多原因。以下是一些例子:
- 与网络交互:从网络服务或API接收或发送的数据通常以JSON格式进行
- 将Grasshopper / Rhino格式的几何图形转换为任何程序都能理解的结构化格式(C#、javascript、python等大多数语言都有读取和编写JSON数据的能力,有时需要第三方库的帮助。)
- “面向对象的Grasshopper”——通过将它们编码为JSON来构建自定义对象类型,并构建自己的可重用集群,获取它们的相关属性,而不是传递许多并行数据流。例如,你可以构建一个单一的面板JSON对象列表,而不是传递面板列表、它们的ID列表以及它们的面积或其他数据列表。
## 详细特性 ##
### 序列化JSON ###
从你输入的数据创建JSON结构。使用ZUI(可缩放UI)根据需要添加额外属性。你给每个参数的名称将是JSON属性的名称。每个输入将对应一个属性。右键单击每个输入,选择“项目访问”(将输入列表中的每个对象视为单个项目)和“列表访问”(将整个列表视为数组)。请注意,该组件的执行遵循Grasshopper的正常列表匹配行为,所以如果属性值似乎“附加”到错误的对象上,请检查你的树结构。该组件使用默认对象序列化,所以如果你传递简单的类型,如点和向量,它们将自动序列化为具有X、Y和Z属性的对象。
该组件还有一个右键菜单项“锁定结构”,它将强制组件在生成的对象中包含空值和空属性,而不是省略它们。你可以选择“锁定所有序列化组件”来锁定你定义中的所有序列化组件。
### 反序列化JSON ###
从你输入的JSON结构中提取数据。
对于JSON对象的每个顶级属性,它将生成一个输出。具有简单值的属性(数字、字符串、布尔值等)将简单地输出该值;具有对象值的属性将简单地输出JSON格式的内容,因此你可以连接另一个组件来进一步解构。数组属性将自动分解为值或对象的列表。如果最顶层的JSON对象本身是一个数组,它将生成一个名为“array”的单个输出。
输出是根据数据中的唯一属性名称自动生成的。这意味着如果输入数据发生变化,组件本身可能会通过添加/删除输出来改变“形状”。为了防止这种情况发生,右键单击“锁定”组件的结构——这将防止其结构改变,缺失的属性将以空列表或空值输出。你可以选择“锁定所有反序列化组件”来锁定你定义中的所有反序列化组件。
### 序列化键和值 ###
这个组件允许你明确地为JSON对象的键和值提供一组值列表,而不是像常规序列化组件那样编辑参数输入名称。
### 反序列化键和值 ###
这个组件让你将JSON解构为键和值的列表,而不是为每个属性生成一个单独的输出。你还可以提供一个可选的键输入,以仅从对象中选择特定的键。