NetDEM Python API 参考文档 - Shape模块

本文档提供了NetDEM软件中Shape模块相关的Python API接口说明。Shape模块包含了各种几何形状的定义和操作,为离散元模拟中的颗粒和墙体提供几何表示。

目录

Shape

Shape是所有几何形状的基类,提供了形状的基本属性和方法。

属性

属性名 类型 描述
id int 形状的唯一标识符
label str 形状的标签
shape_type Shape.Type 形状的类型
shape_name str 形状的名称
use_customized_solver bool 是否使用自定义求解器
render_mesh STLModel 用于渲染的网格模型

枚举

枚举 描述
Shape.Type none 未指定类型
point_sphere 点球体类型
sphere 球体类型
spherical_harmonics 球谐函数类型
trimesh 三角网格类型
trimesh_convex 凸三角网格类型
ellipsoid 椭球体类型
polybezier 多重贝塞尔曲线类型
triangle 三角形类型
plane 平面类型
cylinder 圆柱体类型
poly_super_ellipsoid 多重超椭球体类型
poly_super_quadrics 多重超二次曲面类型
level_set 水平集类型
netsdf 网络符号距离函数类型
coded_netsdf 编码网络符号距离函数类型
num_shapes 形状类型总数

方法

方法名 参数 返回值 描述
__init__ - 创建一个新的Shape实例
PackJson dict 将形状数据打包为JSON格式
InitFromJsonFile filename: str - 从JSON文件初始化形状
GetSize float 获取形状的尺寸(等体积球的直径)
GetVolume float 获取形状的体积
GetInertia Mat3d 获取形状的惯性张量
GetInertiaPrincipal Vec3d 获取形状的主惯性
GetBoundAABB tuple[Vec3d, Vec3d] 获取形状的轴对齐包围盒(最小点和最大点)
GetBoundAABB pos: Vec3d, quat: Vec4d tuple[Vec3d, Vec3d] 获取指定位置和方向下形状的轴对齐包围盒
GetBoundSphereRadius float 获取形状的包围球半径
GetSkin float 获取形状的皮肤厚度(用于接触检测)
GetSkinFactor float 获取形状的皮肤系数
EnableSurfaceNodes - 启用表面节点
DisableSurfaceNodes - 禁用表面节点
IsSurfaceNodesEnabled bool 检查表面节点是否启用
GetSurfaceNodeNum int 获取表面节点数
GetSurfaceNodes VecXT<Vec3d> 获取表面节点列表
GetSurfaceNodeAreas VecXT<float> 获取表面节点面积列表
GetSurfaceNodeSpacing float 获取表面节点间距
GetRenderMesh STLModel 获取渲染用的网格模型
CheckConvexity bool 检查形状是否为凸形状
Translate translation: Vec3d - 平移形状
UpdateSurfaceNodes - 更新表面节点
UpdateRenderMesh num_nodes: int=200 - 更新渲染网格
UpdateShapeProperties - 更新形状属性
SetSize size: float - 设置形状的尺寸
SetSkin skin: float - 设置形状的皮肤厚度
SetSkinFactor factor: float - 设置形状的皮肤系数
SetSurfaceNodeNum num: int - 设置表面节点数
SetSurfaceNodes nodes: VecXT<Vec3d> - 设置表面节点
SetSurfaceNodes stl_model: STLModel - 从STL模型设置表面节点
Clone Shape 克隆形状
GetSTLModel num_nodes: int=200 STLModel 获取形状的STL模型
SaveAsVTK filename: str - 将形状保存为VTK文件
SaveAsSTL filename: str - 将形状保存为STL文件
SupportPoint direction: Vec3d Vec3d 获取给定方向上的支撑点
SupportPoints direction: Vec3d VecXT<Vec3d> 获取给定方向上的多个支撑点
SignedDistance position: Vec3d float 计算点到形状的有符号距离
SurfacePoint position: Vec3d Vec3d 计算给定点最近的表面点
Enclose position: Vec3d bool 检查点是否在形状内部
CheckPrincipal bool 检查形状是否按主轴对齐
Print - 打印形状信息

Sphere

Sphere类表示一个球体形状。

属性

属性名 类型 描述
继承自Shape的所有属性

方法

方法名 参数 返回值 描述
__init__ - 创建一个默认球体
__init__ diameter: float - 创建一个指定直径的球体
Clone Sphere 克隆球体
PackJson dict 将球体数据打包为JSON格式
InitFromJson json_data: dict - 从JSON数据初始化球体
Init - 初始化球体
UpdateSurfaceNodes - 更新表面节点
UpdateShapeProperties - 更新形状属性
GetSTLModel num_nodes: int=200 STLModel 获取球体的STL模型
SupportPoint direction: Vec3d Vec3d 获取给定方向上的支撑点
SupportPoints direction: Vec3d VecXT<Vec3d> 获取给定方向上的多个支撑点
SignedDistance position: Vec3d float 计算点到球体的有符号距离
SurfacePoint position: Vec3d Vec3d 计算给定点最近的表面点

PointSphere

PointSphere类表示一个点球体形状,通常用于离散元模拟中的接触检测优化。

属性

属性名 类型 描述
node_area_corrector float 节点面积校正系数
继承自Shape的所有属性

方法

