friendship 发表于 2015-9-24 20:43:25

新手编了一个小小程序,有个功能实现不了,请指点

本帖最后由 friendship 于 2015-9-24 20:44 编辑

(defun c:RO (/ cmdeo ssent bspt rodeg)
(setq cmdeo (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setvar "angdir" 0)
   (cond ((setq ssent (ssget))
   (initget 1)
(setq bspt (getpoint "\r选择基点:"))
   (initget 1)
(while (and(setq rodeg (getreal "\r正方向为逆时针,请输入旋转角度:")))
    (vl-cmdf ".rotate" ssent "" bspt rodeg))))
(setvar "cmdecho" cmdeo)(princ))
想增加一个功能
想实现1.输入角度时,第一次给个数值,以后如果为空,则角度和刚刚输入的一致,如果中间输入其它角度值,则后面的会与刚刚输入的保持一到。
2.如果第一次输入的角度也为空时,则读取上次输入的数据。

lucas_3333 发表于 2015-9-24 20:54:33

如果想要关掉CAD后, 再次开启还能记住上次的值, 用环境变量 即可, 或者写注册表 ,一个原理, 都是存于注册表中 , 如果关掉后不需记住,用全局变量即可,

lucas_3333 发表于 2015-9-24 21:00:13

本帖最后由 lucas_3333 于 2015-12-8 11:48 编辑

看看这里
二楼,G版就是用的环境变量

琴剑江山_10184 发表于 2015-9-25 09:54:38

本帖最后由 琴剑江山_10184 于 2015-9-25 11:22 编辑

(defun c:tt (/ BSPT CMDEO RODEG RRO SSENT)
(defun ros (ssent bspt rodeg)
    (vl-cmdf ".rotate" ssent "" bspt rodeg)
)
(setq cmdeo (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setvar "angdir" 0)
(if (setq ssent (ssget))
    (progn (setq bspt (getpoint "\r选择基点:"))
   (if (/= (getvar 'USERI1) 0)
       (setq rro (getvar 'USERI1))
       (setq rro 30)
   )
   (andbspt
    (setq
      rodeg(getreal (strcat "\n正方向为逆时针,请输入旋转角度<"
         (rtos rro 2 2)
         ">:"
         )
      )
    )
   )
   (if (null rodeg)
       (setq rodeg rro)
       (setvar 'USERI1 rodeg)
   )
   (and bspt (vl-cmdf ".rotate" ssent "" bspt rodeg))
   (terpri)
   (andssent
    bspt
    rodeg
    (princ "\n按鼠标左键退出 或按空格键接着旋转")
    (setq bbspt
          crodeg
    )
    (while (and (if(not (= (car (grread nil 2)) 3))
            (setq a ssent)
          )
          b
          c
         )
      (ros a b c)
    )
   )
    )
)
(setvar "cmdecho" cmdeo)
(princ)
)

xyp1964 发表于 2015-9-25 11:00:49

(defun c:tt ()
(setq ang (Uangle 3 "" "旋转角度<输入或鼠标直接量取>" ang nil))
(if (and (setq ss (ssget))
           (setq p0 (getpoint "\r选择基点:"))
      )
    (vl-cmdf ".rotate" ss "" p0 (* (/ ang pi) 180.0))
)
(princ)
)

429014673 发表于 2015-9-25 14:16:29

CAD不是自带这个功能了吗,还搞得这么复杂

vladimir 发表于 2020-12-8 17:30:03

新手的程序往往都是很重要的。
页: [1]
查看完整版本: 新手编了一个小小程序,有个功能实现不了,请指点