Столкнулся с такой проблемой: есть набор сущностей(линий, окружностей, вхождений блоков, и т.д.), и нужно их переместить(!) в нужную точку.
Однако проблема в том, что метод Matrix3D.Displacement не перемещает, а сдвигает объект относительно текущей его позиции.
Я воспользовался кодом:
var basePoint = Point3d.Origin;
foreach (var objId in idList)
{
var pair = entMap[objId];
var ent = (Entity)trans.GetObject(pair.Value, OpenMode.ForWrite);
var m2Array = ent.CompoundObjectTransform.ToArray();
ent.TransformBy(Matrix3d.Displacement(new Vector3d(m2Array[3] * -1, m2Array[7] * -1, 0))); // В начало координат
ent.TransformBy(Matrix3d.Displacement(basePoint.GetVectorTo(insPoint))); // В точку вставки
}
Однако Entity.CompoundObjectTransform даёт текущую матрицу только в случае если объект является вхождением блока.
Вопрос: как можно передвинуть объект в указанную точку? Или как узнать текущую позицию объекта не вдаваясь в подробности какого типа объект?