AutoCAD 2014 の新機能 ~ その 3

続いて、今日は AutoCAD 2014 で導入されたカスタマイズ関係の機能や改善、改良された機能について紹介します。

アドオン アプリケーションの互換性 と DWG ファイル形式

最初に、気になるアプリケーションの互換性について触れておきましょう。AutoCAD API を使ったアドオン アプリケーションの移植性 の記事でご紹介したとおり、AutoCAD は 3 世代毎に DWG ファイル形式とAPI を利用したアドオン アプリケーションの互換性を維持するコンセプトを採用しています。

今回、登場した AutoCAD 2014 は、AutoCAD 2013 から始まった世代の 2 世代目ということになりますので、DWG ファイル形式は、2013 DWG 形式を継続採用し、AutoCAD 2013 用に開発されたアドオン アプリケーションのバイナリ互換を保つことになります。このため、原則、そのまま再コンパイルなしでロードして実行することができるはずです。 もし、AutoCAD 2013 用のアドオン アプリケーションをお持ちであれば、まずは、AutoCAD 2014 で期待した動作をするか試してみてください。

AutoCADのバージョン履歴を示すタイムライン画像。各バージョンとDWG形式の移行を示す星印が描かれている。

ObjectARX と .NET API の開発環境として利用する Microsoft Visual Studio のバージョンも、従来と同じ、Visual Studio 2010 SP1 です。ただし、プロジェクト設定を変更することで、Visual Studio 2012 を利用することもできます。ObjectARX プロジェクトの場合には、全般 の プラットフォーム ツールセットを “Visual Studio 2012 (v110)” ではなく、Visual Studio 2010 相当の “Visual Studio 2010 (v100)” に変更してください。

Visual Studioのプロジェクト設定画面、プラットフォームツールセットの選択画面

.NET API プロジェクトの場合には、アプリケーション の 対象のフレームワーク を “.NET Framework 4.5” ではなく、Visual Studio 2010 相当の “.NET Framework 4” に変更してください。

AutoCAD CSharpプラグインの設定画面、プラットフォームとフレームワークの選択ができる。

AutoCAD 2014 用の ObjectARX SDK は、http://www.autodesk.com/objectarx から、Visual Studio 2010/2012 共用の ObjectARX 2014 Wizard と AutoCAD 2014 DotNet Wizards は、http://www.autodesk.com/developautocad から、それぞれ無償ダウンロードが可能です。

JavaScript API

AutoCAD に登場した 5 つめとなる全く新しい API で、今年から数バージョンかけて実装をしていく予定です。JavaScript は、現在、知られている限り、異なるプラットフォーム間で利用可能な唯一の API 言語です。JavaScript API を使用することで、AutoCAD 2014 で利用できるようになった設計フィード のような機能を、AutoCAD だけでなく、さまざまなプラットフォーム上でも利用できるようになります。設計フィードが、AutoCAD WS 上で Web ブラウザ や 専用アプリから同じように使えることで、その意味を把握していただけると思います。

AutoCAD 2014 の表紙が描かれた画像で、周囲に異なるプラグ形式が配置されています。プラグには ObjectARX、JavaScript API、AutoLISP、ActiveX、.NET API というラベルが付いています。

もう1つ、JavaScript で実現できるのが、いままでの AutoCAD API では実現することが出来なかったサーバー中心のカスタマイズ資産管理です。

JavaScript は、HTML コンテンツ内に記述することで、HTML 上のボタンやメニューといったインタフェースへのユーザアクションに応じた動的なコントロールに使用されてきました。HTML コンテンツは、Web ブラウザで表示することになりますが、コンテンツ自体は Web サーバーに保存されているはずです。同じ方法で、JavaScript API で記述したプログラムを含む HTML コンテンツを AutoCAD で直接参照することで、AutoCAD 上でプログラムの内容を実行することが出来るようになります。これを実現するための用意されたのが、AutoCAD 2014 の WEBLOAD コマンドです。

