@GeryKnee hi,
this one is based on command reactor. wrap the following code lines in a lisp file and load it with appload startup suite
the (vlr-command-reactor) has a dotted pair data argument:
("GeryKnee" . "MyImagesLayer")
where the first item is your name serves as reactor id and the second item is the requested layer name. you need to fill it with your layer name.
wonder, have you thought about what will happen if you want to drag an image to other layer? 😀
enjoy
moshe
(vl-load-com); load activex support
(defun OnCommandStart (Reactor data^)
nil
)
(defun OnCommandEnded (Reactor data^ / rdata layName doc layers lay ename elist AcDbImage)
(setq rdata (vlr-data Reactor))
(setq layName (cdr rdata))
(if (and
(eq (car rdata) "GeryKnee") ; check cmdReactor Id
(eq (strcase (car data^)) "-IMAGE")
)
(progn
(if (null (tblsearch "layer" (cdr rdata)))
(progn
(setq doc (vla-get-activedocument (vlax-get-acad-object)))
(setq layers (vla-get-layers doc))
(setq lay (vla-add layers layName))
); progn
); if
(if (and
(setq ename (entlast))
(setq elist (entget ename))
(eq (cdr (assoc '0 elist)) "IMAGE")
)
(progn
(setq AcDbImage (vlax-ename->vla-object ename))
(vla-put-layer AcDbImage layName)
(vlax-release-object AcDbImage)
); progn
); if
(if (and lay (eq lay 'VLA-OBJECT))
(progn
; dispose memory
(vlax-release-object lay)
(vlax-release-object layers)
(vlax-release-object doc)
); progn
); if
); progn
); if
); OnCommandEnded
; install reactor
(if (or (not cmdReactor)
(vlr-added-p cmdReactor)
)
; cmdReactor Id + Requeted Layer Name
(setq cmdReactor (vlr-command-reactor '("GeryKnee" . "MyImagesLayer")
'((:vlr-commandWillStart . OnCommandStart)
(:vlr-commandEnded . OnCommandEnded)
)
)
); setq
); if