Matt,
Unfortunately dragging a file from the Project Navigator throws no trappable command. I use a combination of the Xref Reactor and Modelspace Reactor. The :VLR-beginAttach fires when the Xref is about to be attached, so I set my XREF layer current. I couldn't get the :VLR-endAttach to work to re-set the clayer - the database wasn't "released" yet(?) so it wouldn't re-set clayer. I had to go to the Modelspace Reactor to check when things are attached in modelspace (we rarely attach xrefs in pspace) <edit> it works on paper space too</edit>. It's a kludge I know - but it works. Let me know if you find out a better way:
;;; ;
;;; XREF Reactor ;
;;; Uses the modelspace reactor to re-set clayer ;
;;; ;
;;; Xref Call Back functions ;
;;; Begin Attach ;
(defun jb:beginAttach (reactor vla-object /)
(if (not (tblsearch "layer" "XREF"))(vla-add (vla-get-layers (vla-get-activedocument(vlax-get-acad-object))) "XREF"))
(setq jb%XrefAttach T)
(if (tblsearch "layer" "XREF")(jb:setclayer "XREF" T))
(princ)
)
;;; Construct Xref Reactor ;
(defun jb::ConstructXrefReactor (/)
(if (= (type *jbXrefReactor*) 'VLR-Xref-Reactor)
(progn (vlr-remove *jbXrefReactor*)
(setq *jbXrefReactor* nil)))
(if (/= (type *jbXrefReactor*) 'VLR-Xref-Reactor)
(setq *jbXrefReactor*
(VLR-Xref-Reactor
"jbTools Xref Reactor" ; Data associated with the editor reactor
;; call backs
'
((:VLR-beginAttach . jb:beginAttach)
)) ;_ end of vlr-xref-reactor
))
(if (not (vlr-added-p *jbXrefReactor*))
(progn (vlr-add *jbXrefReactor*)
(vlr-set-notification *jbXrefReactor* 'active-document-only)))
(princ))
;;; load reactor ;
(if jb::ConstructXrefReactor
(jb::ConstructXrefReactor))
;;; ;
;;; ModelSpace Reactor ;
;;; Uses the modelspace reactor to re-set clayer ;
;;; ;
(defun jb::StartResetReactor( / )
(if *jbMSReactor* (vlr-remove *jbMSReactor*))
(setq *jbMSReactor* (vlr-object-reactor (list (vla-get-modelspace (vla-get-activedocument(vlax-get-acad-object)))) nil '((:vlr-objectClosed . jb:resetXrefLayer))))
(if *jbPSReactor* (vlr-remove *jbPSReactor*))
(setq *jbPSReactor* (vlr-object-reactor (list (vla-get-paperspace (vla-get-activedocument(vlax-get-acad-object)))) nil '((:vlr-objectClosed . jb:resetXrefLayer))))
)
(defun jb:resetXrefLayer (owner reactor_object reactor_list /)
(if jb%XrefAttach
(progn
(if dcl_HideErrorMsgBox
(if (dcl_Form_IsActive jb001_00)
(c:jb001_00_Refresh_OnClicked))
)
(jb:resetclayer)
(setq jb%XrefAttach nil)))
)
;;; load reactor ;
(if jb::StartResetReactor
(jb::StartResetReactor))