是的,这很有帮助。
不幸的是,考虑到您概述的条件步骤,您将不得不使用getfield选项。下面是一个小示例,它结合了Lee的_FileOpen-p函数来确定只读状态:
- (defun c:FOO (/ _FileOpen-p _Open f)
- (princ "\rFOO ")
- (vl-load-com)
- (defun _FileOpen-p (fileName / f)
- ;; Lee Mac, 2011
- ;; filename = filename of file to test
- ;; Returns T if specified file is open
- (if (setq f (open fileName "a"))
- (close f)
- T))
- (defun _Open (acApp f o)
- (vla-activate (vla-open (vla-get-documents acApp) f o)))
- (if (setq f (getfiled "Select file" "" "dwg" )
- ((lambda (acApp user / s)
- (cond
- ;; If user is a member, open read-only
- ((vl-position user '([color=red]"user1" "user2" "user3"[/color]))
- (_Open acApp f :vlax-true))
- ;; If available, open normally, else open read-only
- ((if (_FileOpen-p f)
- (progn
- (alert "File is already open. ")
- (_Open acApp f :vlax-true))
- (_Open acApp f :vlax-false)))))
- (vlax-get-acad-object)
- (getvar 'loginname)))
- (princ))
希望这有帮助!
**编辑-在选择位于(getvar’dwgprefix)中的图形时,还要注意GetField的行为,因为您需要使用STRCAT添加active directory。 |