Добрый день.
Подскажите как решить проблему.
Копирую блок из одного чертежа в другой.
public static void CopyBlockDefinition(string sourceDwgPath, string blockName, Database targetDb)
{
using (Database sourceDb = new Database(false, true))
{
sourceDb.ReadDwgFile(sourceDwgPath, FileOpenMode.OpenForReadAndAllShare, false, null);
using (Transaction sourceTrans = sourceDb.TransactionManager.StartTransaction())
{
BlockTable sourceBt = (BlockTable)sourceTrans.GetObject(sourceDb.BlockTableId, OpenMode.ForRead);
if (!sourceBt.Has(blockName)) return;
ObjectId sourceBlockId = sourceBt[blockName];
using (Transaction targetTrans = targetDb.TransactionManager.StartTransaction())
{
IdMapping idMap = new IdMapping();
sourceDb.WblockCloneObjects(
new ObjectIdCollection() { sourceBlockId },
targetDb.BlockTableId,
idMap,
DuplicateRecordCloning.Replace,
false);
targetTrans.Commit();
}
sourceTrans.Commit();
}
}
}
Всё работает, копия создаётся.
Но есть проблема.
В оригинальном блоке несколько слоёв и назначен порядок прорисовки объектов, а в копии всё свалено на слой 0 и нарушен порядок прорисовки.
Со слоями не принципиально, а вот порядок прорисовки важен. Получается атрибут закрыт штриховкой и его не видно.
При копировании ctrl+c ctrl+v естественно всё нормально.
Как скопировать блок сохранив порядок прорисовки?