GH Block组件的疑问

事先定义一个Block,Name为2


随后我把Panel中的2改为别的值(比如3)

可以看到组件输出的Block Dfinition是改变的,然而在Rhino的Block Manager界面却没有出现一个名为3的Block
T}JEO82B7O5_P{%E$L2YPV

能顺便提供一下相应的 Rhino与Grasshopper 文件?

谢谢回复,我已经发现问题所在了。新GH1的Block组件的原理是这样的:
Grasshopper内有关Block的信息是预存在GH中的,除非进行Bake否则是不会写入Rhino的。像我的这个例子我定义一个名为2的Block,如果未进行Bake,它在Block Manager中就不会出现;
我原先提出的疑问在这就结束了,是我在创建Name为2的Block Definition时不小心Bake了它,而将panel的值改为3以后并未Bake。如果我过程中始终没有Bake Block Definition,Rhino的Block Manager界面内将不会有任何的值。
以下是由这个原理衍生出来的一个现象:
Model Block Intance这个组件输入的Block Definition是GH中的定义的,倘若在Block Definition没有在Rhino中存在,则对Model Block Intance的Bake将会创建一个Block Definition并且创建Bake;倘若Block Definition和在Rhino中不一致,GH预览的效果将是GH中定义的,而Bake出的效果是Rhino中定义的。
本质上讲,GH是起到预览的效果,Bake是将组件的数据写入到Rhino并且创建具体的实例,在对Block Instance进行bake时只是传递了Block的名称
下面的图片可以更加直观的说明这个现象:



以上是我自己尝试得出的结论,如果官方有发布这些组件的相关说明,请务必告诉我。

此外,关于Block我还有一些别的疑问
我通过GH创建Block,包含多个图元,我想Bake到Rhino里时对Block内的图元的属性进行编辑(结合Human,修改名称、颜色、材料、图层等),我尝试使用Bake图元之后使用explode instance的办法,再结合Rhino去编辑Block内的图元,但是失败了,如下图所示。


我想这可能是新版GH1的block相关组件还不够完善的原因。
按照我的理解(不一定对),Block内的图元也是有GUID的,只要我获取到图元的GUID,我就可以对它进行编辑。然而,我使用python对Block Instance的类型进行查询,结果竟然是Transform,这个类型让我无从下手。
我在Bake的过程中还发现,Elefront的Bake是可以Bake这个类型的,而human不可以。也就是说这个类型是有相应的方法的?
image

修改Block内图元信息.3dm (103.6 KB)
修改Block内图元信息.gh (13.4 KB)

在下面这贴有集中介绍,后期新增特征也会这里更新 :point_down:
Rhino 8 Feature: GH1 Is Now More Than Just Geometry! - Serengeti (Rhino WIP) - McNeel Forum

我想这可能是新版GH1的block相关组件还不够完善的原因。
按照我的理解(不一定对),Block内的图元也是有GUID的,只要我获取到图元的GUID,我就可以对它进行编辑。然而,我使用python对Block Instance的类型进行查询,结果竟然是Transform,这个类型让我无从下手。

GUID 仅 Rhino 内的物件才有,从Rhino提取的物件有GUID,进一步在GH内炸开就是提取为GH物件,所以没有GUID,

BTW,建议你看看这里关于 GUID 的教学
Grasshopper 帮助 > GUID (rhino3d.com.cn)

定义block的运算器,建议使用human插件。官方的运算器居然不支持定义block的原点(坐标系)。下图是两者的比较。

移动到原点呗,多一个运算器的事情 :joy:

这个问题确实如此,移动到原点不难。不过human那个手动更新的选项在实际应用中还是很香的,原生运算器稍微差了一点。

:rose: 谢谢反馈,会尽快将这个问题反馈给我们的相关开发工程师。