I couldn't find any means to do this with activex so I went back to entmod. For anyone that might be interested - this seems to work most of the time:
;;(f:hatch_removeislands [hatch object]) - remove *ALL* islands from a hatch object
(defun f:hatch_removeislands (en / elst at skip xlst)
(setq elst (entget en))
(while elst
(setq at (car elst))
(cond
((= (car at) 75)
(setq xlst (append xlst (list at))
skip nil
)
)
(skip)
((= (car at) 91)
(setq xlst (append xlst (list (cons 91 1))))
)
((= (car at) 97)
(setq xlst (append xlst (list at))
skip T
);setq
)
(T
(setq xlst (append xlst (list at)))
)
);cond
(setq elst (cdr elst))
);while
(entmod xlst)
(entupd en)
en
)
Peter