Добрый день, коллеги! Возникла следующая задача: переместить все примитивы в пространстве модели внешнего чертежа, не открывая в его в AutoCAD. Проблема заключается в том, что объекты Ole2Frame остаются на месте, причем остальные примитивы (отрезки, кривые, вхождения блоков и т.д.) перемещаются.
Заметил, что Ole2Frame удается переместить только в чертеже, открытом в AutoCAD.
Database destDb = new Database(false, true);
destDb.ReadDwgFile(pathDwg, FileOpenMode.OpenForReadAndAllShare, false, null); //читаем БД внешнего чертежа
destDb.CloseInput(true);
using (Transaction destTr = destDb.TransactionManager.StartTransaction())
{
ObjectId modelId = SymbolUtilityServices.GetBlockModelSpaceId(destDb); //ID пр-ва модели
BlockTableRecord destModel = (BlockTableRecord)destTr.GetObject(modelId, OpenMode.ForRead);
foreach (ObjectId destId in destModel) //цикл по примитивам пр-ва модели
{
Entity destEnt = (Entity)destTr.GetObject(destId, OpenMode.ForWrite); //открываем примитив на редактирование
//смещаем примитив на заданный вектор
destEnt.TransformBy(Matrix3d.Displacement("вектор_смещения"); //объект Ole2Frame не двигается :(
}
destTr.Commit()
}