Overview
One common task performed by Rhino users is the importing of point coordinates from some kind of delimited file. This task is easy if you use the Points File file type when opening or importing files. But what if the file you are importing does not conform to the traditional delimited file notation. Or, what if the file contains other information?
The key to understanding how to import data from a text is understanding the File System Object included as part of the Microsoft Scripting Runtime. The File System Object simplifies the task of dealing with any type of file input or output and for dealing with the system file structure itself.
To access the File System Object model you must first create an instance of the FileSystemObject
object, the only externally creatable object in the model. For more information on the FileSystemObject
, see Microsoft’s VBScript documentation on MSDN.
Example
The following code example demonstrates how to import point coordinates from a text file. This can be easily modified to accommodate other information…
Option Explicit
'---------------------------------------------------------------
' Subroutine: ImportPoints
' Purpose: Import points from a text file.
'---------------------------------------------------------------
Sub ImportPoints
' Prompt the user for a file to import
Dim strFilter, strFileName
strFilter = "Text File (*.txt)|*.txt|All Files (*.*)|*.*|"
strFileName = Rhino.OpenFileName("Open Point File", strFilter)
If IsNull(strFileName) Then Exit Sub
' The the file system object
Dim objFSO, objFile
Set objFSO = CreateObject("Scripting.FileSystemObject")
' Try opening the text file
On Error Resume Next
Set objFile = objFSO.OpenTextFile(strFileName, 1)
If Err Then
MsgBox Err.Description
Exit Sub
End If
Rhino.EnableRedraw False
' Read each line from the file
Dim strLine, arrPoint
Do While objFile.AtEndOfStream <> True
strLine = objFile.ReadLine
If Not IsNull(strLine) Then
' Remove any double-quote characters
strLine = Replace(strLine, Chr(34), , 1)
' Convert the string to a 3D point
arrPoint = Rhino.Str2Pt(strLine)
' Add the point to Rhino
If IsArray(arrPoint) Then
' AddPoint will add a point object to Rhino
Rhino.AddPoint arrPoint
End If
End If
Loop
Rhino.EnableRedraw True
objFile.Close
Set objFile = Nothing
Set objFSO = Nothing
End Sub