乐筑天下

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

[编程交流] .BAT。SCR将用于运行

[复制链接]

77

主题

298

帖子

232

银币

后起之秀

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

铜币
394
发表于 2022-7-6 08:37:17 | 显示全部楼层 |阅读模式
嘿伙计们,
 
我最近发现了这个帖子。。。
 
http://forums.augi.com/showthread.php?t=77021
 
... 并决定试一试。
 
我希望在多个DRG上运行lisp例程,而不必将该例程添加到我的Load Application>Startup套件中,然后打开每个DRG。图纸。
 
所以我有这3个文件(.BAT、.SCR和.LSP),我可以让它们成功打开Autocad,加载并执行例程,然后保存并退出。
 
这一切都很好——但我注意到。BAT文件将打开autocad,然后关闭autocad,然后打开autocad,然后关闭autocad,等等。
 
我有一个想法,如果批处理文件打开autocad一次,然后打开一个图形>运行例程>保存并关闭图形,然后打开另一个图形>等等,过程可能会更快。
 
有人知道如何处理批处理文件,使其不会打开和关闭每个图形的autocad吗?
 
这是我的。BAT。SCR和。LSP文件。。。
 
.蝙蝠
  1. FOR %%f in (C:"ProStructures""AutoCAD 2010""Detail"\*.dwg) do start /wait C:"Program Files""AutoCAD 2010"\acad.exe "%%f" /b "C:\ProStructures\AutoCAD 2010\Detail\_DRG Update\Drawn Checked and Reved By.scr"

 
.可控硅
  1. (load "C:\\ProStructures\\AutoCAD 2010\\Detail\\_DRG Update\\Drawn Checked and Reved By.lsp")

 
.LSP
  1. (command "zoom" "e")
  2. (command "_qsave")
  3. (command "quit")
  4. (princ)
  5. )

 
笔记在测试设置时,我只使用了一个简单的“最大化显示”例程——我确实希望LISP例程在最终版本上执行更多任务。
 
非常感谢你的帮助。
 
PS:我不确定我是否在正确的论坛上发布了这个-请让我知道。
 
干杯
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 08:42:27 | 显示全部楼层
将其全部放在SCR文件中会更容易,该文件将在Autocad的单个会话中运行
打开dwg1 zooom e _qsave close Y
打开dwg2 zooom e _qsave close Y
打开dwg3 zooom e _qsave close Y
 
同时缩放所有布局选项卡
 
  1. ; goes trhough all layout tabs and zooms all
  2. ; By Alan H june 2011
  3. (vl-load-com)
  4. (command "_.pspace")
  5. (setq curtab (getvar "Ctab"))
  6. (setq this_dwg (vlax-get-acad-object))
  7. (foreach d (layoutlist)
  8.      (setvar "CTAB" d)
  9. ;(vla-put-mspace this_dwg :vlax-false)
  10.      (vla-ZoomExtents this_dwg)
  11. )
  12. (setvar "ctab" curtab)
  13. (princ)
回复

使用道具 举报

77

主题

298

帖子

232

银币

后起之秀

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

铜币
394
发表于 2022-7-6 08:45:21 | 显示全部楼层
嗨,比格尔,
 
谢谢你的回复。这是否需要我在SCR文件中列出每个DWG?我宁愿在某个目录中的所有DWG上运行该例程。
 
也谢谢你的缩放程序。
 
干杯
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:47:36 | 显示全部楼层
这会有帮助吗?否则,可以查看ScriptPro。
回复

使用道具 举报

11

主题

968

帖子

919

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2022-7-6 08:50:55 | 显示全部楼层
我也不明白你为什么要使用bat文件。他们不能告诉acad在同一个会话中打开另一个dwg,除非您篡改一些设置。不过,ScriptPro的功能大致相同,可以打开和关闭每个dwg的acad。出于这个原因(以及其他一些原因),我更喜欢AutoScript,因为它安装在acad中,并在同一acad会话中打开和关闭每个dwg。似乎跑得快多了。
回复

使用道具 举报

77

主题

298

帖子

232

银币

后起之秀

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

