常见的梁单元模型为简单的长方体,是实际工程中应用最多的形体。Ruby建模的思想为“由点成面,由面成体”,“由点成面”是根据若干同一平面上的点创建一个平面,“由面成体”是借助“推拉命令”实现形体创建。Ruby建模与我们实际手动绘制模型的过程很相似。
以长方体的梁单元模型为例,创建梁底面的代码。编写代码时,可以借助数组将梁底面坐标存储起来,其代码如下。
利用“推拉命令”创建体单元,即梁单元模型。beam_height指的是梁的推拉高度。
创建楼板模型时,将每层的楼板看成一个整体。提取楼板轮廓线的数据时,用以确定一块楼板的坐标数目较多,包括楼板和柱的位置关系(交叉部分算在柱内,楼板算至柱边)。
假设组成某个楼板底面的顶点有n个,则楼板底面的创建代码如下。
利用推拉命令创建体单元,即楼板单元模型。slab_height指的是楼板的推拉高度。
柱的建模思路与梁、楼板的建模思路类似,CAD中提供了柱的截面,获取组成柱截面的顶点坐标,在SketchUp中形成柱底面,通过推拉命令,最终得到一个实体柱。
实际工程中常见的柱截面多为长方形,即需要四个点坐标可以形成柱底面,则柱底面的创建代码如下。
如果柱为异形柱,创建柱底面的思路与创建楼板底面的思路类似。以L形异形柱为例,柱底面的创建代码如下。
利用推拉命令创建体单元,即柱单元模型。column_height指的是柱的推拉高度。
墙体可视为长宽比较大的柱,因此,墙的建模方法与柱的建模方法基本一致。对于转角墙(L形)、十字形或Z字形墙体(图3.3),可先将其分成若干矩形,然后提取这些矩形的顶点数据信息,然后按照上述创建柱的方法建模。这样操作的好处是任意矩形有且仅有四个顶点,便于数据的读/写及代码的编写。
这些非矩形墙体的矩形化操作被称为标准化,可在CAD中的图纸完成标准化操作。利用CAD的二次开发,读取墙体的数据,并将这些数据统一管理,每一组数据包含一个矩形的四个顶点。
图3.3 转角墙L形、十字形和Z形墙体
与绘制墙体、梁、柱不同,门窗尤其是窗户的绘制较为复杂。这是因为窗户由窗框和玻璃构成,种类较多、尺寸也不同。实际上,有一些相关的门窗制作插件如GKWare doormaker、Windowizer、Click Window 3D等,可以快速绘制门窗。
单击SketchUp的“窗口”(Windows)菜单,在弹出的子菜单中,单击“可扩展程序库”(Extension Warehouse),可以搜索到制作门窗、楼梯等的插件。可扩展程序库(Extension Warehouse)中制作窗户的插件如图3.4所示。
楼梯模型的创建也是比较复杂的,需要的参数比较多,如楼梯的种类、踏步的高度和宽度、踏步的个数和梯梁的厚度等。所以,借助楼梯制作插件可以快速绘制楼梯模型。常见的楼梯制作插件有GKWare StairMaker、参数化楼梯s4u Stair5等。SketchUp中提供了搜索楼梯插件的菜单“可扩展程序库”(Extension Warehouse),此处不再赘述。“可扩展程序库”(Extension Warehouse)中制作楼梯的插件见图3.5。
图3.4 “可扩展程序库”(Extension Warehouse)中制作窗户的插件
图3.5 “可扩展程序库”(Extension Warehouse)中制作楼梯的插件
CAD中的细部节点详图是二维的,缺乏直观性。在SketchUp中,创建细部节点三维详图将更加直观地呈现节点的构造,如同门窗和楼梯。借助SketchUp二次开发快速创建细部节点模型仍然有一定的难度,细部节点的种类较多,使得代码的可重复性明显降低、效率也有所下降。换言之,每一个细部节点对应的代码均有细微的差别。
如果仅是单纯的SketchUp二次开发,创建细部节点的思路与上述梁、楼板、柱、墙体的思路类似。CAD提供了细部节点的截面详图,根据截面详图创建细部节点的三维模型。考虑到细部节点的种类不同,编写的代码也会因为不同的节点而需要细微的改动。除借助Ruby外,还可以直接将细部节点详图[图3.6(a)]导入SketchUp软件中,进而创建需要的三维模型。SketchUp直接创建细部节点三维模型[图3.6(b)]。所以,创建细部节点三维模型并不是问题的关键所在,问题的关键在于节点中每一部分的材质及如何形象地表现该节点。
图3.6 细部节点详图及其三维模型
面层属于装饰层,需要依托于结构构件。以室内地面为例,室内楼板的面层包括了水泥砂浆、瓷砖等,都具有一定的厚度;室外墙体还要考虑保温层及最外面的装饰部分。所以,面层模型的创建是相对比较烦琐和复杂的工作。另外,面层模型的创建往往用于效果图、算量提取或室内外装修等。
本书基于SketchUp二次开发,提出一种创建面层模型的思路:绘制一个平面,选中该平面后单击“创建面层”命令,在弹出的对话框中选择合适的面层参数(面层厚度、颜色和材质等),面层模型即被创建。需要注意的是,该项工作虽然在一定程度上简化了创建面层模型的任务,但仍然需要对面层进行细化与调节。
图3.7创建面层并赋予纹理和材质即为上述创建面层模型思路的简单实现,在对话框里提供了两个参数:面层厚度和材质。这里的材质只提供了一些颜色选择,纹理则需要编写代码里来添加。面层模型被创建后,已经成为群组(Group)或组件(Component Instance),简化了手工建模的烦琐,但是面层上的纹理并非最佳效果,仍然需要在SketchUp自带的材质面板里调节对应的参数,或者更换纹理。代码中之所以没有创建材质面板,是因为原有的材质面板功能已经很强大了。添加材质面板的代码如下。
图3.7 创建面层并赋予纹理和材质
SketchUp中提供了用于标注的菜单命令,文字标注类主要是“文字标签”和“三维文字”两类,尺寸标注由“尺寸”命令完成。借助Ruby也可以完成一些标注工作。SketchUp中可以实现二维文字的标注,对应的效果如图3.8所示,代码如下。具体的参数调节可参照官网。
图3.8 SketchUp中二维文字的标注效果
SketchUp中使用以下代码,可以标注三维文字,最终的效果如图3.9所示。
图3.9 SketchUp中三维文字的标注效果