AUTODESK INVENTOR 概要 : API を使ったプログラムで Inventor のコマンドやマクロプログラムをメニューに登録する方法を紹介します レベル : 本資料は VBA を使った Inventor のカスタマイズについての知識がある方を対象としています サンプル VBA プロジェクト : サンプル VBA プロジェクトデータ (CREATE_UI.zip) をダウンロードし 適当なフォルダに解凍します VBA フォルダに以下のファイルが入っています VBA プロジェクトファイル CREATE_UI_SAMPLE.ivb アイコン用ビットマップファイル InternalName のリスト Inventor_UI_LIST.xls インストール : 既定値の VBA プロジェクトに CREATE_UI_SAMPLE.ivb の内容を追加します 既存の VBA プロジェクトへのインストール手順については Inventor マクロ登録手順の紹介 という資料を参考にしてください この資料は オートデスク日本のホームページにあります Autodesk Inventor のドキュメントライブラリ ( http://www.autodesk.co.jp/ais_document ) 内の API のページ内に掲載しています サンプルプログラムの実行 : マクロプログラム CreateUIsample を実行してください アセンブリモデリングサンプルという名称のツールバーが自動的に作成され その中に マクロとコマンドが配置されます アセンブリ環境に アセンブリモデリングサンプルのツールバーが追加されます また アセンブリパネルにも マクロが登録されます サンプルプログラムでは ツールバーの作成 ツールバーにマクロを登録 ツールバーにコマンドを登録 ツールバーを環境に登録 を行う手順を紹介します サンプルのプログラムを元にして 専用の UI 作成プログラムに改造することができます 1
Inventor のメニュー ( ユーザインターフェイス ) について : プログラムの内容を理解するために まず Inventor のメニュー ( ユーザインターフェイス ) について説明します カスタマイズコマンドを実行すると 図のダイアログが表示されます このダイアログを使って メニュー ( ユーザインターフェイス ) をカスタマイズすることができます 環境 : Inventor では 使っている時の状況によって 作業環境 が変わる事で ツールバーやパネルに表示されるメニューの内容が変化します 作業環境は上記のカスタマイズダイアログを使って カスタマイズすることができます たとえば 2D スケッチの編集コマンドを実行すると 2D スケッチ という作業環境に移行します そのとき あらかじめ決めておいた既定の標準ツールバー ( 図の場合 2D スケッチ規格 ) と既定のパネルバー ( 図の場合 2D スケッチパネル ) に切り替わります ツールバーとパネルには 複数のツールバーを登録することができます ダイアログで 利用可能なツールバーから 使用したいツールバーにチェックを入れて登録します 表示するツールバーを変更するには パネル上の をクリックして どれかツールバーを選択します オンラインヘルプで Autodesk Inventor で作業環境をカスタマイズする の項も参照下さい 2
ツールバー : ツールバーは コマンドボタンを格納する入れ物です 新規作成 ボタンをクリックして ツールバーを新規作成することができます コマンド : Inventor のコマンドは カテゴリー別に図のように登録されています 3
マクロ というカテゴリーをクリックすると 既定値の VBA プロジェクトで定義されたマクロプログラムの名前が表示されます また そのマクロプログラムと対応付けされたビットマップファイルが存在する場合は そのビットマップがアイコンとして表示されます 図は 既定値の VBA プロジェクトにマクロが登録してある場合の表示 マクロが登録してなければ何も表示されません このコマンドリストからパネルやツールバー上に コマンドをドラッグ & ドロップすることで ツールバーにコマンドやマクロを登録することができます Inventor のオブジェクト構造ツールバーへのコマンド登録や環境へのパネルの登録を API を使ったプログラムで行うには 環境 ツールバー コマンド を表すオブジェクトを使います 4
環境オブジェクト : Environments コレクションに格納されています InternalName と呼ぶ名称で取り出すことができます たとえば 2D スケッチ環境の InternalName は PMxPartSketchEnvironment です ツールバー : CommandBars コレクションに格納されています これも InternalName で取り出すことができます たとえば 2D スケッチパネルの InternalName は PMxPartSketchCmdBar です コマンド : ControlDefinitions コレクションに格納されています これも InternalName で取り出すことができます たとえば スケッチで中心点円コマンドの InternalName は SketchCenterPointCircleCmd です また マクロプログラムで作成したコマンドは macro:componenttool.locatecenter のように macro: + モジュール名 + プロシージャ名の組み合わせになります Inventor の環境 ツールバー コマンドと InternalName との対応は 添付資料 Inventor_UI_LIST.xls を参照ください サンプルプログラムの紹介 : Public Sub CreateUIsample() ' マクロを UI に登録する Set invapp = ThisApplication Dim ocmdbar As CommandBar Dim ocmdbarcontrol As Inventor.CommandBarControl Dim oenvironment As Inventor.Environment End Sub ' ツールバー作成 Set ocmdbar = CreateUserdefinedCommandBar(" アセンブリモデリングサンプルマクロ ", "ASSEMBLY_MODELING_SAMP") ocmdbar.visible = True AddMacroToCommandBar(oCmdBar.InternalName, "ComponentTool.LocateCompByConst") AddMacroToCommandBar(oCmdBar.InternalName, "ComponentTool.LocateCompBySketch") ocmdbarcontrol.groupbegins = True ' 区切りを挿入 AddMacroToCommandBar(oCmdBar.InternalName, "Manipulator.TriadManipulatorStart") ' ツールバーにコマンドを登録 AddButtonToCommandBar(oCmdBar.InternalName, "AssemblyBillOfMaterialsCmd") ' 環境に登録 Set oenvironment = invapp.userinterfacemanager.environments.item("amxassemblyenvironment") oenvironment.panelbar.commandbarlist.add ocmdbar ' 既存のツールバーに登録 AddMacroToCommandBar("AMxAssemblyPanelCmdBar", "ComponentTool.LocateCenter") ocmdbarcontrol.groupbegins = True ' 区切りを挿入 AddMacroToCommandBar("AMxAssemblyPanelCmdBar", "ComponentTool.LocateCompByConst") AddMacroToCommandBar("AMxAssemblyPanelCmdBar", "ComponentTool.LocateCompBySketch") 太字のファンクションを利用して 専用の UI 作成プログラムを作ることができます 5
ツールバーの作成 : Function CreateUserdefinedCommandBar (DisplayName As String, InternalName As String) As Inventor.CommandBar ユーザ定義のツールバーの作成を行う関数です サンプルプログラムは アセンブリモデリングサンプルマクロ と表示するツールバーを作成する例です マクロ実行時に InternalName が同じ名前のツールバーが既に存在する場合は そのツールバーをオブジェクトとして返します その時 ツールバー内のコマンドは二重登録を避けるためすべて削除されます DisplayName : ツールバーの表題として表示される名称例 ) アセンブリモデリングサンプルマクロ InternalName: ツールバーを示す固有の名称例 ) ASSEMBLY_MODELING_SAMP 戻り値 : Inventor.CommandBar オブジェクト ツールバーにマクロを登録 : Function AddMacroToCommandBar (PanelName As String, MacroName As String) As Inventor.CommandBarControl 指定したツールバー ( パネル ) にマクロを登録する関数です PanelName : ツールバーの InternalName MacroName: マクロの名前モジュール名. プロシージャ名戻り値 : Inventor.CommandBarControl オブジェクト二重登録を避けるため 同じ名称のマクロが既に登録されている場合は 先に登録済みのマクロを削除してから登録します ツールバーにコマンドを登録 : Function AddButtonToCommandBar (PanelName As String, CmdName As String) As Inventor.CommandBarControl 指定したツールバー ( パネル ) に Inventor のコマンドを登録する関数です PanelName : ツールバーの InternalName CmdName: コマンドの InternalName 戻り値 : Inventor.CommandBarControl オブジェクト二重登録を避けるため 同じ名称のコマンドが既に登録されている場合は 先に登録済みのコマンドを削除してから登録します 環境に登録 Set oenvironment = invapp.userinterfacemanager.environments.item("amxassemblyenvironment") oenvironment.panelbar.commandbarlist.add ocmdbar 作成したツールバーを環境に登録するには まず InternalName を使って環境オブジェクトを取り出し 次に Add メソッドを使ってツールバーを追加します 6
ツールバーの削除カスタマイズダイアログから ツールーバーを選択し 削除 クリックします API を使ったプログラムから削除するには サンプル VBA プロジェクトから DeleteUIsample マクロを参照ください 既存のツールバーに追加されたすべてのマクロの削除カスタマイズダイアログから すべてリセット をクリックします 環境 ツールバー コマンド のリスト作成 VBA プロジェクト内の 環境リスト作成 ツールバーリスト作成 コマンドリスト作成 マクロをそれぞれ実行すると c:\tmp フォルダに InternalName のリストを CSV 形式で作成します 独自のアドインやマクロを使っている場合や Inventor のバージョンが変わった場合に使います Inventor_UI_LIST.xls 環境 ツールバー コマンドの InternalName は この表から参照します 7
環境 ツールバー コマンド のリスト作成マクロで出力される内容は この表と同じ体裁です この資料の利用上のご注意 この資料の作成に当たっては 不具合の無いように十分に注意を払っておりますが プログラム等の使用において 何らかの問題が生じましても オートデスクとして責任を持つことは出来ません 利用者の自己責任でご利用いただくようお願いします この資料の内容は 無償にて自由に使っていただけます 上記内容について 承諾いただけるかたのみ ご利用ください お問い合わせ先本資料についてのお問い合わせは 電子メールで mfgsolution.japan@autodesk.com までお願いいたします Copyright 2007Autodesk, Inc. All rights reserved. Reproduction or copying of images is prohibited 8