明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1943|回复: 6

[讨论]高版本里用command调用copy时的疑问

[复制链接]
发表于 2007-7-8 12:46 | 显示全部楼层 |阅读模式

我现在用的CAD2008(估计06、07也是这样的),发现在程序里用commad调用copy命令时与绘图时直接使用copy命令是有区别的。

大家可以看两次运行的最后一句,理论上讲不应该是一致的么?

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

命令: (command "_.copy")
_.copy nil

选择对象: 指定对角点: 找到 4 个

选择对象:

指定基点或 [位移(D)/多个(M)] <位移>:  *取消*
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
命令: copy
选择对象: 指定对角点: 找到 4 个

选择对象:

当前设置:  复制模式 = 多个
指定基点或 [位移(D)/模式(O)] <位移>: *取消*

发表于 2007-7-8 22:37 | 显示全部楼层

2004以上版本的复制命令就是多重复制了

我想应该是这个原因吧

发表于 2007-7-9 09:54 | 显示全部楼层
 楼主| 发表于 2007-7-9 12:39 | 显示全部楼层

回楼上:

我发帖之前看过你的程序

我现在要讨论的是为什么(command "_.copy")与copy的表现不同,而不是讨论因为它们的不同应该怎么写程序。

如果仅仅说是因为04之后desk把copy命令改为了默认多重复制,还是没有说明为什么在高版本里(command "_.copy")不是“指定基点或 [位移(D)/模式(O)] <位移>: ”

发表于 2007-7-9 20:09 | 显示全部楼层
本帖最后由 作者 于 2007-7-9 20:14:45 编辑

说到这里,已经很明显了。

 1、(command "_.copy")调用的是原始命令。其模式默认为单次,键入M选项可以变更为连续模式。为了使LISP程序能够向上兼容,原始命令一般是不会轻易修改的。

  所以命令行显示为“指定基点或 [位移(D)/多个(M)] <位移>: ”

2、直接在命令行中键入COPY而引发的,是随着版本升级而定制的、面向手工交互用户的命令。

  由于05版及其之后desk把copy命令改为了默认多重复制。

  所以命令行显示为:“当前设置:  复制模式 = 多个
            指定基点或 [位移(D)/模式(O)] <位移>: ”

3、这样做的好处就在于,不仅使手工交互用户感受到了版本升级的便捷,又让开发者不必为随版本升级而带来的代码修改而苦恼。

4、关于在LISP中调用系统命令的前缀问题 ,参见:http://zml84.blog.sohu.com/48787059.html

(不知我这样说,是否可以理解。可能的话,请加QQ讨论群:33410892)

 楼主| 发表于 2007-7-10 12:35 | 显示全部楼层
zml84发表于2007-7-9 20:09:00说到这里,已经很明显了。 1、(command \"_.copy\")调用的是原始命令。3、这样做的好处就在于,不仅使手工交互用户感受到了版本升级的便捷,又让开发者不必为随版本升级而带来的代码修改而

1. 这么理解可以解释得通,但不知道实际情况是否的确如此。

3. 假如上边的假设成立,个人认为,这样做实在不妥。zml84认为开发者不必为随版本升级而带来的代码修改而苦恼。我却认为如果这样的设定多了会导致编程时产生混乱。

发表于 2007-7-10 13:20 | 显示全部楼层
这个我以前在想着怎么写好多重复制的时候,有研究过!
  1. ;;;(prompt "\n___多重复制___c")
  2. (defun c:c (/ cmd_orig ss)
  3.   (setq cmd_orig (getvar "cmdecho"))
  4.   (setvar "cmdecho" 0)
  5.   (if (setq ss (ssget))
  6.     (command "copy" ss "" "m")
  7.   )
  8.   (setvar "cmdecho" cmd_orig)
  9.   (princ)
  10. )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-4 14:40 , Processed in 0.462074 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表