# -*- coding: utf-8 -*- """ Calculate moments of inertia for a disc from STL file. """ import numpy as np import trimesh import sys import os path = os.path.dirname(os.path.realpath(__file__)) # attach to logger so trimesh messages will be printed to console #trimesh.util.attach_to_log() name = sys.argv[-1] m = trimesh.load(os.path.join(path, 'discs', name + '.stl')) trimesh.repair.fix_inversion(m) trimesh.repair.fix_normals(m) trimesh.repair.fix_winding(m) if m.is_watertight and m.is_winding_consistent and m.is_volume: V = m.volume J = m.principal_inertia_components/V print('Volume: ', V) print('J_xy: %4.3e' % J[0]) print('J_z: %4.3e' % J[2])