/// <summary>
/// Изолируем выбранный объект
/// </summary>
[Rtm.CommandMethod("IObj2")]
public void IObj2()
{
App.Document mdiActiveDocument = App.Application.DocumentManager.MdiActiveDocument;
if (mdiActiveDocument == null) return;
Db.Database database = mdiActiveDocument.Database;
Ed.Editor editor = mdiActiveDocument.Editor;
Ed.PromptEntityOptions opt = new Ed.PromptEntityOptions("\nSelect obj:");
opt.AllowNone = false;
Ed.PromptEntityResult res = editor.GetEntity(opt);
if (res.Status != Ed.PromptStatus.OK) return;
using (Db.Entity ent = res.ObjectId.Open(Db.OpenMode.ForWrite) as Db.Entity)
{
ent.Visible = false;
}
string AppName = "AEC_ISOLATED_OBJECTS";
using (Db.DBDictionary dBDictionary = database.NamedObjectsDictionaryId.Open(Db.OpenMode.ForRead) as Db.DBDictionary)
{
if (dBDictionary.Contains(AppName))
{
Db.ObjectId IsolateDicId = (Db.ObjectId)dBDictionary[AppName];
using (Db.DBDictionary IsolateDic = IsolateDicId.Open(Db.OpenMode.ForWrite) as Db.DBDictionary)
{
foreach (Db.DBDictionaryEntry id in IsolateDic)
{
using (Db.Xrecord xrec = id.Value.Open(Db.OpenMode.ForWrite) as Db.Xrecord)
{
Db.ResultBuffer buffNew = new Db.ResultBuffer();
Db.TypedValue[] typedValues = xrec.Data.AsArray();
bool isNotEmpty = true;
if(typedValues.Length == 1)
{
if(Convert.ToInt32(typedValues[0].TypeCode) == Convert.ToInt32 (Db.DxfCode.Int16))
{
if ((short)typedValues[0].Value == (short)-1)
{
isNotEmpty = false;
}
}
}
if (isNotEmpty)
{
foreach (Db.TypedValue tv in typedValues)
buffNew.Add(tv);
}
buffNew.Add(new Db.TypedValue(Convert.ToInt32(Db.DxfCode.HardPointerId), res.ObjectId));
xrec.Data = buffNew;
}
}
}
}
}
}