@gile thanks very2 match, for your help this has solved
[CommandMethod("xx")]
public static void xxCommand()
{
var doc = acApp.DocumentManager.MdiActiveDocument;
var db = doc.Database;
var ed = doc.Editor;
//SELECT FOR BLOCK REFERENCE
var pso = new PromptSelectionOptions();
pso.MessageForAdding = "\nSelect Block Reference <Click After Select>:";
var filter = new SelectionFilter(new[] { new TypedValue(0, "INSERT") });
var psr = ed.GetSelection(pso, filter);
if (psr.Status != PromptStatus.OK)
{
acApp.ShowAlertDialog("None block reference selected !");
return;
}
using (Transaction tr = db.TransactionManager.StartTransaction())
{
var btr = tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite) as BlockTableRecord;
foreach (ObjectId id in psr.Value.GetObjectIds())
{
var br = (BlockReference)id.GetObject(OpenMode.ForRead);
var objCol = new DBObjectCollection();
br.Explode(objCol);
objCol
.Cast<DBObject>()
.Select(p => ((Curve)tr.GetObject(p.ObjectId, OpenMode.ForRead)))
.Where(x => x.Area > 0)
.OrderByDescending(z => z.Area);
var curve = objCol[0] as Curve;
AddLayer("Layerhelper", 0, 82,false);
curve.ColorIndex = 253;
btr.AppendEntity(curve);
tr.AddNewlyCreatedDBObject(curve, true);
}
tr.Commit();
AddLayer("0", 0, 0, false);
}
}