Добрый день!
Программирую под AutoCAD .NET. Возникла потребность узнать координаты объектов блока относительно чертежа.
Допустим на чертеже есть BlockReference, который, соответственно, имеет координаты на чертеже.
В BlockDefinition, на который ссылается данный BlockReference есть объекты, у которых есть координаты относительно этого блока.
Мне нужно получить координаты (Bounds) этих объектов относительно чертежа учитывая масштаб, смещение, поворот данного BlockReference.
На VBA это делал примерно так:
' Получаем точку вставки, факт. масштабирования, поворот, и BlockDefinition
...
' Для каждого искомого объекта в BlockDefinition
' Масштабируем
min(0) = min(0) * XScaleFactor
min(1) = min(1) * YScaleFactor
max(0) = max(0) * XScaleFactor
max(1) = max(1) * YScaleFactor
' Поворачиваем
Dim x, y: x = min(0): y = min(1)
min(0) = x * Cos(Rotation) - y * Sin(Rotation)
min(1) = y * Cos(Rotation) + x * Sin(Rotation)
x = max(0): y = max(1)
max(0) = x * Cos(Rotation) - y * Sin(Rotation)
max(1) = y * Cos(Rotation) + x * Sin(Rotation)
' Смещаем
min(0) = min(0) + insPoint(0)
min(1) = min(1) + insPoint(1)
max(0) = max(0) + insPoint(0)
max(1) = max(1) + insPoint(1)
...
Полагаю, что в .NET все это можно сделать как-то проще и аккуратнее.
Кроме того, насколько я понимаю, у блока может быть совсем другая система измерения...
Помогите, пожалуйста, разобраться. Спасибо!