xiaoyingzi 发表于 2011-6-17 17:27:06

请教,如何在lisp等待外部命令执行完后,再执行下一条lisp语句

本帖最后由 xiaoyingzi 于 2011-6-17 17:31 编辑

想请教下,如何在lisp等待外部命令执行完后,再执行下一条lisp语句
例如
(startapp "notepad.exe" (findfile "xx.lsp"))
(load "xx.lsp")
我想达到等编辑完xx.lsp后,再执行它的效果,如何实现?

Lisper 发表于 2011-6-17 17:46:36

(startapp "notepad.exe" (findfile "xx.lsp"))
(command pause)

(load "xx.lsp")

caoyin 发表于 2011-6-17 17:50:48

pause不能这样用,参考
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=87168&page=2#pid466364
11和12楼的2种方法

Andyhon 发表于 2011-6-17 17:57:58

另方
dos_exewait

(dos_exewait command )

Ref:
DOSLib
www.mcneel.com

xiaoyingzi 发表于 2011-6-17 23:20:13

本帖最后由 xiaoyingzi 于 2011-6-17 23:38 编辑

问题解决,谢谢楼上各位的热心解答,
四楼的也行,要用到doslib,另外加载doslib

现采用三楼所提到的方法之一:

(setq obj_wsh (vlax-create-object "wscript.shell"))
(setq text (strcat "notepad.exe " (findfile "xx.lsp")))
(vlax-invoke obj_wsh 'run text 5 1)
(load (findfile "xx.lsp"))
(vlax-release-object obj_wsh)
(princ)

不过感觉运行起来有点慢,有停顿感,在这之前,我采用的是很笨的方法:

(startapp(findfile "xx.bat"))
然后用xx.bat调用
notepad.exe x:\xx\xx.lsp
call x:\xx\xx.lsp.vbs"
........
最后再用xx.vbs接下来下面的
Set objCAD = GetObject(, "AutoCAD.Application")
Set ThisDrawing = objCAD.activedocument
ThisDrawing.SendCommand ("(load (findfile “"xx.lsp"”))" & vbCr)
就是这么复杂的过程,但是好像运行的速度反而还很快,没有停顿感,不知为什么



页: [1]
查看完整版本: 请教,如何在lisp等待外部命令执行完后,再执行下一条lisp语句