フォローする

.NET - DGN線種の削除について

更新 : 2017-02-02 07:26:42 UTC

IJCAD の .NET API を使用した DGN 線種の削除する方法についてですが、
次のサイトを参考に、IJCAD 向けにソースコードを書きなおすことで、
問題なく不要な DGN線種を IJCAD でも削除できることを確認しております。

Purging unwanted DGN linestyle data from an AutoCAD drawing using .NET

処理の大まかな流れとしましては、

  1. 参照されていない DGN 線種を取得する
  2. 参照されていないストロークを取得する
  3. 削除しても安全な線種とストロークを削除する
  4. 空の拡張ディクショナリーを削除する

と、図面内の不要な線種やディクショナリーを削除しています。

IJCAD 向けのソースコードの変更点としては、
using Autodesk.AutoCAD. を using GrxCAD.に変更が必要で、
ハンドル値から ObjectId の作成方法として、

var handle = Convert.ToString(i, 16);
// Get the entity name using acdbHandEnt()
var res = acdbHandEnt(handle, ref ename);
if (res != 5100) // RTNORM
    continue;
// Convert the entity name to an ObjectId
var id = new ObjectId(ename.a);

と、ObjectARX の acdbHandEnt() を使用していますが、
.NET API のみを使用する場合では、

var handle = new Handle(idx);
var id = db.GetObjectId(false, handle, 0);
if (id.IsNull) continue;

と、変更することで有効な ObjectId かどうか判断する事が可能です。

この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています
他にご質問がございましたら、リクエストを送信してください

コメント