TRY @dexus
 
	https://www.theswamp.org/index.php?topic=59838.0
 
	 
 
try this
;-------------------------------------------------------------------------------
; EVS     extract_vertices_from_solid                                                 
; EVSD    extract_vertices_from_solid and dwaw point                         
; EVSE    extract_vertices_from_solid and erase solid                         
; EVSED   extract_vertices_from_solid and erase solid and draw points
;------------------------------------------------------------------------------
;                   Written by Giovanni Anzani,                       
;                   University of florence                           
;                Departement DIDA of architecture                   
;---------------------------------------------------------------------------------------------------
;---------------------------------------------------------------------------------------------------
(defun c:EVS      () (extract_vertices_from_solid (car (entsel "\nSelect solid:")) nil nil))
(defun c:EVSD    () (extract_vertices_from_solid (car (entsel "\nSelect solid:")) nil T))
(defun c:EVSE    () (extract_vertices_from_solid (car (entsel "\nSelect solid:")) T nil))
(defun c:EVSED  () (extract_vertices_from_solid (car (entsel "\nSelect solid:")) T T))
;-------------------------------------------------------------------------------------------------
(defun CMD-0   ()  (setq cm_old  (getvar "cmdecho"    )) (setvar "cmdecho"     0 ))
(defun OSM-0   ()  (setq os_old   (getvar "osmode"     ))  (setvar "osmode"      0 ))
(defun BLI-0     ()  (setq bl_old    (getvar "blipmode"   ))  (setvar "blipmode"    0 ))
;--------------------------------------------------------------------------------------------------
(defun CMD-P   ()  (setvar "cmdecho"     cm_old  ))
(defun OSM-P   ()  (setvar "osmode"      os_old  ))
(defun BLI-P   ()  (setvar "blipmode"    bl_old  ))
;--------------------------------------------------------------------------------------------------
(defun VAR-0   ()  (CMD-0)  (OSM-0) (BLI-0))
(defun VAR-P   ()  (CMD-P)  (OSM-P) (BLI-P)  (command "_redraw") (princ))
;--------------------------------------------------------------------------------------------------
(defun Draw_lPu (lPu / Pu)  (VAR-0) (foreach Pu lPu (vl-cmdf "._point" Pu)) (VAR-P))
;--------------------------------------------------------------------------------------------------
(defun remove_duplicates_from_list (l_raw / element l_clean)
  (while l_raw (setq element (car l_raw)
                l_clean (cons element l_clean)
                     l_raw   (vl-remove element l_raw)))
  (reverse l_clean))
;--------------------------------------------------------------------------------------------------
(defun entnext_from_ent_to_end (ent0 / ent1 lent)
  (while (setq ent1 (entnext ent0))
         (setq lent (cons ent1 lent)
          ent0 ent1)
    lent))
;--------------------------------------------------------------------------------------------------
; if you want, you can eliminate duplicates
(defun extract_edges_from_solid (ent0 erase_solid / Pu0 ent1 lis_ent)   
  (setq Pu0 '(0.0 0.0 0.0))
  (command-s "._copy" ent0 "" Pu0 Pu0)
  (setq ent1 (entlast))
  (command-s "._copy" ent1 "" Pu0 Pu0)
  (repeat 2 (foreach ent  (entnext_from_ent_to_end ent1) (command-s "._explode" ent "")))
  (setq lis_ent (entnext_from_ent_to_end ent1))
  (if erase_solid (command-s "._erase" ent0 ent1 "")
                  (command-s "._erase"      ent1 ""))
  lis_ent)
;---------------------------------------------------------------------------------------------------
;---------------------------------------------------------------------------------------------------
(defun extract_vertices_from_solid (ent0 erase_solid draw_points / eent Pu1 Pu2 lis_Pu)
  (foreach ent (extract_edges_from_solid ent0 erase_solid)
     (if ent (progn (setq eent                    (vlax-ename->vla-object    ent)
            Pu1                     (vlax-curve-getStartPoint  eent)
           eent_open          (not (vlax-curve-isClosed       eent))
                     Pu2       (if eent_open (vlax-curve-getEndPoint    eent)))        
          (command-s "._erase" ent "")))
     (if Pu1 (setq lis_Pu (if (member Pu1 lis_Pu) lis_Pu (cons Pu1 lis_Pu))))
     (if Pu2 (setq lis_Pu (if (member Pu2 lis_Pu) lis_Pu (cons Pu2 lis_Pu)))))
  (setq lis_Pu (remove_duplicates_from_list lis_Pu))
  (if draw_points (Draw_lPu lis_Pu)) lis_Pu)
;-----------------------------------------------------------------------------------------------
; EOF
;-----