development of

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

【ODA】ペーパー空間の印刷マージンを点線にする

AutoCADなどのペーパー空間には印刷マージンを点線で表示していますが、単純にペーパー空間のビューを作成しても直線で表示されてしまいます。 この枠を点線にする方法について見当違いな部分をひたすら調査して時間がとられてしまったが、実際にはとても簡…

【ODA】OdaMfcAppでアンチエイリアスを有効にする

ODAライブラリにサンプルとして含まれているOdaMfcAppアプリケーションでロードした図面を、 WinDirectX.txvを使用してビューをDirectXで描画させる際にアンチエイリアスを有効にする方法。 ODAライブラリのサンプルを参考にしてDWGのビューを作成するサンプ…

【AutoCAD Mechanical】全ての部品表を取得する

全ての部品表を取得するには 図面内に存在する全ての部品表を取得するには、AcmBOMManager::getAllBomTables メソッドを使用します。 このメソッドを使用すると、図面内のすべての部品表のオブジェクトIDを取得できます。 サンプルコード void GetAllBom() {…

【AutoCAD Mechanical】部品表にデータを読み込む

部品表にデータを読み込むには 部品表 ダイアログボックス から部品表にデータを読み込ませることができますが、前回の記事と同じように API を使用して部品表にデータを読み込ませることが可能です。 【AutoCAD Mechanical】部品表のデータを書き出す - dev…

【AutoCAD Mechanical】部品表のデータを書き出す

部品表のデータを書き出すには 一般的には部品表 ダイアログ ボックス から部品表の内容を書き出すと思いますが、 API を使用して指定したファイル形式で書き出すことも可能です。 部品表の書き出しには、AcmBOMManager::exportBOM メソッドを使用します。 …

【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のアプリケーション開発は.NET APIでやるべき

IJCADのカスタマイズするために、LISP、COM、ObjectGRX、.NET API の 4 つが API が主に使用されています。 ちょっとしたマクロのようなカスタマイズを行うのであれば、LISP や COM も選択肢に入りますが、新しくIJCAD用のアプリケーション開発を始める場合…

【IJCAD】MSTRETCHコマンド

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

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

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

【IJCAD】ブロック定義をプレビューする

ブロック定義をプレビューしてみる AutoCAD DevBlog の記事で紹介されているサンプルや 、adndevblog.typepad.com Teigha の SDK に含まれるサンプルを参考にし、GraphicsSystem 名前空間のクラスを使用して、ブロック定義のプレビューを表示させるダイアロ…

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

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

【IJCAD】カメラを作成する

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

【AutoCAD Mechanical】パーツ参照のデータを取得する

パーツ参照のデータを取得するには パーツ参照のコンポーネントのプロパティの各値を取得するには、 AcmBOMManager::getPartData メソッドを使用します。 サンプルコード // オブジェクトを選択 ads_name entname; ads_point pickPoint; if (acedEntSel(_T("…

【AutoCAD Mechanical】部品表を作成する

部品表を作成する 部品表を API で作成するには、AcmBOMManager::createBomTable メソッドまたは、AcmBOMManager::createBorderBomTable メソッドを使用します。 AcmBOMManager::createBomTable メソッドでは図面全体の部品表や、ストラクチャ内のアセンブリ…

【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 …

【AutoCAD Mechanical】パーツ参照を作成する その5

これまでの記事の内容を踏まえ、AutoCAD Mechanical 用のコマンドを作成してみました。 ACMでコマンドを実行するとウィンドウが表示され、そこで入力した内容を元に JIS 規格の球平形鋼のブロック参照を作成し、それに関連付いたパーツ参照を作成します。 AC…

【AutoCAD Mechanical】パーツ参照を作成する その4.5

acedSSGet 関数でオブジェクトを選択する これまでのサンプルコードでは、amiPickメソッドを使用してオブジェクトの選択を行っていました。 今回は Mechanical 特有の関数を使用せずに、 acedSSGet関数を使用してオブジェクトを選択した場合は、どのようにし…

【AutoCAD Mechanical】パーツ参照を作成する その4

パーツ一覧に表示されないパーツ参照 前回、パーツ参照のプロパティの値を設定していきましたが、パーツ一覧から除外は他の値と設定方法が異なるため触れませんでした。 今回は、パーツ一覧から除外の設定を変更していきたいと思います。 サンプルコード // …

【AutoCAD Mechanical】パーツ参照を作成する その3

パーツ参照の情報を設定する これまでの記事では作成したパーツ参照のプロパティは空欄でした。 【AutoCAD Mechanical】パーツ参照を作成する その1 - development of パーツ参照を作成する その2 - development of 今回はパーツ参照のコンポーネントのプロ…

【AutoCAD Mechanical】パーツ参照を作成する その2

オブジェクトに関連付いたパーツ参照を作成する 前回の記事ではただパーツ参照を作成しただけでした。 tknmt.hatenablog.com 今回はオブジェクトに関連付けされ、オブジェクトを移動させると追従するパーツ参照を作成してみます。 サンプルコード // オブジ…