Through following code , I found 922 Interface Object can be used in VLIDE .
(Test in my case : WIN7 64BIT , AutoCAD2011 , not VBA support .)
(vl-load-com)
;;
(defun registry-interface-classes (/ l b lst f)
(setq l (vl-registry-descendents "HKEY_CLASSES_ROOT\\Interface"))
(vl-file-delete "C:\\InterfaceClasses.txt")
(setq f (open "C:\\InterfaceClasses.txt" "w"))
(foreach a l
(setq b (vl-registry-read (strcat "HKEY_CLASSES_ROOT\\Interface" "\\" a)))
(if (and b (not (vl-position b lst)))
(setq lst (cons b lst))))
(foreach a (setq lst (reverse lst))
(write-line a f))
(close f)
)
;;(registry-interface-classes)
(defun registry-interface-classes-base (/ l b lst f)
(setq l (vl-registry-descendents "HKEY_CLASSES_ROOT"))
(vl-file-delete "C:\\InterfaceClassesBase.txt")
(setq f (open "C:\\InterfaceClassesBase.txt" "w"))
(foreach a l
(setq b (vl-registry-read (strcat "HKEY_CLASSES_ROOT" "\\" a)))
(if (and b (not (vl-position b lst)))
(setq lst (cons b lst))))
(foreach a (setq lst (reverse lst))
(write-line a f))
(close f)
lst
)
(defun registry-interface-classes-name (/ l f)
(setq l (vl-registry-descendents "HKEY_CLASSES_ROOT"));_(length (vl-remove-if (function (lambda (a) (or (= a "*") (wcmatch a "`.*"))))(vl-registry-descendents "HKEY_CLASSES_ROOT")))
(vl-file-delete "C:\\InterfaceClassesObjectName.txt")
(setq f (open "C:\\InterfaceClassesBObjectName.txt" "w"))
(foreach a l
(write-line a f))
(close f)
)
;; (registry-interface-classes-name)
;; (registry-interface-classes-base)
;; (vlax-dump-object (vla-getInterfaceObject (vlax-get-acad-object) "TapiMigPlugin.MigrationPlugin.1"))
(defun c:IFOTest (/ l l1 cad obj lst f)
;; through the interface object Test
(setq l (registry-interface-classes-base))
(setq cad (vlax-get-acad-object))
(foreach a l
(setq a (vl-string-subst "." " " a))
(setq obj (vl-catch-all-apply (function vla-getInterfaceObject) (list cad a)))
(if (not (vl-catch-all-error-p obj))
(progn (setq lst (cons a lst))
(vlax-release-object obj))
(setq obj nil))
)
(vlax-release-object cad)
(if lst
(progn
(vl-file-delete "c:\\IFOTest0.txt")
(setq f (open "c:\\IFOTest0.txt" "w"))
(foreach a lst
(write-line a f))
(close f)))
(princ (strcat "\n" (rtos (length lst) 2 0) " Interface Object Can be use , See C:\IFOTest.txt ."))
(princ)
)
(defun c:IFOTest0 (/ l i cad obj f)
;; through the interface object Test
(setq f0 (open "C:\\InterfaceClassesBObjectName.txt" "r"))
(repeat (* 0 1024)
(read-line f0))
(setq cad (vlax-get-acad-object))
(setq f (open "c:\\IFOTest1.txt" "a")
i 0)
(repeat 1024
(setq a (read-line f0))
(if (and a (vl-every (function not) (list (= a "*") (wcmatch a "`.*") (= (vl-string-trim " " a) ""))))
(progn
(setq a (vl-string-subst "_" " " a))
(setq obj (vl-catch-all-apply (function vla-getInterfaceObject) (list cad a)))
(if (not (vl-catch-all-error-p obj))
(progn (write-line a f)
(vlax-release-object obj)
(setq i (1+ i)))
(princ (strcat "\n" a " " (vl-catch-all-error-message obj)))
)))
(gc)
)
(vlax-release-object cad)
(close f)
(princ (strcat "\n" (rtos i 2 0) " Interface Object Can be use , See C:\IFOTest1.txt ."))
(princ)
)
;;
(defun c:IFOTest1 (/ l i cad obj f)
;; through the interface object Test
(setq f0 (open "C:\\InterfaceClassesBObjectName.txt" "r"))
(repeat (* 1 1024)
(read-line f0))
(setq cad (vlax-get-acad-object))
(setq f (open "c:\\IFOTest1.txt" "a")
i 0)
(repeat 1024
(setq a (read-line f0))
(if (and a (vl-every (function not) (list (= a "*") (wcmatch a "`.*") (= (vl-string-trim " " a) ""))))
(progn
(setq a (vl-string-subst "_" " " a))
(setq obj (vl-catch-all-apply (function vla-getInterfaceObject) (list cad a)))
(if (not (vl-catch-all-error-p obj))
(progn (write-line a f)
(vlax-release-object obj)
(setq i (1+ i)))
(princ (strcat "\n" a " " (vl-catch-all-error-message obj)))
)))
(gc)
)
(vlax-release-object cad)
(close f)
(princ (strcat "\n" (rtos i 2 0) " Interface Object Can be use , See C:\IFOTest1.txt ."))
(princ)
)
(defun c:IFOTest2 (/ l i cad obj f)
;; through the interface object Test
(setq f0 (open "C:\\InterfaceClassesBObjectName.txt" "r"))
(repeat (* 2 1024)
(read-line f0))
(setq cad (vlax-get-acad-object))
(setq f (open "c:\\IFOTest1.txt" "a")
i 0)
(repeat 1024
(setq a (read-line f0))
(if (and a (vl-every (function not) (list (= a "*") (wcmatch a "`.*") (= (vl-string-trim " " a) ""))))
(progn
(setq a (vl-string-subst "_" " " a))
(setq obj (vl-catch-all-apply (function vla-getInterfaceObject) (list cad a)))
(if (not (vl-catch-all-error-p obj))
(progn (write-line a f)
(vlax-release-object obj)
(setq i (1+ i)))
(princ (strcat "\n" a " " (vl-catch-all-error-message obj)))
)))
(gc)
)
(vlax-release-object cad)
(close f)
(princ (strcat "\n" (rtos i 2 0) " Interface Object Can be use , See C:\IFOTest1.txt ."))
(princ)
)
(defun c:IFOTest3 (/ l i cad obj f)
;; through the interface object Test
(setq f0 (open "C:\\InterfaceClassesBObjectName.txt" "r"))
(repeat (* 3 1024)
(read-line f0))
(setq cad (vlax-get-acad-object))
(setq f (open "c:\\IFOTest1.txt" "a")
i 0)
(repeat 1024
(setq a (read-line f0))
(if (and a (vl-every (function not) (list (= a "*") (wcmatch a "`.*") (= (vl-string-trim " " a) ""))))
(progn
(setq a (vl-string-subst "_" " " a))
(setq obj (vl-catch-all-apply (function vla-getInterfaceObject) (list cad a)))
(if (not (vl-catch-all-error-p obj))
(progn (write-line a f)
(vlax-release-object obj)
(setq i (1+ i)))
(princ (strcat "\n" a " " (vl-catch-all-error-message obj)))
)))
(gc)
)
(vlax-release-object cad)
(close f)
(princ (strcat "\n" (rtos i 2 0) " Interface Object Can be use , See C:\IFOTest1.txt ."))
(princ)
)
(defun c:IFOTest4 (/ l i cad obj f)
;; through the interface object Test
(setq f0 (open "C:\\InterfaceClassesBObjectName.txt" "r"))
(repeat (* 4 1024)
(read-line f0))
(setq cad (vlax-get-acad-object))
(setq f (open "c:\\IFOTest1.txt" "a")
i 0)
(repeat 1024
(setq a (read-line f0))
(if (and a (vl-every (function not) (list (= a "*") (wcmatch a "`.*") (= (vl-string-trim " " a) ""))))
(progn
(setq a (vl-string-subst "_" " " a))
(setq obj (vl-catch-all-apply (function vla-getInterfaceObject) (list cad a)))
(if (not (vl-catch-all-error-p obj))
(progn (write-line a f)
(vlax-release-object obj)
(setq i (1+ i)))
(princ (strcat "\n" a " " (vl-catch-all-error-message obj)))
)))
(gc)
)
(vlax-release-object cad)
(close f)
(princ (strcat "\n" (rtos i 2 0) " Interface Object Can be use , See C:\IFOTest1.txt ."))
(princ)
)
(defun c:IFOTest5 (/ l i cad obj f)
;; through the interface object Test
(setq f0 (open "C:\\InterfaceClassesBObjectName.txt" "r"))
(repeat (* 5 1024)
(read-line f0))
(setq cad (vlax-get-acad-object))
(setq f (open "c:\\IFOTest1.txt" "a")
i 0)
(repeat 1024
(setq a (read-line f0))
(if (and a (vl-every (function not) (list (= a "*") (wcmatch a "`.*") (= (vl-string-trim " " a) ""))))
(progn
(setq a (vl-string-subst "_" " " a))
(setq obj (vl-catch-all-apply (function vla-getInterfaceObject) (list cad a)))
(if (not (vl-catch-all-error-p obj))
(progn (write-line a f)
(vlax-release-object obj)
(setq i (1+ i)))
(princ (strcat "\n" a " " (vl-catch-all-error-message obj)))
)))
(gc)
)
(vlax-release-object cad)
(close f)
(princ (strcat "\n" (rtos i 2 0) " Interface Object Can be use , See C:\IFOTest1.txt ."))
(princ)
)
(defun c:IFOTest6 (/ l i cad obj f)
;; through the interface object Test
(setq f0 (open "C:\\InterfaceClassesBObjectName.txt" "r"))
(repeat (* 6 1024)
(read-line f0))
(setq cad (vlax-get-acad-object))
(setq f (open "c:\\IFOTest1.txt" "a")
i 0)
(repeat 1024
(setq a (read-line f0))
(if (and a (vl-every (function not) (list (= a "*") (wcmatch a "`.*") (= (vl-string-trim " " a) ""))))
(progn
(setq a (vl-string-subst "_" " " a))
(setq obj (vl-catch-all-apply (function vla-getInterfaceObject) (list cad a)))
(if (not (vl-catch-all-error-p obj))
(progn (write-line a f)
(vlax-release-object obj)
(setq i (1+ i)))
(princ (strcat "\n" a " " (vl-catch-all-error-message obj)))
)))
(gc)
)
(vlax-release-object cad)
(close f)
(princ (strcat "\n" (rtos i 2 0) " Interface Object Can be use , See C:\IFOTest1.txt ."))
(princ)
)
(defun c:IFOTest7 (/ l i cad obj f)
;; through the interface object Test
(setq f0 (open "C:\\InterfaceClassesBObjectName.txt" "r"))
(repeat (* 7 1024)
(read-line f0))
(setq cad (vlax-get-acad-object))
(setq f (open "c:\\IFOTest1.txt" "a")
i 0)
(repeat 1024
(setq a (read-line f0))
(if (and a (vl-every (function not) (list (= a "*") (wcmatch a "`.*") (= (vl-string-trim " " a) ""))))
(progn
(setq a (vl-string-subst "_" " " a))
(setq obj (vl-catch-all-apply (function vla-getInterfaceObject) (list cad a)))
(if (not (vl-catch-all-error-p obj))
(progn (write-line a f)
(vlax-release-object obj)
(setq i (1+ i)))
(princ (strcat "\n" a " " (vl-catch-all-error-message obj)))
)))
(gc)
)
(vlax-release-object cad)
(close f)
(princ (strcat "\n" (rtos i 2 0) " Interface Object Can be use , See C:\IFOTest1.txt ."))
(princ)
)
(defun c:IFOTestD(/ f0 lst f)
(setq f0 (open "c:\\IFOTest1.txt" "r"))
(while (setq a (read-line f0))
(if (not (vl-position a lst))
(setq lst (cons a lst))))
(close f0)
(setq lst (acad_strlsort lst))
(vl-file-delete "C:\\IFOTest.txt")
(setq f (open "C:\\IFOTest.txt" "w"))
(foreach a lst
(write-line a f))
(close f)
(princ)
)