いままで、AutoLISP、VBA、ObjectARX、.NET API で作成したカスタマイズ モジュールは、AutoCAD がインストールされているクライアント コンピュータにコピー/インストールしてロードさせるのが一般的です。共有サーバーを使って、カスタマイズ モジュールをサーバーからロードさせることもできますが、ネットワーク負荷によっては、ロードまでに時間がかかることもあります。また、特に、.NET API で作成したアセンブリ ファイルは、既定ではネットワーク越しのロードが出来ません(方法はありますが)。

カスタマイズ モジュール自体に不具合があった場合にも、ObjectARX や .NET API では、Visual Studio でのプログラム改修とコンパイル作業、サーバーへポストする作業が必要です。JavaScript API の場合には、改修したプログラムを Web サーバーに保存すれば(HTML コンテンツを公開すれば)、そのまま AutoCAD から参照してロードさせることが出来るので、非常に便利です。  

AutoCADにおけるカスタマイズ手法を示す図。中央にWebサーバー、両サイドにクライアントコンピュータが配置され、HTML/JSのホスティングとクライアントへのインストールについて言及している。

さて、それでは、JavaScript API で何が実現できるのでしょう。JavaScript API の最初のリリースになる AutoCAD 2014 では、次の機能を利用できるようになっています。

  • プロンプト表示&操作(座標、数値、文字などの入力)
  • エンティティの操作(図形選択など)
  • 一時グラフィックス表示や操作
  • エンティティのドラッグ実装
  • ビュー操作
  • コマンド(定義、実行)
  • ウィンドウ操作
  • 図面データベースのイベント処理
  • Bindable Object Layer (BOL)
  • Application オブジェクト処理(さまざまな機能を提供)

一見して何を指しているか分かりにくいものありますが、既存の AutoCAD API とほぼ同じような処理を実現できることを感じていただけると思います。どのような機能を提供するかは、下記のリファレンスで参照することができます。

JavaScript API Reference : http://www.autocadws.com/jsapi/v1/docs/index.html

開発者へのライブラリ提供は、http://www.autocadws.com/jsapi/v1/Autodesk.AutoCAD.js から行われています。

ここでは サーバーや Web サーバーという表現を使いましたが、最近では クラウド と表現したほうがいいのかもしれません。AutoCAD 2014 では、クラウドを使ったカスタマイズとそのデリバリも検討いただけるようになった、と理解していただいて結構です。

具体的な利用方法は、別の機会にご紹介しましょう。 

VBA 7.1

Microsoft 社により、新しいバージョンの VBA コンポーネントが提供されるようになりました。AutoCAD 2013 で利用できた VBA 6.3 は 32 ビットコンポーネントのみが提供されていました。このため、64 ビット版の AutoCAD 上では、プログラム互換性や実行時のパフォーマンスに制限が存在していました。

この原因は、AutoCAD API を使ったアドオン アプリケーションの移植性 でもご紹介した、64 ビット版 AutoCAD で 32 ビット版 VBA を動作させる仕組みによるものです(AutoCAD と VBA の内部的な通信が発生)。

Microsoft提供のVBAコンポーネントの互換性を説明するインフォグラフィック。上部には32ビットWindowsと32ビットAutoCADの組み合わせによる高いパフォーマンスの利点が示され、下部には64ビットWindowsと64ビットAutoCADの組み合わせによるパフォーマンスの低下と互換性の問題が説明されている。

今回提供される VBA 7.1 は、32 ビット版コンポーネントに加え、64 ビット版コンポーネントが含まれます。 64 ビット版 AutoCAD には 64 ビット版 VBA を利用することで、同じプロセス内(メモリ空間)で動作させることができるようになるため、もう、プロセス間通信は必要なくなります。当然、パフォーマンス上の問題は発生しなくなります。

Microsoft Visual Basic for Applications 7.1のバージョン情報画面

