STLファイル(3次元モデル)の形状と原点座標を確認するためのPython表示プログラム
例として,下図に示すような形状を3D-CADで作成し,3Dプリンタ用にSTLファイルフォーマットで保存したとします.
ファイルエクスプローラでのファイル名だけでは,どんな形状で原点座標がどこだったかなと確認したい時があります.
そんな時には,以下のplot_stl.pyをPythonで実行すれば,プロット表示されます.
ただ,ファイルサイズが10MB越える様な大きなモデルになると,高性能なPCでないと表示するだけでも非常に時間がかかります.
マウスのドラッグ操作で回転できます.
赤字で,原点座標が表示されます.
plot_stl.py
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D, art3d
from stl import mesh
import tkinter as tk
from tkinter import filedialog
# ダイアログボックスでSTLファイルを選択
root = tk.Tk()
root.withdraw()
file_path = filedialog.askopenfilename(filetypes=[("STL files", "*.stl")])
# STLファイルの読み込み
your_mesh = mesh.Mesh.from_file(file_path)
# プロットの設定
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# STLメッシュのプロット
ax.add_collection3d(art3d.Poly3DCollection(your_mesh.vectors, facecolor=[0.5, 0.5, 1], linewidths=1, edgecolor='k', alpha=.25))
# 軸範囲の設定
scale = your_mesh.points.flatten('F')
ax.auto_scale_xyz(scale, scale, scale)
# 原点に赤丸と座標値の表示
ax.scatter([0], [0], [0], color="red", s=100) # 赤丸
ax.text(0, 0, 0, "(0,0,0)", color='red') # 座標値
# プロットの表示
plt.show()