从一月初开始,我就一直在做一个项目。我移动了“C:defun”以暴露所有子例程。以下是sub的前几行:(如果我违反了任何礼节,请道歉,对于我编程中的所有大写字母,请道歉。我是自学成才,其他任何东西对我来说都很奇怪。)
- (DEFUN INVSDRAG (QTY / RFPNT PTT PTTN PTS MODS MODSL REMOVED ADDED PICKED RE T1 MODSLP)
- (SETQ QTYS QTY)
- (WHILE (AND (< PICKED QTY) (> QTY 0))
- (SETQ RFPNT (GETPOINT "\nSpecify Starting Point")
- PTT RFPNT
- );SETQ
- (PRINC "\nDrag Box Around Modules for Inverter")
- (WHILE (AND (= 5 (CAR (SETQ PTTN (GRREAD 1 4 0)))) (< PICKED QTY))
- (SETQ PTTN (CADR PTTN))
- (IF (AND (NOT (EQUAL PTTN RFPNT 0.1)) (NOT (EQUAL PTTN PTT 1.0)))
- (PROGN
- (REDRAW)
调用来自对话框按钮,该按钮的字符串编码为“(INVSDRAG 66)”。它正确地跳转到此子节点,变量数量正确地设置为整数66,在这种情况下,或任何编码到按钮的值。
我知道子程序正在工作,因为我可以(在命令行)键入(INVSDRAG 66),它可以工作。实际上是对同一函数的相同调用。但是,当我使用vlisp ide单步执行程序时,我可以看到以下情况。它跳过(getpoint),就像它不在那里一样。字面上“指定起点”这句话甚至没有打印到命令行。变量RFPNT为零。“逆变器模块周围的拖动框”的原理语句打印到命令行。
有什么明显的东西我遗漏了吗?当从命令行调用但在程序中间崩溃时,它如何工作?我会发布你想要的尽可能多的程序。上个月我打印了37页,那是一个月前的事了。太长了,无法发布整个内容。说到上个月,我有一句话不管用。我跳过了它,因为没有它我还有很多事情要做。大约一周后,我注意到它在工作。我没有改变任何事情。“随机行为”的适当系统变量是什么? |