/// <summary> /// Build the sculptor for the label. /// </summary> /// <param name="ad">An AxisDirection enum value.</param> /// <returns></returns> private SquareSculptor BuildLabelSculptor(AxisDirection ad) { SquareSculptor sculptor = new SquareSculptor(); Transform3DGroup tg = new Transform3DGroup(); double xyLength = 0.2; tg.Children.Add(new ScaleTransform3D(xyLength, xyLength, 1.0)); switch (ad) { case AxisDirection.X: // tg.Children.Add(new TranslateTransform3D(0.6, -0.27, 0.0)); tg.Children.Add(new TranslateTransform3D(0.6, -(xyLength + Radius / 2.0), 0.0)); break; case AxisDirection.Y: tg.Children.Add(new TranslateTransform3D(Radius / 2.0, 0.6, 0.0)); break; case AxisDirection.Z: tg.Children.Add( new RotateTransform3D( new AxisAngleRotation3D(new Vector3D(0, -1, 0), 90))); // 2ème rotation pour que les 3 lettres X, Y zt Z soient dans le même sens tg.Children.Add( new RotateTransform3D( new AxisAngleRotation3D(new Vector3D(0, 1, 0), 180))); tg.Children.Add(new TranslateTransform3D(0.0, -(xyLength + Radius / 2.0), 0.8)); break; } sculptor.Transform(tg); sculptor.BuildMesh(); return(sculptor); }
/// <summary> /// Build the sculptor for the label. /// </summary> /// <param name="ad">An AxisDirection enum value.</param> /// <returns></returns> private SquareSculptor BuildLabelSculptor(AxisDirection ad) { SquareSculptor sculptor = new SquareSculptor(); Transform3DGroup tg = new Transform3DGroup(); double xyLength = 0.2; tg.Children.Add(new ScaleTransform3D(xyLength, xyLength, 1.0)); switch (ad) { case AxisDirection.X: // The 0.001 Z translation prevents flickering when displaying another surface on the X-Y axis tg.Children.Add(new TranslateTransform3D(0.6, -(xyLength + Radius / 2.0), -0.001)); break; case AxisDirection.Y: // The 0.001 Z translation prevents flickering when displaying another surface on the X-Y axis tg.Children.Add(new TranslateTransform3D(Radius / 2.0, 0.6, -0.001)); break; case AxisDirection.Z: tg.Children.Add( new RotateTransform3D( new AxisAngleRotation3D(new Vector3D(0, -1, 0), 90))); // 2nd rotation so the 3 letters X, Y and Z are in the same direction tg.Children.Add( new RotateTransform3D( new AxisAngleRotation3D(new Vector3D(0, 1, 0), 180))); // The 0.001 X translation prevents flickering when displaying another surface on the Y-Z axis // tg.Children.Add(new TranslateTransform3D(-0.001, -(xyLength + Radius / 2.0), 0.8)); double zTranslation = (this.CoordinateSystemKind == Primitives.CoordinateSystemKind.RightHanded) ? 0.8 : -0.8; tg.Children.Add(new TranslateTransform3D(-0.001, -(xyLength + Radius / 2.0), zTranslation)); break; } sculptor.Transform(tg); sculptor.BuildMesh(); sculptor.MapTexture(); return(sculptor); }
/// <summary> /// Called by UIElement3D.InvalidateModel() to update the 3D model. /// </summary> protected override void OnUpdateModel() { _sculptor.BuildMesh(); Geometry = _sculptor.Mesh; base.OnUpdateModel(); }