Копирорование блоков

Автор Тема: Копирорование блоков  (Прочитано 7 раз)

0 Пользователей и 3 Гостей просматривают эту тему.

Оффлайн Александр_МАвтор темы

  • ADN OPEN
  • Сообщений: 4
  • Карма: 0
Копирорование блоков
« : 06-07-2025, 15:19:01 »
Добрый день.
Подскажите как решить проблему.

Копирую блок из одного чертежа в другой.
Код - C# [Выбрать]
  1.   public static void CopyBlockDefinition(string sourceDwgPath, string blockName, Database targetDb)
  2.         {
  3.             using (Database sourceDb = new Database(false, true))
  4.             {
  5.                 sourceDb.ReadDwgFile(sourceDwgPath, FileOpenMode.OpenForReadAndAllShare, false, null);
  6.  
  7.                 using (Transaction sourceTrans = sourceDb.TransactionManager.StartTransaction())
  8.                 {
  9.                     BlockTable sourceBt = (BlockTable)sourceTrans.GetObject(sourceDb.BlockTableId, OpenMode.ForRead);
  10.  
  11.                     if (!sourceBt.Has(blockName)) return;
  12.  
  13.                     ObjectId sourceBlockId = sourceBt[blockName];
  14.  
  15.                     using (Transaction targetTrans = targetDb.TransactionManager.StartTransaction())
  16.                     {
  17.                         IdMapping idMap = new IdMapping();
  18.                         sourceDb.WblockCloneObjects(
  19.                             new ObjectIdCollection() { sourceBlockId },
  20.                             targetDb.BlockTableId,
  21.                             idMap,
  22.                             DuplicateRecordCloning.Replace,
  23.                             false);
  24.  
  25.                         targetTrans.Commit();
  26.                     }
  27.  
  28.                     sourceTrans.Commit();
  29.                 }
  30.             }
  31.         }
  32.  

Всё работает, копия создаётся.
Но есть проблема.
В оригинальном блоке несколько слоёв и назначен порядок прорисовки объектов, а в копии всё свалено на слой 0 и нарушен порядок прорисовки.
Со слоями не принципиально, а вот порядок прорисовки важен. Получается атрибут закрыт штриховкой и его не видно.

При копировании ctrl+c ctrl+v естественно всё нормально.

Как скопировать блок сохранив порядок прорисовки?