Code:
'Function SetLispVar
' Description:
' Sets a variable in LISP
' Arguments:
' Symbol:
' - Variable name
' Value:
' - Variable value
' Return:
' - None
' Exceptions:
' - None
' Remarks:
' - To get the value in LISP, use 'vlax-variant-value'
'
Public Sub SetLispVar(Symbol As String, Value)Dim vlApp As Object
Dim vlFun As Object
Dim vlSet As Object
Dim vlSym
Set vlApp = CreateObject("Vl.Application.1")
Set vlFun = vlApp.ActiveDocument.Functions
Set vlSym = vlFun.Item("read").funcall(Symbol)
Set vlSet = vlFun.Item("set")
Select Case VarType(Value)
Case vbByte, vbInteger, vbLong
Dim lVal As Long
lVal = Value
vlSet.funcall vlSym, lVal
Case vbString
Dim strVal As String
strVal = Value
vlSet.funcall vlSym, strVal
Case vbDouble
Dim dblVal As String
dblVal = Value
vlSet.funcall vlSym, dblVal
Case vbEmpty
vlSet.funcall vlSym, vlFun.Item("read").funcall("nil")
Case Else
If IsArray(Value) Then
Dim List As Variant
List = Value
vlSet.funcall vlSym, List
Else
vlSet.funcall vlSym, Value
End If
End Select
Set vlApp = Nothing
Set vlFun = Nothing
Set vlSet = Nothing
End Sub
'------------------------------------------------------------------- --
'Function GetLispVar
' Description:
' Reads a variable from LISP
' Arguments:
' Symbol:
' - Variable name
' Return:
' - Variable value
' - vbEmpty if variable is 'nil' or not set
' Exceptions:
' - None
' Remarks:
' - None
'
Public Function GetLispVar(Symbol As String) As Variant
Dim vlApp As Object
Dim vlFun As Object
Set vlApp = CreateObject("Vl.Application.1")
Set vlFun = vlApp.ActiveDocument.Functions
GetLispVar =
vlFun.Item("eval").funcall(vlFun.Item("read").funcall(Symbol))
Set vlApp = Nothing
Set vlFun = Nothing
End Function
'------------------------------------------------------------------ --