Autodesk帮助尝试帮助
大家好,我最近在一个lisp例程中发现了一个我称之为bug的错误,我被指控修复了这个错误。
在Autocad Map 2006中,我们有一个例程,用于准备要通过CADPPublisher运行的图形,然后执行此操作(它可以执行许多操作,从更改/冻结图层到动态修改集合文件)。
出于某种原因,高级程序员对此例程所做的更改导致每次处理地图时都会弹出“帮助”窗口,但它不会停止处理过程,它会聚焦并使处理其他任何事情变得困难。我已经逐行检查了这个过程,它似乎没有触发,有人知道可能会弹出帮助窗口的命令吗?(即插入或爆炸或其他可能的事情?) 打开新的或现有的图形(之前没有发出命令)后,按enter键启动帮助窗口。
所以可能需要额外的
Lisp文件中的""可能是原因?
也许不是。。。额外的“”将执行lisp中的最后一个命令。。
你能发代码吗?
我想我已经找到了问题所在,不过你必须忍受我的解释:
当你的进程没有返回任何东西时,你得到的是零对吗?喜欢
(command "move" "all" 0,0 1,1)
nil
问题是返回的nil似乎重复了最后一个输入?例如,如果我打开vlide,然后运行生成nil的东西,它将尝试重做vlide
Command: 'VLIDE
Command:
Command: (command "move" "all" 0,0 1,1)
nil
Command: 'VLIDE
现在我的理解是,一个函数不应该返回或产生任何东西,除非它告诉了什么,或者如果它什么也没有告诉,它将返回最后一个函数,因此它将是这样的:
(defun c:test ()
(command "move" "all" 0,0 1,1)
)
Command: TEST
nil
Command:
运行时。我被告知,一种防止这种情况的方法是将(princ)放在函数的底部,这样它将返回一个空行,而不是nil或值。然而,所使用的函数返回其所有的nil,而不管最后的(PRINC),并导致了与插入“”时描述的问题类似的问题。
我希望这是有道理的,如果是这样,我该怎么办? 我仍然不明白你的具体意思,但这是我的观点:
(defun c:测试()
(命令“move”“all”“0,0”“1,1”)
)
干杯 是的,巴迪亚恩,
当使用需要选择集输入的命令(例如“move”)时,必须在输入后包含一个“”(就像用户按下enter键一样),以告诉命令您已完成将对象添加到要移动的对象的选择集。
您会发现,许多其他功能也需要这个额外的“”,例如:“chprop”“rotate”“mirror”“copy”等等。
希望这能更好地解释问题。
干杯
李
我刚刚注意到的另一件事是,坐标规格周围没有引号。
当使用“command”函数时,该函数需要字符串作为参数,并且只会将这些字符串连续打印到命令行。因此,除非指定的参数是包含字符串的变量,否则该函数的所有输入都需要引号。
我还将在LISP的末尾使用(princ)或(prin1)来干净地退出并抑制最后一个函数的返回,因为它使事情更加专业。 李·麦克!你的解释很清楚,很有帮助。我希望能从你那里学到更多!!
谢谢 别担心,巴蒂安,如果你有任何问题,尽管问 李·麦克!你真是太好了!
我想知道你对我在Auto Lisp中遇到的问题的看法。
你能帮我指路吗?
http://www.cadtutor.biz/forum/showthread.php?p=213753#post213753
谢谢 我看了一下-希望你能尽快解决
页:
[1]