public override void Draw(DrawingContext drawingContext, Matrix matrix) { Base3DElement element = this.Element as Base3DElement; if (element == null) { return; } HighlightAdorner3D.DrawCube(drawingContext, matrix, element, SceneInsertionPointAdorner3D.DefaultPen); }
public override void Draw(DrawingContext drawingContext, Matrix matrix) { object platformSpecificObject = this.AdornerSet.Element.ViewTargetElement.PlatformSpecificObject; foreach (SceneElement sceneElement in this.Element.ViewModel.ElementSelectionSet.Selection) { Base3DElement element = sceneElement as Base3DElement; if (element != null && element.IsViewObjectValid) { Viewport3DElement viewport = element.Viewport; if (viewport != null && viewport.ViewObject.PlatformSpecificObject == platformSpecificObject) { HighlightAdorner3D.DrawCube(drawingContext, matrix, element, HighlightAdorner3D.DefaultPen); } } } }
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); }