Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        /// <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);
        }
Esempio n. 3
0
 public static XYZ GetRevitXYZ(Schemas.Point d)
 {
     return(new XYZ(d.X.ToFeet(), d.Y.ToFeet(), d.Z.ToFeet()));
 }