CommandMethod("ACT_VSTAVKA_STADII_P")]
public void ACT_VstavkaStadiiP()
{
Document doc = Application.DocumentManager.MdiActiveDocument;
Database destdb = doc.Database;
using (DocumentLock docLock = doc.LockDocument())
{
using (Transaction tr = destdb.TransactionManager.StartTransaction())
{
string strNameFile = GetNameFile("СТАДИЯ П", "dwg");
BlockTable destBt = (BlockTable)tr.GetObject(destdb.BlockTableId, OpenMode.ForRead);
ObjectIdCollection ids = new ObjectIdCollection();
IdMapping iMap = new IdMapping();
using (Database extDb = new Database(false, true))
{
extDb.ReadDwgFile(strNameFile, System.IO.FileShare.ReadWrite, true, "");
using (Transaction extTr = extDb.TransactionManager.StartTransaction())
{
BlockTable extBt = (BlockTable)extTr.GetObject(extDb.BlockTableId, OpenMode.ForRead);
BlockTableRecord extModelSpace = (BlockTableRecord)extTr.GetObject(extBt[BlockTableRecord.ModelSpace], OpenMode.ForRead);
foreach (ObjectId obj in extModelSpace)
if (!obj.IsEffectivelyErased && !obj.IsErased && obj.IsValid)
{
Entity ent = (Entity)extTr.GetObject(obj, OpenMode.ForRead);
if (ent.GeometricExtents.MinPoint.X >= intShagSetkiX * 0 && ent.GeometricExtents.MaxPoint.X <= intShagSetkiX * 16 &&
ent.GeometricExtents.MinPoint.Y >= -intShagSetkiY * 7 && ent.GeometricExtents.MaxPoint.Y <= intShagSetkiY * 1)
ids.Add(obj);
if (ent.GeometricExtents.MinPoint.X >= intShagSetkiX * 0 && ent.GeometricExtents.MaxPoint.X <= intShagSetkiX * 16 &&
ent.GeometricExtents.MinPoint.Y >= -intShagSetkiY * 15 && ent.GeometricExtents.MaxPoint.Y <= intShagSetkiY * 11)
ids.Add(obj);
}
extTr.Commit();
extDb.WblockCloneObjects(ids, destBt[BlockTableRecord.ModelSpace], iMap, DuplicateRecordCloning.Ignore, false);
}
}
tr.Commit();
}
}
}