铜币
394
发表于 2022-7-6 08:55:32 | 显示全部楼层
嗨,李·麦克和伊尔内布。
 
非常感谢您的回复。
 
我一直使用批处理文件的唯一真正原因是因为另一个线程指示它如何完成。在我的附加软件包(ProSteel)有机会启动之前,我就遇到了其他问题,即批处理文件打开autocad>然后DWG。这导致图层、线型和颜色出现问题。
 
因此,快速看一下李的链接,它似乎更有希望。我打算启动autocad>initiate ProSteel>,然后在某个目录中包含的所有图形上运行脚本(希望所有图形都在一个autocad会话中)。
 
我现在不在工作,所以我还不能测试它。。。但我一定会通知你们的。
 
或者,如果你同时有任何其他建议。。。我洗耳恭听。
 
ps:我打算在这些DWG上运行的脚本将执行一个lisp例程,该例程将在一组不同属性的块中输入/编辑一组不同的值,并用特定的名称清除不需要的块。
 
例如,我们的施工图标题栏由几个不同的属性块组成,我让例行程序为每个标签指定特定值(绘制日期、修订日期、由首字母绘制等)。
 
我经常想,当我运行“更新”例程>时,如果能有一个对话框出现,那将是一件很棒的事。从这个对话框中,我可以选择包含我希望更新的DWG的目录(或通过选择选择多个DWG)>然后将每个所需值泵入这个对话框中的一个字段>然后打开、更新每个DWG,已保存并退出。
 
因此,在对话框中有以下输入字段:
-目录(选择要更新的DWG)
-提取日期
-修订日期
-检查日期
-绘图人
-审核人
-修订人
-修订检查人
 
目前,我有一个例程,它确实更新了所有这些字段——尽管我每次使用它时都必须根据我需要的细节来更改例程。一个对话框将是理想的,因为我可以运行程序,把所有的信息放入对话框,然后回击。
 
我对VBA或DCL一无所知,所以我真的不知道从哪里开始。。。你们有什么想法或建议,我可以如何使这项工作?
 
非常感谢你的帮助。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 08:59:32 | 显示全部楼层
绘制所需dcl的图片,以及所需的值类型。您可以使用滑块,从列表中选择,是否,预定义或空白,多窗格。许多人在此处张贴图像
 
其次,查找帮助,它确实有如何进行dcl的示例
093723hw3mv88cvkyxssv8.jpg
回复

使用道具 举报

77

主题

298

帖子

232

银币

后起之秀

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

铜币
394
发表于 2022-7-6 09:02:00 | 显示全部楼层
嗨,比格尔,谢谢你的回复。
 
093725elhzgm09uvh9wn0z.jpg
 
.... 这是一个非常基本的例子,说明了我可能希望对话框的外观。基本上只是提示用户输入一个字符串值,该值将分配给每个选定DWG中每个块中的相应标记。
 
最后,我可能想添加更多的标记进行编辑,也许可以在例程运行时清除每个图形。
 
我当然会仔细看一下帮助部分,我还查看了afralisp的一些教程。网
 
谢谢你的帮助,伙计。
回复

使用道具 举报

11

主题

968

帖子

919

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2022-7-6 09:03:07 | 显示全部楼层
下面是创建该对话框的DCL代码:
  1. DwgUpdate : dialog {
  2. label = "Update Drawings";
  3. : column {
  4.    : button { label = "Select Drawings to Update"; key = "select"; }
  5.    : boxed_column {
  6.      label = "Drawing Data";
  7.      : edit_box { label = "Drawn By"; key = "drw"; edit_width = 10; }
  8.      : edit_box { label = "Drawing Checked By"; key = "chk"; edit_width = 10; }
  9.      : edit_box { label = "Drawn Date"; key = "ddate"; edit_width = 10; }
  10.      : edit_box { label = "Drawing Checked Date"; key = "cdate"; edit_width = 10; }
  11.    }
  12.    : boxed_column {
  13.      label = "Revision Data";
  14.      : edit_box { label = "Revised By"; key = "rdrw"; edit_width = 10; }
  15.      : edit_box { label = "Revision Checked By"; key = "rchk"; edit_width = 10; }
  16.      : edit_box { label = "Revision Date"; key = "rdate"; edit_width = 10; }
  17.    }
  18.    : row {
  19.      : button { label = "Update"; key = "accept"; action = "(done_dialog 1)"; is_default = true; }
  20.      : button { label = "Cancel"; key = "cancel"; action = "(done_dialog 0)"; is_cancel = true; }
  21.    }
  22. }
  23. }
