IJCAD の .NET API を使用した DGN 線種の削除する方法についてですが、
次のサイトを参考に、IJCAD 向けにソースコードを書きなおすことで、
問題なく不要な DGN線種を IJCAD でも削除できることを確認しております。
Purging unwanted DGN linestyle data from an AutoCAD drawing using .NET
処理の大まかな流れとしましては、
- 参照されていない DGN 線種を取得する
- 参照されていないストロークを取得する
- 削除しても安全な線種とストロークを削除する
- 空の拡張ディクショナリーを削除する
と、図面内の不要な線種やディクショナリーを削除しています。
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 かどうか判断する事が可能です。