問題タブ [revit]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - IronPython で .NET API オブジェクトのオーバーライドされたプロパティにアクセスするにはどうすればよいですか?
IronPython を使用して Autodesk Revit Architecture 2010 のプラグイン API 用のシェルを作成し、API の学習を高速化しています。
API が提供するクラスの 1 つはAutodesk.Revit.Elements.Room
、から派生したAutodesk.Revit.Element
です。
私は本当に読みたいRoom.Name
のですが、これはブームです!次のようにsプロパティRoom
をオーバーライドしました。Element
Name
もちろん、これはゲッターを隠します...
type のオブジェクトが与えられた場合Room
、基本クラスの getter にアクセスするにはどうすればよいですか?
私が試してみました
しかし、.NET 派生クラスには基本プロパティがないようです。
.net - 既定の AppDomain で特定のアセンブリのシャドウ コピーを使用することはできますか?
なぜ私がこれをしたいのかについての簡単な説明:
Autodesk Revit Architecture 2010 のプラグインを作成するのに忙しいです。デバッグ セッションごとに Autodesk を再起動し、Revit プロジェクトを手動でロードし、[アドイン]タブをクリックしてプラグインを起動する必要があるため、プラグイン コードのテストは非常に面倒です。これには時間がかかりすぎます。
IronPython インタープリターをホストする 2 つ目のプラグインを作成しました。このようにして、Revit が提供する API をいじることができます。しかし最終的には、コードを C# で書き直してデバッグする必要があります。
簡単だと思いました。IronPython スクリプトからプラグイン DLL をロードして実行するだけです。これは機能しますが、DLL が Revit AppDomain に読み込まれるようになったため、読み込まれると Visual Studio で再コンパイルできません。
簡単だと思いました (StackOverflow の助けを借りて): DLL を新しい AppDomain にロードするだけです。残念ながら、RevitAPI オブジェクトは拡張されないため、別の AppDomain にマーシャリングすることはできませんMarshalByRefObject
。
私はシャドウコピーで何かに乗っているかもしれないと思います。ASP.NET がこれを行っているようです。しかし、MSDN のドキュメントを読むと、AppDomainを作成するときにしか指定できないようです。
現在の (既定の) AppDomain に対してこれを変更できますか? 特定のディレクトリから DLL のシャドウ コピーを使用するように強制できますか?
api - Autodesk Revit Architecture 2010 でタイプ バインディングを使用して共有パラメータの値を設定する方法を教えてください。
Autodesk Revit Architecture 2010のタイプにバインドされた共有パラメータUValueがあります。Wall
TypeBinding
次の方法でパラメーターに簡単にアクセスできます。
このパラメーターの値は、
しかし、私がするとき
エラーが発生します:
InvalidOperationException: オブジェクトの現在の状態のため、操作は無効です。
調べてみると、 parametersReadOnly
プロパティは に設定されていfalse
ます。
c# - Autodesk Revit MEP 2010 .NET API C#部屋とドアの関係
C#でVS2008およびAutodeskRevit MEP 2010を使用して、ドアが部屋に接続されているかどうかを調べようとしています。
elementDoor.get_Parameter(BuiltInParameter.FROM_ROOM_ID)
の戻り値は常にであるため、このアプローチは機能しませんnull
。
私はBuildingCoderブログで次のことを読みました。
組み込みパラメーターは、APIの公式にサポートされている部分ではありません。将来的には、プロパティとして適切に公開されるデータに置き換えられると予想されます。
その声明は本当ですか?誰かが私にドアと部屋の関係を取得するための効率的な方法を教えてもらえますか?
windows - 誰かをテストに割り込ませる方法は?
わかった。当社の製品は動作します。ベータ テスターは実際に作業を進めています。次の反復の時間です。しかし、品質を確保するにはどうすればよいでしょうか。テスターが必要です!
テストを始めたばかりの人をどうやって外に連れ出すのですか? 私は自分でそれを行う方法についての手がかりがありません (私は開発者であり、テスターではありません)!
私たちは小さなチームです:
- 2 人のアーキテクト (ソフトウェアではなく建物の場合、彼らはここではドメインの専門家です)何を構築するかを考え出します
- 私はそれを構築します
- そして、リリースをプッシュする前にいくつかのテストを行う新しい人
私たちの誰も、これを専門的に行う方法についての手がかりを持っていません. これまでのところ、次のことがわかっています。
- テストしたい構成にまたがる一連の仮想マシン
- さまざまなバージョンのウィンドウ
- ドイツ語と英語。この 2 つの言語は、お客様が使用する可能性が高い言語です。
- 私たちが書いているホスト ソフトウェア (Autodesk Revit Architecture 2010、エネルギー計算用のプラグインを作成しています)
- 私が行ったいくつかのテストを説明するテキスト ドキュメント (インストールされたリリース xyz、これを行った、あれを行ったなど)
- テスターが見つけたすべてのバグを追加できるバグ追跡システム
テストスクリプトが必要になると思います。しかし、どのように?誰?何?いつ?
c# - Revit Api を使用してライブラリ パーツを配置する
Revit API を使用してファミリ シンボルを読み込みます。以下のコードは機能していますが、ファミリを Revit にロードし、ファミリ ツリーから手動でドラッグするか、関連するファミリ ツールを使用して挿入する必要があります。
ユーザーにどこに配置したいかを尋ねるようにするにはどうすればよいですか? (ファミリを編集しているときに「プロジェクトにロード」をクリックしたときと同様)、ファミリ ツリーからドラッグする必要はありません。
c# - C# イベントを制御せずに実行を継続する前に、COM イベントが発生するのを待つ必要がある
似ていると思われる他のいくつかの質問を読みましたが、まだ非常に混乱しており、どの回答もうまくいかないようなので、別の質問をすることにしました. ご容赦ください。私はスレッド化などに精通していません。
私が作成しているアプリケーションは、Revit Structure 用のサード パーティのアドインです。それらが機能する方法は、インターフェースを実装するクラスを含むクラスライブラリを持っていることです。それが呼び出されると、アプリケーションが実行されます。
私のツールは印刷ツールで、PDF への印刷を自動化することを目的としています。コードを PdfCreator を使用して PDF を印刷する方法に移行しようとしています (Revit での印刷方法は、プリンターを設定し、API で「印刷」メソッドを呼び出すことです。プリンター)。
PDFCreator には優れた COM インターフェイスがあり、その設定を行うだけでなく、すべてのドキュメントが印刷された後に発生するイベントをサブスクライブできます。印刷メソッドを複数回呼び出しているので、すべてが完了するまで待ってから、コードで何かを実行したいと考えています。
私のロジックは次のようになります。
- ユーザーが印刷するものを選択
- 印刷ボタンを押す (私の WPF ウィンドウで)
- My Code は、PDF クリエーターの設定を行い、イベントをリッスンするように登録します。
- Print() api メソッドを呼び出すと、各アイテムを印刷するのに時間がかかります。
- 次に、すべての印刷が完了したときにアラートを受け取り、ドキュメントに対して「後処理」を行いたいと考えています。
- 後処理には、特にPDFの名前変更/移動が含まれます
私の問題は、印刷メソッドを呼び出すと、コードが PDFcreator イベントを待機せず、そのまま続行して終了することです。つまり、後処理が起動されません。
私がする必要があるのは、ブロックせずに、どうにかしてイベントを待つことです。
他のいくつかの質問を読んだ後、私はこれを試しました:
- AutoResetEvent を使用し、イベント ハンドラが Set() を呼び出すまで WaitOne を使用します。これはWaitOneでスタックし、継続しませんでした.
- 特定のクラス変数がイベント ハンドラーによって設定されるまで、Application.DoEvents..
- イベントにサインアップするために新しいスレッドを作成しようとしましたが、役に立たないようです
新しいスレッドでイベントを発生させ、現在のスレッドに継続するように警告するにはどうすればよいですか? または、イベントが発生するまでコードを待機させるにはどうすればよいですか?
さらに情報が必要な場合はお知らせください。喜んで提供します。
revit - Revitでは、プログラムで干渉検出を行う方法は?
より正確には、ソリッドが別の要素と交差しているかどうかを判断するにはどうすればよいですか? Revit API を調べましたが、これに関する情報は見つかりませんでした。
visual-studio-2008 - Visual Studio 2008 で Revit アドイン Windows インストーラを作成する方法
Revit 2011 アドインを手動でインストールするプロセス:
- アドイン DLL を目的の場所に配置します。たとえば、C:Program Files\RevitAddin\RvtAddin.dll です。
- アドインに関する情報 (場所、完全なクラス名など) を含む .addin xml ファイルを作成します。この「.addin」ファイルは、次のいずれかの場所に配置する必要があります。
- Windows 7 の場合: C:\ProgramData\Autodesk\Revit\Addins\2011\
- Windows XP の場合: C:\Documents and Settings\All Users\Application Data\Autodesk\Revit\Addins\2011\
Visual Studio 2008 セットアップ プロジェクトを使用すると、最初の手順を簡単に実行できます。2 番目のステップでは、おそらく xml .addin ファイルを作成するカスタム アクションを使用する必要があります。インストーラーからカスタム アクションに情報 (出力場所) を渡す方法がわかりません。
c# - Revitですべてのパラメータを選択するにはどうすればよいですか?
5つの選択肢(コンボボックスのスタイル)のような要素のパラメーターがあります。現在選択されているものを取得する方法を知っていますが、他の4つの選択肢を取得する方法はありますか?