为何我无法给共享单元赋材质?


【问】:如下文件中含有一个SharedCell,但无法用MicroStation的Assign Material工具为其赋材质,这是为什么?

communities.bentley.com/.../270469

【答】:首先来区分一下共享单元(SharedCell)和普通单元(Normal Cell或就叫Cell):共享单元就是多个同名单元只使用一份图形表达。而普通单元则是每份单元中含有一份图形表达。当有大量同名单元时,使用共享单元能显著减少图形的存储容量。

因为共享单元的图形是保存在另外一个隐藏的叫做SharedCell Definition的元素中的,而我们看到的每个共享单元中并没有保存任何图形,只是一个SharedCell的Instance(实例),在SharedCell Instance中只保存了SharedCell的名字、插入点、缩放比例、旋转角等信息。

当你放置一个SharedCell后,其Instance所在的层有可能和其Definition中图形元素所在的层不同。本DGN中遇到的就是这种情况:Definition中的图形所在的层为Default,而SharedCell Instance所在的层为Primary3DFaces,当用Assign Material工具工作时,选中的元素是Definition中的元素,从而会将(Default,0)对应到所附材质上,而Instance则受(Primary3DFaces,0)的控制,因而SharedCell Instance不会显示出材质来。下图演示了如何查这两个层:

对于这种复杂情况,你可以绘制一个位于Primary3DFaces上的一个颜色为0的任意图形,然后对其附材质则所有这些SharedCell就都具有这种材质了。

也可以不用绘制一个新图形而直接用Assign Material工具中的Material Assignments功能来设置即可。具体操作步骤如下图所示:


当然,当SharedCell的Instance和Definition的层一致的情况下,问题就很简单了。就和普通的附材质是一样的。