AIが作ったDXFの単位は合っている?mmのつもりがメートルに

アイキャッチ:DXFのヘッダーの単位の宣言($INSUNITS=6、メートル)と、100の寸法の板の図

結論:AIが作ったDXFは、図形の数字は合っていても、「単位の宣言」がメートルになっていることがありました

ClaudeにDXFを作らせたとき、図形の数字(100mmの板なら「100」)は合っていました。ところが、ファイルの中の単位の宣言(DXFのヘッダー変数 $INSUNITS)を調べると、mmで頼んだのに、メートルと宣言されたファイルがありました。

条件は、「単位に触れずに『100mm×50mmの板』のように、数字にmmだけ付けて頼む」です。そうして作ったDXF 23本の宣言を、ファイルから機械で読みました。

単位の宣言 本数 内訳
mm($INSUNITS=4) 16本 直接書かせた方式で5本、Pythonコード方式で11本
宣言なし(変数が無い) 5本 直接書かせた方式のみ
メートル($INSUNITS=6) 2本 直接1本、コード1本
  • メートルになった2本も、図形の数字は「100」のままでした。つまり、ファイルは「100メートルの板」と宣言していることになります。
  • コード方式の1本は、AIが単位を設定するコードを書かなかったのが原因でした。使ったライブラリ(ezdxf)は、何も設定しないとメートルになる既定値を持っています(確認済み)。直接書かせた方式の1本(宣言がメートル)は、AIがなぜそう書いたかは分かりません。
  • インチで頼んだ場合は、4回中4回とも正しく宣言されました(インチ=$INSUNITSが1)。図形の数字(4×2、穴は直径0.4)も合っていました。

「実際のCADで開くと、どう見えるのか」は、一部しか確認できていません(後述)。数字が合っているからと安心せず、単位の宣言も見てください。

この記事について(先にお断り)

筆者は商品開発の仕事を15年以上してきた者で、2D CAD「CADなんです」を自作して販売しています。記事の最後で触れるCADなんですは、筆者自身の製品です。

実験は、AI(Anthropic社のClaude)に実際に答えさせて記録しました。記事の文章もAIの助けを借りて下書きし、筆者が内容を確認して公開しています。図面はすべて、筆者がこのために考えた架空のものです(他社や他人の図面、個人情報は使っていません)。

「単位の宣言」って何?

DXFの中には、数字が「何の単位か」を書く欄があります。

  9
$INSUNITS
 70
     4

この「70」の次の数字が単位です。0=指定なし、1=インチ、4=mm、5=cm、6=メートルです(DXFの仕様)。CADソフトによっては、この宣言を見て、図面を挿入するときの大きさを自動で換算します。たとえば「メートルのファイル」を、mmの図面に挿入すると、1000倍の大きさになる、という動きです(これはCADの仕様からの推で、今回の実験では確かめていません)。

実験のやり方

  1. ⑫の実験で、Claudeに作らせたDXF 23本(板・L字金具・M6穴の板・寸法つきの板・円周8穴・三面図)を用意しました。うち「B1(L字金具)」だけは依頼文に「単位はmm」と書いたので、数を数える対象から外しました。
  2. 同じ依頼(A1=100×50の板)を、直接方式とコード方式で2回ずつ取り直しました(計4本を追加)。追加した4本は上の23本に含まれています。
  3. ezdxfでヘッダーを読み、$INSUNITSを数えました。
  4. 別に、「4インチ×2インチの板、穴は直径0.4インチ、単位はインチ」と頼んで、直接方式とコード方式を2回ずつ(計4本)作らせました。
  5. 単位が1と6のファイルを、無料のInkscapeでSVGに書き出して、大きさが変わるかも見ました。

AIは claude -p(ツールなし=ふつうにチャットへ頼むのと同じ条件)で動かしました。

実験結果① 「mm」と書かなくても、AIは半分以上でmmを宣言した。ただし全部ではない

単位を頼まなかった23本のうち、mmの宣言は16本(約7割)でした。Pythonコード方式では12本中11本がmmでした。AIが「doc.units = ezdxf.units.MM」と、自分から書いたためです。

一方、直接書かせた方式では、11本中5本が宣言なしでした。ファイルの形式が古い(R12=AC1009)場合、宣言が省かれがちでした。宣言がなくても、図形の数字はmmのつもりで入っているので、見た目は同じですが、CADが単位を自動で換算してくれません。

実験結果② mmで頼んだのに、メートルと宣言された2本

メートルと宣言された2本は、どちらも図形の数字は正しい(100×50の板)のに、ヘッダーだけが「メートル」でした。

  • コード方式の1本(三面図):AIのコードに、単位を設定する行がありませんでした。ezdxfの new() は、何も書かないとメートル(6)が入ることを確認しています。
  • 直接方式の1本(100×50の板の取り直し):AIがヘッダーに「メートル」を書いていました。理由は、答えの文章に説明がなく、分かりません。

