生成AIをつかって作業してみたログです。AI環境は、常に変化が起こっているのでログの意味でしかないかもしれません。
2025年現在では、大規模言語モデルが主流になっていますので、そのAIを使ってモデル生成コードを出力してもらいます。料金の発生しないモデルにしています。
自然言語の入力からシームレスに生成されるような仕組みがありそうですが、ひとまずコードの確認もできるので、手動でコンソールに貼り付けることにします。
FreeCAD
100x100x10の簡単なモデルを作成します。
生成AIへ入力してコードを出力してもらいます。コードをpythonコンソールへ貼り付けます。
Copilot

FreeCADのpythonターミナルにコードを添付してモデル作成します。 x100y100z10の直方体形状を作成するコードを生成してください。
import FreeCAD
import Part
# ドキュメントの作成
doc = FreeCAD.newDocument("BoxCreation")
# 直方体のパラメータ
length = 100 # x方向の長さ
width = 100 # y方向の幅
height = 10 # z方向の高さ
# 直方体の作成
box = Part.makeBox(length, width, height)
# 直方体をドキュメントに追加
Part.show(box)
# ビューを更新
doc.recompute()
簡単な指示だと、Sketchを使用しないので、いくつかの指示を繰り返し行います。

スケッチを使ったモデルにできますか。

スケッチに拘束を与えてください。

原点を完全拘束するようにして十分な拘束状態にできますか。
import FreeCAD
import Part
import Sketcher
# ドキュメントの作成
doc = FreeCAD.newDocument("FullyConstrainedSketchBox")
# 新しいスケッチを作成
sketch = doc.addObject('Sketcher::SketchObject', 'Sketch')
sketch.Placement = FreeCAD.Placement(FreeCAD.Vector(0,0,0), FreeCAD.Rotation(0,0,0,1))
# スケッチに長方形を追加
line1 = sketch.addGeometry(Part.LineSegment(FreeCAD.Vector(0,0,0), FreeCAD.Vector(100,0,0)), False)
line2 = sketch.addGeometry(Part.LineSegment(FreeCAD.Vector(100,0,0), FreeCAD.Vector(100,100,0)), False)
line3 = sketch.addGeometry(Part.LineSegment(FreeCAD.Vector(100,100,0), FreeCAD.Vector(0,100,0)), False)
line4 = sketch.addGeometry(Part.LineSegment(FreeCAD.Vector(0,100,0), FreeCAD.Vector(0,0,0)), False)
# 拘束の追加
sketch.addConstraint(Sketcher.Constraint('Coincident', line1, 2, line2, 1)) # line1の終点とline2の始点を重合
sketch.addConstraint(Sketcher.Constraint('Coincident', line2, 2, line3, 1)) # line2の終点とline3の始点を重合
sketch.addConstraint(Sketcher.Constraint('Coincident', line3, 2, line4, 1)) # line3の終点とline4の始点を重合
sketch.addConstraint(Sketcher.Constraint('Coincident', line4, 2, line1, 1)) # line4の終点とline1の始点を重合
sketch.addConstraint(Sketcher.Constraint('Horizontal', line1)) # line1を水平に拘束
sketch.addConstraint(Sketcher.Constraint('Horizontal', line3)) # line3を水平に拘束
sketch.addConstraint(Sketcher.Constraint('Vertical', line2)) # line2を垂直に拘束
sketch.addConstraint(Sketcher.Constraint('Vertical', line4)) # line4を垂直に拘束
sketch.addConstraint(Sketcher.Constraint('DistanceX', line1, 1, line1, 2, 100)) # line1の長さを100mmに拘束
sketch.addConstraint(Sketcher.Constraint('DistanceY', line2, 1, line2, 2, 100)) # line2の長さを100mmに拘束
# 原点を完全拘束
sketch.addConstraint(Sketcher.Constraint('Coincident', line1, 1, -1, 1)) # line1の始点を原点に拘束
# スケッチを押し出して直方体を作成
extrude = doc.addObject('Part::Extrusion', 'Extrude')
extrude.Base = sketch
extrude.Dir = (0,0,10)
extrude.Solid = True
extrude.TaperAngle = 0
# ビューを更新
doc.recompute()

ChatGPT v2

FreeCADのpythonターミナルにコードを添付してモデル作成します。 x100y100z10の直方体形状を作成するコードを生成してください。
import FreeCAD as App
import Part
# ドキュメントを作成または取得
doc = App.newDocument("BoxExample") if App.ActiveDocument is None else App.ActiveDocument
# 直方体を作成
box = doc.addObject("Part::Box", "Box")
box.Length = 100 # x方向の長さ
box.Width = 100 # y方向の幅
box.Height = 10 # z方向の高さ
# モデルを更新
doc.recompute()
print("直方体が作成されました")
できたのはここまでで、指示の仕方が悪いのか、スケッチを正常に作成できませんでした。
Gemini 1.5Flash

FreeCADのpythonターミナルにコードを添付してモデル作成します。 x100y100z10の直方体形状を作成するコードを生成してください。
import FreeCAD
# ドキュメントを作成 (既にドキュメントが存在する場合は不要)
doc = FreeCAD.activeDocument()
if not doc:
doc = FreeCAD.newDocument("MyDocument")
# 直方体を作成
box = doc.addObject("Part::Box", "Box")
box.Length = 100
box.Width = 100
box.Height = 10
# ビューを更新
doc.recompute()
CadQuery
同じく、100x100x10の簡単なモデルを作成します。
Copilot

cadqueryのeditorにコードを添付してモデル作成します。 x100y100z10の直方体形状を作成するコードを生成してください。
import cadquery as cq
# 直方体を作成
box = cq.Workplane("front").box(100, 100, 10)
# 結果を表示
show_object(box)

Workplaneをつかって押出で作成することはできますか。
import cadquery as cq
# ワークプレーンを作成し、長方形をスケッチ
rect = cq.Workplane("front").rect(100, 100)
# スケッチから押出して直方体を作成
box = rect.extrude(10)
# 結果を表示
show_object(box)

ChatGPT v2

cadqueryのeditorにコードを添付してモデル作成します。 x100y100z10の直方体形状を作成するコードを生成してください。
import cadquery as cq
# x=100, y=100, z=10 の直方体を作成
box = cq.Workplane("XY").box(100, 100, 10)
# モデルを表示(CadQueryエディタでは、この行で生成された形状が表示されます)
show_object(box)

Workplaneをつかって押出で作成することはできますか。
import cadquery as cq
# Workplaneを作成してスケッチを描画
box = (
cq.Workplane("XY") # XY平面上で作業開始
.rect(100, 100) # 幅100、高さ100の矩形を作成
.extrude(10) # 矩形を高さ10で押し出し
)
# モデルを表示
show_object(box)
OpenSCAD
同じく、100x100x10の簡単なモデルを作成します。
Copilot

OpenSCADのeditorにコードを添付してモデル作成します。 x100y100z10の直方体形状を作成するコードを生成してください。
//直方体を作成
cube([100, 100,10]);


2D輪郭線を定義し、それを押し出すように作成してください。
// 2D輪郭線を定義
polygon(points=[[0,0], [100,0], [100,100], [0,100]]);
// 2D輪郭線を押し出して3D形状に変換
linear_extrude(height=10) {
polygon(points=[[0,0], [100,0], [100,100], [0,100]]);
}

コメント