liuhaixin88 发表于 2014-1-23 13:38:51

请求帮忙修改Z版主的一个程序

源码如下:
;参照旋转 明经 ZZXXQQ 2013.5.10 2013.5.11改
(defun c:rr ()
(setvar "CMDECHO" 0)
(if (and (princ "\n选择要旋转的物体: ")
          (setq ss (ssget))
          (setq pc (getpoint "\n旋转中心点: "))
          (setq pt (getpoint pc "\n参照角度: "))
   ) (progn
(command "_.CIRCLE" pc "non" pt)
(setq s2 (entlast))
(setq s1 (entlast) sa (ssadd))
(command "_.COPY" ss "" "0,0" "0,0")
(while (setq s1 (entnext s1)) (ssadd s1 sa))
(command "_.ROTATE" ss "" pc "R" pc pt PAUSE)
(setq yn (strcase (getstring "\n是否复制(R/<N>): ")))
(if (= yn "") (command "_.ERASE" sa ""))
(command "_.ERASE" s2 "")
))
(setvar "CMDECHO" 1)
(princ)
)

试过,当出现“否复制(R/<N>”时,无论是输入R还是N,结果好像都一样
请求修改代码,加入一个选择“是否删除源对象” 意思是旋转后是否删除源对象!
谢谢各位大哥哥的帮助!





http://bbs.mjtd.com/xwb/images/bgimg/icon_logo.png 该贴已经同步到 liuhaixin88的微博

liuhaixin88 发表于 2014-1-23 15:46:57

高手们都放假了吗?

springwillow 发表于 2014-1-23 16:24:04

本帖最后由 springwillow 于 2014-1-23 16:51 编辑

这个代码也不复杂,你啥都不输直接回车就是删除原对象,你输入任何都西都是复制。他那个表示是可以输入R来复制,回车默认是N,所以你想删除原对象直接回加就好!也可以把(if (= yn "") (command "_.ERASE" sa ""))这个改为(if (or(= yn "N")(= yn "n")) (command "_.ERASE" sa ""))

liuhaixin88 发表于 2014-1-23 16:37:46

springwillow 发表于 2014-1-23 16:24 static/image/common/back.gif
这个代码也不复杂,你啥都不输直接回车就是删除原对象,你输入任何都西都是复制。他那个表示是可以输入R来复 ...

这样改了,无论输入什么都是删除源对象了,我想要一个字母删除,一个字母保留源对象

springwillow 发表于 2014-1-23 16:40:14

liuhaixin88 发表于 2014-1-23 16:37 static/image/common/back.gif
这样改了,无论输入什么都是删除源对象了,我想要一个字母删除,一个字母保留源对象

改完了R是不删除

liuhaixin88 发表于 2014-1-23 16:44:40

springwillow 发表于 2014-1-23 16:40 static/image/common/back.gif
改完了R是不删除

我试过了,R 也是删除

springwillow 发表于 2014-1-23 16:52:47

liuhaixin88 发表于 2014-1-23 16:44 static/image/common/back.gif
我试过了,R 也是删除

改为(if (or(= yn "N")(= yn "n")) (command "_.ERASE" sa ""))。这样只有输N是删除,输入其它都不是删除了

liuhaixin88 发表于 2014-1-23 16:59:56

springwillow 发表于 2014-1-23 16:52 static/image/common/back.gif
改为(if (or(= yn "N")(= yn "n")) (command "_.ERASE" sa ""))。这样只有输N是删除,输入其它都不是删除 ...

谢谢你了

ZZXXQQ 发表于 2014-1-24 08:22:29

;参照旋转 明经 ZZXXQQ 2013.5.10 2013.5.11 2014.1.24改
(defun c:rr ()
(setvar "CMDECHO" 0)
(if (and (princ "\n选择要旋转的物体: ")
          (setq ss (ssget))
          (setq pc (getpoint "\n旋转中心点: "))
          (setq pt (getpoint pc "\n参照角度: "))
   ) (progn
(command "_.CIRCLE" pc "non" pt)
(setq s2 (entlast))
(setq s1 (entlast) sa (ssadd))
(command "_.COPY" ss "" "0,0" "0,0")
(while (setq s1 (entnext s1)) (ssadd s1 sa))
(command "_.ROTATE" ss "" pc "R" pc pt PAUSE)
(setq yn (strcase (getstring "\n是否复制(R/<N>): ")))
(if (/= yn "R") (command "_.ERASE" sa ""))
(command "_.ERASE" s2 "")
))
(setvar "CMDECHO" 1)
(princ)
)

edata 发表于 2014-1-25 11:53:54

为什么不用getkword
;参照旋转 明经 ZZXXQQ 2013.5.10 2013.5.11 2014.1.24改
(defun c:rr (/ ss pc pt s2 s1 sa yn)
(setvar "CMDECHO" 0)
(if (and (princ "\n选择要旋转的物体: ")
          (setq ss (ssget))
          (setq pc (getpoint "\n旋转中心点: "))
          (setq pt (getpoint pc "\n参照角度: "))
   )
(progn
    (command "_.CIRCLE" pc "non" pt)
    (setq s2 (entlast))
    (setq s1 (entlast) sa (ssadd))
    (command "_.COPY" ss "" "0,0" "0,0")
    (while (setq s1 (entnext s1)) (ssadd s1 sa))
    (command "_.ROTATE" ss "" pc "R" pc pt PAUSE)
    (initget "Rotate No _R N")
    (setq yn (getkword "\n是否复制(R/<N>): "))
    ;(setq yn (strcase (getstring "\n是否复制(R/<N>): ")))
    (if (/= yn "R") (command "_.ERASE" sa ""))
    (command "_.ERASE" s2 "")
    )
)
(setvar "CMDECHO" 1)
(princ)
)
页: [1] 2
查看完整版本: 请求帮忙修改Z版主的一个程序