IntelliCAD の DIESEL 式はどの程度使える?

角玉梅酒さんがとても的確なコメントを書いて下さっています…
http://cadru.blog55.fc2.com/blog-entry-59.html

その背景を説明します。

現在、IntelliCAD に含まれている DIESEL式サポートは、残念ながら皆さんが期待するメニューマクロのサポートには、ならないと思っております。

これは、AutoCAD2005以降のDWGに含まれるフィールド(FIELD)文字図形をサポートするために ODAによって作成されたもので、その構文解析処理をメニュー文字列に適用したら、そこそこ動いてしまいました…

そこそこ動くんですが、完全ではない… このあたりは、昔から変わらず、とてもIntelliCAD らしいのですが…  大変、心苦しく感じております。

FIELDは、AutoCAD 2005 (LTは、2009)でサポートされた図形で 「可変文字列」とでも呼べば判りやすいのかな? MTEXT図形として扱われますが、入力文字がそのまま図面に描かれるのではなく、「なんらか処理した結果」生成される文字列が図面に記入されます。その 「なんらかの処理」 を記述するのに、DIESEL 式を使うことが出来ます。

従来、DIESEL式はメニューマクロとして利用されていたので、それが図面に保存されることはありませんでしたが、DIESEL式がFIELDオブジェクトに使用されるようになったため、AutoCADと互換性のあるDWGを作成するためにDIESEL式をサポートする必要があった… ということになります。

例えば… フィールドを使えば、図面の「最終保存日時」、「図面ファイル名」 などを自動で図面に記入することができます。

ファイル名: $(getvar DWGNAME)
→ “Drawing1.dwg”

保存日付: $(edtime, $(getvar,date) , YY/MO/DD HH:MM:SS)
→ “09/10/02 13:36:10″

図面保存時、これらの式が更新されて保存されます。

2005以降の DWG/DXFは、このような用法で DIESEL式を図面に保存することができますので、AutoCADで作成した図面にフィールドが含まれる場合、それを開いて再保存した場合、その値が更新されなければなりません。

互換CADの対応はどうか?

  1. AutoCADでフィールド(図面保存時間)を含んだ図面を作成。
  2. IntelliCADで図面を開いて図面に変更を行う。(IntelliCADでフィールドを作成&編集する手法は用意されておりません> フィールド図形は変更しない)
  3. IntelliCADで別名保存 (新しい図面を作成)
  4. AutoCADで開く>フィールドを更新
  5. 値が正しく更新されました。(図形をフィールドのまま保持しています)

IntelliCADは、DWGの読み書きを DWGdirectライブラリに任せていますので、これは、DWGdirectの性能ということになります。

互換CADにとって、図面の互換性は最優先の課題となります。このような背景から、DIESEL式のサポートはFIELD図形における発生頻度が高いものほど良くテストされており、国内のLT-メニューカスタマイズで多様されている、$(getvar LASTPOINT) による座標取得のテクニックなどは、レアなケースとして扱われているようです。(そもそもODAにとっては、図面に保持される可能性のないDIESEL式の解釈は、どうでもよいことなのでしょう…)

ODA / ITCが発表した DWGdirect / IntelliCAD の更新履歴に 「DIESEL Support」 を見たとき、私もとても期待してしまいましたが…

DIESEL式の本来の目的が  「なんらか処理した結果の文字列」を生成するマクロ式のことなので…  私達が期待するメニューマクロのサポートとは、少し意味合いが異なっていたようです。

タグ:

コメントをどうぞ