当有n个dwg文件与MyA3.dwg打开时,如何实现输入命令让MyA3.dwg文件成为当前窗口
本帖最后由 _Levin 于 2023-5-23 20:46 编辑上传的lsp文件实现了打开MyA3.dwg文件
那么当有n个dwg文件与MyA3.dwg打开时,如何实现输入命令让MyA3.dwg文件成为当前窗口;在MyA3.dwg没有打开时,则是打开MyA3.dwg文件
已解决~
;;;_$ (documents)
;;;(#<VLA-OBJECT IAcadDocument 0000020466025508> #<VLA-OBJECT IAcadDocument 000002046a090ac8>)
(defun documents (/ r)
(vlax-for d (vla-get-documents
(vla-get-application (vlax-get-acad-object))
)
(setq r (cons d r))
)
(reverse r)
)
;;;_$ (document-getbyname "Drawing1.dwg")
;;;#<VLA-OBJECT IAcadDocument 0000020466025508>
(defun document-getbyname (name / docs r)
(setq docs (documents))
(while docs
(if (= name (vla-get-name (car docs)))
(setq r (car docs)
docs nil
)
)
(setq docs (cdr docs))
)
r
)
(vla-activate (document-getbyname "Drawing1.dwg")) 本帖最后由 自贡黄明儒 于 2022-5-26 15:56 编辑
打开了多个文件(defun MJ:ActivateDrawing (),使一个文件当前,相当于
;; (ActivateDwg "abc.dwg")
(defun ActivateDwg (dwgname / lst)
(vlax-for a (vla-get-documents
(vla-get-application (vlax-get-acad-object))
)
(setq lst (cons (list a (vla-get-name a)) lst))
)
(if (setq lst (vl-remove-if '(lambda (x) (/= (cadr x) dwgname)) lst))
(vla-activate (caar lst))
)
) (vla-activate (vla-item (vla-get-documents (vlax-get-acad-object)) "MyA3.dwg")) 请教大家,怎么做到先检测是否已经打开了这个文件,否则会重复打开多个 本帖最后由 nyistjz 于 2022-9-25 13:45 编辑
;激活特定文档 (ActivateDwg "abc.dwg")
(defun ActivateDwg (dwgname / lst)
(vlax-for a *docs*
(setq lst (cons (list a (vla-get-name a)) lst))
)
(if (setq lst (vl-remove-if '(lambda (x) (/= (cadr x) dwgname)) lst))
(vla-activate (caar lst))
)
lst
)
(setq *ACAD* (vlax-get-acad-object ))
(setq *DOC* (vla-get-ActiveDocument *ACAD* ))
(setq *docs* (vla-get-Documents *ACAD*))
;激活或打开
(setq name "MyA3.dwg")
(if (setq file (findfile name))
(while (null (ActivateDwg name)) (vla-open *docs* file))
(princ "没有找到此文件!")
)
(princ) nyistjz 发表于 2022-9-25 13:36
;激活特定文档 (ActivateDwg "abc.dwg")
(defun ActivateDwg (dwgname / lst)
(vlax-for a *docs*
谢谢帮忙,比如D:\1\1.dwg,运行后会不停的打开这个文件 下面的代码可以判读并打开指定文档,不知道怎么激活为当前文档
(defun c:stl ()
(setq acadApp (vlax-get-acad-object)
acadDocs (vla-get-documents acadApp)
)
(if (= (VL-FILE-SYSTIME "d:/1/1.dwg") nil)
(alert "文件正在使用 ")
(vla-open acadDocs "d:/1/1.dwg"))
(princ))
页:
[1]