※本サイトのコンテンツには、一部プロモーションが含まれている場合があります。

【FreeCAD×ChatGPT】ChatGPTで作成したマクロのコードでモデリングできるか検証

3Dプリンター

今回は話題のChatGPT(GPT-3.5)を使って、ChatGPTが作成したマクロのコードをそのままFreeCADに適用した場合、ちゃんとモデリングできるかを検証してみました。

因みに、私のプログラミング能力についてはExcelのVBAがそこそこ書けるだけで他の言語については知識ゼロになります。ただ、ChatGPTでコードを作成する場合は、知識がなくてもコードの作成自体は可能で、尚且つ、生成されたコード内には細かくコメントが記載されていたので、どのような処理がされているのかは誰でもある程度は理解できると思います。

スポンサーリンク

果たしてChatGPTで作成したマクロのコードでモデリングができたのか

結論から言うと、想定した形状にモデリングすることができました。

今回簡単な形状で検証してみたかったので、以前私が3Dプリンターで製作したモデルを対象にしてみました。

※どのような指示をChatGPTにしたのかは後述しています。

ChatGPTで作成したコードを使ってFreeCADでモデリングしたもの
ChatGPTで作成したコードでモデリングしたもの
検証の対象物
検証の対象物
スポンサーリンク

FreeCADのマクロの使い方

FreeCADのマクロ機能について、簡単に操作方法を説明しておきます。

まず新規ドキュメントの開き、「マクロ…」のアイコン(赤枠)をクリック。

FreeCADのマクロの使い方①

そうすると、下図の画面が表示されるので「作成」をクリック。

ファイル名を入力して「OK」をクリック。

FreeCADのマクロの使い方②
FreeCADのマクロの使い方③

そうすると、マクロのコードが書ける画面になります。

FreeCADのマクロの使い方④

コードが入力できたら、「マクロの実行」のアイコン(赤枠)をクリックすると、マクロが実行されます。

FreeCADのマクロの使い方⑤

なので、ChatGPTで作成したマクロを実行したい場合は、下図赤枠のCopy codeをクリックして、そのままFreeCADのコード画面でペーストすればOKです。

FreeCADのマクロの使い方⑥
スポンサーリンク

ChatGPTを使ってマクロのコード作成に挑戦

1.ChatGPTに曖昧な指示をしてみる

まずChatGPTの能力を図るため、曖昧な指示をしてみました。

ChatGPTを使ってマクロのコード作成している画面①
ChatGPTを使ってマクロのコード作成している画面②

生成されたコードでマクロ実行してみると、下図のようなモデルを作成できましたが、同時にエラーも表示されてしまいました。

ChatGPTで作成したマクロをFreeCADで実行した画面

このあと、ChatGPTと何回かやり取りを行いエラーは処理できましたが、上図のクオリティを超える成果物を提案されることはありませんでした。

また、ChatGPTは過去にやり取りした内容を修正できるのですが(赤枠)、同じ指示内容であっても再度送信すると異なるコードを生成してくれます。なので、満足のいく回答が得られるまで繰り返しても良いかと思いますし、やり取りの中で少しずつ要望を追加して、コードを生成して貰っても良いかと思います。

ChatGPTを使ってマクロのコード作成している画面③

2.ChatGPTに的確な指示をしてみる

曖昧な指示では、こちらが想定していた形状でコードを生成してくれないことが分かったので、次は明確な指示をしてみることにしました。

ChatGPTを使ってマクロのコード作成している画面④
ChatGPTを使ってマクロのコード作成している画面⑤

生成されたコードでマクロ実行してみると、下図のようなモデルを作成できました。

しかし、貫通穴が見るからにφ8ではありませんでした。

ChatGPTで作成したマクロをFreeCADで実行して作製されたモデル①

なので、ChatGPTにφ8の貫通穴になっていないので、コードを修正するように要望しました。

ChatGPTを使ってマクロのコード作成している画面⑥

修正されたコードで実行してみると

想定した形状にモデリングすることができました。

ChatGPTで作成したマクロをFreeCADで実行して作製されたモデル②

一応、ChatGPTに作成したもらったコードを下記に貼り付けておきます。

※#はコメント

import FreeCAD as App
import Part
import Draft

# 1. 立方体を作成
length = 90 # X軸方向の長さ
width = 30 # Y軸方向の幅
height = 20 # Z軸方向の高さ
box = Part.makeBox(length, width, height)

# 2. 貫通穴を作成
hole_positions = [(10, 15), (30, 15), (50, 15)] # 貫通穴の位置 (X, Y)
hole_radius = 4 # 貫通穴の半径 (φ8の場合、半径4)

↓コード修正前(赤字がミス

ChatGPTが作成したコードの画像

for position in hole_positions:
x, y = position
hole = Part.makeCylinder(hole_radius, height + 1)
hole.translate(App.Vector(x, y, 0))
box = box.cut(hole)

# 3. 凹みを作成
cavity_position = (65, 0) # 凹みの位置 (X, Y)
cavity_size = App.Vector(20, 30, 15) # 凹みのサイズ (X, Y, Z)
cavity = Part.makeBox(cavity_size.x, cavity_size.y, cavity_size.z)
cavity.translate(App.Vector(cavity_position[0], cavity_position[1], 0))
box = box.cut(cavity)

# モデルを表示
Part.show(box)

# ドキュメントをアクティブにする
App.setActiveDocument(“Unnamed”)
App.ActiveDocument=App.getDocument(“Unnamed”)
Gui.ActiveDocument=Gui.getDocument(“Unnamed”)

スポンサーリンク

まとめ

上記で紹介してきたように

・曖昧な指示では、こちらが想定している形状でモデリングしてもらえない。

・ChatGPT任せの指示をしても、うまいこと処理してもらえない。

・明確な指示を与えると、モデリングできる。(間違いはある)

・処理が間違っていても、その後、指摘してあげれば修正してくれる。(こともある)

今回は簡単な形状で検証してみましたが、複雑な形状ほど指示が難しく難易度は上がるだろうなと思いました。また、ChatGPTでコードが作成できるとはいえ、あまり実用的ではないかなと個人的には思いました。

今回とは違った指示出しやアプローチの方法があるかと思いますが、一つの参考になれば幸いです。

コメント

タイトルとURLをコピーしました