MultiCAD.NET API:属性付きブロックを挿入

本日の出版物では、MultiCAD.NET APIを使用したブロックの挿入に焦点を当てます。これは、フォーラムのプログラミングセクションでよく寄せられる質問の1つです。

そのため、たとえば給水計画など、図面要素のシンボル用のブロックテンプレートが既に含まれている図面ファイルがあります。 さまざまなタイプのクレーンを表すブロックに2つの属性が含まれているとします。
また、次のグラフィック表示があります。

画像

MultiCAD.NETでは、 McBlockRefクラスを使用して、図面内のブロック挿入を表します。 必要なことは、挿入オブジェクトを作成し、ブロックの名前をBlockNameフィールドとして割り当てることBlockNameです。

 McBlockRef refBlk = new McBlockRef(); refBlk.BlockName = "block_01"; refBlk.DbEntity.AddToCurrentDocument(); 

MultiCAD.NETでは、ブロック属性は通常のオブジェクトプロパティと同じ方法で保存されるため、指定された属性値でブロックを挿入するには、 DbEntity.ObjectProperties介してそれらにアクセスするだけで十分DbEntity.ObjectProperties

 refBlk.DbEntity.ObjectProperties["NAME"] = “”; refBlk.DbEntity.ObjectProperties["LABEL"] = “1127()”; 

McDocumentクラスには、ドキュメントに存在するすべてのブロックのリストを含むダイアログを表示するためのメソッドが含まれています。これを使用して、挿入するブロックを選択できます。

画像

次のコマンドは、選択したブロックを指定した属性値で図面に挿入します。 コマンドラインを使用して値を入力します。

 [CommandMethod("smpl_insertBlock", CommandFlags.NoCheck | CommandFlags.Redraw)] static public void smpl_insertBlock() { //    McDocument doc = McDocumentsManager.GetActiveDoc(); if (doc == null) return; String selBlock = String.Empty; McObjectId currId; //     if (doc.ShowSelectBlockForm(ref selBlock, out currId, McContext.MainWindow().Handle)) { McBlockRef refBlk = new McBlockRef(); refBlk.BlockName = selBlock; refBlk.DbEntity.AddToCurrentDocument(); //   InputJig jig = new InputJig(); refBlk.DbEntity.ObjectProperties["NAME"] = jig.GetText("  :"); refBlk.DbEntity.ObjectProperties["LABEL"] = jig.GetText("  :"); } else { MessageBox.Show("  "); } } 

Source: https://habr.com/ru/post/J269203/


All Articles