PolyScript

3Dモデルを簡潔なコードで記述するパラメトリックCAD言語。
box 40 30 10 | fillet 2 | faces top | hole 5
✎ Edit

単純な形状をパイプ | でつないで、形を仕上げる。それだけです。

PolyScriptとは

PolyScriptは3Dモデルを簡潔なコードで記述するパラメトリックCAD言語です。 OpenCascadeをカーネルとし、より簡単により安全に3Dモデリングできるよう設計しました。

簡潔で自由度の高い構文

  • 簡潔なDSL – 関数呼び出しにカッコが要らない。box 80 60 10 と書ける
  • パイプライン | – 操作を左から右へ一直線に並べる。読む順番 = 実行順
  • 宣言的モデリング – 「作る → 選ぶ → 加工する」を宣言的に記述。
  • 共有可能 – 部品の共有を容易にし、ブラウザーでも安全に実行できる
# ケースを作って、角を丸め、側面に穴を開ける
box 100 60 40
 | faces >Z | shell 2
 | edges =Z | fillet 3
 | faces right | circle 4 | cut
✎ Edit

3Dプリンティング、DIY、教育に

PolyScriptは次のような場面に向いています。

  • 3Dプリンティング – パラメータを変えるだけで寸法違いのパーツを量産できる
  • DIY / メイカー – ケース、ブラケット、治具など実用部品を素早く設計
  • 教育 – プログラミング未経験でも始められるシンプルな構文。子どもから大人まで

特徴

  • 短く書ける — よく使う操作にカッコは要らない
  • 左から右へ読める — パイプで操作が流れる
  • パラメトリック — 変数と関数で寸法を自在に変える
  • ブラウザで動く — サンドボックスで安全に実行
  • AIフレンドリー — AIが書いたモデルを、AI自身が画像なしで検証できる(下記)

試してみる

PolyScript Playground でブラウザからすぐに使えます。インストール不要です。

ドキュメント

なぜPolyScriptを作ったか

3Dモデルをコード記述するパラメトリックCADは、AIの発展と共に注目を集めています。 なかでも CadQuery はとても優れたCAD処理系で、あらゆる形状をPythonでプログラミングできます。

しかし「プログラミング言語である」こと自体が弱点にもなります。 他者が作成した3Dモデルを、安心して実行できません。 私たちの成果を安全に共有するには、絶対にDSLが必要です。

プログラミングの知識がない子どもでも簡単に使えること―― これがPolyScriptの設計コンセプトです。

AIフレンドリー

LLMはPolyScriptを書けます。つまずくのは「書いたものが意図どおりか、自分で判定する」ところです。 PolyScriptは言語とツールの両方を、そこに合わせて設計しています。

  • 静かな失敗がない — 何も選ばなかったセレクタ(selector.empty)、効果のなかった操作(check.no-effect)、 複数に割れたソリッド(check.multiple-solids)は、もっともらしい形のまま通り過ぎず、コードと行番号つきで報告されます。
  • 診断は機械可読 — すべての診断に安定したコード・位置・直し方(hint)が付き、poly explain <code> で理由と修正法を読めます。 全サブコマンドが--jsonを受け付けます。
  • 1コマンドで判定材料がそろう — poly verifyは構文検証・ビルド・各ステップのトレース・計測・フィンガープリント・ 後検査をまとめて返します。既定でstrict(警告があれば失敗)なので、終了コード0がそのまま「静かな問題なし」の意味になります。
  • 向きの間違いが数値で分かる — トレースのwhere列に選択の重心・法線・面積が出るので、faces >Z(上面)と faces =Z(側面)の取り違えを画像なしで見つけられます。
  • 断面は数値で — poly sectionは切断面の輪郭を、ミリメートル単位のループ表(面積・周長・bbox)で返します。 「中空か」「肉厚は2mmか」を、画像を読まずに答えられます。
  • 画像は最後に1枚 — poly build -o x.pngで正面・上面・側面・等角の線画を1枚にまとめます。画像しか受け取れないモデルのために PNGがあり、SVGと同じ描画です。
  • 変更の有無を一言で — フィンガープリントとpoly diffで、リファクタ後に形が変わったかどうか、変わったならどの量かが分かります。
  • 寸法を外に出せる — @paramで寸法を宣言すると、-D name=valueでの上書きが型・範囲・選択肢に照らして検査されます。
  • 安全に実行できる — PolyScriptは汎用プログラミング言語ではないDSLなので、AIが生成したモデルをサンドボックスで そのまま実行できます。
  • AIエージェント用の手順書を同梱 — poly skill installで、モデリングの作法(寸法表を先に作る、数値で検証してから 画像を見る、よくある誤り、寸法の基準表)をコーディングエージェントのスキルとして入れられます。

設計の経緯は、AIにとっての難所を「画像は高価で文脈に残り続ける」「3D空間の心内シミュレーションが苦手」 「数値の記憶が当てにならない」の3つと捉え、数値で先に判定し、画像は最後に1枚だけ見る流れにしたことにあります。

謝辞

PolyScriptは多くの優れたオープンソースプロジェクトの上に成り立っています。

  • Open CASCADE Technology — PolyScriptの3Dカーネルとして採用している強力なB-Repモデリングエンジン。ブーリアン演算からフィレット、STEPエクスポートまで、形状処理の中核を担っています。
  • OpenSCAD — 「コードで3Dモデルを書く」という文化を切り拓いたパイオニア。PolyScriptの出発点です。
  • CadQuery — Pythonによる洗練されたパラメトリックCAD API。PolyScriptのPython実装ではcadqueryのOCPバインディングを利用しており、パイプライン構文に大きな影響を受けました。

これらのプロジェクトと、それぞれのコミュニティに深く感謝します。


はじめに

基本の考え方と最初のモデル。

チュートリアル

手を動かして3つのモデルを作る。

構文リファレンス

全操作の詳細。

CLI リファレンス

poly コマンドの全サブコマンドとオプション。

チートシート

手元に置く早見表。