本帖最后由 ㄘ丶转裑ㄧ灬 于 2015-1-7 17:37 编辑
 - (defun c:a ()
- (command "move" "previous" "")
- (princ)
- )
用这个操作画图的时候,确实比以前快了不少,省了几次按键,
但是还有一个问题,我平常的习惯是先选择后执行的,上面的代码是只针对空选时的,
我想不管是什么情况,都只用一个命令去执行移动,
即有选择集时移动当前选择集,没有时移动上一选择集。
想了个比较笨的办法就是再执行一次。。。
 - (defun c:a ()
- (command "move" "previous" "")
- (command "move" "previous" "")
- (princ)
- )
大家别笑哈,由于是新手,只会这样写。。。但是又出现下面这样的情况。。
命令: A move
选择对象: previous 找到 1 个
选择对象:
指定基点或 [位移(D)] <位移>: move
需要点或选项关键字。
; 错误: 函数被取消
指定基点或 [位移(D)] <位移>:
指定第二个点或 <使用第一个点作为位移>: *取消*
上面这个倒是可以用,就是看着不舒服,呵呵。。。。
2014.08.28更新,参考了论坛里的代码,感谢!
http://bbs.mjtd.com/thread-88900-1-1.html
 - (defun c:a () (setq ss (ssget "i")) ;将已选中的实体加入选择集
- (if (= ss nil)
- (command "move" "previous" "") ;如果选择集为空,则执行移动上一选择集命令
- (command "move") ;如果选择集不为空,则执行正常移动命令
- )
- (princ)
- )
- ;对于复制,此方法的修改版本不能通用于所有CAD,只支持2010以上。
- ;(defun c:c ()
- ; (setq ss (ssget "i")) ;将已选中的实体加入选择集
- ; (if (= ss nil)
- ; (command "copy" "previous" "" "m") ;如果选择集为空,则执行复制上一选择集命令
- ; (command "COPY" "M") ;如果选择集不为空,则执行正常复制命令
- ; )
- ; (princ)
- ;)
- ;旧版本,通用所有CAD。
- (defun c:c ()
- (setvar "pickfirst" 1)
- (setvar "pickfirst" 0)
- (command "copy" "previous" "" "m")
- (setvar "pickfirst" 1)
- (princ)
- )
|