はじめに
基本の考え方と最初のモデル。
box 40 30 10 | fillet 2 | faces top | hole 5
単純な形状をパイプ | でつないで、形を仕上げる。それだけです。
PolyScriptは3Dモデルを簡潔なコードで記述するパラメトリックCAD言語です。 OpenCascadeをカーネルとし、より簡単により安全に3Dモデリングできるよう設計しました。
box 80 60 10 と書ける| – 操作を左から右へ一直線に並べる。読む順番 = 実行順# ケースを作って、角を丸め、側面に穴を開ける
box 100 60 40
| faces >Z | shell 2
| edges =Z | fillet 3
| faces right | circle 4 | cut
PolyScriptは次のような場面に向いています。
PolyScript Playground でブラウザからすぐに使えます。インストール不要です。
3Dモデルをコード記述するパラメトリックCADは、AIの発展と共に注目を集めています。 なかでも CadQuery はとても優れたCAD処理系で、あらゆる形状をPythonでプログラミングできます。
しかし「プログラミング言語である」こと自体が弱点にもなります。 他者が作成した3Dモデルを、安心して実行できません。 私たちの成果を安全に共有するには、絶対にDSLが必要です。
プログラミングの知識がない子どもでも簡単に使えること―― これがPolyScriptの設計コンセプトです。
LLMはPolyScriptを書けます。つまずくのは「書いたものが意図どおりか、自分で判定する」ところです。 PolyScriptは言語とツールの両方を、そこに合わせて設計しています。
selector.empty)、効果のなかった操作(check.no-effect)、
複数に割れたソリッド(check.multiple-solids)は、もっともらしい形のまま通り過ぎず、コードと行番号つきで報告されます。poly explain <code> で理由と修正法を読めます。
全サブコマンドが--jsonを受け付けます。poly verifyは構文検証・ビルド・各ステップのトレース・計測・フィンガープリント・
後検査をまとめて返します。既定でstrict(警告があれば失敗)なので、終了コード0がそのまま「静かな問題なし」の意味になります。where列に選択の重心・法線・面積が出るので、faces >Z(上面)と
faces =Z(側面)の取り違えを画像なしで見つけられます。poly sectionは切断面の輪郭を、ミリメートル単位のループ表(面積・周長・bbox)で返します。
「中空か」「肉厚は2mmか」を、画像を読まずに答えられます。poly build -o x.pngで正面・上面・側面・等角の線画を1枚にまとめます。画像しか受け取れないモデルのために
PNGがあり、SVGと同じ描画です。poly diffで、リファクタ後に形が変わったかどうか、変わったならどの量かが分かります。@paramで寸法を宣言すると、-D name=valueでの上書きが型・範囲・選択肢に照らして検査されます。poly skill installで、モデリングの作法(寸法表を先に作る、数値で検証してから
画像を見る、よくある誤り、寸法の基準表)をコーディングエージェントのスキルとして入れられます。設計の経緯は、AIにとっての難所を「画像は高価で文脈に残り続ける」「3D空間の心内シミュレーションが苦手」 「数値の記憶が当てにならない」の3つと捉え、数値で先に判定し、画像は最後に1枚だけ見る流れにしたことにあります。
PolyScriptは多くの優れたオープンソースプロジェクトの上に成り立っています。
これらのプロジェクトと、それぞれのコミュニティに深く感謝します。
基本の考え方と最初のモデル。
手を動かして3つのモデルを作る。
全操作の詳細。
poly コマンドの全サブコマンドとオプション。
手元に置く早見表。