方法名 参数 返回值 描述
__init__ - 创建一个默认点球体
__init__ diameter: float - 创建一个指定直径的点球体

Plane

Plane类表示一个平面形状。

属性

属性名 类型 描述
center Vec3d 平面的中心点
dir_n Vec3d 平面的法向量
extent float 平面的扩展范围
继承自Shape的所有属性

方法

方法名 参数 返回值 描述
__init__ - 创建一个默认平面
__init__ center_x: float, center_y: float, center_z: float, normal_x: float, normal_y: float, normal_z: float - 创建一个指定中心点和法向量的平面
SetExtent extent: float - 设置平面的扩展范围
SetCenter center: Vec3d - 设置平面的中心点
SetNormal normal: Vec3d - 设置平面的法向量

Triangle

Triangle类表示一个三角形形状。

属性

属性名 类型 描述
vertices VecXT<Vec3d> 三角形的三个顶点
dir_n Vec3d 三角形的法向量
继承自Shape的所有属性

方法

方法名 参数 返回值 描述
__init__ - 创建一个默认三角形
__init__ v1: Vec3d, v2: Vec3d, v3: Vec3d - 创建一个由三个顶点定义的三角形
SetVertices v1: Vec3d, v2: Vec3d, v3: Vec3d - 设置三角形的顶点

Cylinder

Cylinder类表示一个圆柱体形状。

属性

属性名 类型 描述
radius float 圆柱体的半径
height float 圆柱体的高度
继承自Shape的所有属性

方法

方法名 参数 返回值 描述
__init__ - 创建一个默认圆柱体
__init__ radius: float, height: float - 创建一个指定半径和高度的圆柱体
Init - 初始化圆柱体

Ellipsoid

Ellipsoid类表示一个椭球体形状。

属性

属性名 类型 描述
axis_a float 椭球体的x轴半径
axis_b float 椭球体的y轴半径
axis_c float 椭球体的z轴半径
继承自Shape的所有属性

方法

方法名 参数 返回值 描述
__init__ - 创建一个默认椭球体
__init__ axis_a: float, axis_b: float, axis_c: float - 创建一个指定三轴半径的椭球体
Init - 初始化椭球体

SphericalHarmonics

SphericalHarmonics类表示一个由球谐函数定义的形状。

属性

属性名 类型 描述
degree int 球谐函数的次数
a_nm VecXT<float> 球谐系数
继承自Shape的所有属性

方法

方法名 参数 返回值 描述
__init__ - 创建一个默认球谐形状
__init__ degree: int - 创建一个指定次数的球谐形状
Init - 初始化球谐形状
InitFromSTL filename: str - 从STL文件初始化球谐形状
InitFromSTL stl_model: STLModel - 从STL模型初始化球谐形状

PolySuperEllipsoid

PolySuperEllipsoid类表示一个多重超椭球体形状。

属性

属性名 类型 描述
axis_a float x轴半径
axis_b float y轴半径
axis_c float z轴半径
order_ab float xy平面的形状参数
order_c float z方向的形状参数
继承自Shape的所有属性

方法

方法名 参数 返回值 描述
__init__ - 创建一个默认多重超椭球体
__init__ axis_a: float, axis_b: float, axis_c: float, order_ab: float, order_c: float, ... - 创建一个指定参数的多重超椭球体
Init - 初始化多重超椭球体

PolySuperQuadrics

PolySuperQuadrics类表示一个多重超二次曲面形状。

属性

属性名 类型 描述
axis_a float x轴半径
axis_b float y轴半径
axis_c float z轴半径
order_a float x方向的形状参数
order_b float y方向的形状参数
order_c float z方向的形状参数
继承自Shape的所有属性

方法

方法名 参数 返回值 描述
__init__ - 创建一个默认多重超二次曲面
__init__ axis_a: float, axis_b: float, axis_c: float, order_a: float, order_b: float, order_c: float, ... - 创建一个指定参数的多重超二次曲面
Init - 初始化多重超二次曲面

LevelSet

LevelSet类表示一个由水平集函数定义的形状。

方法

方法名 参数 返回值 描述
__init__ - 创建一个默认水平集形状
InitFromSTL filename: str, resolution: int - 从STL文件初始化水平集形状
InitFromSTL stl_model: STLModel, resolution: int - 从STL模型初始化水平集形状
InitFromDistanceMap distance_map: array - 从距离图初始化水平集形状
SurfacePoint position: Vec3d Vec3d 计算给定点最近的表面点
AlignAxes - 将水平集对齐到主轴

TriMesh

TriMesh类表示一个由三角形网格定义的形状。

属性

属性名 类型 描述
vertices VecXT<Vec3d> 三角网格的顶点列表
facets VecXT<Vec3i> 三角网格的面片列表,每个面片包含三个顶点索引
继承自Shape的所有属性

方法

方法名 参数 返回值 描述
__init__ - 创建一个默认三角网格形状
Init - 初始化三角网格形状
InitFromSTL filename: str - 从STL文件初始化三角网格形状
InitFromOFF filename: str - 从OFF文件初始化三角网格形状
InitFromSTL stl_model: STLModel - 从STL模型初始化三角网格形状
Decimate num_nodes: int - 简化三角网格到指定节点数
MakeConvex - 将三角网格转换为凸包
AlignAxes - 将三角网格对齐到主轴