ただし、VBA の開発言語である Visual Basic の言語規約は古く、現在の Visual Studio で利用されている VB.NET とは一部異なります。オートデスクのスタンスは、どちらかというと過去の VBA 資産の保護を視野にいれた救済策と言えます。可能であれば、.NET API への移植作業をご検討いただきたいと思います。そんな意味合いもあって、VBA 7.1 は http://www.autodesk.com/vba-download からのダウンロードのみの提供となります。また、残念ながら、旧バージョンでの VBA 7.1 の利用はできません。 

セキュア ロード メカニズム

JavaScript API をはじめ、クラウドやインターネットとの融合を強く意識した AutoCAD 2014 では、セキュリティに関する機能強化も盛り込まれています。AutoCAD 2014 にカスタマイズしたアプリケーション モジュールをロードすると、次のような警告ダイアログが表示されます。

警告ダイアログボックス。ファイルのロードに関するセキュリティの問題を示している。可能ファイルが信頼される場所以外から見つかった場合のメッセージが表示されている。

セキュア ロードの処理では、お客様が許容しない場所からアプリケーション ロードが発生した場合、このダイアログで警告を促すようになっています。この処理によって、AutoCAD のカスタマイズ機構を悪用した悪意のあるコードの実行を事前に警告して、お客様の環境を保護することができます。詳細に関しては、AutoCAD 2014 の オンラインヘルプ を参照してみてください。
 
と言っても、意図したカスタマイズの実行に毎回、ダイアログで警告されるのも困ります。警告ダイアログの表示を抑止するには、下記のいずれかの方法をとっていただく必要があります。 

  • システム変数 TRUSTEDPATHS またはTRUSTEDDOMAINS に、ロードモジュールが存在するパスを追加する方法。前者は、OPTION コマンドで表示される [オプション] ダイアログの [ファイル] タブにて、[信頼する場所] として複数を登録することができます。ここで指定するパスは、読み込み専用に設定されていることが推奨されます。
AutoCADのオプション設定画面で、信頼する場所を設定するためのインターフェースが表示されています。
  • AutoCAD のインストールフォルダ配下のプラグイン用フォルダ %ProgramData%\Autodesk\ApplicationPlugins にロードモジュールを配置する方法。このフォルダと配下のサブフォルダは自動的に信頼するフォルダと認識されます。
  • アプリケーションモジュールのロードに自動ローダーを使用する方法。自動ローダーのフォルダは自動的に信頼するフォルダと認識されます。自動ローダーについては、 こちら をご参照ください。
  • バイナリ モジュールについては、電子署名を施す方法。署名されたモジュールは、自動的に「信頼する」モジュールと認識されます。電子署名につきましては、こちら(英語) をご参照ください。
  • システム変数 SECURELOAD を 0 に設定する方法。この設定は、OPTION コマンドで表示される [オプション] ダイアログの [システム] タブにて、[実行可能ファイルの設定] ボタンからも変更していただけます。ただし、新しいセキュリティ機構を抑止することになるため、お勧めできません。
AutoCADのオプション設定画面の画像。左側にはファイルオプションの設定ダイアログ、右側には一般設定のダイアログが表示されており、セキュリティ設定が強調されています。

 最も容易に設定でき、かつ、安全な環境を提供できるのが、1.による方法かと思います。[オプション]  ダイアログの設定は、プロファイルとしてファイル化して、最終的にシステムレジストリに反映することができます。なお、システム変数 TRUSTEDDOMAINS は、JavaScript API の実行が安全におこなえるように用意されたものです。このため、ファイルパスではなく、外部の Web URL のドメインの設定を想定しています。

次回は、プラットフォーム差による VBA のパフォーマンス差とプログラム互換性について、具体的にご紹介します。

By Toshiaki Isezaki

 

Discover more from Autodesk Developer Blog

Subscribe now to keep reading and get access to the full archive.

Continue reading