Добрый день!
До сегодняшнего дня я свято верил, что внутри блока (не блока листа) не может быть другого блока (или ссылки на блок).
Сегодня при переборе вхождений блока обнаружил это:
...
using (StreamWriter file = File.CreateText(fileName))
{
foreach (ObjectId objId in blk)
file.WriteLine(objId.ObjectClass.Name);
file.Close();
}
...
В итоге получил такое:
...
AcDbLine
AcDbLine
AcDbBlockReference
AcDbBlockReference
AcDbMText
AcDbLine
...
После этого полез в чертеж, в редактор блока и не обнаружил внутри блока этих двух ссылок на другие блоки (или может плохо искал - чертеж большой и сложный).
Отсюда два вопроса:
1. Это вообще нормальная ситуация?
2. Ок, если это допустимо, то как мне транслировать координаты объектов этих блоков внутри блока на чертеж? Раньше я получал объект из блока и вызывал у него GetTransformedCopy(blockReference.BlockTransform). Для для объектов BlockReference это вызывает порождение "пустой" копии BlockReference с нулевым ObjectId и далее при попытке получить BlockDefinition от этой копии BlockReference вылетает исключение NulBlockId.
Спасибо!
UPDATE:
GetTransformedCopy возвращает копию объекта с координатами относительно листа или с координатами относительно того блока, в котором находится BlockReference?
Ну т.е. у меня такая ситуация:
Лист (блок листа)
Ссылка на блок 1ур (получаю блок)
Ссылка на блок 2ур (получаю блок)
Объект 1
Объект 2
Объект n
Я беру объекты (1..n) и вызываю GetTransformedCopy(ссылка на блок 2ур.BlockTransform)... Я получаю копию объекта с координатами относительно листа (блока листа)? Или с координатами блока 1ур?