Exemplo n.º 1
0
 protected static Vector Vector3DInViewport3D(Base3DElement target, Vector3D vector)
 {
   Viewport3D viewport = (Viewport3D) target.Viewport.ViewObject.PlatformSpecificObject;
   Matrix3D viewport3DtoElement = target.GetComputedTransformFromViewport3DToElement();
   Point point = AdornedToolBehavior3D.Point3DInViewport3D(viewport, viewport3DtoElement, new Point3D(0.0, 0.0, 0.0));
   Vector vector1 = AdornedToolBehavior3D.Point3DInViewport3D(viewport, viewport3DtoElement, (Point3D) vector) - point;
   if (vector1.Length < 0.0 / 1.0)
     return new Vector(0.0, 1.0);
   return vector1;
 }
Exemplo n.º 2
0
        public static double UnitsPerPixel(Viewport3D viewport, Base3DElement targetModel)
        {
            Matrix3D      matrix3D1     = Matrix3D.Identity;
            Base3DElement base3Delement = targetModel.Parent as Base3DElement;

            if (base3Delement != null)
            {
                matrix3D1 = base3Delement.GetComputedTransformFromViewport3DToElement();
            }
            Point3D  point3D     = matrix3D1.Transform(new Point3D(0.0, 0.0, 0.0));
            double   num         = (matrix3D1.Transform(new Point3D(0.1, 0.1, 0.1)) - point3D).Length / 0.1;
            Matrix3D matrix3D2   = targetModel.Transform.Value * matrix3D1;
            Point3D  targetPoint = new Point3D(matrix3D2.OffsetX, matrix3D2.OffsetY, matrix3D2.OffsetZ);

            return(Helper3D.UnitsPerPixel(viewport, targetPoint) / num);
        }
Exemplo n.º 3
0
        public static void DrawCube(DrawingContext drawingContext, Matrix matrix, Base3DElement element, Pen pen)
        {
            Viewport3DElement viewport1 = element.Viewport;

            if (viewport1 == null)
            {
                return;
            }
            Viewport3D viewport2                      = viewport1.ViewObject.PlatformSpecificObject as Viewport3D;
            Rect3D     localSpaceBounds               = element.LocalSpaceBounds;
            Matrix3D   viewport3DtoElement            = element.GetComputedTransformFromViewport3DToElement();
            Matrix3D   matrix3D                       = Helper3D.CameraRotationTranslationMatrix(viewport2.Camera);
            Matrix3D   cameraToObject                 = viewport3DtoElement * matrix3D;
            KeyValuePair <Point, bool> keyValuePair1  = HighlightAdorner3D.Calculate2DPoint(viewport2, cameraToObject, viewport3DtoElement, matrix, localSpaceBounds.Location);
            KeyValuePair <Point, bool> keyValuePair2  = HighlightAdorner3D.Calculate2DPoint(viewport2, cameraToObject, viewport3DtoElement, matrix, localSpaceBounds.Location + new Vector3D(localSpaceBounds.SizeX, 0.0, 0.0));
            KeyValuePair <Point, bool> keyValuePair3  = HighlightAdorner3D.Calculate2DPoint(viewport2, cameraToObject, viewport3DtoElement, matrix, localSpaceBounds.Location + new Vector3D(localSpaceBounds.SizeX, localSpaceBounds.SizeY, 0.0));
            KeyValuePair <Point, bool> keyValuePair4  = HighlightAdorner3D.Calculate2DPoint(viewport2, cameraToObject, viewport3DtoElement, matrix, localSpaceBounds.Location + new Vector3D(0.0, localSpaceBounds.SizeY, 0.0));
            KeyValuePair <Point, bool> keyValuePair5  = HighlightAdorner3D.Calculate2DPoint(viewport2, cameraToObject, viewport3DtoElement, matrix, localSpaceBounds.Location + new Vector3D(0.0, 0.0, localSpaceBounds.SizeZ));
            KeyValuePair <Point, bool> keyValuePair6  = HighlightAdorner3D.Calculate2DPoint(viewport2, cameraToObject, viewport3DtoElement, matrix, localSpaceBounds.Location + new Vector3D(localSpaceBounds.SizeX, 0.0, localSpaceBounds.SizeZ));
            KeyValuePair <Point, bool> keyValuePair7  = HighlightAdorner3D.Calculate2DPoint(viewport2, cameraToObject, viewport3DtoElement, matrix, localSpaceBounds.Location + new Vector3D(localSpaceBounds.SizeX, localSpaceBounds.SizeY, localSpaceBounds.SizeZ));
            KeyValuePair <Point, bool> keyValuePair8  = HighlightAdorner3D.Calculate2DPoint(viewport2, cameraToObject, viewport3DtoElement, matrix, localSpaceBounds.Location + new Vector3D(0.0, localSpaceBounds.SizeY, localSpaceBounds.SizeZ));
            StreamGeometry             streamGeometry = new StreamGeometry();
            StreamGeometryContext      context        = streamGeometry.Open();

            HighlightAdorner3D.DrawLine(context, keyValuePair1, keyValuePair2);
            HighlightAdorner3D.DrawLine(context, keyValuePair2, keyValuePair3);
            HighlightAdorner3D.DrawLine(context, keyValuePair3, keyValuePair4);
            HighlightAdorner3D.DrawLine(context, keyValuePair4, keyValuePair1);
            HighlightAdorner3D.DrawLine(context, keyValuePair5, keyValuePair6);
            HighlightAdorner3D.DrawLine(context, keyValuePair6, keyValuePair7);
            HighlightAdorner3D.DrawLine(context, keyValuePair7, keyValuePair8);
            HighlightAdorner3D.DrawLine(context, keyValuePair8, keyValuePair5);
            HighlightAdorner3D.DrawLine(context, keyValuePair6, keyValuePair2);
            HighlightAdorner3D.DrawLine(context, keyValuePair7, keyValuePair3);
            HighlightAdorner3D.DrawLine(context, keyValuePair5, keyValuePair1);
            HighlightAdorner3D.DrawLine(context, keyValuePair8, keyValuePair4);
            context.Close();
            streamGeometry.Freeze();
            drawingContext.DrawGeometry((Brush)null, pen, (System.Windows.Media.Geometry)streamGeometry);
        }