Autodesk Community Tips- ADNオープン
Autodesk Community Tipsではちょっとしたコツ、やり方、ショートカット、アドバイスやヒントを共有しています。
ソート順:
質問 Vaultクライアントで、プロジェクトエクスプローラ($)配下の、あるフォルダに対してローカル作業フォルダを規定値から別のフォルダに変更するを設定しました。 その後、Vault APIで対象のフォルダのローカル作業フォルダのパスを取得すると、変更したフォルダパスではなく、規定値のフォルダパスが取得されている状況です。 Vault クライアントで変更したフォルダパスを取得する方法はありますか。 回答  Vaultのローカル作業フォルダの設定を規定値から変更した場合、変更した設定は以下のファイルに保存されます(*****部は、実行環境により変化します)。   C:\Users\<Windows ログインユーザ>\AppData\Roaming\Autodesk\VaultCommon\Servers\Services_Security_******\<接続先サーバ名>\Vaults\<ボルト名>\Objects\WorkingFolders.xml     ファイルパスに<Windowsログインユーザ>、<接続先サーバ名>、<ボルト名>が含まれているため、カスタムアプリケーションからVaultに接続する際に、これらのどれかが異なる場合には、異なるローカル作業フォルダの設定が読み込まれます(ファイルが存在しない場合は、既定のパスとなります)。   ローカル作業フォルダの設定を規定値から変更したVaultクライアントアプリケーションと、APIを実行しているアプリケーションで、この値のどれかが異なっている場合Vault クライアントで変更したフォルダパスを取得することが出来ません。これらの値を合わせたうえで、変更後のフォルダパスが取得できるかを確認してください。
記事全体を表示
質問 InventorのアドインでVault接続状態を確認し、接続していない場合はログインをしてVaultのConnectionを取得したい。 回答 Vault APIのConnectionManager.Instance.Connectionにより接続中のVaultコネクションオブジェクトを取得することができます。 接続されていない場合は、InventorのVaultログインコマンド(内部名:ContentLoginCmdIntName)を実行することで、ログインダイアログを表示することが可能です。   以下は、上述のAPIを使用したサンプルコードとなります。 using VDF = Autodesk.DataManagement.Client.Framework; using VB = Connectivity.Application.VaultBase; VDF.Vault.Currency.Connections.Connection conn = VB.ConnectionManager.Instance.Connection; if (null == conn) { try { ControlDefinition oCtlDef = m_inventorApplication.CommandManager.ControlDefinitions["ContentLoginCmdIntName"]; oCtlDef.Enabled = true; oCtlDef.Execute(); conn = VB.ConnectionManager.Instance.Connection; } catch (Exception ex) { } } if (null != conn) { MessageBox.Show(String.Format("Vault = {0}, UserID = {1}, User Name = {2}",conn.Vault, conn.UserID, conn.UserName)); }   なお、Visual Stuidoプロジェクトの参照設定で、Vault SDK配下のAutodesk.DataManagement.Client.Framework.dllおよびVaultインストールフォルダ配下のConnectivity.Application.VaultBase.dllファイルの参照の追加が必要となる点にご留意ください。  
記事全体を表示
Question Vault APIで等価性エラーが発生しているファイルを取得する方法はありますか。 Answer 等価性エラーが発生している場合、プロパティコンプライアンス プロパティの値が2となっている状況です。   このため、以下のようにプロパティコンプライアンスプロパティの値が"2"(等価性が準拠していない)状態にあるFileを検索条件に指定して取得することが可能です。 SrchCond[] cond = new SrchCond[] { new SrchCond( ){ PropDefId = 39, //プロパティコンプライアンスのプロパティID SrchOper = 3, //Is exactly (or equals) SrchTxt = "2", //等価性が準拠していない PropTyp = PropertySearchType.SingleProperty, SrchRule = SearchRuleType.Must } }; string bookmark = null; SrchStatus status; ACW.File[] files = serviceManager.DocumentService.FindFilesBySearchConditions(cond, null, null, true, true, ref bookmark, out status);    また、すでに対象のFileの配列を取得しており、その中から等価性エラーが発生しているFileを抽出する場合は、以下のようにGetPropertiesを利用して、プロパティを取得して確認する形となります。 IEnumerable<long> ids = files.Select(file => file.Id); PropInst[] properties = serviceManager.PropertyService.GetProperties( "FILE", ids.ToArray(), new long[] { 39 /*プロパティコンプライアンスのプロパティID*/} ); IEnumerable<PropInst> PropInstSelection = from propInst in properties where propInst.PropDefId == 39 && propInst.Val.ToString() == "2" /*プロパティコンプライアンスのプロパティIDで等価性が準拠していない*/ select propInst;   なお、プロパティコンプライアンスプロパティのId(=39)値は、以下のサンプルのように”FILE”エンティティのプロパティを取得してループで内容を見ることで確認が可能です。 PropDef[] fileProps = serviceManager.PropertyService.GetPropertyDefinitionsByEntityClassId("FILE");  
記事全体を表示
質問 Vaultのカスタムプログラムの開発のために、Vault Exploror(Vaultクライアント)のコマンドが利用しているVault APIを知りたい。 回答 Vaultのカスタムプログラムを開発する際に、Vault Exploror(Vaultクライアント)のコマンド(またはその一部)と同様の処理を実現したい場合に、どのようなAPIを利用すればよいかを知りたい場合が多くあります。   Vault Exploror(Vaultクライアント)はコマンドの実行時に、Vault サーバのWebサービスAPIを実行してその機能を実現しているため、その通信内容をパケットキャプチャツール等で確認することで、どのWebサービスAPIが実行されているかを確認することが出来ます。   ここでは、パケットキャプチャツールのFiddler ClassicとVaultの通信内容をFiddler Classicで見やすくするエクステンションツールのvapiTraceを利用した方法を紹介します。   なお、以下手順の環境としてはVaultサーバとVaultクライアントが同一のマシン上にインストールされているテスト環境を前提としています。原理的には、別端末にインストールされている場合でも、Vaultクライアントがインストールされている環境で実行することで通信内容を確認できるはずですが、追加のFiddlerの設定が必要となる可能性があります。   手順   1.以下URLからFiddler Classicをダウンロードしてインストールします。 https://www.telerik.com/fiddler/fiddler-classic   2.以下GitHubリポジトリのリリースから、vapiTraceFiddlerExtension.zipをダウンロードし、zpiファイル解凍して、C:\Users\<ログインユーザ名>\AppData\Local\Programs\Fiddler\Inspectors 配下に配置します。 https://github.com/coolOrangeLabs/vapiTrace   3.Fiddlerを起動し[Tool]-[Option]メニューからCapture HTTPS Connections設定を有効にする。    4.Fiddlerを再起動して、Vaultクライアントを起動します。  Fiddlerの画面の左側には、キャプチャされた通信内容が時系列にリストで表示されます。URLが/AutodeskDMで始まる通信がVaultサーバとの通信となります。   リストからアイテムを選択し、右側の上下のペインでvapiTraceタブを選択すると、以下のスクリーンショットのように、上側のペインに呼び出したVault API(とその引数)、下側のペインにはAPIのレスポンスが表示され、実行されたAPIを確認することが出来ます。     リストの内容は、リストアイテムを選択して、右クリックメニュー[Remove]-[All Sessions]からクリアできるので、調査したいVaultエクスプローラのコマンドを実行前にリストをクリアし、Vaultのコマンドを実行後に[File]-[Capture Traffic]のチェックを外してキャプチャを停止することで、コマンドが実行しているAPIを効率的に調査することが出来るかと思います。   また、Vaultクライアントはコマンドの実行後にGUIを最新の情報に更新するために、情報を取得するAPIの呼び出しを行っています。カスタムプログラムの開発時には、要件に合わせてどのAPIが必要なのかの判断が必要となりますので、各APIの詳細をVault SDKのAPIリファレンスを参照して確認ください。   なお、Vaultクライアントからサーバにログインする際にVaultサーバにlocalhostを指定するとFiddlerで通信をキャプチャすることが出来ません。Vaultサーバにはマシン名を指定してください。
記事全体を表示