In case someone else can make use of it.
;;;=================================================================================
;;; 1. You need to register tlbinf32.dll before using these functions.
;;; 2. Thanks to Michael Puckett and David Blackmon for sharing their findings about
;;; using tlbinf32.dll. Sorry if I missed anyone that should be credited.
;;; 3. Feel free to modify/use.
;;;=================================================================================
;;;Enum InvokeKinds
;;; INVOKE_UNKNOWN = 0,
;;; INVOKE_FUNC = 1,
;;; INVOKE_PROPERTYGET = 2,
;;; INVOKE_PROPERTYPUT = 4,
;;; INVOKE_PROPERTYPUTREF = 8,
;;; 'Special TLI values
;;; INVOKE_EVENTFUNC = 16,
;;; INVOKE_CONST = 32
;;;End Enum
;;;=================================================================================
;;;(KF:Get_Object_TypeInfo
;;; (car (entsel "\nPick object to list TypeInfo: "))
;;;)
(defun KF:Get_Object_TypeInfo (obj / appTli lstInvokeKind rv objInfo @)
(if (setq appTli (vlax-create-object "TLI.TLIApplication"))
(progn
(if (eq 'ENAME (type obj))
(setq obj (vlax-ename->vla-object obj))
)
(setq lstInvokeKind (list 0 1 2 4 8 16 32)
rv (mapcar 'list lstInvokeKind)
)
(setq objInfo (vlax-invoke appTli 'InterfaceInfoFromObject obj))
(vlax-for infoMember (vlax-get-property objInfo 'Members)
(setq @ (vl-position
(vlax-get-property infoMember 'InvokeKind)
lstInvokeKind
)
lst (nth @ rv)
rv (subst
(cons (vlax-get-property infoMember 'Name) lst)
lst
rv
)
)
)
(mapcar (function (lambda (lst)
(cons (car lst) (vl-sort (cdr lst) '<))
)
)
(mapcar 'reverse rv)
)
)
)
)
;;;=================================================================================
;;;(KF:Get_Object_PropertiesGet
;;; (car (entsel "\nPick object to list applicable properties to get: "))
;;;)
(defun KF:Get_Object_PropertiesGet (obj / lst)
(if (setq lst (KF:Get_Object_TypeInfo obj))
(cdr (nth 2 lst))
)
)
;;;=================================================================================
;;;(KF:Get_Object_PropertiesPut
;;; (car (entsel "\nPick object to list applicable properties to put: "))
;;;)
(defun KF:Get_Object_PropertiesPut (obj / lst)
(if (setq lst (KF:Get_Object_TypeInfo obj))
(cdr (nth 3 lst))
)
)
;;;=================================================================================
;;;(KF:Get_Object_Methods
;;; (car (entsel "\nPick object to list applicable methods: "))
;;;)
(defun KF:Get_Object_Methods (obj / lst)
(if (setq lst (KF:Get_Object_TypeInfo obj))
(cdr (nth 1 lst))
)
)