C# 使用C在AutoCAD 2015中动态观察摄影机#
我正在编写一个静态类,其中包含简化使用AutoCAD摄影机的方法。除了轨道外,我所有的方法似乎都有效。这是我在我的类上下文中的轨道方法C# 使用C在AutoCAD 2015中动态观察摄影机#,c#,autocad-plugin,C#,Autocad Plugin,我正在编写一个静态类,其中包含简化使用AutoCAD摄影机的方法。除了轨道外,我所有的方法似乎都有效。这是我在我的类上下文中的轨道方法 public static class CameraMethods { #region _variables and Properties private static Document _activeDocument = Autodesk.AutoCAD.ApplicationServices.Application.D
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);
}
}
公共静态类摄像方法
{
#区域变量和属性
私有静态文档_activeDocument=Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
私有静态数据库_Database=_activeDocument.Database;
私有静态编辑器_Editor=_activeDocument.Editor;
私有静态ViewTableRecord_initialView=_editor.GetCurrentView();
私有静态ViewTableRecord\u activeViewTableRecord=(ViewTableRecord)\u initialView.Clone();
#端区
///
///围绕经过的轴旋转角度
///
公共静态空心轨道(矢量3D轴、角度)
{
//调整ViewTableRecord
//var oldDirection=\u activeViewTableRecord.ViewDirection;
_activeViewTableRecord.ViewDirection=_activeViewTableRecord.ViewDirection.TransformBy(矩阵3D.旋转(角度弧度、轴、点3D.原点));
//将其设置为当前视图
_SetCurrentView(_activeViewTableRecord);
}
}
问题是,每次我调用“动态观察”时,它都是基于我上次动态观察时的视图进行动态观察的。例如,我第一次调用orbit以绕x轴旋转45度时,它会执行我预期的操作。但是,如果我从autocad中更改摄影机,然后再次调用该方法,它会像我调用了两次一样进行动态观察;在X轴上90度。我需要有关如何修复此问题的建议。由于活动文档可能会在AutoCAD上更改(它是一个MDI应用程序),我不建议像您这样将这些对象存储为静态对象 相反,依赖于MdiActiveDocument的每个调用都应该在每个命令调用中获取所有这些变量。这可能就是你有这种行为的原因