Copying to Excel
Windows only

Overview

You can copy information from Rhino and then paste it into Excel. The real question is “what do you want to copy and paste?”

Copying information from Rhino and pasting it into Excel is fairly easy using RhinoScript. All you have to do is use the ClipboardText method to copy a text string into the Windows Clipboard. Then from Excel, just select the cell and paste.

Details

If you want to copy the string “Hello from Rhino!” into Excel, your script could be as simple as this:

Call Rhino.ClipboardText("Hello from Rhino!")

Easy enough. But, what if you want to copy some delimited data so each “token” appears in a different column in Excel when pasted. Then, simply separate each token with a tab, or vbTab, character. For example:

Call Rhino.ClipboardText("A" & vbTab & "B" & vbTab & "C" & vbTab & "1" & vbTab & "2" & vbTab & "3")

Likewise, if you want to copy some delimited data so each “token” appears in a different row in Excel when pasted, then separate each token with a line-feed, or vbLf, character. For example:

Call Rhino.ClipboardText("A" & vbLf & "B" & vbLf & "C" & vbLf & "1" & vbLf & "2" & vbLf & "3")

You can get more elaborate by creating a formatted string that contains both tab and line-feed characters. In this example, we will copy something useful - curve lengths in this example…

Sub CopyClipCrvLength()
  Dim curves, crv, length, str
  curves = Rhino.GetObjects("Select curves to copy length", 4, True, True)
  If IsArray(curves) Then
    str = str & "Id" & vbTab & "Length" & vbLf
    For Each crv In curves
      length = Rhino.CurveLength(crv)
      str = str & crv & vbTab & CStr(length) & vbLf
    Next
    Call Rhino.ClipboardText(str)
  End If    
End Sub

Now that you have the basic idea, you should be able to write your own scripts that copy any type of data you want from Rhino into Excel.

  • Reading Excel Files
  • Automating Excel From RhinoScript (Sample)
  • Automating Curve Properties to Excel From RhinoScript (Sample)
  • Exporting Point Coordinates to Excel (Sample)