今天碰到一个群友问关于

1
2
cs.SetNumberOfShellLayers(ShellLayerType.Interior,2);
cs.SetNumberOfShellLayers(ShellLayerType.Exterior,1);

设置出错的问题
There must be at least one core layer, i.e. one layer which is not a shell layer.
发现这块没有涉及过,便研究了一下


报错的翻译为:需要存在至少一个核心层
这块单纯的开发人员可能因为使用Revit过少导致的问题。
ShellLayerType.Interior:指核心外层
ShellLayerType.Exterior:指核心内层
CoreLayer:指核心层
详下图:
在这里插入图片描述
其中核心层必须存在一层,我们通过Revit软件逻辑也可以发现当核心层只有一层是,向上向下按钮为不可选状态
在这里插入图片描述
所以当我们想人工干预外层内层时,需要对总层数进行判定,回到最开始的代码,修改为:

1
2
3
4
5
n = i + j ;
if(cs.getLayers()>n+1){
cs.SetNumberOfShellLayers(ShellLayerType.Interior,i);
cs.SetNumberOfShellLayers(ShellLayerType.Exterior,j);
}