7.1. 颗粒对象¶
使用RTDEM,用户只需要提供建模颗粒或容器的STL文件即可。
7.1.1. STL文件¶
用户可以通过第三方软件获得建模对象的STL文件。需要注意的是,STL文件中三角面片的法向需要是有效接触一侧。比如,STL文件一般会默认给出颗粒表面外法向,如 图 7.1 。如果STL文件法向是相反方向,用户则需要进行相应处理。比如,由单层面片构成的容器,我们需要容器内侧为有效接触方向。如果用户需要容器内外两侧均为有效接触方向,即颗粒既能与容器内壁产生有效接触又能与容器外侧产生有效接触,那么用户需要提供类似壳体的STL文件。也就是说,容器内壁和外侧是由不同三角面片定义。
图 7.1 颗粒表面外法向¶
7.1.2. 颗粒形状模板¶
用户导入一个STL文件,即为颗粒提供一个形状模板。依据该模板,用户可以等比例放大或缩小颗粒,而不需要准备额外的颗粒STL文件。利用该颗粒模板,用户可以方便生成基于该形状的级配颗粒。如果用户需要生成不同形状颗粒,则需要提供不同的颗粒模板。以下为通过 Banana-lowResol.stl 文件生成若干香蕉颗粒的示例:
1# 构建对象
2poly=PolyhedronData()
3# 设置颗粒的位置和方向
4poly.setPosOri( pos, ori)
5# 载入形状文件并进行缩放,缩放系数0.002,等到的即为形状模板
6poly.loadSTL("./Banana-lowResol.stl", 0.002)
7# 计算基本的几何信息,包括体积、惯性矩等
8poly.computGeometry()
9# 获得形状模板的AABB用于查验
10span = poly.bounds.span()
11print(span)
12# 是否基于形状模板进行颗粒缩放
13#poly.setScaleFactors(np.array( scales ))
14# 把该组颗粒加到模拟数据中
15sim.pdata.addObject(poly)
7.1.3. 示例颗粒形状¶
示例管理器中提供了若干颗粒STL文件共用户参考,比如有香蕉、例子、砂子等 ( 图 7.2 与 图 7.1)。
图 7.2 颗粒STL文件:(a) 香蕉;(b) 梨子¶