CloudJack 发表于 2022-7-6 23:19:54

打开只读和p的脚本

我创建了一个脚本:
(vla-activate (vla-open (vla-get-documents (vlax-get-acad-object)) "C:/TEST/PlotDrawing.dwg" :VLAX-TRUE)) (load "C:\\TEST\\PDF.lsp") (c:pdf) _close Y

 
但是,命令[(load“C:\\TEST\\PDF.lsp”)(C:PDF)\u close]不会在PlotDrawing上运行。
 
PDF。lsp只是通过设置A3大小和绘图仪来使用-plot打印pdf,这与图形默认值不同。
 
我想以只读方式打开图形,然后使用lisp绘制图形。(如果任何其他人已打开图纸)

BIGAL 发表于 2022-7-6 23:35:38

在dwg alerady open进行搜索的情况下,有一种测试只读的方法。将方法更改为脚本可能更好,脚本中可以像加载“pdf”等一样包含lisp,这将在多个按顺序打开和关闭的图形上运行。

CloudJack 发表于 2022-7-6 23:43:10

 
我已经使用脚本文件来运行代码
最初,我使用“open”来编写文件脚本
open "C:\TEST\PlotDrawing.dwg" (load "C:\\TEST\\PDF.lsp") (c:pdf) _close Y
 
但是,当有人已经打开图形时,脚本将停止并询问“以只读方式打开文件?(Y)”。手动输入“Y”后,脚本将继续。
 
“以只读方式打开文件?(Y)”仅在有人打开图形时显示。
 
我试着这样改变
open "C:\TEST\PlotDrawing.dwg" Y (load "C:\\TEST\\PDF.lsp") (c:pdf) _close Y
 
当没有人打开图形时,它将停止显示
 
因此,我将代码更改为第一个帖子
(vla-activate (vla-open (vla-get-documents (vlax-get-acad-object)) "C:/TEST/PlotDrawing.dwg" :VLAX-TRUE)) (load "C:\\TEST\\PDF.lsp") (c:pdf) _close Y

 
我如何处理这个问题?

BIGAL 发表于 2022-7-6 23:53:24

只需快速检查要打开的dwg名称是否存在DWL*,如果存在,则表示有人打开了它并需要“Y”。唯一的问题是,若你们使用红十字会退出或它崩溃,你们可以得到DWL的留下来可以检查日期也作为一个双重检查。我一直在清理服务器上的dwl。

CloudJack 发表于 2022-7-7 00:03:03

谢谢你的提示。
 
我在下面的脚本中再次尝试,但失败了。
(defun _FileOpen-p ( filename / f ) (if (setq f (open filename "a")) (close f) t))
(setq ofile "C:\TEST\PlotDrawing.dwg")
(if (_FileOpen-p ofile)
open "C:\TEST\PlotDrawing.dwg" Y (load "C:\\TEST\\PDF.lsp") (c:pdf) _close Y
open "C:\TEST\PlotDrawing.dwg" (load "C:\\TEST\\PDF.lsp") (c:pdf) _close Y
)

(defun _FileOpen-p ( filename / f ) (if (setq f (open filename "a")) (close f) t))
(setq ofile "C:\TEST\PlotDrawing.dwg")
open "C:\TEST\PlotDrawing.dwg" (if (_FileOpen-p ofile) Y) (load "C:\\TEST\\PDF.lsp") (c:pdf) _close Y

 
脚本运行时,我如何进行检查?

BIGAL 发表于 2022-7-7 00:19:49

考虑一下,使用vla方法检查是否为TRUE,但如果为False,则需要行两次只读或非只读。

CloudJack 发表于 2022-7-7 00:25:53

 
我不知道如何使用vla方法进行检查。
 
在我的代码中,它是在打开图形后停止脚本。
(defun _FileOpen-p ( filename / f ) (if (setq f (open filename "a")) (close f) t))
(setq ofile "C:\TEST\PlotDrawing.dwg")
(if (_FileOpen-p ofile) (progn (vla-activate (setq adoc (vla-open (vla-get-documents (vlax-get-acad-object)) "C:\TEST\PlotDrawing.dwg" :VLAX-TRUE))) (vla-sendcommand adoc "(load "C:\\TEST\\PDF.lsp")\r") (vla-sendcommand adoc "(c:pdf)\r")))

 
过程是:
1.在激活图纸A中加载。scr文件。
2、打开PlotDrawing。dwg并激活它
3、什么都没发生
4.将选项卡返回到图纸A
5.脚本继续在图纸A上运行(加载“C:\\TEST\\PDF.lsp”)和(C:PDF)
 
谁能给我提供一些代码来解决这个问题?
 
谢谢大家。
页: [1]
查看完整版本: 打开只读和p的脚本