xyp1964 发表于 2011-2-26 18:01:57

(defun c:tt (/ pt sc ss)
(defun ureal (bit kwd msg def / inp)
    (if        def
      (setq msg        (strcat "\n" msg "<" (rtos def 2) ">: ")
          bit        (* 2 (fix (/ bit 2)))
      )
      (setq msg (strcat "\n" msg ": "))
    )
    (initget bit kwd)
    (setq inp (getreal msg))
    (if        inp
      inp
      def
    )
)
(setvar "CMDECHO" 0)
(setq NO1 (UREAL 7 "" "缩放值" NO1))
(princ "\n选择缩放实体<退出>: ")
(while (and (setq ss (ssget))
              (setq pt (getpoint "\n指定一点<退出>: "))
       )
    (command ".scale" "non" ss "" pt (/ 1.0 NO1))
    (princ "\n选择缩放实体<退出>: ")
)
(setvar "CMDECHO" 1)
(princ)
)

hhh454 发表于 2011-2-28 10:26:12

回复 xyp1964 的帖子

谢谢院长,感谢。

hhh454 发表于 2011-2-28 10:28:05

回复 guankuiwu 的帖子

这个代码的功能和sc一样,就是省去了每次都要输入比例值。

669423907 发表于 2011-4-7 23:17:09

都是好程序啊!
不知能否做到连续缩放呢?

daiguafan 发表于 2011-4-8 21:38:21

呵呵,学习了,谢谢

先进者 发表于 2012-4-11 23:41:57

本帖最后由 先进者 于 2012-4-11 23:43 编辑

;角度阵列程序;(2005.8.5胡晓航(Angle array routine),
(defun C:AAR ( / ss ang bp cnt dist d)
(PRINC "\n 角度阵列 ")
(cond
    ((setq ss (ssget))
       (initget 1)
       (setq bp (getpoint "\n基点: "))
       (initget 1)
       (setq ang
         (getangle bp "\n阵列方向: "))
         (initget 7)
         (setq dist
         (getdist "\n对象间距: "))
         (initget 7)
         (setq cnt (getint "\n对象个数: "))
         (setq d 0.0)
         (setvar "cmdecho" 0)
         (command "_.undo" "_g"
                  "_.copy" ss "" "_m" bp)
         (repeat (1- cnt)
         (command
               (polar bp ang (setq d (+ d dist)))))
               (command "" "_.undo" "_e")
      )
      )
      (princ)
)


能不能帮我在对象间距和对象个数那里加个记忆功能

xyp1964 发表于 2012-4-12 08:02:02

;; 角度阵列程序需要e派工具箱的支持
(defun C:tt (/ ss bp d)
(setq        ang(Uangle 1 "" "阵列方向<输入或鼠标直接量取>" ang nil)
        dist (Udist 1 "" "间距<输入或鼠标直接量取>" dist nil)
        cnt(Uint 7 "" "次数" cnt)
)
(PRINC "\n选择实体: ")
(if (setq ss (ssget))
    (progn
      (setq bp '(0 0)
          d0.0
      )
      (command "_.copy" ss "" "_m" bp)
      (repeat (1- cnt)
        (command
          (polar bp ang (setq d (+ d dist)))
        )
      )
      (command "")
    )
)
(princ)
)

露草 发表于 2012-4-12 18:49:59

这个应该比较简单啊不过每次要按次确定 也是麻烦

xyp1964 发表于 2012-4-12 21:13:53


;; 参数相对多时,还是用对话框方式比较方便

;; 角度阵列需要e派工具箱的支持
(defun c:tt (/ ilst)
(cmdla0)
(defun main-pro (/ ss bp d)
    (PRINC "\n选择实体: ")
    (if (setq ss (ssget))
      (progn
(setq bp '(0 0)
       d0.0
)
(command "_.copy" ss "" "_m" bp)
(repeat (1- cnt)
   (command
   (polar bp (xyp-d2r ang) (setq d (+ d dist)))
   )
)
(command "")
      )
    )
)
(xyp-initSet '(ang dist cnt) '(30. 1000. 6))
(setq ilst '(("" "参数" ":boxed_column{")
      ("ang" "阵列方向" "real" "12")
      ("dist" "间距" "real" "12")
      ("cnt" "次数" "int" "12")
      "spacer;"
      "}"
       )
)
(if (= (xyp-Dcl-Init Ilst "【角度阵列】" t) 1)
    (main-pro)
)
(cmdla1)
)

langjs 发表于 2012-4-13 01:03:46

我一般带记忆功能这样实现的,代码比较容易懂,其中 scalebak 为全局变量
(if (null scalebak)(setq scalebak 100.0))
(if (setq s (getreal (strcat "\n比例值<" (rtos scalebak 2 2) ">:")))
(setq scalebak s)
)
页: 1 [2] 3
查看完整版本: 怎么样给我的代码增加记忆功能