問題タブ [autocad-plugin]
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.
c# - Windows フォーム コントロールを実行するアプリケーションを取得する
をAutocad Plugin
使用して正常に動作する をWindows Forms
作成しuser control (winforms)
ており、将来好きな形で複製する を作成しました。
質問は
コントロールのコードから、そのコントロールを実行しているアプリケーションのインスタンスを取得するにはどうすればよいですか?
(おそらく純粋な winforms の問題)
条件:
プラグイン内で、問題なく Autocad アプリケーション インスタンスを取得できます。
このユーザー コントロールはseparate assembly (dll)
、プラグイン アプリケーションで参照されるようになっているため、アプリケーション インスタンスに直接アクセスすることはできません。
シナリオについての簡単な説明:
Main Assembly
プラグインとしてAutocadによって実行されています。そのアセンブリには、Autocad アプリケーションがインスタンス化されています。
これで、Autocad で作業するための便利なフォーム コントロールがいくつかあり、それらはseparate assembly
. (それは、私が好きなだけ多くの異なるプラグインでそれらを使用したいからです)。
そのため、Autocad は を実行しmain assembly
、main assembly
のコントロールを実行しますseparate assembly
。
適切に動作させるために、これらのコントロールは、main assembly
.
今日、私はアプリケーションをコントロールのプロパティとして使用しています。コントロールを操作する前に設定する必要があります。(設定を忘れると、例外が発生します)。作成者がパラメータを取るコントロールを持つことはできないので。
コントロールが実行中のアプリケーションを検出するようにしたいので、その回避策を避けます。
algorithm - ポイントを囲むポリゴンを見つけるアルゴリズム - ラインのみが定義されています
多くの直線を含む 2D 図面があります。これらの行はすべて数学的に知られています。そして、それらは他のものから独立しています。
各線の始点と終点を知っていると考えることができ、それらを交差させてすべての交点を見つけることができます。(詳しくは、Autocad に入っていますが、コードでしか作業できません。したがって、Autocad ソリューションよりもアルゴリズムが必要ですが、Autocad ソリューションも歓迎されます)。
問題は、ポイント (どこでも) が与えられた場合、それを含む小さなポリゴンを見つけたいということです。その多角形は、最も近い線によって形成されます。
詳細:
宣言されたポリゴンはありません。ただの線。任意の行数、任意のサイズ、任意の位置。そして所定のポイント。
これらの線は、1 つの多角形を形成する場合もあれば、多数の場合もあれば、まったく形成されない場合もあります。したがって、ポリゴンがどのように見えるかについての規則はありません。面の数に制限はなく、規則性はありません。(多角形を形成する点は、線を交差させることによって見つけられます。線は有限であり、交差しなければ多角形を形成しません。)
私の答えは、特定のポイントを含む可能な限り最小のポリゴンです。
browser - 3D DWG オブジェクトを回転できるブラウザ プラグインまたは js ライブラリはありますか?
このようなものを見たことがありますか?http://www.autodwg.com/dwg-viewer/dwgviewx.htmを試しましたが、2D オブジェクトのみをサポートしているようです
もう 1 つの問題は、IE8 で動作するはずだということです。
c# - Autocad.Interopを使用せずにAutocadエンティティを列挙する方法は?
Autocad 図面内のすべてのエンティティを列挙したいのですが、Autocad.Interop
参照は使用しません。
Interop を使用すると、以下を選択できます。
しかし、Object Arx
参考文献では、データベース内のトランザクションを使用してエンティティを取得し、オブジェクトを ID で取得するためのチュートリアルしか見つけることができません。作業を遅らせるのは本当に退屈なことだと思います。
.net - .NET の AutoCAD -INSERT コマンド
私は、AutoCAD プラグインを VBA から VB.NET に変換する任務を負っていますが、現在少し行き詰っています。
私が取り組んでいるコマンドは、新しいレイヤーを作成し(または、既に存在する場合はアクティブなレイヤーとして選択します)、ユーザーが選択したポイントとdwgファイルを指定する2つの「-INSERT」コマンドを実行します。次に、前のアクティブ レイヤがアクティブ レイヤとしてリセットされます。
挿入コマンドは次のようになります。
注: コマンド内のすべての改行はvbCR
(not vbCrLf
) として追加されます。
私の質問は、ObjectARX に対して .NET で同じ結果を得るにはどうすればよいですか? 非同期 (コールバックなし) であるため使用できませSendStringToExecute
ん。つまり、実行が完了すると、現在のレイヤーをリセットできません。おそらく を使用して、純粋な .NET コードでこの機能を複製する何らかの方法が必要BlockTable
ですが、その方法はわかりません。
http://through-the-interface.typepad.com/through_the_interface/2006/08/import_blocks_f.htmlにある記事に従ってみましたが、ドキュメントに目に見える影響はまったくありませんでした。私も使用しようとしましmyDatabase.Insert(transform, otherDatabase, False)
たが、コマンドプロンプトはブロックが既に存在しているためスキップされたことについて何かを言いましたが、それでも変更は見られませんでした。「-INSERT」コマンドが実際に舞台裏でどれほど魔法をかけているかはわかりませんが、それを .NET で複製することは可能でしょうか? それとも、(AutoCAD によって処理されるように送信されたテキスト コマンドとしてではなく) 通常の方法として呼び出すことができるのでしょうか?
.net - USB アクティベーション プログラムから情報を取得する
私の同僚は RCAD と呼ばれる AutoCAD 2010 プラグインを使用していますが (正しい名前かどうかは不明です)、仮想マシンにインストールされた Windows XP でのみ動作し、特定の USB を挿入するとアクティブになります。同じプラグインを開発する必要があります。そのプラグインと同じ機能を備えた AutoCAD 2014 ですが、まず USB とプログラムから情報を取得する必要があります。すべてのファイルが非表示になっているため、USB 内に dll またはファイルが見つかりませんでした。 USBからの情報?.NET リフレクターなどでプログラムをクラックできますか? ここから始めるべきかわからないので、どんな提案でも役に立ちます。ありがとうございます。
vb.net - .NET を使用して autocad で Lisp ファイルをロード (および実行) する
現在、いくつかの古い AutoCAD プラグインを VBA から VB.NET に書き直しています。結局のところ、上記のプラグインの (かなり大きな) 一部は LISP で実装されており、そのままにしておくように言われました。そのため、AutoCAD で .NET から LISP コードを実行すると問題が発生しました。現在、そのために必要なプロセスを説明しているオンラインのリソースがいくつかありますが (このようなもの)、それらはすべて、lisp ファイル/関数が既に読み込まれていることを当然のことと考えています。現在、変換方法を理解しようとして頭を悩ませている VBA 関数は"(LOAD ""<file>"")"
、.最初から最後まで実行され、それが機能します)。
だから私の質問はです。.NET プラグインから autocad に Lisp ファイルをロード (および実行) するにはどうすればよいですか?