エラーは出ません。 図面の見た目も、ほとんどのCADで同じです。でも、「メートルの図面」を、mmの図面に挿入するときに、1000倍で入るかもしれません。ここは、確かめていません(推)。

実験結果③ インチで頼むと、4回中4回とも正しく宣言された

「インチです」と頼むと、直接でもコードでも、$INSUNITSは1(インチ)でした。図形も、4×2の板に、直径0.4の穴でした。依頼文に単位を書くと、AIは単位の宣言を付けることが多い、という結果です(今回は4回中4回。mmで頼んだB1の4本も、全部4でした)。

実際のCADでは、どう見えたのか(確認できた範囲)

  • Inkscape:メートルと宣言した三面図と、mmと宣言した三面図を、それぞれSVGに書き出しました。図形の大きさ(座標の範囲)は、同じでした。少なくともInkscapeは、宣言を見て1000倍にはしていないように見えます(確認したのは2ファイルだけ=推)。
  • FreeCAD:読み込みの記録に「INSUNITSを見て、1単位=1mmとした」「INSUNITSがないので、設定どおり1単位=1mmとした」という趣旨のメッセージが出るところまでは見ました(FreeCAD 1.0・宣言がmmと、宣言がない場合)。しかし、図形の取り込みは自動操作が安定せず、メートルの宣言のファイルでの結果は確認できていません。
  • CADなんです(筆者の製品):⑫の23本を読み込めることは確認しました。ただ、製品が単位の宣言を見て大きさを換算するかは確認していません。同梱のreadmeを検索しましたが、$INSUNITS(単位の宣言)についての記載は見つかりませんでした。
  • AutoCAD・Jw_cad:環境がなく、試していません。

AIにDXFを作らせるときのコツ(実験から)

  1. 依頼文に単位を書く。 「単位はmm」「単位はインチ」。今回、これを書いたファイル(B1が4本、インチ依頼の4本)は、8本中8本で宣言が合っていました。
  2. 作ってもらったあとに、$INSUNITSを確かめる。 メモ帳で開いて $INSUNITS を検索し、その次の数字を見ます(4=mm)。変数が見つからないときは、宣言なしです。
  3. コードを書かせるなら、「単位をmmに設定する行を入れて」と頼む。 ezdxfは何も書かないとメートルになります。
  4. 別のCADに挿入するときは、大きさを測る。 100mmのはずの辺が、画面で何mmか確かめます。

試していないこと・限界

  • Claude 1種類。再実行は2回ずつ。ChatGPTなどは試していません。
  • 実際のCADでの大きさの変化は、確認できていません(Inkscapeの2ファイルのみ)。「1000倍で入る」は推です。
  • 作った図面は、筆者のダミー(単純形状)です。大きな図面や、複雑な図面は試していません。
  • 日本語のDXFの文字コードの話は、AIにDXFを作らせてみたでも「未試験」としています。今回も扱っていません。

AIに作らせたDXFを、自分の目で確かめる

筆者が作った2D CAD「CADなんです」は、ブラウザだけでDXFを読み込めます。⑫の23本は、すべて読み込めました。ただし、寸法(DIMENSION)とハッチ(HATCH)は読み飛ばします(readmeに記載)。単位の宣言を見て大きさを換算するかは、確認していません。単位の確認には使えません。

AIにDXFを作らせる実験は、AIにDXFを作らせてみたとAIにDXFを修正させてみたにまとめました。

CADなんですの詳細と体験版はこちら →

製品版は2,980円の買い切りです。DWGは読み書きできません(DXFを経由します)。できないことは、製品ページと同梱のreadmeに書いてあります。

よくある質問

Q. 「宣言なし」のDXFは危険ですか?
図形の数字は入っているので、開けば見えます。ただ、単位を換算してくれるCADでは、「単位が分からない」扱いになります。どう扱われるかはCADによって違うはずです(試していません)。

Q. ChatGPTでも同じですか?
試していません。方式は同じなので、ヘッダーの確認は有効なはずです。

Q. 単位の宣言は、メモ帳で直せますか?
$INSUNITS の次の数字を書き換えれば、宣言は変わります。図形の数字は変わりません(直しても、図形が拡大・縮小されるわけではありません)。

Q. 会社の図面を作らせていいですか?
会社や取引先のルールが優先です。外部のAIに送ってよいか、先に確認してください。

まとめ

  • 単位に触れずに「100mm」と頼んだDXF 23本のうち、mm宣言は16本、宣言なしは5本、メートル宣言は2本
  • メートル宣言の2本は、図形の数字はmmのまま。コード方式の1本は、AIが単位の設定を書かず、ezdxfの既定値(メートル)になったのが原因
  • 依頼文に単位を書くと、8本中8本で宣言が合った(mm 4本、インチ 4本)
  • 実際のCADでの大きさの変化は、確認できていない(Inkscapeでは変わらなかった)。数字が合っていても、宣言も見る

体験版をダウンロードしてみる →

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次