Developer: RhinoScript
Summary: Demonstrates some useful (or not so useful) numeric conversions in RhinoScript.
Function CHex(intNumber) Dim strChars, intSign strChars = "0123456789ABCDEF" intSign = Sgn(intNumber) intNumber = Fix(Abs(CDbl(intNumber))) If (intNumber = 0) Then CHex = "0" Exit Function End If While (intNumber > 0) CHex = Mid(strChars, 1 + (intNumber - 16 * Fix(intNumber / 16)), 1) & CHex intNumber = Fix(intNumber / 16) Wend If (intSign = -1) Then CHex = "-" & CHex End Function
Example:
Rhino.Print CHex(2008) '7D8
Function CBinary(intNumber, intBits) Dim strBinary, intMask, i strBinary = intMask = 1 For i = 1 To intBits If (intNumber And intMask) Then strBinary = "1" & strBinary Else strBinary = "0" & strBinary End If intMask = intMask * 2 Next CBinary = strBinary End Function
Example:
Rhino.Print CBinary(2008, 16) '0000011111011000
Function CRoman(intNumber) Dim v, w, x, y, arrOnes, arrTens, arrHund, arrThou arrOnes = Array(,"I","II","III","IV","V","VI","VII","VIII","IX") arrTens = Array(,"X","XX","XXX","XL","L","LX","LXX","LXXX","XC") arrHund = Array(,"C","CC","CCC","CD","D","DC","DCC","DCCC","CM") arrThou = Array(,"M","MM","MMM","MMMM","MMMMM") v = ((intNumber - (intNumber Mod 1000)) / 1000) intNumber = (intNumber Mod 1000) w = ((intNumber - (intNumber Mod 100)) / 100) intNumber = (intNumber Mod 100) x = ((intNumber - (intNumber Mod 10)) / 10) y = (intNumber Mod 10) CRoman = arrThou(v) & arrHund(w) & arrTens(x) & arrOnes(y) End Function
Example:
Rhino.Print CRoman(2008) 'MMVIII
Function CUnRoman(strRoman) Dim intvalue, strChar, i intValue = 0 If InStr(strRoman, "CM") Then intValue = intValue + 900 strRoman = Replace(strRoman, "CM", ) End If If InStr(strRoman, "CD") Then intValue = intValue + 400 strRoman = Replace(strRoman, "CD", ) End If If InStr(strRoman, "XC") Then intValue = intValue + 90 strRoman = Replace(strRoman, "XC", ) End If If InStr(strRoman, "XL") Then intValue = intValue + 40 strRoman = Replace(strRoman, "XL", ) End If If InStr(strRoman, "IX") Then intValue = intValue + 9 strRoman = Replace(strRoman, "IX", ) End If If InStr(strRoman, "IV") Then intValue = intValue + 4 strRoman = Replace(strRoman, "IV", ) End If For i = 1 To Len(strRoman) strChar = Mid(strRoman, i, 1) Select Case strChar Case "I" intValue = intValue + 1 Case "V" intValue = intValue + 5 Case "X" intValue = intValue + 10 Case "L" intValue = intValue + 50 Case "C" intValue = intValue + 100 Case "D" intValue = intValue + 500 Case "M" intValue = intValue + 1000 End Select Next CUnRoman = intValue End Function
Example:
Rhino.Print CUnRoman(MMVIII) '2008