「objectarx」タグアーカイブ

objectarx:2017 リボンを作成

リボンは、頻繁にアクセスするツールや現在のワークスペースと
snapcrab_noname_2016-12-1_22-12-1_no-00

//とりあえずリボンにいれるボタンを作る
RibbonButton button1 = new RibbonButton;
button1.Text = “Button1”;

RibbonButton button2 = new RibbonButton;
button2.Text = “Button2”;

// 背景のリボンを用意して、はじめに作ったリボンを載せる
//リボンは、画面で自由に変化するようにセルに入れていく感じ
RibbonRow row = new RibbonRow();
row.RowItems.Add(button1);
row.RowItems.Add(button2);

//グーループのパネルを作成:
そこに、名前を決めてブロックごと入れる
このようにしておけば、エクセルのリボンと同じ自由に出し入れできる。
例えば使用頻度のログを残しておいて頻度事に切り替える事もできる。
RibbonPanelSource panelSource = new RibbonPanelSource();
panelSource.Title = “Panel1”;
panelSource.Rows.Add(row);

RibbonPanel panel = new RibbonPanel();
panel.Source = panelSource;

//
RibbonTab tab = new RibbonTab();
tab.Title = “Tab1”;
tab.Panels.Add(panel);

RibbonControl ribbon = new RibbonControl();

objectarx:2017 取得したオブジェクトが、ハッチングだとレイヤーを分ける

//取得したオブジェクトが、ハッチングだとレイヤーを分ける
//セレクションなどを利用した選択したオブジェクトの場合
string enttype = acEnt.GetType().FullName.ToString();
switch (enttype)
{
case “Autodesk.AutoCAD.DatabaseServices.Hatch”:

break;
default:

break;
}
こんな感じ。

C# Autodeskのオブジェクトの取得

Autodeskのオブジェクトの取得は、autocadが昔から、データベースなので・・

これを、知っていればあまり難しくなかった。

ドキュメント用の入れ物を用意
Document acDoc = Application.DocumentManager.MdiActiveDocument;

選択したドキュメントのデータベースを取得して、ドキュメントの入れ物に入れる。
Database acCurDb = acDoc.Database;
トランザクションを初期化
using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())
{
テキストスタイル用のテーブル用意
TextStyleTableRecord acTextStyleTblRec;
トランザクションレコードを利用してテキストスタイルを書き込みモード(※読み込みデータの扱いで変化)で開いてレコードをテキストスタイルテーブルのフィールドレコードに入れたものを変数に代入する。
acTextStyleTblRec = acTrans.GetObject(acCurDb.Textstyle,
OpenMode.ForWrite) as TextStyleTableRecord;
トランザクションを確定する
acTrans.Commit();

これで、回せばどれもこれもおなじでした。

トランザクション用いないと不都合多発。

VBAのフォームは、c#フォームとなりったけどこちらの方が、非常に楽かもしれない。

呼び出し方は、安易
フォームがf01で作れば
f01 f= new f01();
f.Text = “オブジェクトの取得”;
Application.ShowModelessDialog(f);
これで表示される。
エラートラップは、オブジェクトの取得で非常に多く、tryでも外す場合があるけど、全部につけると煩雑なので、
dllは、voidもしくはobjectで渡して、CASTしていけば、エラーは結構防げたかな?
自サイトの転記だけどこの点の変更はない。