.BAT。SCR将用于运行
嘿伙计们,我最近发现了这个帖子。。。
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文件。。。
.蝙蝠
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"
.可控硅
(load "C:\\ProStructures\\AutoCAD 2010\\Detail\\_DRG Update\\Drawn Checked and Reved By.lsp")
.LSP
(command "zoom" "e")
(command "_qsave")
(command "quit")
(princ)
)
笔记在测试设置时,我只使用了一个简单的“最大化显示”例程——我确实希望LISP例程在最终版本上执行更多任务。
非常感谢你的帮助。
PS:我不确定我是否在正确的论坛上发布了这个-请让我知道。
干杯 将其全部放在SCR文件中会更容易,该文件将在Autocad的单个会话中运行
打开dwg1 zooom e _qsave close Y
打开dwg2 zooom e _qsave close Y
打开dwg3 zooom e _qsave close Y
同时缩放所有布局选项卡
; goes trhough all layout tabs and zooms all
; By Alan H june 2011
(vl-load-com)
(command "_.pspace")
(setq curtab (getvar "Ctab"))
(setq this_dwg (vlax-get-acad-object))
(foreach d (layoutlist)
(setvar "CTAB" d)
;(vla-put-mspace this_dwg :vlax-false)
(vla-ZoomExtents this_dwg)
)
(setvar "ctab" curtab)
(princ)
嗨,比格尔,
谢谢你的回复。这是否需要我在SCR文件中列出每个DWG?我宁愿在某个目录中的所有DWG上运行该例程。
也谢谢你的缩放程序。
干杯 这会有帮助吗?否则,可以查看ScriptPro。 我也不明白你为什么要使用bat文件。他们不能告诉acad在同一个会话中打开另一个dwg,除非您篡改一些设置。不过,ScriptPro的功能大致相同,可以打开和关闭每个dwg的acad。出于这个原因(以及其他一些原因),我更喜欢AutoScript,因为它安装在acad中,并在同一acad会话中打开和关闭每个dwg。似乎跑得快多了。 嗨,李·麦克和伊尔内布。
非常感谢您的回复。
我一直使用批处理文件的唯一真正原因是因为另一个线程指示它如何完成。在我的附加软件包(ProSteel)有机会启动之前,我就遇到了其他问题,即批处理文件打开autocad>然后DWG。这导致图层、线型和颜色出现问题。
因此,快速看一下李的链接,它似乎更有希望。我打算启动autocad>initiate ProSteel>,然后在某个目录中包含的所有图形上运行脚本(希望所有图形都在一个autocad会话中)。
我现在不在工作,所以我还不能测试它。。。但我一定会通知你们的。
或者,如果你同时有任何其他建议。。。我洗耳恭听。
ps:我打算在这些DWG上运行的脚本将执行一个lisp例程,该例程将在一组不同属性的块中输入/编辑一组不同的值,并用特定的名称清除不需要的块。
例如,我们的施工图标题栏由几个不同的属性块组成,我让例行程序为每个标签指定特定值(绘制日期、修订日期、由首字母绘制等)。
我经常想,当我运行“更新”例程>时,如果能有一个对话框出现,那将是一件很棒的事。从这个对话框中,我可以选择包含我希望更新的DWG的目录(或通过选择选择多个DWG)>然后将每个所需值泵入这个对话框中的一个字段>然后打开、更新每个DWG,已保存并退出。
因此,在对话框中有以下输入字段:
-目录(选择要更新的DWG)
-提取日期
-修订日期
-检查日期
-绘图人
-审核人
-修订人
-修订检查人
目前,我有一个例程,它确实更新了所有这些字段——尽管我每次使用它时都必须根据我需要的细节来更改例程。一个对话框将是理想的,因为我可以运行程序,把所有的信息放入对话框,然后回击。
我对VBA或DCL一无所知,所以我真的不知道从哪里开始。。。你们有什么想法或建议,我可以如何使这项工作?
非常感谢你的帮助。 绘制所需dcl的图片,以及所需的值类型。您可以使用滑块,从列表中选择,是否,预定义或空白,多窗格。许多人在此处张贴图像
其次,查找帮助,它确实有如何进行dcl的示例 嗨,比格尔,谢谢你的回复。
.... 这是一个非常基本的例子,说明了我可能希望对话框的外观。基本上只是提示用户输入一个字符串值,该值将分配给每个选定DWG中每个块中的相应标记。
最后,我可能想添加更多的标记进行编辑,也许可以在例程运行时清除每个图形。
我当然会仔细看一下帮助部分,我还查看了afralisp的一些教程。网
谢谢你的帮助,伙计。 下面是创建该对话框的DCL代码:
DwgUpdate : dialog {
label = "Update Drawings";
: column {
: button { label = "Select Drawings to Update"; key = "select"; }
: boxed_column {
label = "Drawing Data";
: edit_box { label = "Drawn By"; key = "drw"; edit_width = 10; }
: edit_box { label = "Drawing Checked By"; key = "chk"; edit_width = 10; }
: edit_box { label = "Drawn Date"; key = "ddate"; edit_width = 10; }
: edit_box { label = "Drawing Checked Date"; key = "cdate"; edit_width = 10; }
}
: boxed_column {
label = "Revision Data";
: edit_box { label = "Revised By"; key = "rdrw"; edit_width = 10; }
: edit_box { label = "Revision Checked By"; key = "rchk"; edit_width = 10; }
: edit_box { label = "Revision Date"; key = "rdate"; edit_width = 10; }
}
: row {
: button { label = "Update"; key = "accept"; action = "(done_dialog 1)"; is_default = true; }
: button { label = "Cancel"; key = "cancel"; action = "(done_dialog 0)"; is_cancel = true; }
}
}
}看起来像这样:
哦,哇,非常感谢你把这些放在一起irneb。
现在,我只需要找出如何将LISP例程与之联系起来。
(setq ocmd (getvar "CMDECHO"))
(setvar "CMDECHO" 0)
(COMMAND "ZOOM" "EXTENTS")
(setq pt1 '( -500000000 -500000000 0))
(setq pt2 '( 500000000 500000000 0))
(COMMAND "-attedit" "N" "N" "pdctitle" "pdcDRAWN" "" "" "...")
(COMMAND "-attedit" "N" "N" "pdctitle" "pdcCHECK" "" "" "...")
(COMMAND "-attedit" "N" "N" "pdctitle" "pdcDATE" "" "" "...")
(COMMAND "-attedit" "N" "N" "pdctitle" "pdcDATECHK" "" "" "...")
(COMMAND "-attedit" "N" "N" "pdcrev" "pdcissueBY" "" "" "...")
(COMMAND "-attedit" "N" "N" "pdcrev" "pdcissueCKD" "" "" "...")
(COMMAND "-attedit" "N" "N" "pdcrev" "pdcissueDATE" "" "" "...")
(COMMAND "-attedit" "y" "pdctitle" "pdcdrawn" "" "w" PT1 PT2 "V" "r""MWR" "")
(COMMAND "-attedit" "y" "pdctitle" "pdcCHECK" "" "w" PT1 PT2 "V" "r""GJ" "")
(COMMAND "-attedit" "y" "pdctitle" "pdcDATE" "" "w" PT1 PT2 "V" "r""26/10/2011" "")
(COMMAND "-attedit" "y" "pdctitle" "pdcDATECHK" "" "w" PT1 PT2 "V" "r""07/11/2011" "")
(COMMAND "-attedit" "y" "pdcrev" "pdcissueBY" "" "w" PT1 PT2 "V" "r""MWR" "")
(COMMAND "-attedit" "y" "pdcrev" "pdcissueCKD" "" "w" PT1 PT2 "V" "r""GJ" "")
(COMMAND "-attedit" "y" "pdcrev" "pdcissueDATE" "" "w" PT1 PT2 "V" "r""10/11/2011" "")
(COMMAND "ZOOM" "E")
(COMMAND "UCS" "w")
(setvar "CMDECHO" ocmd)
(princ)
代码是。。。非常原始,但它确实完成了工作。我唯一的问题是pdcDATECHK标记是隐藏/不可见的,因此当试图通过选择查找和编辑该标记时,例程崩溃。其他人对如何绕过这个问题并编辑标签有什么建议吗?
谢谢你的帮助。
----------编辑----------
我刚刚发现了GATTE,我想它会解决我的ATTEDIT问题。
我将张贴修改后的代码后,我修复了它。
再次感谢。
----------编辑---------
和我刚刚发现thet-GATTE是一个快速工具,我发现很难将其融入我的LISP例程。我试图把一个脚本放在一起,然后让LISP例程执行脚本。
当然,我欢迎任何简化这一程序的建议。
谢谢你的帮助。
页:
[1]
2