chatGPTで3Dプリンタ用のプログラムを生成してみました。


Prusaシミュレータで表示
実際に印刷したもの


3Dプリンタでランプシェードを設計して製造販売しているのですが
スパイラルモードでスライスすると、仕上りがきれいな事に気が付いて、ずっとそれに固執してやってきました。
今回は、竹籠のような形状をプリントするためのgcodeを生成するプログラムをchatGPTに作って貰った顛末を書きます。
色々試行錯誤して出来上がった後でやり取りをchatGPTにまとめてもらいました。以下です。

これまでのやり取りを時系列でまとめると、次のようになります。

  1. 最初に、G-codeを生成するプログラムを作成するように依頼されました。このプログラムは、3Dプリンタで動作するG-codeを生成するもので、サイドビュー形状は点列を補間した形状とし、Z軸回りに回転させることで形状を作成するものでした。

  2. 次に、垂直断面形状を直線ではなく自由曲線に変更するように依頼されました。

  3. その後、パスを蛇が蛇行するように変更するように依頼されました。また、1層おきに蛇行の方向が逆になるように要求されました。

  4. 層と層のつなぎをスムーズにするように依頼されました。

  5. 蛇行の振幅と波長を調整できるように依頼されました。

  6. 3Dプリントのテーブルサイズを指定できるように依頼されました。これにより、座標が第一象限に限定されるようになりました。

  7. 1層目のパスを特別に生成するように依頼されました。1層目の厚さを指定し、同じZ座標で1周するように要求されました。

  8. エクストルーダの量が多すぎるという問題が指摘され、その計算方法を見直すように依頼されました。

  9. スピード値をパラメータ化するように依頼されました。

  10. 最後に、1層目も蛇行するように変更するように依頼されました。

これらの変更を経て、G-codeを生成するプログラムは進化し、より複雑な形状を生成できるようになりました。このプログラムを使用して、3Dプリントされたオブジェクトを作成することができました。

というようにまとめてくれました。仕様書を書いてくれと言ったら以下のようになりました。

このプログラムの設計書を作成します。以下は、プログラムの各部分の概要と、それぞれの機能についての説明です。

プログラムの概要

このプログラムは、3Dプリンタで動作するG-codeを生成するためのものです。サイドビュー形状は点列を補間した形状とし、Z軸回りに回転させることで形状を作成します。また、蛇行パスやスムーズな層のつなぎなど、さまざまな機能を実装しています。

プログラムの機能

  1. パラメータ設定: プログラムのはじめに、必要なパラメータを設定します。これには、円柱の高さや半径、ステップ数、ノズル径、層の厚さ、蛇行の振幅と波長、1層目の厚さ、スピード値などが含まれます。

  2. スプライン補間: サイドビュー形状をスプライン補間によって生成します。これにより、垂直断面形状が自由曲線になります。

  3. 蛇行パス生成: プログラムは、各層で蛇行するパスを生成します。蛇行の方向は1層おきに逆になります。また、1層目は蛇行するように指定されています。

  4. スムーズな層のつなぎ: 層と層のつなぎをスムーズにする機能が実装されています。これにより、3Dプリントされたオブジェクトの仕上がりが向上します。

  5. エクストルーダ量の計算: プログラムでは、エクストルーダの量を適切に計算します。これにより、印刷物の強度が維持されます。

  6. スピード値のパラメータ化: スピード値がパラメータ化されており、最初の設定で指定することができます。

プログラムの構成

プログラムは、以下の関数で構成されています。

  • calculate_extrusion_rate: エクストルーダの量を計算する関数です。

  • gcode_for_point: 与えられた点の座標に対応するG-codeを生成する関数です。

  • create_spiral_path: スパイラルパスを生成する関数です。

  • create_serpentine_path: 蛇行パスを生成する関数です。

  • generate_gcode: 上記の関数を組み合わせて、最終的なG-codeを生成する関数です。

使用方法

  1. 必要なパラメータを設定します。これには、円柱の高さや半径、ステップ数、ノズル径、層の厚さ、蛇行の振幅と波長、1層目の厚さ、スピード値などが含まれます。

  2. プログラムを実行します。実行すると、指定されたパラメータに基づいてG-codeが生成されます。

  3. 生成されたG-codeを3Dプリンタに送信し、印刷を開始します。

プログラムの改良点

  • 各層の始まりと終わりをさらにスムーズにつなぐ方法を検討することで、印刷物の品質をさらに向上させることができます。

  • より複雑な形状やパターンに対応できるように、プログラムを拡張することができます。

これが、3Dプリンタで動作するG-codeを生成するプログラムの設計書です。このプログラムを使用することで、指定されたパラメータに基づいて形状が生成され、高品質な3Dプリントが可能になります。

さらに、このプログラムをchatGPTに作って貰うための文言を作って貰ったら以下のようになりました。

3Dプリンタ用のG-codeを生成するPythonプログラムが必要です。プログラムは、Z軸を中心にサイドビュー形状を回転させてオブジェクトを作成する必要があります。サイドビュー形状は、一連の点とスプライン補間を使用して定義する必要があります。また、プログラムは各層について蛇行パスを生成し、蛇行の方向を一つおきの層で反転させる必要があります。層間の接続がスムーズであり、プログラムは3Dプリンターの押出量を計算する必要があります。スピード値はパラメータ化され、最初の層も蛇行パスを持つ必要があります。これに対応する完全なPythonコードを提供してください。

これでプログラムは作ってくれますが、相当デバックしないと動かないです。
最初に紹介した手順では、合計26回やり取りしてデバックして動きました。
メインプログラムの名前はgenerate_smooth_snake_vertical_shape_gcode_spiral
です。

というわけで、面白い体験でした。


この記事が気に入ったらサポートをしてみませんか?