笔者在前文中已经介绍了如何使用Grasshopper(以下简称GH)模板搭建一个电池组件项目,并进行一些简单的项目配置,相信各位读者已经在进行各种自定义功能电池的开发了。
不过,随着想要制作的电池的增多,每次都从项目模板创建新电池的话,会导致有许许多多的项目存在。倘若这些电池都是服务于同一个目的,将这些电池分散在不同的项目会导致不太方便管理。其次,对于这些电池如果使用到了一些共同的依赖项,还需针对每个项目重新配置一遍,十分费时费力。
“如何 在同一个项目中实现多个电池 ”是从读者处反馈最多的问题,另外附带的一个问题是,每次从项目模板中创建的但却一直被我们忽略的 “ …Info.cs ” 文件到底是用来干什么的?本文就为读者们解答这两个问题。
如何在同一个项目中实现多个电池
比起直接说步骤,笔者还是先来说说 自己写的电池是如何被GH识别的 吧,这样可以更方便大家理解。
相信大家在 如何创建GH电池 一文中已经了解到了,每一个GH电池项目最终都会编译成为一个 DLL类库 文件。而在调试之前,我们也在 Rhino 中通过设置命令将这个DLL类库的文件夹所在地址放入到了GH的某个设置中。再结合我们所有自定义电池都是继承自 GH_Component 类,那么GH识别电池的逻辑也就十分简单了:
- 在给定的文件夹中搜索类库,并动态加载
- 将所有是
GH_Component的类使用反射(Reflect)获取 - 在电池被拖入画布时,实例化对象
于是,在同一个项目中实现多个电池的思路也十分简单 —— 在项目中添加继承自 GH_Component 的类即可(在同一个文件中添加类,亦或是添加类在一个新文件中均可)。
例如,在同一个 .cs 文件中定义 2 个继承自 GH_Component 的类即可实现在同一个文件中做出 2 个GH电池(类必须具备 public 属性,原因是显而易见的):
namespace MyGhComponents
{
public class MyFirstComponent : GH_Component
{
// 构造方法必须提供额外属性,否则GH无法成功创建电池
public MyFirstComponent()
: base("First Compon

本文详细解释了如何在一个GH项目中添加多个自定义电池组件,通过继承GH_Component类并理解GH通过反射识别组件的工作原理。同时揭示了Info.cs文件的作用,以及为何在设置中禁用dll加载。最后,提供了添加电池类到项目的方法和关于Info.cs文件可删减性的提示。
最低0.47元/天 解锁文章
4987

被折叠的 条评论
为什么被折叠?



