FindText "API", with acad 2007 32-bit
'#define AC_SRCH_BLOCK 0x01
'#define AC_SRCH_DIM_TEXT 0x02
'#define AC_SRCH_TEXT 0x04
'#define AC_SRCH_LINK_DESC 0x08
'#define AC_SRCH_LINK_URL 0x10
'#define AC_SRCH_MATCH_CASE 0x20
'#define AC_SRCH_WHOLE_WORD 0x40
'#define AC_SRCH_DEFAULT 0x1F
'bool acdbTextFind(AcDbDatabase* pDatabase,
' AcDbObjectIdArray& resultSet,
' const ACHAR* findString,
' const ACHAR* replaceString = NULL,
' Adesk::UInt8 searchOptions = AC_SRCH_DEFAULT,
' const AcDbObjectIdArray& selSet = 0);
Public Const AC_SRCH_BLOCK As Integer = 1
Public Const AC_SRCH_DIM_TEXT As Integer = 2
Public Const AC_SRCH_TEXT As Integer = 4
Public Const AC_SRCH_LINK_DESC As Integer = 8
Public Const AC_SRCH_LINK_URL As Integer = 16
Public Const AC_SRCH_MATCH_CASE As Integer = 32
Public Const AC_SRCH_WHOLE_WORD As Integer = 64
Public Const AC_SRCH_DEFAULT As Integer = 31
<DllImport("acdb17.dll", CallingConvention:=CallingConvention.Cdecl, CharSet:=CharSet.Unicode, EntryPoint:="?acdbTextFind@@YA_NPAVAcDbDatabase@@AAV?$AcArray@VAcDbObjectId@@V?$AcArrayMemCopyReallocator@VAcDbObjectId@@@@@@PB_W2EABV2@@Z")> _
Private Shared Function acdbTextFind(ByVal pDb As System.IntPtr, _
ByVal resultSet As System.IntPtr, _
<System.Runtime.InteropServices.InAttribute(), System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.LPWStr)> ByVal findString As String, _
<System.Runtime.InteropServices.InAttribute(), System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.LPWStr)> ByVal replaceString As String, _
ByVal searchOptions As Integer, _
ByVal selSet As System.IntPtr) As <System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.I1)> Boolean
End Function
Public Shared Sub ZZ()
Dim oidIn As New ObjectIdCollection
Dim oidOut As New ObjectIdCollection
Dim ret As Boolean
Dim db As Database = Application.DocumentManager.MdiActiveDocument.Database
ret = acdbTextFind(db.UnmanagedObject, oidOut.UnmanagedObject, "hello", Nothing, AC_SRCH_DEFAULT, oidIn.UnmanagedObject)
If ret Then
For Each id As ObjectId In oidOut
'
Next
End If
oidIn.Dispose()
oidOut.Dispose()
End Sub
can someone explain to me why different entry point signatures dependant on x32 or x64 platforms? i read this in first post, and i do not understand (I come from vba/vb6)