角玉梅酒さんがとても的確なコメントを書いて下さっています…
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の対応はどうか?
- AutoCADでフィールド(図面保存時間)を含んだ図面を作成。
- IntelliCADで図面を開いて図面に変更を行う。(IntelliCADでフィールドを作成&編集する手法は用意されておりません> フィールド図形は変更しない)
- IntelliCADで別名保存 (新しい図面を作成)
- AutoCADで開く>フィールドを更新
- 値が正しく更新されました。(図形をフィールドのまま保持しています)
IntelliCADは、DWGの読み書きを DWGdirectライブラリに任せていますので、これは、DWGdirectの性能ということになります。
互換CADにとって、図面の互換性は最優先の課題となります。このような背景から、DIESEL式のサポートはFIELD図形における発生頻度が高いものほど良くテストされており、国内のLT-メニューカスタマイズで多様されている、$(getvar LASTPOINT) による座標取得のテクニックなどは、レアなケースとして扱われているようです。(そもそもODAにとっては、図面に保持される可能性のないDIESEL式の解釈は、どうでもよいことなのでしょう…)
ODA / ITCが発表した DWGdirect / IntelliCAD の更新履歴に 「DIESEL Support」 を見たとき、私もとても期待してしまいましたが…
DIESEL式の本来の目的が 「なんらか処理した結果の文字列」を生成するマクロ式のことなので… 私達が期待するメニューマクロのサポートとは、少し意味合いが異なっていたようです。
タグ: IntelliCAD