This is not all of my code but an example of using the acedEvaluateLISP extry point for the others who are monitoring this thread. I am sure you know this code too.
I wanted to post this code first.
Code:
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.Runtime
Imports System.Runtime.InteropServices 'for DllImport()
Imports System.Security
Public Class vbvlClass
' Use P/Invoke for acedEvaluateLISP
<System.Security.SuppressUnmanagedCodeSecurity(), DllImport("acad.exe", _
CharSet:=CharSet.Unicode, CallingConvention:=CallingConvention.Cdecl, EntryPoint:="?acedEvaluateLisp@@YAHPB_WAAPAUresbuf@@@Z")> _
Private Shared Function acedEvaluateLISP(ByVal strLISPExpression As String, ByRef intHandle As IntPtr) As Integer
End Function
'______________________________________________________________________________________________________________________
'
' Overload of the EvaluateLISPExpression function to accept ResultBuffer as Argument
'______________________________________________________________________________________________________________________
<LispFunction("EvaluateLisp")> _
Public Shared Function EvaluateLispExpression(ByVal rbfLISPExpression As ResultBuffer) As ResultBuffer
Dim rbfReturn As New ResultBuffer
Dim arrLispExpression As TypedValue() = rbfLISPExpression.AsArray
Return EvaluateLispExpression(arrLispExpression(0).Value.ToString)
End Function
Public Shared Function EvaluateLispExpression(ByVal strLISPExpression As String) As ResultBuffer
Dim rbfObject As IntPtr = IntPtr.Zero
Dim rbfReturn As New ResultBuffer
Try
acedEvaluateLISP(strLISPExpression, rbfObject)
If (rbfObject <> IntPtr.Zero) Then
rbfReturn = CType(DisposableWrapper.Create(GetType(ResultBuffer), rbfObject, True), ResultBuffer)
Return rbfReturn
Else
rbfReturn.Add(New TypedValue(&H138D, "Error"))
End If
Catch ex As System.Exception
rbfReturn.Add(New TypedValue(&H138D, "Catch Error"))
Return rbfReturn
End Try
Return Nothing
End Function
End Class