0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

STLファイルの形状と原点座標をさくっと確認したい

Posted at

STLファイル(3次元モデル)の形状と原点座標を確認するためのPython表示プログラム

例として,下図に示すような形状を3D-CADで作成し,3Dプリンタ用にSTLファイルフォーマットで保存したとします.
スクリーンショット 2024-11-15 12.25.47.jpg
ファイルエクスプローラでのファイル名だけでは,どんな形状で原点座標がどこだったかなと確認したい時があります.
そんな時には,以下のplot_stl.pyをPythonで実行すれば,プロット表示されます.
ただ,ファイルサイズが10MB越える様な大きなモデルになると,高性能なPCでないと表示するだけでも非常に時間がかかります.

スクリーンショット 2024-11-15 12.23.51.jpg

マウスのドラッグ操作で回転できます.
赤字で,原点座標が表示されます.

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()
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?