public ModelVisual3D GetModelVisual3D(ModelVisual3DFilter filterSettings)
 {
     ModelVisual3D model;
     if (filterSettings != null && filterSettings.Texts3D)
     {
         model = CreateTextLabel3D(
           Description, new SolidColorBrush(Colors.Black),
           true, Size, new Point3D(X, Y, Z), false,
          TextVectorOver, TextVectorUp);
     }
     else model = new ModelVisual3D();
     //model.Children.Add(((IModelVisual3D)element).GetModelVisual3D(FilterSettings));
     return model;
 }
 UIElement IModelVisual3D.GetUIElement(ModelVisual3DFilter filterSettings, Viewport3D destinationViewport3D)
 {
     return new UIElement();
 }
 ModelVisual3D IModelVisual3D.GetModelVisual3D(ModelVisual3DFilter filterSettings)
 {
     if (filterSettings != null && filterSettings.Lines)
     {
         ScreenSpaceLines3D line = new ScreenSpaceLines3D();
         line.Thickness = 1;
         line.Color = Colors.Black;
         line.Points.Add(Start.Point3D);
         line.Points.Add(End.Point3D);
         return line;
     }
     else return new ModelVisual3D();
 }
 public override UIElement GetUIElement(ModelVisual3DFilter filterSettings, Viewport3D destinationViewport3D)
 {
     return MyModelVisual3D.GetUIElement(filterSettings, destinationViewport3D);
 }
 public override ModelVisual3D GetModelVisual3D(ModelVisual3DFilter filterSettings)
 {
     return MyModelVisual3D.GetModelVisual3D(filterSettings);
 }
 public virtual ModelVisual3D GetModelVisual3D(ModelVisual3DFilter filterSettings)
 {
     return MyModelVisual3D.GetModelVisual3D(filterSettings);
 }
 public UIElement GetUIElement(ModelVisual3DFilter filterSettings, Viewport3D destinationViewport3D)
 {
     if (filterSettings != null && filterSettings.Texts2D)
     {
         TextBlock tb = new TextBlock();
         tb.FontSize += 1;
         tb.FontWeight = FontWeights.Bold;
         tb.Foreground = new SolidColorBrush(Colors.DarkGreen);
         tb.Text = Description;
         Point p2d = Panel3DMath.Get2DPoint(this.Point3D, destinationViewport3D);
         Canvas.SetTop(tb, p2d.Y + 0);
         Canvas.SetLeft(tb, p2d.X + 10);
         return tb;
     }
     else
         return new UIElement();
 }