[讨论]高版本里用command调用copy时的疑问
<p>我现在用的CAD2008(估计06、07也是这样的),发现在程序里用commad调用copy命令时与绘图时直接使用copy命令是有区别的。</p><p>大家可以看两次运行的最后一句,理论上讲不应该是一致的么?</p><p></p><p>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>></p><p>命令: (command "_.copy")<br/>_.copy nil</p><p>选择对象: 指定对角点: 找到 4 个</p><p>选择对象:</p><p>指定基点或 [位移(D)/多个(M)] <位移>: *取消*<br/>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><br/>命令: copy<br/>选择对象: 指定对角点: 找到 4 个</p><p>选择对象:</p><p>当前设置: 复制模式 = 多个<br/>指定基点或 [位移(D)/模式(O)] <位移>: *取消*<br/></p> <p>2004以上版本的复制命令就是多重复制了</p><p>我想应该是这个原因吧</p> 参见:<a href="http://bbs.mjtd.com/forum.php?mod=viewthread&tid=61370">http://bbs.mjtd.com/forum.php?mod=viewthread&tid=61370</a> 第8楼 <p>回楼上:</p><p>我发帖之前看过你的程序</p><p>我现在要讨论的是为什么(command "_.copy")与copy的表现不同,而不是讨论因为它们的不同应该怎么写程序。</p><p>如果仅仅说是因为04之后desk把copy命令改为了默认多重复制,还是没有说明为什么在高版本里(command "_.copy")不是“指定基点或 [位移(D)/模式(O)] <位移>: ”</p> 本帖最后由 作者 于 2007-7-9 20:14:45 编辑 <br /><br /> <p>说到这里,已经很明显了。</p><p> 1、(command "_.copy")调用的是<font color="#0000bb" size="2">原始命令</font>。其模式默认为单次,键入M选项可以变更为连续模式。为了使LISP程序能够向上兼容,原始命令一般是不会轻易修改的。</p><p> 所以命令行显示为“指定基点或 [位移(D)/多个(M)] <位移>: ”</p><p>2、直接在命令行中键入COPY而引发的,是随着版本升级而定制的、面向手工交互用户的命令。</p><p> 由于05版及其之后desk把copy命令改为了默认多重复制。</p><p> 所以命令行显示为:“当前设置: 复制模式 = 多个<br/> 指定基点或 [位移(D)/模式(O)] <位移>: ”</p><p>3、这样做的好处就在于,不仅使手工交互用户感受到了版本升级的便捷,又让开发者不必为随版本升级而带来的代码修改而苦恼。</p><p>4、关于在LISP中调用系统命令的前缀问题 ,参见:<a href="http://zml84.blog.sohu.com/48787059.html">http://zml84.blog.sohu.com/48787059.html</a></p><p>(不知我这样说,是否可以理解。可能的话,请加QQ讨论群:33410892)</p> zml84发表于2007-7-9 20:09:00static/image/common/back.gif说到这里,已经很明显了。 1、(command \"_.copy\")调用的是原始命令。3、这样做的好处就在于,不仅使手工交互用户感受到了版本升级的便捷,又让开发者不必为随版本升级而带来的代码修改而<p>1. 这么理解可以解释得通,但不知道实际情况是否的确如此。</p><p>3. 假如上边的假设成立,个人认为,这样做实在不妥。<strong><em>zml84</em></strong>认为开发者不必为随版本升级而带来的代码修改而苦恼。我却认为如果这样的设定多了会导致编程时产生混乱。</p><p></p> 这个我以前在想着怎么写好多重复制的时候,有研究过!
;;;(prompt "\n___多重复制___c")
(defun c:c (/ cmd_orig ss)
(setq cmd_orig (getvar "cmdecho"))
(setvar "cmdecho" 0)
(if (setq ss (ssget))
(command "copy" ss "" "m")
)
(setvar "cmdecho" cmd_orig)
(princ)
)
页:
[1]