Community
I don't suspect too many people will find this valuable like I would, but I stumbled on it and thought i'd post it anyway.
This function will return the full file path of the currently loaded project.xml.
(defun GetProjectXML (/ xml) (vl-load-com)
(vlax-for x (vla-get-dictionaries(vla-get-activedocument(vlax-get-acad-object))) (if (= (strcase(vl-princ-to-string(vl-catch-all-apply 'vla-get-name (list x)))) "AUTODESK_PNP") (vlax-for xx x (if (= (strcase(vl-princ-to-string(vl-catch-all-apply 'vla-get-name (list xx)))) "PNP_PROJECTMGR") (vlax-for xxx xx (if (= (strcase(vl-princ-to-string(vl-catch-all-apply 'vla-get-name (list xxx)))) "PROJECTXML") (setq xml (cdr(assoc 1(entget(vlax-vla-object->ename xxx))))) ) ) ) ) ) ) xml )
Well, I am sorry to inform that this method only yields the location the project.xml was originally created. Moving the project will result in it producing an incorrect value.
@Autodesk: This is a value already stored somewhere and it can't take more then a 60 seconds to expose it. So, can we please get a system variable for this!