//汉字部分参考
//由Virupaksha Aithal提供
//您可以使用数据库反应器来识别由于“ExplodeToOwnerSpace”调用而创建的实体。请参阅下面的代码,它在调用“ExplodeToOwnerSpace”之前添加一个“ObjectAppended”事件回调。调用“ExplodeToOwnerSpace”后,事件回调将被删除。“ObjectIdCollection”填充在“ObjectAppended”回调中,可用于确定在“ExplodeToOwnerSpace”API中添加的对象
static ObjectIdCollection ids = new ObjectIdCollection ();
[CommandMethod("ExplodeToOwnerSpace")]
public static void ExplodeToOwnerSpace()
{
Document doc = Application.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
Editor ed = doc.Editor;
PromptEntityOptions options =
new PromptEntityOptions("\nSelect block reference");
options.SetRejectMessage("\nSelect only block reference");
options.AddAllowedClass(typeof(BlockReference), false);
PromptEntityResult acSSPrompt = ed.GetEntity(options);
using (Transaction tx =
db.TransactionManager.StartTransaction())
{
BlockReference blockRef = tx.GetObject(acSSPrompt.ObjectId,
OpenMode.ForRead) as BlockReference;
//add event
ids.Clear();
db.ObjectAppended +=
new ObjectEventHandler(db_ObjectAppended);
blockRef.ExplodeToOwnerSpace();
//remove event
db.ObjectAppended -=
new ObjectEventHandler(db_ObjectAppended);
foreach (ObjectId id in ids)
{
//get each entity....
ed.WriteMessage("\n" + id.ToString());
}
tx.Commit();
}
}
static void db_ObjectAppended(object sender, ObjectEventArgs e)
{
//add the object id
ids.Add(e.DBObject.ObjectId);
}