引用函数时,如何等待计算结果出来后,才执行下一条指令?
大概结构如下:(AA) ;AA为其它函数名
(command "line")
引用另一个函数时,
我想等待引用的计算结果出来后,才执行下一条指令。
引用时有没有等待的时间参数?要怎么写?
你用 command "delay" 延时等待一下试一试 本帖最后由 mokson 于 2020-9-18 11:19 编辑
菜卷鱼 发表于 2020-9-18 09:25
除非AA是引用的外部命令,否则一定会执行完才执行接下来的命令的
这算不算外部命令?你试一下。
(setq doc (vla-get-activedocument (vlax-get-acad-object)) sk (Vlax-Get-Or-Create-Object "WScript.Shell"))
(Vla-SendCommand doc "flatshot\nR\n\nS\n\n0,0,0\n")(Vlax-Invoke-Method sk 'Sendkeys "\n")
(setq BlkName (cdr (assoc 2 (entlast))))
总是得不到由 flatshot 生成的块对象,也许是因为 BlkName 已经定义了,而上面的 flatshot 还没有执行完成。
按 F2 看到的历史记录,也证实了这个现象:最后执行的是 flatshot 命令,与脚本的顺序相反。
以上实例需要三维实体对象,用到 sendkeys 指令,主要是想执行 flatshot 命令时,不需要人工去按下“确定”按钮。
(defun C:TT(/ n i c)
(setq n 100)
(setq i 0)
(while (< i n)
(setq i(+ 1 i))
(setq c (rem i 255))
(entmake (list '(0 . "CIRCLE") (cons 10 '(0 0 0)) (cons 40 i) (cons 62 c)))
(command "zoom" "O" (entlast) "")
(princ (strcat "\n正在进行..." (itoa i)))
(command "delay" 50)
)
(princ)
(alert "\所有圆画完!")
) if 存在呀就执行 放心,(AA) 不完成,不会执行(command "line") wzg356 发表于 2020-9-18 08:58
放心,(AA) 不完成,不会执行(command "line")
我的情况刚才相反,先执行完 (command "line") , (AA) 还没有执行完。
所以有此一问。 除非AA是引用的外部命令,否则一定会执行完才执行接下来的命令的 代码写错了。。。
(setq BlkName (cdr (assoc 2(entget (entlast))))) 菜卷鱼 发表于 2020-9-18 11:02
代码写错了。。。
(setq BlkName (cdr (assoc 2(entget (entlast)))))
谢谢指正,但是还是索引不到生成的块对象,始终索引到的是实体对象。
因为这个在前,块对象在后。执行的顺序与脚本不一致。
页:
[1]
2