乐筑天下

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

[编程交流] 写一个打开面包的脚本

[复制链接]

10

主题

31

帖子

21

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
50
发表于 2022-7-6 08:58:05 | 显示全部楼层 |阅读模式
我假设其他人在某个时候需要这样做,但我找不到任何好的信息(或者至少我找到的信息只针对单个图形)。
 
我有一个LISP例程,它生成一个脚本,在特定文件夹中的所有图形上运行另一个LISP例程。我在图形上运行的例程只收集来自它们的信息,并且根本不会更改图形,因此我希望以只读方式打开图形,以防止任何意外事件,并且防止在网络上其他人打开其中一个图形时脚本挂起。
 
这可行吗?我尝试在脚本生成器中添加一个额外的空间或“\n”,以在AutoCAD询问我是否要打开只读副本时“伪造”返回键的额外点击,但这并没有按预期工作(事实上,我被告知它只是因为某种原因无法打开脚本)。
 
谢谢
回复

使用道具 举报

7

主题

340

帖子

338

银币

初来乍到

Rank: 1

铜币
37
发表于 2022-7-6 09:02:06 | 显示全部楼层
如果我在这里错了,有人会纠正我,但据我所知,“只读”属性是由操作系统设置的,图形实际打开时除外。在这种情况下,Autocad会生成一个锁定文件,以警告其他人图形已打开。我不知道有什么方法可以让你的系统认为它是只读的,只需要将文件复制到一个单独的目录并在那里设置“只读”标志。你也许可以修改你的lisp来为你做到这一点,但你必须询问lisp大师。让它为你要处理的文件创建一个副本,做任何你要做的事情,然后删除副本。这样你就不必担心其他人,也不会因为有太多额外的文件而把硬盘弄得乱七八糟。
回复

使用道具 举报

10

主题

31

帖子

21

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
50
发表于 2022-7-6 09:07:08 | 显示全部楼层
嗯,我曾想过这样做,至少在完成任务后自动删除生成的脚本文件。一般来说,我希望这个过程尽可能自动化,但我有点担心创建一个过程,将所有图形复制到另一个文件夹,运行脚本,然后删除该文件夹。如果有人在运行此脚本后无意中删除了原始图形,我将立即失去工作。
回复

使用道具 举报

7

主题

340

帖子

338

银币

初来乍到

Rank: 1

铜币
37
发表于 2022-7-6 09:11:23 | 显示全部楼层
 
设置权限级别,以便只有某些人可以保存到存储他们的驱动器。其他人保存到“已提交”文件夹中,当更改获得批准时,具有驱动器写入权限的人(我建议检查图形的人)将其保存到共享驱动器中。这样就不会发生意外,你就不需要复制了。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 09:13:56 | 显示全部楼层
以下是RK最近发布的关于*的一些附加信息。DWL*文件:
 
 
林奇
 
我不确定这是否有助于操作,但这是一个如何以只读方式打开图形的简单示例:
 
  1. (defun c:OPENR ()
  2. (princ "\nOPEN READ-ONLY ")
  3. (vl-load-com)
  4. ((lambda (acApp / f)
  5.       (if (/= 1 (getvar 'sdi))
  6.         (if (setq f (getfiled "Select file to open read-only" "" "dwg" 16))
  7.           (vla-activate
  8.             (vla-open (vla-get-documents acApp) f :vlax-true)))
  9.         (prompt "\n** Command not available in SDI mode ** ")))
  10.      (vlax-get-acad-object))
  11. (princ))
回复

使用道具 举报

10

主题

31

帖子

21

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
50
发表于 2022-7-6 09:19:47 | 显示全部楼层
 
我在其他地方找到了一篇文章,其中显示了通过取消定义和重新定义“open”命令以只读方式打开图形的代码,但我不知道如何抑制弹出的对话框。将FILEDIA和CMDDIA设置为0没有任何作用。
 
这是我试过的,从http://forums.augi.com/showthread.php?t=104865
 
  1. [color=#0000ff](vl-load-com)[/color]
  2. [color=#0000ff](command "._undefine" "open")[/color]
  3. [color=#0000ff](defun C:open ()[/color]
  4. [color=#0000ff] (setq fn (getfiled "Select Drawing" "" "dwg" 0))[/color]
  5. [color=#0000ff] (if (zerop (getvar "SDI"))[/color]
  6. [color=#0000ff]   (vlax-invoke-method[/color]
  7. [color=#0000ff]     (vla-get-documents (vlax-get-acad-object))[/color]
  8. [color=#0000ff]     'Open[/color]
  9. [color=#0000ff]     fn[/color]
  10. [color=#0000ff]     :vlax-true[/color]
  11. [color=#0000ff]   )[/color]
  12. [color=#0000ff] )[/color]
  13. [color=#0000ff])[/color]

 
去掉/替换getfield命令可以解决这个问题吗?
回复

使用道具 举报

7

主题

340

帖子

338

银币

初来乍到

Rank: 1

铜币
37
发表于 2022-7-6 09:25:28 | 显示全部楼层
 
我曾经工作过的一个地方就是这样做的,但我们有几百名起草人分布在几个州。如果你每天晚上都把省下来的钱备份起来,即使有人把事情搞砸了,你也永远不会损失超过一天的钱。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 09:27:38 | 显示全部楼层
虽然取消定义OPEN将起作用,但您需要重新定义命令,可能还需要包括错误检查,以便在发生错误时恢复OPEN。IMO-最好有一个单独的命令。
 
使用OPENR命令,您可以从命令行进行如下调用:
 
  1. (defun _OPENR (f) (_OpenReadOnly f))
  2. (defun _OpenReadOnly (f)
  3. ;; Example (_OpenReadOnly "C:\\file.dwg")
  4. (princ "\nOPEN READ-ONLY ")
  5. (vl-load-com)
  6. ((lambda (acApp)
  7.       (if (/= 1 (getvar 'sdi))
  8.         (if (findfile f)
  9.           (vla-activate
  10.             (vla-open (vla-get-documents acApp) f :vlax-true))
  11.           (prompt "\n** File not found ** "))
  12.         (prompt "\n** Command not available in SDI mode ** ")))
  13.      (vlax-get-acad-object))
  14. (princ))
回复

使用道具 举报

7

主题

340

帖子

338

银币

初来乍到

Rank: 1

铜币
37
发表于 2022-7-6 09:30:53 | 显示全部楼层
看,我知道有更好的方法的人最终会出现。这些Lisp程序的家伙会治好你的。我对Lisp程序非常了解,看到一个Lisp程序,我会说“是的,这是Lisp程序的惯例!”
回复

使用道具 举报

10

主题

31

帖子

21

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
50
发表于 2022-7-6 09:36:12 | 显示全部楼层
 
我做错什么了吗?
 
  1. Command: (_openr "C:\dir\dir\dir\drawingfile.dwg")
  2. OPEN READ-ONLY

 
该命令只输出princ语句,但没有打开任何文件。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 06:03 , Processed in 0.803218 second(s), 72 queries .

© 2020-2025 乐筑天下

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