Autodesk Community Tips- ADNオープン
Autodesk Community Tipsではちょっとしたコツ、やり方、ショートカット、アドバイスやヒントを共有しています。
ソート順:
質問 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サーバにはマシン名を指定してください。
記事全体を表示
質問 AutoCADの.net APIで雲マーク(REVCLOUD)を取得する方法はありますか。   回答 AutoCADの雲マーク(RevCloudコマンドで作成される図形)は、拡張データ領域にアプリケーション名”RevcloudProps”のデータを持つLWPolylineとなっております。   このため、net APIで図形を選択する際のフィルタ条件に、図形がLWPolylineでかつアプリケーション名が”RevcloudProps”の拡張データを持つ図形指定することで雲マーク図形を取得することが可能です。   Dim dc As Document = Application.DocumentManager.MdiActiveDocument Dim db As Database = dc.Database Dim ed As Editor = dc.Editor Dim tvs(1) As TypedValue tvs.SetValue(New TypedValue(DxfCode.Start, "LWPOLYLINE"), 0) tvs.SetValue(New TypedValue(DxfCode.ExtendedDataRegAppName, "RevcloudProps"), 1) Dim sf As SelectionFilter = New SelectionFilter(tvs) Dim psr As PromptSelectionResult psr = ed.SelectAll(sf) If psr.Status<> PromptStatus.OK Then Exit Sub End If Using tx As Transaction = db.TransactionManager.StartTransaction() Try For Each id As ObjectId In psr.Value.GetObjectIds() Dim lwp As Polyline = tx.GetObject(id, OpenMode.ForWrite) Next tx.Commit() Catch e As System.Exception tx.Abort() ed.WriteMessage(e.Message) End Try End Using    
記事全体を表示
質問 InventorのAPIを使って、Inventorのコマンドを実行する方法はありますか。   回答 Inventorの各コマンド(カスタムコマンドを含む)はCommandManagerオブジェクトからControlDefinition オブジェクトとして取得することが出来ます。 取得したControlDefinition オブジェクトのExecuteメソッドを実行することで、コマンドを実行することが可能です。   以下は"Vaultステータスを更新"コマンドを実行するサンプルコードとなります。 ' Get the CommandManager object. Dim oCommandMgr As CommandManager = ThisApplication.CommandManager ' Get control definition. Dim oControlDef As ControlDefinition = oCommandMgr.ControlDefinitions.Item("VaultRefresh") ' Execute the command. Call oControlDef.Execute   ControlDefinitions.Itemメソッドに指定する引数は、取得するコマンドの名称となります。   コマンドの名称の取得方法としては、以下の2つの方法があります。   1.以下のサンプルコード(VBA)を実行し、出力されるファイル内から取得する Sub PrintCommandNames() ' Get the CommandManager object. Dim oCommandMgr As CommandManager Set oCommandMgr = ThisApplication.CommandManager ' Get the collection of control definitions. Dim oControlDefs As ControlDefinitions Set oControlDefs = oCommandMgr.ControlDefinitions ' Open the file and print out a header line. Dim oControlDef As ControlDefinition Open "C:\temp\CommandNames.txt" For Output As #1 Print #1, Tab(10); "Command Name"; Tab(75); _ "Description"; vbNewLine ' Iterate through the controls and write out the name. For Each oControlDef In oControlDefs Print #1, oControlDef.InternalName; Tab(55); _ oControlDef.DescriptionText Next ' Close the file. Close #1 End Sub   2.Inventor SDKに付属のEventWatcherを使用し、Inventorでコマンドを実行してコマンド名を取得する   EventWatcherは、Inventorに付属のInventor SDKをインストールすると以下のフォルダにあります。 C:\Program Files\Autodesk\<Inventor Version>\SDK\DeveloperTools\Tools\EventWatcher\bin\Release   EventoWatcherを起動し、左側のリストから「UserInputEvents.OnActivateCommand」をチェックされた状態で、InventorでAPIから実行したいコマンドを実行すると、実行されたコマンド名がウィンドウに表示されます。 取得したコマンド名をControlDefinitions.Itemメソッドの引数に指定することで、対象のコマンドを取得することが出来ます。     なお、コマンド実行時にダイアログが表示されるタイプのコマンド(例:押し出し コマンド)の場合、ダイアログ内で指定するパラメータ(押し出しコマンドの場合、押し出し方向や距離 等)の指定についてはコマンドの機能となり、コマンドを実行するAPIから制御(指定)することが出来ません。   このようなタイプのコマンドの場合、APIからユーザの入力なしに実行したい場合は、InventorのAPIを用いて処理を作成する必要があります(もちろん処理には、希望の処理に対応するInventorのAPIが公開されている必要があります)。  
記事全体を表示
質問 AutoCADのVBAで、以下のサンプルコードの様にコレクションの要素を取得し存在しない場合は要素を追加する処理がありますが、同様の処理をAutoLispで行う場合はどのように記述したらよいでしょうか。 Dim sset As AcadSelectionSet On Error Resume Next Set sset = ThisDrawing.SelectionSets.Item("Test") On Error GoTo 0 If sset Is Nothing Then Set sset = ThisDrawing.SelectionSets.Add("Test") End If 回答 AutoLispのvl-catch-all-applyを使用することで、コレクションに存在しないアイテムを取得する際に発生するエラーをハンドルすることが可能です。 vl-catch-all-applyには引数のリストを指定された関数に渡し、すべての例外をトラップします。   上述のVBAと同様の処理を実現する場合は以下のサンプルコードのようにlambda式を作成して処理を実行、結果の値を確認する形となります。 (setq acadObject (vlax-get-acad-object)) (setq activeDocument (vla-get-activedocument acadObject)) (setq selectionSets (vla-get-selectionsets activeDocument)) (vl-catch-all-apply '(lambda() (setq sset (vla-Item selectionSets "test")) ) ) (if (= nil sset) (progn (setq sset (vla-add selectionSets "test")) ) )    
記事全体を表示
現象 Windows 11環境では、AutoCAD(AutoCAD 2022、2023、2024)のWindowにGDIを使用したカスタムグラフィック描画がされない。Windows 10環境では、同じプログラムでカスタムグラフィックが描画される。   診断 AutoCAD 2022以降のバージョンでは、DirextX12をサポートしております。このためWindows 11環境ではGDIを用いたカスタムグラフィックの描画が行われません。 解決策 この問題の解決のためには、カスタムグラフィックの描画にGDIではなくDirectX 12を使用するよう、プログラムの修正を行うことを推奨します。   プログラムの修正が困難な場合、ハードウェアアクセラレーションをオフに設定する、またはシステム変数GFXDX12の設定値を0に設定することで、この現象を回避することが可能です。  
記事全体を表示
Autodesk Knowledge Network には、過去、よくある質問を中心に、次のような内容を記載していました。   Revit API Tips: 未使用の項目を削除を実行する方法 Revit API Tips: 壁プロファイルの取得方法 Revit API Tips: 複数のファミリを組み合わせて(ネストして)新しいファミリを作成する方法 Revit API Tips: ソリッドやメッシュのジオメトリをプロジェクト上に作図する方法 Revit API Tips: アドインでバッチ処理を実装する方法 InventorのAPIで、IDWファイルをバージョンを指定してDXFに変換する方法 InventorのPack And Go を、VBAから実行する場合の参照設定 Inventor APIでPDF出力後にPDFを表示しないようにしたい Inventor APIでコンテンツセンターの言語設定を切り替える方法 Inventor APIで放射状マーキングメニューをカスタマイズする方法 Inventorの2D図面に配置したView内の各コンポーネントを、AutoCADのブロックにする方法 Inventor API でインスタンスプロパティを取得・設定する方法 Inventor APIでiLogicを実行する方法 Inventor APIでアセンブリ、パートファイルの単位数量と基準単位を出力したい InventorのAPIで図面のシートをコピーする方法 Visual Studioで「InventorViewCtrl.ocxの自己登録に失敗しました」エラーが発生して、Inventor ViewコントロールをWindowsフォームへ追加することが出来ない InventorのFileAccessEvents.OnFileResolutionイベントでFullFileNameに指定したファイルが読み込まれない Inventor ApprenticeServerComponent.Openメソッドを実行すると、「エラー -xxx-xxxxxxxx(80004005) Openメソッドは失敗しました」が発生する APIでパーツリストの一覧をエクセルに出力する方法 API を用いて派生元のモデルの面から、派生先のモデルでの面を特定する方法 APIで、シートメタルの展開図の折り曲げ位置のエッジ線から、山折り/谷折の情報を参照する方法 API で面を指定して移動、削除を行う方法 Vault APIを使用して作成したカスタムアプリケーションからVaultにログインをするとFailed to acquire a license.ダイアログが表示されログインができない 「Valuts」のAPIを利用して、「Vault」で管理されているInventorアセンブリファイルと子のファイルをローカルフォルダに取得してInventorで開く方法 「Valuts」のAPIを利用して、「Vault」で管理されているInventorアセンブリファイルの構成情報を取得する方法 Vaultクライアントで表示されているファイル名と、Vault APIのFileAssoc.ExpectedVaultPathで取得した値が異なっている場合がある Managed .Net API でレイアウト空間のビューポート表示範囲のオブジェクトを取得する方法 AutoCAD .net APIででデータリンク元ファイルの変更の有無を知る方法 AutoCAD .net APIで球の中心座標を取得する方法 AutoCAD .net APIでDBTextの幅を取得する方法 AutoCAD .net APIで図面をブロックとして挿入すると、属性の編集ができない AutoCAD ObjectARX .net APIで3D上の中心点、半径、開始点、終了点、法線を指定して円弧を作成する方法 AutoCAD Plant3D .net APIでスペックエディターのカタログデータ内部品種類総数を取得する方法 AutoCAD Plant3D .net APIで流向記号の向きと、流向記号に結びついている配管を取得する方法 AutoCAD Plant3D .net APIでアイソメメッセージの注記を取得する方法 AutoCAD Plant3D APIで3Dモデルの配管のライン番号タグの値を取得する方法 AutoCAD MechanicalのAPIでパーツリストの値を取得する方法 AutoCAD Mechanical APIでパーツ参照の値を取得する方法 AutoLispでマルチ引出線のスタイルを設定する方法 AutoCAD .NET API :トグルボタンの実現 AutoCAD .NET API :ドラッグシーケンス中の画面移動 AutoCAD .NET API :未参照の PDF アンダーレイ参照の削除 AutoCAD .NET API:パージ処理の実装 AutoCAD .NET API :AutoLISP 関数の定義 AutoCAD .NET API :キーボード ボタン押下の検出 AutoCAD .NET API :ObjectARX 関数の P/Invoke AutoCAD .NET API :マウス左ボタン クリックの検出 AutoCAD .NET API :クロスヘア カーソル位置座標の取得 AutoCAD .NET API :属性値を維持した分解 AutoCAD .NET API :分解せずに寸法文字の情報を取得するには? AutoCAD .NET API:リボンタブの表示制御 AutoCAD .NET API :ユーザ座標系(UCS)の変更 AutoCAD .NET API :3D ソリッド構成面のサーフェス抽出 AutoCAD .NET API:3D ソリッドのエッジへのフィレット AutoCAD .NET API:特定領域の画像出力 AutoCAD .NET API :点がサーフェス上に位置しているか? AutoCAD .NET API :トポロジー情報のアクセス AutoCAD .NET API :画像データの図面への格納 AutoCAD .NET API :選択セットのセッション間の維持 AutoCAD .NET API :拡張ディクショナリの付加・取得・削除 AutoCAD .NET API :拡張エンティティ データの付加・取得・削除 AutoCAD .NET API :属性付きブロック定義とブロック参照の挿入 AutoCAD .NET API :ブロック参照の属性値の変更 AutoCAD .NET API :寸法スタイルに従属せずに寸法矢印を変更するには? AutoCAD .NET API :IGES ファイル出力 AutoCAD .NET API:パレット ダイアログを作成する方法 AutoCAD .NET API :サーフェスと線分の交点を得るには? AutoCAD .NET API :ポリラインの円弧セグメントの指定方法 AutoCAD .NET API:IExtensionApplication.Terminate() が呼び出されない AutoCAD .NET API :外部図⾯ファイル内のブロック定義の情報を現在の図⾯にコピーしたい AutoCAD .NET API :同⼀図⾯データベース内でオブジェクトを複写するには? AutoCAD .NET API:ブロック参照の分解挿入 AutoCAD .NET API :スイープ ソリッドとスイープ サーフェスの作成 AutoCAD .NET API :表示スタイルの変更 AutoCAD .NET API:指定した領域を ZOOM するには? AutoCAD .NET API :プリセットビューの変更 AutoCAD .NET API:図⾯監査の⾃動化は可能か? AutoCAD .NET API:図⾯修復を実装するには? AutoCAD .NET API:図面ウィンドウのタイル表示化 AutoCAD .NET API:パスに沿って押し出すソリッドの作成 AutoCAD .NET API :ロフト ソリッドとロフト サーフェスの作成 AutoCAD .NET API:起動中の AutoCAD が AutoCAD 単体か AutoCAD ベースの業種別製品か区別する方法 AutoCAD .NET API :外部図⾯データベースにオブジェクトを書き出したい ObjectARX:パージ機能の実装 ObjectARX :コマンド プロンプト メッセージの同期表示は可能なのか? ObjectARX:ObjectARX 開発者用ガイド ObjectARX:ObjectARX Wizards が動作しない AutoCAD VBA:自動ローダーで .dvb ファイルがロード出来ない AutoLISP:オブジェクトへの TrueColor 色の設定 AutoCAD API:「コマンドは 4 レベルより深くネストできません。」エラーについて AutoCAD API:ブール演算が失敗する AutoCAD API:Visual Studio 2019 に .NET Wizards が認識されない AutoCAD API:GetCanonicalMediaNames メソッドによる用紙サイズ名の変更について Inventor Apprentice Sever APIリファレンスはどこに有りますか? Inventor API で 外部EXEからカスタムアドインのメソッドの実行処理 Inventorプロジェクト.ipjファイルを変更する方法 アセンブリファイル内のコンポーネントファイルの物理的なファイル名を変更する方法 Vault API 関連の SDK や APIリファレンスはどこから入手できますか? AutoCAD ObjectARX Wizard を使用したカスタムコマンドの作成方法 ObjectARX Wizard 2015で作成したプロジェクトが他の PC の開発環境で開けない ObjectARX Wizard 2015 で新規にプロジェクトを作成できない Windows8.1 の ObjectARX Wizard 2015 で新規にプロジェクトを作成できない 混在開発PC環境にObjectARX Wizard 2015をインストールした時の問題 AutoCAD 2015 の ObjectARX で acedCommand のマイグレーション情報 AutoCAD .Net Wizard を使用した カスタムコマンドの作成 AutoCAD2016の .Net カスタムコマンドで APIによる PLOTコマンドを模倣する方法 Managed .Net API で UCS コマンドの W オプションを模倣する方法 VB.Net カスタムコマンド内で COM/ActiveX を使って PDFファイルの作成 AutoCAD の COM 利用でプロットの用紙サイズにセットする文字列 AutoCAD 2019 の Visual LISP エディタ (VLISP コマンド) で日本語表示&入力ができない AutoCAD の PDF 出力で [印刷可能領域] を変更するAPIはありますか? Mechanical製品で下位バージョンのMechanical DWG として保存する方法 Mechanical 2017 と 2018 の混在インストール PC 環境で 外部 EXE より Mechanical のタイプライブラリ を利用する問題 VB.NET外部EXEから純粋なAutoCAD製品とMechanical製品を起動する方法
記事全体を表示