乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 97|回复: 6

[综合讨论] 打开只读和p的脚本

[复制链接]

6

主题

18

帖子

15

银币

初来乍到

Rank: 1

铜币
28
发表于 2022-7-6 23:19:54 | 显示全部楼层 |阅读模式
我创建了一个脚本:
  1. (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绘制图形。(如果任何其他人已打开图纸)
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 23:35:38 | 显示全部楼层
在dwg alerady open进行搜索的情况下,有一种测试只读的方法。将方法更改为脚本可能更好,脚本中可以像加载“pdf”等一样包含lisp,这将在多个按顺序打开和关闭的图形上运行。
回复

使用道具 举报

6

主题

18

帖子

15

银币

初来乍到

Rank: 1

铜币
28
发表于 2022-7-6 23:43:10 | 显示全部楼层
 
我已经使用脚本文件来运行代码
最初,我使用“open”来编写文件脚本
  1. open "C:\TEST\PlotDrawing.dwg" (load "C:\\TEST\\PDF.lsp") (c:pdf) _close Y

 
但是,当有人已经打开图形时,脚本将停止并询问“以只读方式打开文件?(Y)”。手动输入“Y”后,脚本将继续。
 
“以只读方式打开文件?(Y)”仅在有人打开图形时显示。
 
我试着这样改变
  1. open "C:\TEST\PlotDrawing.dwg" Y (load "C:\\TEST\\PDF.lsp") (c:pdf) _close Y

 
当没有人打开图形时,它将停止显示[Y未知命令“Y”。按F1键可获取帮助。]
 
因此,我将代码更改为第一个帖子
  1. (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

 
我如何处理这个问题?
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 23:53:24 | 显示全部楼层
只需快速检查要打开的dwg名称是否存在DWL*,如果存在,则表示有人打开了它并需要“Y”。唯一的问题是,若你们使用红十字会退出或它崩溃,你们可以得到DWL的留下来可以检查日期也作为一个双重检查。我一直在清理服务器上的dwl。
回复

使用道具 举报

6

主题

18

帖子

15

银币

初来乍到

Rank: 1

铜币
28
发表于 2022-7-7 00:03:03 | 显示全部楼层
谢谢你的提示。
 
我在下面的脚本中再次尝试,但失败了。
  1. (defun _FileOpen-p ( filename / f ) (if (setq f (open filename "a")) (close f) t))
  2. (setq ofile "C:\TEST\PlotDrawing.dwg")
  3. (if (_FileOpen-p ofile)
  4. open "C:\TEST\PlotDrawing.dwg" Y (load "C:\\TEST\\PDF.lsp") (c:pdf) _close Y
  5. open "C:\TEST\PlotDrawing.dwg" (load "C:\\TEST\\PDF.lsp") (c:pdf) _close Y
  6. )
  1. (defun _FileOpen-p ( filename / f ) (if (setq f (open filename "a")) (close f) t))
  2. (setq ofile "C:\TEST\PlotDrawing.dwg")
  3. open "C:\TEST\PlotDrawing.dwg" (if (_FileOpen-p ofile) Y) (load "C:\\TEST\\PDF.lsp") (c:pdf) _close Y

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

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-7 00:19:49 | 显示全部楼层
考虑一下,使用vla方法检查是否为TRUE,但如果为False,则需要行两次只读或非只读。
回复

使用道具 举报

6

主题

18

帖子

15

银币

初来乍到

Rank: 1

铜币
28
发表于 2022-7-7 00:25:53 | 显示全部楼层
 
我不知道如何使用vla方法进行检查。
 
在我的代码中,它是在打开图形后停止脚本。
  1. (defun _FileOpen-p ( filename / f ) (if (setq f (open filename "a")) (close f) t))
  2. (setq ofile "C:\TEST\PlotDrawing.dwg")
  3. (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)
 
谁能给我提供一些代码来解决这个问题?
 
谢谢大家。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-10 04:31 , Processed in 0.587684 second(s), 66 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表