File3dm.ReadPreviewImage Method

File3dmReadPreviewImage Method

Attempts to read the preview image out of a 3dm file.

Namespace:  Rhino.FileIO
Assembly:  RhinoCommon (in RhinoCommon.dll)
Syntax
public static Bitmap ReadPreviewImage(
	string path
)
Public Shared Function ReadPreviewImage ( 
	path As String
) As Bitmap

Parameters

path
Type: SystemString
The location of the file.

Return Value

Type: Bitmap
A bitmap, or null on failure.
Exceptions
ExceptionCondition
FileNotFoundExceptionIf the provided path is null, does not exist or cannot be accessed.
Examples
using Rhino;
using Rhino.Commands;
using Rhino.Input;
using Rhino.Input.Custom;
using System;
using System.Windows;
using System.Windows.Controls;

namespace examples_cs
{
  public class ExtractThumbnailCommand : Command
  {
    public override string EnglishName { get { return "csExtractThumbnail"; } }

    protected override Result RunCommand(RhinoDoc doc, RunMode mode)
    {
      var gf = RhinoGet.GetFileName(GetFileNameMode.OpenImage, "*.3dm", "select file", null);
      if (gf == string.Empty || !System.IO.File.Exists(gf))
        return Result.Cancel;

      var bitmap = Rhino.FileIO.File3dm.ReadPreviewImage(gf);
      // convert System.Drawing.Bitmap to BitmapSource
      var image_source = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(bitmap.GetHbitmap(), IntPtr.Zero,
        Int32Rect.Empty, System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());

      // show in WPF window
      var window = new Window();
      var image = new Image {Source = image_source};
      window.Content = image;
      window.Show();

      return Result.Success;
    }
  }
}
Imports Rhino
Imports Rhino.Commands
Imports Rhino.Input
Imports Rhino.Input.Custom
Imports System.Windows
Imports System.Windows.Controls

Namespace examples_vb
  Public Class ExtractThumbnailCommand
    Inherits Command
    Public Overrides ReadOnly Property EnglishName() As String
      Get
        Return "vbExtractThumbnail"
      End Get
    End Property

    Protected Overrides Function RunCommand(doc As RhinoDoc, mode As RunMode) As Result
      Dim gf = RhinoGet.GetFileName(GetFileNameMode.OpenImage, "*.3dm", "select file", Nothing)
      If gf = String.Empty OrElse Not System.IO.File.Exists(gf) Then
        Return Result.Cancel
      End If

      Dim bitmap = Rhino.FileIO.File3dm.ReadPreviewImage(gf)
      ' convert System.Drawing.Bitmap to BitmapSource
      Dim imageSource = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(bitmap.GetHbitmap(), IntPtr.Zero, Int32Rect.Empty, System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions())

      ' show in WPF window
      Dim window = New Window()
      Dim image = New Image()
      image.Source = imageSource

      window.Content = image
      window.Show()

      Return Result.Success
    End Function
  End Class
End Namespace
Python
import Rhino
import rhinoscriptsyntax as rs
from scriptcontext import doc

import clr
clr.AddReference("System.Windows.Forms")
import System.Windows.Forms

def RunCommand():

  fn = rs.OpenFileName(title="select file", filter="Rhino files|*.3dm||")
  if fn == None:
    return

  bitmap = doc.ExtractPreviewImage(fn)

  f = System.Windows.Forms.Form()
  f.Height = bitmap.Height
  f.Width = bitmap.Width
  pb = System.Windows.Forms.PictureBox()
  pb.Image = bitmap
  pb.Height = bitmap.Height  #SizeMode = System.Windows.Forms.PictueBoxSizeMode.AutoSize
  pb.Width = bitmap.Width
  f.Controls.Add(pb);
  f.Show();

if __name__ == "__main__":
  RunCommand()
Version Information

Rhino for Mac

Supported in: 5.4

Rhino for Windows

Supported in: 6.14
See Also