ProgramFancier 发表于 2011-8-21 13:46:48

一石二鸟——复制与画圆快捷键二合一

在cad制图中我们经常用到画圆和复制命令。复制到命令是co、cp、Ctrl+c,这三个命令使用都不是很方便,c跟o、p相隔较远,Ctrl+c有些人可能不习惯在cad中使用。如是有些人就修改快捷键,把复制改为c,画圆改为cc。有没有更好的办法呢?我现在要的是用c既可画圆也可复制,因为这两个命令都很常用。那么,以下代码即可实现:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; c快捷键,当没有选择实体是按c为画圆;当选择实体是按c为复制。
; by: ProgramFancier2011.8.21
; Test in AutoCAD2010
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:c()
(setq ss (ssget "i")) ;将已选中的实体加入选择集
(if (= ss nil)
(command "CIRCLE") ;如果选择集为空,则执行画圆命令
(command "COPY" "M")   ;如果选择集不为空,则执行复制命令
)
(princ)
)
以上代码在 AutoCAD2010 下测试通过,在其他版本可能要稍作改动。
程序很简短,原理是在执行c命令前检查当前选择集是否为空,如果为空则执行画圆命令,如果不为空则执行复制名。要求在复制前先选择实体,这更符合我们使用复制的习惯。

lrd1861 发表于 2011-8-25 11:57:29

本帖最后由 lrd1861 于 2011-8-25 11:58 编辑

老迈修改版支持07
(defun c:c()
(setq ss (ssget "i")) ;将已选中的实体加入选择集
(if ss
    (if (> ( atof (substr (getvar "acadver") 1 4)) 17)
            (command "_.COPY" "m")   ;如果选择集不为空,则执行复制命令
            (command "_.COPY" ss "" "M")   ;如果选择集不为空,则执行复制命令
    )
    (command "_.CIRCLE") ;如果选择集为空,则执行画圆命令
)
(princ)
)

LLXXZZ 发表于 2011-8-21 18:19:15

这样是不是多了一步 选择情况 (setq ss (ssget "i"))   的操作.
思路还是不错的.

xiaxiang 发表于 2011-8-21 20:50:56

不习惯先选择实体。如果编成命令C,第一次回车指定圆心,第二次回车执行COPY,会不会好些

669423907 发表于 2011-8-21 21:06:21

本帖最后由 669423907 于 2011-8-21 21:16 编辑

这个一定要顶!让CAD更智能化!
选择对象后,按 C ,再左键,能在鼠标点粘贴吗?
手机登录中.....................

gbhsu 发表于 2011-8-21 21:24:38

顶一下,看有没有更好的方法

lrd1861 发表于 2011-8-22 08:58:31

思路不错 有待完善

longer1000 发表于 2011-8-23 08:37:27

思路不错,,,,,,,,,,,,,,,,,,,,,,

longer1000 发表于 2011-8-23 08:39:34

顶一下,思路不错

669423907 发表于 2011-8-23 22:12:16

我试着改了一下:
(defun c:c()
(setq ss (ssget "i"))       ;将已选中的实体加入选择集
(if (= ss nil)
(command "CIRCLE")          ;如果选择集为空,则执行画圆命令
(command "COPY" ss "" "m")) ;如果选择集不为空,则执行复制命令
(princ))

效果很好!
页: [1] 2 3
查看完整版本: 一石二鸟——复制与画圆快捷键二合一