I have been using Rhino(script) for a while and I am now starting to use Rhino as a user interface for drawing civil engineering structures. In this example, I am trying to draw a serie of anchorage structures from a csv file containing all the geometry parameters needed.
My problem is very simple : I am importing data from a csv file (using rhino.readTextFile and then Split functions, that work just fine) but when I am trying to convert Strings to Doubles using CDbl function, but it does not work at all.PlatinesForRhino.txt (393 Bytes) Script_Txt_To_Rhino.rvb (5.2 KB)
Any Suggestion ? Thanks for your help.
Here attached is my VBscript code and the .txt file to be chosen when prompted at execution of the code.
Here are a couple of useful utility functions for converting string to numbers:
' Trys to convert a string to a long integer
Function TryGetLong(ByVal strInput, ByRef intOutput)
Dim intInput
TryGetLong = False
intOutput = 0
If IsNumeric(strInput) Then
intInput = CLng(strInput)
If CStr(intInput) = CStr(strInput) Then
intOutput = intInput
TryGetLong = True
End If
End If
End Function
' Trys to convert a string to a double-precision floating-point number
Function TryGetDouble(ByVal strInput, ByRef dblOutput)
Dim dblInput
TryGetDouble = False
dblOutput = 0.0
If IsNumeric(strInput) Then
dblInput = CDbl(strInput)
If CStr(dblInput) = CStr(strInput) Then
dblOutput = dblInput
TryGetDouble = True
End If
End If
End Function
Here is an example of using the above with the test file you posted:
Sub TestTanguy
Dim strFile, arrText, strText
Dim arrTokens, strToken
Dim varToken, intToken, dblToken
strFile = Rhino.OpenFileName("Open", "Text Files (*.txt)|*.txt||")
If IsNull(strFile) Then Exit Sub
arrText = Rhino.ReadTextFile(strFile)
If IsNull(arrText) Then Exit Sub
Rhino.ClearCommandHistory
For Each strText In arrText
arrTokens = Split(strText, ";")
If IsArray(arrTokens) Then
For Each strToken In arrTokens
strToken = Trim(strToken)
If TryGetLong(strToken, intToken) Then
varToken = intToken
ElseIf TryGetDouble(strToken, dblToken) Then
varToken = dblToken
Else
varToken = strToken
End If
Rhino.Print TypeName(varToken) & " = " & CStr(varToken)
Next
End If
Next
End Sub