打开指定文档并设置为当前
请教大家修改下面代码,在论坛看到下面代码打开指定文件,但没有判断已经打开的情形,会重复打开。(defun c:tt ()
(vl-load-com)
(setq acadobject(vlax-get-acad-object))
(setq acaddocument(vla-get-activedocument acadobject))
(setq documents(vla-get-documents(vla-get-application acaddocument)))
(vla-open documents"D:\\1\\Drawing1.dwg")
(princ)
)
本帖最后由 kucha007 于 2022-9-25 16:54 编辑
试试这个
(defun c:TT nil
(vl-load-com)(setvar "cmdecho" 0)
(vlax-invoke (vlax-get-or-create-object "Wscript.Shell") 'RUN
"C:\\Test.dwg" ;这里替换为指定文件的路径
)
(setvar "cmdecho" 1)(princ)
)
本帖最后由 nyistjz 于 2022-9-25 16:03 编辑
(setq *ACAD* (vlax-get-acad-object ))
(setq *DOC* (vla-get-ActiveDocument *ACAD* ))
(setq *docs* (vla-get-Documents *ACAD*))
(defun av:gotodwg(file / activate ext fname name)
(defun Activate (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
)
(cond
((setq file (findfile file))
(setq name (vl-filename-base file))
(setq ext (vl-filename-extension file))
(setq fname (strcat name ext))
(while (null (Activate fname)) (vla-open *docs* file))
)
(t (princ "没有找到此文件!"))
)
)
(defun c:tt(/ file)
(setq file "d:\\1\\1.dwg")
;(setq file "MyA3.dwg")
(av:gotodwg file)
) 本帖最后由 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:30
;激活特定文档 (ActivateDwg "abc.dwg")
(defun ActivateDwg (dwgname / lst)
(vlax-for a *docs*
谢谢帮忙,会不停的打开指定文档,需要判断是否已经打开。
下面的代码只打开一个文档,但不知道怎么激活为当前文档:
(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))
nyistjz 发表于 2022-9-25 16:00
(setq *ACAD* (vlax-get-acad-object ))
(setq *DOC* (vla-get-ActiveDocument *ACAD* ))
(setq *doc ...
谢谢帮忙,效果很好 kucha007 发表于 2022-9-25 16:49
试试这个
谢谢帮忙,代码简单效果好 kucha007 发表于 2022-9-25 16:49
试试这个
你这个牛逼plus nyistjz 发表于 2022-9-25 17:13
你这个牛逼plus
互相学习
页:
[1]
2