All, Ran into this mess recently. I'm scratching my head for a better Active X solution, rather than go back to using entmake. The following two functions are designed to place a temporary circle in the drawing which is later deleted by the calling function. They both return the circle as a vla-object. The first uses Active X. The second uses entmake. The problem with Active X, as I see it, is the fact the Add method doesn't support a layer argument like entmake. So if the active layer is locked, you cannot change the layer, or other properties, of the new object without an error. I could go on... but instead I'll just post the code and hope for some insight which hasn't dawned on me yet. I might add, the implications here seem a bit mind boggling to me. I hope I'm missing some easy Active X solution. Thanks for all comments. Joe Burke ;; Active X method: ;; Pass a point and a layer name. ;; Assume the layer name passed is not locked, ;; but the active layer might be. ;; If so, you won't be able to change ;; the layer of new circle after it's created ;; without an error: on locked layer. ;; So one possible solution as follows, which may ;; need more error checking. ;; Change the active layer to the layer name argument, ;; then restore the active layer. ;; Ugly IMO... (defun TempCircleAX (pt lay / rad doc layers space activelay cir) (setq rad (/ (getvar "viewsize") 125.0)) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (setq layers (vla-get-layers doc)) (if (= 1 (vlax-get doc 'ActiveSpace)) (setq space (vla-get-ModelSpace doc)) (setq space (vla-get-PaperSpace doc)) ) (setq activelay (vlax-get doc 'ActiveLayer)) (vlax-put doc 'ActiveLayer (vla-item layers lay)) (setq cir (vlax-invoke space 'AddCircle pt rad)) (vlax-put doc 'ActiveLayer activelay) cir ;return vla circle object ) ;end ;; entmake method: ;; Pass a point and a layer name. ;; Clean and easy. (defun TempCircleMake (pt lay / rad) (setq rad (/ (getvar "viewsize") 125.0)) (if (entmake (list '(0 . "CIRCLE") (cons 8 lay) (cons 10 pt) (cons 40 Rad)) ) (vlax-ename->vla-object (entlast)) ;return vla circle object ) ) ;end