看起来像这样:
093727e4gcrzbmh6npnm6h.png
回复

使用道具 举报

77

主题

298

帖子

232

银币

后起之秀

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

铜币
394
发表于 2022-7-6 09:06:37 | 显示全部楼层
哦,哇,非常感谢你把这些放在一起irneb。
 
现在,我只需要找出如何将LISP例程与之联系起来。
 
  1. (setq ocmd (getvar "CMDECHO"))
  2. (setvar "CMDECHO" 0)
  3. (COMMAND "ZOOM" "EXTENTS")
  4. (setq pt1 '( -500000000 -500000000 0))
  5. (setq pt2 '( 500000000 500000000 0))
  6. (COMMAND "-attedit" "N" "N" "pdctitle" "pdcDRAWN" "" "" "...")
  7. (COMMAND "-attedit" "N" "N" "pdctitle" "pdcCHECK" "" "" "...")
  8. (COMMAND "-attedit" "N" "N" "pdctitle" "pdcDATE" "" "" "...")
  9. (COMMAND "-attedit" "N" "N" "pdctitle" "pdcDATECHK" "" "" "...")
  10. (COMMAND "-attedit" "N" "N" "pdcrev" "pdcissueBY" "" "" "...")
  11. (COMMAND "-attedit" "N" "N" "pdcrev" "pdcissueCKD" "" "" "...")
  12. (COMMAND "-attedit" "N" "N" "pdcrev" "pdcissueDATE" "" "" "...")
  13. (COMMAND "-attedit" "y" "pdctitle" "pdcdrawn" "" "w" PT1 PT2 "V" "r"  "MWR" "")
  14. (COMMAND "-attedit" "y" "pdctitle" "pdcCHECK" "" "w" PT1 PT2 "V" "r"  "GJ" "")
  15. (COMMAND "-attedit" "y" "pdctitle" "pdcDATE" "" "w" PT1 PT2 "V" "r"  "26/10/2011" "")
  16. (COMMAND "-attedit" "y" "pdctitle" "pdcDATECHK" "" "w" PT1 PT2 "V" "r"  "07/11/2011" "")
  17. (COMMAND "-attedit" "y" "pdcrev" "pdcissueBY" "" "w" PT1 PT2 "V" "r"  "MWR" "")
  18. (COMMAND "-attedit" "y" "pdcrev" "pdcissueCKD" "" "w" PT1 PT2 "V" "r"  "GJ" "")
  19. (COMMAND "-attedit" "y" "pdcrev" "pdcissueDATE" "" "w" PT1 PT2 "V" "r"  "10/11/2011" "")
  20. (COMMAND "ZOOM" "E")
  21. (COMMAND "UCS" "w")
  22. (setvar "CMDECHO" ocmd)
  23. (princ)

 
代码是。。。非常原始,但它确实完成了工作。我唯一的问题是pdcDATECHK标记是隐藏/不可见的,因此当试图通过选择查找和编辑该标记时,例程崩溃。其他人对如何绕过这个问题并编辑标签有什么建议吗?
 
谢谢你的帮助。
 
 
----------编辑----------
 
我刚刚发现了GATTE,我想它会解决我的ATTEDIT问题。
 
我将张贴修改后的代码后,我修复了它。
 
再次感谢。
 
----------编辑---------
 
和我刚刚发现thet-GATTE是一个快速工具,我发现很难将其融入我的LISP例程。我试图把一个脚本放在一起,然后让LISP例程执行脚本。
 
当然,我欢迎任何简化这一程序的建议。
 
谢谢你的帮助。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 09:01 , Processed in 0.535788 second(s), 74 queries .

© 2020-2025 乐筑天下

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