クライアント側のカスタマイズ
リボン UI のカスタマイズ
1. 次のファイルを見つけます。
<Windchill>/codebase/com/ptc/windchill/enterprise/nativeapp/msoi/client/custom/wtCustomMenu.xml
2. ファイルに次のテキストを追加します。
<?xml version="1.0"?>
<groups>
<group id="ExcelActionsGroup" tag="ExcelActionsGroup"
label="Excel actions group"
screentip="Custom Excel actions group" visible="true">
<button id="SearchParts" tag="SearchParts" enabled="true" label="Search parts" screentip="Sample custom action to search parts on the Windchill server." getImage="MsoiGetImage" onAction="MsoiOnAction" keytip="sp"/>
</group>
</groups>
Microsoft Excel を実行中の Windchill デスクトップインテグレーションクライアントが次回このサーバーに接続したときに、更新されたリボン UI 定義がクライアントのキャッシュにダウンロードされます。
3. Microsoft Excel を閉じて再起動します。Windchill アドインは Windchill サーバーへの接続前に Microsoft Office アプリケーション (Excel) に読み込まれるため、このステップが必要です。Microsoft Excel を 2 回目に起動すると、新しいグループと操作が表示されます。
カスタムコマンドの作成
次に、導入したカスタム操作を実装する必要があります。コマンドの設定には、リボン制御をクリックしたときに起動される操作セットの定義が含まれます。
制御 SearchParts の tag 属性は、コマンドキーと一致させます。このようにすることで、Windchill デスクトップインテグレーションでコマンド付きのリボン UI のカスタム制御への関連付けを確立できます。
例の説明に基づいて、コマンドは次の操作を実行する必要があります。
1. Microsoft Excel シートからヘッダーの値を読み取る。
2. 送信するプロパティ名をサーバーに送信する。
3. 応答をシートにフィードバックする。
以下のファイルに移動します。
<Windchill>/codebase/com/ptc/windchill/enterprise/nativeapp/msoi/client/custom/wtCustomActions.xml
ファイルに次のテキストを追加します。
<?xml version="1.0"?>
<commandset>
<command key="SearchParts">
<action method="run_macro" type="CLIENT">
<defaultdata key="macro_name">GetHeaders</defaultdata>
</action>
<action serverAction="customization.DTICustomizationDemo" type="WIZARD"/>
<action method="run_macro" type="CLIENT">
<defaultdata key="macro_name">PutValues</defaultdata>
<defaultdata key="macro_args"/>
</action>
</command>
</commandset>
サーバー操作をはさんだ 2 つのクライアント側操作ができました。
マクロの実行
この例では、セル A1 から D1 に部品の照会に必要なプロパティが入力されています。
1. これらの 4 セルのテキストを区切り文字を付けて 1 つにするマクロを導入します。
| マクロ名 GetHeaders は操作コンフィギュレーションデータパラメータ macro_name と一致していなければなりません。 |
2. その後のサーバーからの応答を取得してシートに入力するもう 1 つのマクロを作成します。操作コンフィギュレーションより、このマクロの名前は PutValues でなければなりません。Microsoft Excel ワークシートの VBA コードは次の例のようになります。
前述のマクロ PutValues 内のコードは単に Windchill サーバーから受信されたカスタム応答を含む警告メッセージを生成することに注意してください。実際には、コードは特定のセルのインライン検証ドロップダウンの生成など、複雑な操作を実行できます。
'A reference to msxml6.dll is needed
Dim dom As New DOMDocument60
dom.LoadXML (strResponse)
'Using xpath, construct a csv list of choices for the number
Dim strNumberChoices As String
For Each elem In dom.SelectNodes("/Results/*/Number")
strNumberChoices = strNumberChoices & "," & elem.Text
Next
'Remove initial comma
strNumberChoices = Strings.Right(strNumberChoices, Len(strNumberChoices) - 1)
With Range("C1").Validation
'Remove previous validation (likely that user redoing a seed part search)
.Delete
.Add Type:=xlValidateList, _
AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, _
Formula1:=strNumberChoices
End With