乐筑天下

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

[编程交流] 工作区备份脚本

[复制链接]

7

主题

27

帖子

20

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-6 11:08:53 | 显示全部楼层 |阅读模式
我正在尝试备份autoCAD工作区,以便安全地更改某些ACAD设置。
 
在这样做的时候,我遇到了一个小问题。如果存在具有该名称的现有工作区,那么我需要设置一个肯定答案来覆盖它,如果没有任何这样的工作区,则什么也不做。
 
错误的选择会阻止脚本进一步执行。
 
 
我通过VVA发布的代码找到了解决方案
  1. (defun C:SW ()
  2. ;;;Save WorkSpace
  3. (command "_.WorkSpace" "_Save"
  4. "[color=red]MyWorkSpace[/color]" [b];;;_ Type this your workspace name[/b]
  5. )
  6. (while (> (getvar "CMDACTIVE") 0)(command "_Y"))
  7. (princ)  
  8. )

 
我试着把它转换成脚本的一部分,但它总是挂在最后。我似乎无法找到在不结束脚本执行的情况下结束代码的方法。
 
我也试着把它分开。lsp文件并从脚本中加载它
  1. (load "G:\\...\\install.lsp")
  2. [size=4][color=red]sw[/color][/size]
  3. (vl-load-com)
  4. (vla-put-enterprisemenufile (vla-get-files
  5. (vla-get-preferences(vlax-get-acad-object)))"G:/.../Standard_001.cui")
  6. (command "*_TOOLPALETTEPATH" "G:/.../PALETTE SYSTEM")
  7. (command "workspace" "c" "tmp")
  8. (command "-toolbar" "STANDARD BLOCKS" "SHOW")
  9. (command "quit" "y")

 
但是脚本总是纠缠在lisp代码中。。。
 
 
如果我试着直接在命令行中执行它,它会很好地工作。。。
 
所以这个解决方案对我来说很难理解
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-6 11:19:29 | 显示全部楼层
对我来说效果很好。
 
如。
  1. (defun c:Test (/)
  2. (command "_.workspace" "_sa" "ALAN")
  3. (while (> (getvar "cmdactive") 0) (command "_Y"))
  4. (command "_.line")
  5. (princ)
  6. )
回复

使用道具 举报

7

主题

27

帖子

20

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-6 11:30:36 | 显示全部楼层
 
这部分代码对我来说也很好。我在将其与脚本文件结合时遇到问题。
 
如果工作区文件已经存在,则会发生这种情况
 
  1. Command: (load
  2. "G:\\Isme\\STS\\DRAFTING\\AUTOCAD_TOOLS\\Library\\Blocks_2010\\Installation\\ins
  3. tall.lsp")
  4. C:TEST
  5. Command: test
  6. _.workspace Enter workspace option
  7. [setCurrent/SAveas/Edit/Rename/Delete/SEttings/?] <setCurrent>: _sa
  8. Save Workspace as <TMP>: tmp
  9. "tmp" already exists.
  10. Do you wish to replace it? [Yes/No]? <N> _Y
  11. Command: _Y Unknown command "Y".  Press F1 for help.
  12. Command: _.line Specify first point: Specify first point: *Cancel*

 
 
如果工作区不存在,就会发生这种情况
 
  1. Command: ((load
  2. "G:\\Isme\\STS\\DRAFTING\\AUTOCAD_TOOLS\\Library\\Blocks_2010\\Installation\\ins
  3. tall.lsp")
  4. (_> test
  5. (_> (vl-load-com)
  6. (_> (vla-put-enterprisemenufile (vla-get-files
  7. (vla-get-preferences(vlax-get-acad-object)))"G:/Isme/STS/DRAFTING/AUTOCAD_TOOLS/
  8. Library/Blocks_2010/Installation/Standard_001.cui")
  9. (_> (command "*_TOOLPALETTEPATH"
  10. "G:/Isme/STS/DRAFTING/AUTOCAD_TOOLS/Library/Blocks_2010/PALETTE SYSTEM")
  11. (_> (command "workspace" "c" "tmp")
  12. (_> (command "-toolbar" "STANDARD BLOCKS" "SHOW")
  13. (_> (command "quit" "y")
  14. (_> *Cancel*
  15. ; error: Function cancelled

 
在这两种情况下,我都必须手动取消命令。如果我在代码末尾加上一个enter或空格,那也没用。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-6 11:37:25 | 显示全部楼层
这样试试。。。
 
  1. (defun c:Test (/)
  2. (command "_.workspace" "_sa" "ALAN")
  3. (while (eq (logand 1 (getvar 'cmdactive)) 1) (command "_Y"))
  4. (command "_.line")
  5. (princ)
  6. )
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-6 11:46:22 | 显示全部楼层
运气好吗?
回复

使用道具 举报

7

主题

27

帖子

20

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-6 11:51:26 | 显示全部楼层
对不起,我的工作时间刚刚结束后的职位。。。
 
我明天早上去查一下,然后告诉你
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-6 11:55:56 | 显示全部楼层
别担心。祝你好运
回复

使用道具 举报

7

主题

27

帖子

20

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-6 12:07:20 | 显示全部楼层
我删除了用于绘制线条的代码行,现在可以使用了。。
 
谢谢
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-6 12:14:51 | 显示全部楼层
是的,那只是为了演示。很高兴它起作用了。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 11:39 , Processed in 1.245198 second(s), 70 queries .

© 2020-2025 乐筑天下

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