private PerspectiveCamera GetPerspectiveCamera(View3D view, string viewpoint_Guid) { var camera = new PerspectiveCamera(); try { var viewCenter = view.Origin; double zoomValue = 45; var orientation = RevitUtils.ConvertBasePoint(ActiveDoc, viewCenter, view.ViewDirection, view.UpDirection, false); var c = orientation.EyePosition; var vi = orientation.ForwardDirection; var up = orientation.UpDirection; camera.Guid = Guid.NewGuid().ToString(); camera.ViewPointGuid = viewpoint_Guid; var viewPoint = new Schemas.Point { Guid = Guid.NewGuid().ToString(), X = c.X.ToMeters(), Y = c.Y.ToMeters(), Z = c.Z.ToMeters() }; camera.CameraViewPoint = viewPoint; var upVector = new Direction { Guid = Guid.NewGuid().ToString(), X = up.X.ToMeters(), Y = up.Y.ToMeters(), Z = up.Z.ToMeters() }; camera.CameraUpVector = upVector; var direction = new Direction { Guid = Guid.NewGuid().ToString(), X = -(vi.X.ToMeters()), Y = -(vi.Y.ToMeters()), Z = -(vi.Z.ToMeters()) }; camera.CameraDirection = direction; camera.FieldOfView = zoomValue; } catch (Exception) { // ignored } return(camera); }
/// <summary> /// /// </summary> /// <param name="view"></param> /// <param name="viewpoint_Guid"></param> /// <returns></returns> private OrthogonalCamera GetOrthogonalCamera(View3D view, string viewpoint_Guid) { var camera = new OrthogonalCamera(); try { var uiView = FindDefaultUIView(view); if (null == uiView) { return(camera); } var topLeft = uiView.GetZoomCorners()[0]; var bottomRight = uiView.GetZoomCorners()[1]; var x = (topLeft.X + bottomRight.X) / 2; var y = (topLeft.Y + bottomRight.Y) / 2; var z = (topLeft.Z + bottomRight.Z) / 2; var viewCenter = new XYZ(x, y, z); var diagVector = topLeft.Subtract(bottomRight); var dist = topLeft.DistanceTo(bottomRight) / 2; var zoomValue = dist * Math.Sin(diagVector.AngleTo(view.RightDirection)).ToMeters(); var orientation = RevitUtils.ConvertBasePoint(ActiveDoc, viewCenter, view.ViewDirection, view.UpDirection, false); var c = orientation.EyePosition; var vi = orientation.ForwardDirection; var up = orientation.UpDirection; camera.Guid = Guid.NewGuid().ToString(); camera.ViewPointGuid = viewpoint_Guid; var viewPoint = new Schemas.Point { Guid = Guid.NewGuid().ToString(), X = c.X.ToMeters(), Y = c.Y.ToMeters(), Z = c.Z.ToMeters() }; camera.CameraViewPoint = viewPoint; var upVector = new Direction { Guid = Guid.NewGuid().ToString(), X = up.X.ToMeters(), Y = up.Y.ToMeters(), Z = up.Z.ToMeters() }; camera.CameraUpVector = upVector; var direction = new Direction { Guid = Guid.NewGuid().ToString(), X = -(vi.X.ToMeters()), Y = -(vi.Y.ToMeters()), Z = -(vi.Z.ToMeters()) }; camera.CameraDirection = direction; camera.ViewToWorldScale = zoomValue; } catch (Exception) { // ignored } return(camera); }
public static XYZ GetRevitXYZ(Schemas.Point d) { return(new XYZ(d.X.ToFeet(), d.Y.ToFeet(), d.Z.ToFeet())); }