development of

Tieghaに関する備忘録とおまけ

IJCAD

【IJCAD】コマンド実行コンテキストについて

コマンド実行コンテキストについて .NET API でコマンドを定義するときに、IJCAD でも AutoCAD と同じようにコマンド実行コンテキストについて考慮する必要があります。 2つの実行コンテキスト 実行コンテキストには、ドキュメント実行コンテキスト とアプリ…

【IJCAD】COMの機能をもっと楽に活用する

COM 相互運用機能とは .NET API で開発を進めるときに、GrxCAD.Interop.dll を参照することで、COM の機能を使用することができるようになります。 COM 相互運用機能を使用することで、過去に VBA を使用して開発を進めていたときのコードを、一部を書き換え…

【IJCAD】プログレスメーターを表示する

プログレスメーターを表示する .NET API でプログレスメーターを表示させるには、 ProgressMeter クラスを使用するのですが、IJCAD 2018 までは API に不具合があるのか、プログレスメーターがうまく表示されませんでした。 ただこの問題は IJCAD 2019 では…

【IJCAD】任意の軸のアルゴリズムについて

任意の軸のアルゴリズムとは 任意の軸のアルゴリズムは、特定のオブジェクトで OCS(オブジェクト座標系)を生成するために、CAD の内部で使用されているアルゴリズムです。 例えば、円オブジェクトの OCS が任意の軸のアルゴリズムによって、円の X 軸と Y …

オブジェクトスナップをカスタマイズする

オブジェクトスナップを追加する .NET API によるカスタマイズの一つとして、CustomObjectSnapMode クラスを使用することで、独自のオブジェクトスナップを追加することができます。 今回は、円オブジェクトに対して特定の角度の円周上点にスナップされる、…

【IJCAD】ダイナミックブロックのプロパティを変更する

ダイナミックブロックのプロパティを変更する 前回の記事ではダイナミックブロックに設定されているプロパティの取得方法を紹介しましたが、 tknmt.hatenablog.com 今回は、ダイナミックブロックのプロパティの値を変更する方法について紹介しようと思います…

【IJCAD】ダイナミックブロックのプロパティを取得する

ダイナミックブロックのプロパティを取得する IJCAD の .NET API を使用して、ダイナミックブロックに設定されているプロパティを取得したいと思います。 ダイナミックブロックのプロパティとは、ダイナミックブロックに設定されているパラメータセットの名…

【IJCAD】データベース内のオブジェクトを選択する

ObjectGRX の強み 前回の記事ではカスタマイズするなら .NET API を使用すべきと主張しましたが、今回のは ObjectGRX のあるクラスを使用したオブジェクト選択のサンプルを紹介します。 データベースから選択セットを作成する IJCAD の ObjectGRX には OdDbS…

【IJCAD】MSTRETCHコマンド

MSTRETCH コマンドとは AutoCAD では Express Tools をインストールすることで、いくつかの生産向上につながるコマンドが追加され、MSTRETCH コマンドも追加されるコマンドの一つです。 MSTRECH コマンドは LISP で作成されたコマンドなので、LISP が扱える …

【IJCAD】選択オブジェクトから情報を取得する

IJCAD 2018 以前では… 以前のバージョンの IJCAD では、SelectedObject オブジェクトを、 PickPointSelectedObject クラスや、CrossingOrWindowSelectedObject クラスにキャストできないという、なんとも言えない問題がありました。 as 演算子 を使用した型…

【IJCAD】一時的なグラフィックを表示する

AutoCAD で一時的なグラフィックを表示するには AutoCAD で一時的なグラフィックを表示させるには、Editor.DrawVector メソッドを使った方法と、TransientManager クラスを使った方法があります。 Editor.DrawVector メソッドは、指定したベクトルを描画しま…

【IJCAD】カメラを作成する

IJCAD ではカメラを設置できない? IJCAD には 3D ビューカメラを作成するための CAMERA [カメラ] コマンドが存在しません。 それなのに何故かカメラオブジェクトに関する、 CAMERADISPLAY 等のシステム変数は存在してます。 まぁこのシステム変数は、AutoCA…

【IJCAD】オブジェクトをストレッチさせる

.NET API でオブジェクトを変換させる方法とは .NET API でオブジェクトの変換には、本来は Entity クラスの TransformBy メソッドを使用します。 TransformBy メソッドは、オブジェクトの移動、尺度変更、回転、鏡像化などができますが、オブジェクトのスト…

【IJCAD】ポリラインの図心座標を取得する

AutoCADでの図心の取得方法 領域を持つポリラインの図心座標を取得する方法として、広く認知されているのはポリラインからリージョンを作成して、Region.AreaPropertiesメソッドを使用してRegionAreaPropertiesオブジェクトを取得して、リージョンの中心を取…

【IJCAD】ダイアログの前回値を保存を行う方法

ダイアログの前回値はレジストリに書き込める! ダイアログの値を保持する方法についてはいろいろ考えられますが、IJCAD の .NET API を使用して IJCAD のレジストリに前回値を保存することができます。 UserConfigurationManager クラスの OpenDialogSectio…

【IJCAD Mechanical】パーツ参照を作成する IJCAD偏

IJCAD には残念ながら AutoCAD Mechanical のように、IJCADではメカニカル向けの SDK は、現在公開されていません。 もし SDK が公開されたときには、API で作成したコマンドで、メカニカル特有のオブジェクトの作成ができるようになるかもしれません。 ICM …

【IJCAD】SelectionSetクラス

IJCAD2018以前では、SelectedObject オブジェクトを取得するには get_item() メソッドを使用しなければなりませんでしたが、IJCAD2019 で、SelectionSet クラスにインデクサが実装されたようです。 IJCAD2018以前 Editor ed = Application.DocumentManager.M…

【IJCAD】Transaction.GetObject() と ObjectId.GetObject() はどちらが良いのか?

.NET APIでオブジェクトを開く手段としては以下の方法があります。 Transaction.GetObject() メソッドを使用する ObjectId.GetObject() メソッドを使用する ObjectId.Open() メソッドを使用する 基本的に .NET API でオブジェクトを開く場合は1番目と2番目の…

【IJCAD】システム変数 DBMOD の値を変更する

システム変数 DBMOD とは DBMOD は、図面の変更状態を示す読み取り専用のシステム変数です。 のシステム変数は、図面が編集されたときにどのような変更がされたかどうかを示しています。 DBMOD システム変数 – IJCAD ヘルプセンター このシステム変数は読み…