長さ45mm、M12×1.25の六角頭のボルトを自動で作図するPythonプログラムを書いて
とChatGPT に頼んだら・・・www
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d.art3d import Poly3DCollection
def draw_3d_hex_bolt():
bolt_length = 45 # ボルトの長さ (mm)
bolt_diameter = 12 # ボルトの直径 (mm)
thread_pitch = 1.25 # ボルトのピッチ (mm)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# ボルトの六角頭部を描画
bolt_head = np.array([
[0, 0, bolt_length + bolt_diameter],
[bolt_diameter * np.sqrt(3) / 2, bolt_diameter / 2, bolt_length + bolt_diameter],
[0, bolt_diameter, bolt_length + bolt_diameter],
[-bolt_diameter * np.sqrt(3) / 2, bolt_diameter / 2, bolt_length + bolt_diameter]
])
head_poly = [[bolt_head[0], bolt_head[1], bolt_head[2], bolt_head[3]]]
ax.add_collection3d(Poly3DCollection(head_poly, color='black'))
# ボルトのスレッドを描画
thread_radius = bolt_diameter / 2
for i in range(int(bolt_length / thread_pitch)):
y = i * thread_pitch
theta = np.linspace(0, 2 * np.pi, 20)
x = thread_radius * np.cos(theta)
z = y + thread_radius * np.sin(theta)
ax.plot(x, y * np.ones_like(x), z, color='black')
# スレッドの片側の先端に六角頭を描画
thread_tip = np.array([
[0, 0, 0],
[bolt_diameter * np.sqrt(3) / 2, bolt_diameter / 2, 0],
[0, bolt_diameter, 0],
[-bolt_diameter * np.sqrt(3) / 2, bolt_diameter / 2, 0]
])
tip_poly = [[thread_tip[0], thread_tip[1], thread_tip[2], thread_tip[3]]]
ax.add_collection3d(Poly3DCollection(tip_poly, color='black'))
# グラフの設定
ax.set_xlim(-bolt_diameter, bolt_diameter)
ax.set_ylim(0, bolt_length)
ax.set_zlim(0, bolt_length + bolt_diameter)
ax.set_xlabel('Width (mm)')
ax.set_ylabel('Length (mm)')
ax.set_zlabel('Height (mm)')
ax.set_title('3D Hex Bolt Drawing')
plt.show()
draw_3d_hex_bolt()
おい、何回直せと命令しても六角形の頭は描けないし、変な所に変な形の物がついているのは直せないんだな?www