Сохрани объект в DXF и поищи там матрицу.
Еще одно подтверждение моих слов
Ну скорее всего правда ваша. Провел несколько экспериментов над подопытными.
1 В dxf в свойствах действительно только Normal сохраняется, Ecs нет.
если только ECS не храниться в отдельном месте в зашифрованном виде, т.к. поиском текста не нашел. Но для того чтоб выяснить нужно вникать в структуру DXF, чего быстро я не смогу сделать.(но дальнейшие тесты подтверждают, что ECS все-таки нет)
2. Проверил "на кроликах"
Document document = Cad.DocumentManager.MdiActiveDocument;
DocumentLock documentLock = document.LockDocument();
Database db = HostApplicationServices.WorkingDatabase;
Transaction tr = db.TransactionManager.StartTransaction();
BlockTable blockTable = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead, false);
BlockTableRecord modelSpace = (BlockTableRecord)tr.GetObject(blockTable[BlockTableRecord.ModelSpace], OpenMode.ForRead, false);
ObjectId blockBeginId = modelSpace.BlockBeginId;
BlockBegin blockBegin = tr.GetObject(blockBeginId, OpenMode.ForWrite, false) as BlockBegin;
Matrix3d rotation = Matrix3d.Rotation(35, new Vector3d(0, 1, 1), new Point3d(-1000, -1000, -1000));
blockBegin.TransformBy(rotation);
tr.Commit();
tr.Dispose();
documentLock.Dispose();
BlockBegin не поддался. eNotApplicable и это к лучшему. ))))
Вывод не на все Entity применим TransformBy и это уже частично подтверждает вашу правоту.
3. Попробовал трансформировать разные примитивы, тем же методом что и для BlockBegin
MText, Text, Line, Polyline, Circle, Spline, Hatch
все плоские объекты IsPlanar(если я правильно понял это и есть флаг что объекты плоские) успешно повернулись.
Text и Spline единственные, кто оставил единичную матрицу.
При этом Text повернулся. Text.Ecs выдает единичную матрицу((1,0,0,0),(0,1,0,0),(0,0,1,0),(0,0,0,1)), а Normal (-0.302770869187287,0.951846102545754,0.0481538974542467).
Подозреваю, что это баг Text.Ecs(acad 2014SP1)!!! И подтверждение ваших слов, что Normal первична, а Ecs высчитывается из нее.
Вобщем выводы такие:
1. Normal первична. Ecs высчитывается из нее.
2. Скорее всего в Entity определено, что всегда выдается единичная матрица, а наследуемый примитив должен переопределить выдаваемую матрицу на основе своих свойств. Что похоже не реализовано в Text.
3. Spline не содержит Normal соответственно всегда выдаст единичную матрицу
4. При применении TransformBy пересчитываются внутренние координаты, и назначается нормаль(если она задана). На основе этих данных и выдается Ecs, что и говорил Александр.
5. Скорее всего из всех матриц, что были применены к объекту с помощью TransformBy , Еcs вернет только поворот, а перемещения и масштаб пересчитают координаты объекта, и не будут возвращены Ecs.(по крайней мере для плоских объектов)