Я пишу статический класс, который содержит методы, упрощающие работу с камерой AutoCAD. Все мои методы, похоже, работают, за исключением орбиты. Heres мой метод орбит в контексте моего классаОбход камеры в AutoCAD 2015 с C#
public static class CameraMethods
{
#region _variables and Properties
private static Document _activeDocument = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
private static Database _database = _activeDocument.Database;
private static Editor _editor = _activeDocument.Editor;
private static ViewTableRecord _initialView = _editor.GetCurrentView();
private static ViewTableRecord _activeViewTableRecord = (ViewTableRecord)_initialView.Clone();
#endregion
/// <summary>
/// Orbit the angle around a passed axis
/// </summary>
public static void Orbit(Vector3d axis, Angle angle)
{
// Adjust the ViewTableRecord
//var oldDirection = _activeViewTableRecord.ViewDirection;
_activeViewTableRecord.ViewDirection = _activeViewTableRecord.ViewDirection.TransformBy(Matrix3d.Rotation(angle.Radians, axis, Point3d.Origin));
// Set it as the current view
_editor.SetCurrentView(_activeViewTableRecord);
}
}
Проблема в том, что каждый раз, когда я называю орбита его орбит построена на вид по сравнению с предыдущим временем я вращался. Например, в первый раз, когда я вызываю орбиту на орбиту 45 градусов вокруг оси х, она делает то, что я ожидаю. Однако, если я сменил камеру внутри автокадра, то снова вызовите этот метод, он вращается, как если бы я дважды вызывал его; 90 градусов по оси X. Мне нужен совет, как это исправить.