ymcui 发表于 2015-11-3 08:50:24

相同的函数怎么整合在一起



(defun c:+-005 ( )
(setvar "cmdecho" 0)
(setq dimobj0 (getvar 'DIMSTYLE))
(WHILE (setq sl (ssget))
(setq n 0)
(repeat (sslength sl)
      (setq dimobj1 (ssname sl n))
       (setq dimobj (entget dimobj1))
         
(if (= "DIMENSION" (cdr (assoc 0 dimobj )))
    (progn
      (command "_dimstyle" "r" "" dimobj1)
      (setvar "dimtol" 1)
      (setvar "dimalttz" 1)
      (setvar "dimtfac" 0.62)
      (setvar "dimtdec" 3 )
      (setvar "dimtzin" 8 )
      (setvar "dimtp" 0.05)
      (setvar "dimtm" 0.05)
      (command "dim" "update" dimobj1 "" "exit")
      (setvar "dimtol" 0)
    )
)
(setq n(+ 1 n))
)
(command "_dimstyle" "r"dimobj0))
)
(defun c:+-01 ( )
(setvar "cmdecho" 0)
(setq dimobj0 (getvar 'DIMSTYLE))
(WHILE (setq sl (ssget))
(setq n 0)
(repeat (sslength sl)
      (setq dimobj1 (ssname sl n))
       (setq dimobj (entget dimobj1))
         
(if (= "DIMENSION" (cdr (assoc 0 dimobj )))
    (progn
      (command "_dimstyle" "r" "" dimobj1)
      (setvar "dimtol" 1)
      (setvar "dimalttz" 1)
      (setvar "dimtfac" 0.62)
      (setvar "dimtdec" 3 )
      (setvar "dimtzin" 8 )
      (setvar "dimtp" 0.1)
      (setvar "dimtm" 0.1)
      (command "dim" "update" dimobj1 "" "exit")
      (setvar "dimtol" 0)
    )
)
(setq n(+ 1 n))
)
(command "_dimstyle" "r"dimobj0))
)
(defun c:+-015 ( )
(setvar "cmdecho" 0)
(setq dimobj0 (getvar 'DIMSTYLE))
(WHILE (setq sl (ssget))
(setq n 0)
(repeat (sslength sl)
      (setq dimobj1 (ssname sl n))
       (setq dimobj (entget dimobj1))
         
(if (= "DIMENSION" (cdr (assoc 0 dimobj )))
    (progn
      (command "_dimstyle" "r" "" dimobj1)
      (setvar "dimtol" 1)
      (setvar "dimalttz" 1)
      (setvar "dimtfac" 0.62)
      (setvar "dimtdec" 3 )
      (setvar "dimtzin" 8 )
      (setvar "dimtp" 0.15)
      (setvar "dimtm" 0.15)
      (command "dim" "update" dimobj1 "" "exit")
      (setvar "dimtol" 0)
    )
)
(setq n(+ 1 n))
)
(command "_dimstyle" "r"dimobj0))
)
(defun c:+-02 ( )
(setvar "cmdecho" 0)
(setq dimobj0 (getvar 'DIMSTYLE))
(WHILE (setq sl (ssget))
(setq n 0)
(repeat (sslength sl)
      (setq dimobj1 (ssname sl n))
       (setq dimobj (entget dimobj1))
         
(if (= "DIMENSION" (cdr (assoc 0 dimobj )))
    (progn
      (command "_dimstyle" "r" "" dimobj1)
      (setvar "dimtol" 1)
      (setvar "dimalttz" 1)
      (setvar "dimtfac" 0.62)
      (setvar "dimtdec" 3 )
      (setvar "dimtzin" 8 )
      (setvar "dimtp" 0.2)
      (setvar "dimtm" 0.2)
      (command "dim" "update" dimobj1 "" "exit")
      (setvar "dimtol" 0)
    )
)
(setq n(+ 1 n))
)
(command "_dimstyle" "r"dimobj0))
)
(defun c:+0005 ( )
(setvar "cmdecho" 0)
(setq dimobj0 (getvar 'DIMSTYLE))
(WHILE (setq sl (ssget))
(setq n 0)
(repeat (sslength sl)
      (setq dimobj1 (ssname sl n))
       (setq dimobj (entget dimobj1))
         
(if (= "DIMENSION" (cdr (assoc 0 dimobj )))
    (progn
      (command "_dimstyle" "r" "" dimobj1)
      (setvar "dimtol" 1)
      (setvar "dimalttz" 1)
      (setvar "dimtfac" 0.62)
      (setvar "dimtdec" 3 )
      (setvar "dimtzin" 8 )
      (setvar "dimtp" 0.005)
      (setvar "dimtm" 0)
      (command "dim" "update" dimobj1 "" "exit")
      (setvar "dimtol" 0)
    )
)
(setq n(+ 1 n))
)
(command "_dimstyle" "r"dimobj0))
)
(defun c:+001 ( )
(setvar "cmdecho" 0)
(setq dimobj0 (getvar 'DIMSTYLE))
(WHILE (setq sl (ssget))
(setq n 0)
(repeat (sslength sl)
      (setq dimobj1 (ssname sl n))
       (setq dimobj (entget dimobj1))
         
(if (= "DIMENSION" (cdr (assoc 0 dimobj )))
    (progn
      (command "_dimstyle" "r" "" dimobj1)
      (setvar "dimtol" 1)
      (setvar "dimalttz" 1)
      (setvar "dimtfac" 0.62)
      (setvar "dimtdec" 3 )
      (setvar "dimtzin" 8 )
      (setvar "dimtp" 0.01)
      (setvar "dimtm" 0)
      (command "dim" "update" dimobj1 "" "exit")
      (setvar "dimtol" 0)
    )
)
(setq n(+ 1 n))
)
(command "_dimstyle" "r"dimobj0))
)
(defun c:+005 ( )
(setvar "cmdecho" 0)
(setq dimobj0 (getvar 'DIMSTYLE))
(WHILE (setq sl (ssget))
(setq n 0)
(repeat (sslength sl)
      (setq dimobj1 (ssname sl n))
       (setq dimobj (entget dimobj1))
         
(if (= "DIMENSION" (cdr (assoc 0 dimobj )))
    (progn
      (command "_dimstyle" "r" "" dimobj1)
      (setvar "dimtol" 1)
      (setvar "dimalttz" 1)
      (setvar "dimtfac" 0.62)
      (setvar "dimtdec" 3 )
      (setvar "dimtzin" 8 )
      (setvar "dimtp" 0.05)
      (setvar "dimtm" 0)
      (command "dim" "update" dimobj1 "" "exit")
      (setvar "dimtol" 0)
    )
)
(setq n(+ 1 n))
)
(command "_dimstyle" "r"dimobj0))
)
(defun c:+01 ( )
(setvar "cmdecho" 0)
(setq dimobj0 (getvar 'DIMSTYLE))
(WHILE (setq sl (ssget))
(setq n 0)
(repeat (sslength sl)
      (setq dimobj1 (ssname sl n))
       (setq dimobj (entget dimobj1))
         
(if (= "DIMENSION" (cdr (assoc 0 dimobj )))
    (progn
      (command "_dimstyle" "r" "" dimobj1)
      (setvar "dimtol" 1)
      (setvar "dimalttz" 1)
      (setvar "dimtfac" 0.62)
      (setvar "dimtdec" 3 )
      (setvar "dimtzin" 8 )
      (setvar "dimtp" 0.1)
      (setvar "dimtm" 0)
      (command "dim" "update" dimobj1 "" "exit")
      (setvar "dimtol" 0)
    )
)
(setq n(+ 1 n))
)
(command "_dimstyle" "r"dimobj0))
)
(defun c:+02 ( )
(setvar "cmdecho" 0)
(setq dimobj0 (getvar 'DIMSTYLE))
(WHILE (setq sl (ssget))
(setq n 0)
(repeat (sslength sl)
      (setq dimobj1 (ssname sl n))
       (setq dimobj (entget dimobj1))
         
(if (= "DIMENSION" (cdr (assoc 0 dimobj )))
    (progn
      (command "_dimstyle" "r" "" dimobj1)
      (setvar "dimtol" 1)
      (setvar "dimalttz" 1)
      (setvar "dimtfac" 0.62)
      (setvar "dimtdec" 3 )
      (setvar "dimtzin" 8 )
      (setvar "dimtp" 0.2)
      (setvar "dimtm" 0)
      (command "dim" "update" dimobj1 "" "exit")
      (setvar "dimtol" 0)
    )
)
(setq n(+ 1 n))
)
(command "_dimstyle" "r"dimobj0))
)
(defun c:-0005 ( )
(setvar "cmdecho" 0)
(setq dimobj0 (getvar 'DIMSTYLE))
(WHILE (setq sl (ssget))
(setq n 0)
(repeat (sslength sl)
      (setq dimobj1 (ssname sl n))
       (setq dimobj (entget dimobj1))
         
(if (= "DIMENSION" (cdr (assoc 0 dimobj )))
    (progn
      (command "_dimstyle" "r" "" dimobj1)
      (setvar "dimtol" 1)
      (setvar "dimalttz" 1)
      (setvar "dimtfac" 0.62)
      (setvar "dimtdec" 3 )
      (setvar "dimtzin" 8 )
      (setvar "dimtp" 0)
      (setvar "dimtm" 0.005)
      (command "dim" "update" dimobj1 "" "exit")
      (setvar "dimtol" 0)
    )
)
(setq n(+ 1 n))
)
(command "_dimstyle" "r"dimobj0))
)
(defun c:-001 ( )
(setvar "cmdecho" 0)
(setq dimobj0 (getvar 'DIMSTYLE))
(WHILE (setq sl (ssget))
(setq n 0)
(repeat (sslength sl)
      (setq dimobj1 (ssname sl n))
       (setq dimobj (entget dimobj1))
         
(if (= "DIMENSION" (cdr (assoc 0 dimobj )))
    (progn
      (command "_dimstyle" "r" "" dimobj1)
      (setvar "dimtol" 1)
      (setvar "dimalttz" 1)
      (setvar "dimtfac" 0.62)
      (setvar "dimtdec" 3 )
      (setvar "dimtzin" 8 )
      (setvar "dimtp" 0)
      (setvar "dimtm" 0.01)
      (command "dim" "update" dimobj1 "" "exit")
      (setvar "dimtol" 0)
    )
)
(setq n(+ 1 n))
)
(command "_dimstyle" "r"dimobj0))
)
(defun c:-005 ( )
(setvar "cmdecho" 0)
(setq dimobj0 (getvar 'DIMSTYLE))
(WHILE (setq sl (ssget))
(setq n 0)
(repeat (sslength sl)
      (setq dimobj1 (ssname sl n))
       (setq dimobj (entget dimobj1))
         
(if (= "DIMENSION" (cdr (assoc 0 dimobj )))
    (progn
      (command "_dimstyle" "r" "" dimobj1)
      (setvar "dimtol" 1)
      (setvar "dimalttz" 1)
      (setvar "dimtfac" 0.62)
      (setvar "dimtdec" 3 )
      (setvar "dimtzin" 8 )
      (setvar "dimtp" 0)
      (setvar "dimtm" 0.05)
      (command "dim" "update" dimobj1 "" "exit")
      (setvar "dimtol" 0)
    )
)
(setq n(+ 1 n))
)
(command "_dimstyle" "r"dimobj0))
)
(defun c:-01 ( )
(setvar "cmdecho" 0)
(setq dimobj0 (getvar 'DIMSTYLE))
(WHILE (setq sl (ssget))
(setq n 0)
(repeat (sslength sl)
      (setq dimobj1 (ssname sl n))
       (setq dimobj (entget dimobj1))
         
(if (= "DIMENSION" (cdr (assoc 0 dimobj )))
    (progn
      (command "_dimstyle" "r" "" dimobj1)
      (setvar "dimtol" 1)
      (setvar "dimalttz" 1)
      (setvar "dimtfac" 0.62)
      (setvar "dimtdec" 3 )
      (setvar "dimtzin" 8 )
      (setvar "dimtp" 0)
      (setvar "dimtm" 0.1)
      (command "dim" "update" dimobj1 "" "exit")
      (setvar "dimtol" 0)
    )
)
(setq n(+ 1 n))
)
(command "_dimstyle" "r"dimobj0))
)
(defun c:-02 ( )
(setvar "cmdecho" 0)
(setq dimobj0 (getvar 'DIMSTYLE))
(WHILE (setq sl (ssget))
(setq n 0)
(repeat (sslength sl)
      (setq dimobj1 (ssname sl n))
       (setq dimobj (entget dimobj1))
         
(if (= "DIMENSION" (cdr (assoc 0 dimobj )))
    (progn
      (command "_dimstyle" "r" "" dimobj1)
      (setvar "dimtol" 1)
      (setvar "dimalttz" 1)
      (setvar "dimtfac" 0.62)
      (setvar "dimtdec" 3 )
      (setvar "dimtzin" 8 )
      (setvar "dimtp" 0)
      (setvar "dimtm" 0.2)
      (command "dim" "update" dimobj1 "" "exit")
      (setvar "dimtol" 0)
    )
)
(setq n(+ 1 n))
)
(command "_dimstyle" "r"dimobj0))
)谢谢

caaooo 发表于 2015-11-3 09:39:16

可以考虑用mapcar命令整合啊

llsheng_73 发表于 2015-11-3 23:32:02

本帖最后由 llsheng_73 于 2015-11-3 23:50 编辑

(defun tt(a b)
(setvar "cmdecho" 0)
(setq dimobj0 (getvar 'DIMSTYLE))
(WHILE(setq n 0 sl(ssget))
    (repeat(sslength sl)
      (setq dimobj1(ssname sl n)
            n(+ 1 n))
(if(= "DIMENSION"(cdr(assoc 0(entget dimobj1))))
    (progn
      (command "_dimstyle" "r" "" dimobj1)
      (setvar "dimtol" 1)
      (setvar "dimalttz" 1)
      (setvar "dimtfac" 0.62)
      (setvar "dimtdec" 3 )
      (setvar "dimtzin" 8 )
      (setvar "dimtp" a)
      (setvar "dimtm" b)
      (command "dim" "update" dimobj1 "" "exit")
      (setvar "dimtol" 0)
    )))
    (command "_dimstyle" "r"dimobj0))
(princ)
)
(setq *lsp(vl-filename-mktemp nil nil".lsp")*lspf(open *lsp"w"))
(mapcar'(lambda(x y)(write-line(strcat"(defun c:"x"()(apply'tt'"(vl-princ-to-string y)"))")*lspf))
       '("+-005""+-01""+-015""+-02""+0005""+001""+005""+01""+02""-02""-01""-001""-005""-0005")
       '((0.005 0.005)(0.1 0.1)(0.15 0.15)(0.2 0.2)(0.005 0)(0.01 0)
         (0.05 0)(0.1 0)(0.2 0)(0 0.2)(0 0.1)(0 0.01)(0 0.05)(0 0.005)))
(close *lspf)
(load *lsp)
(vl-file-delete *lsp)
(setq *lsp'nil *lspf'nil)
看起来象是问题给你解决了,因为你不希望写一万个只有两个具体数值不同的程序,这点你已经意识到了!
但这样解决问题之后,最后你可能因为会用到一万种不同的参数而拥有了一万个命令。。。你希望如此或者你觉得这样的结果很好?
说少一点吧,假如有个程序输入1,然后选择一条线,这条线会被旋转1度,输入90,选择一根线,相应的旋转90度,而这1和90都是命令!这跟你目前的程序十分相似并且你觉得很方便?但是,通常是需要360度都能转,方向还可能不一样,那是不是要写720个程序?就算写720个程序也还不够,因为不是整度没法旋转不是?
办法应该是写一个命令,接受不同的参数来完成它...这点你可以上边那个tt函数作为子函数,自己另外写个参数来接受输入,然后调用它,不然那不应该被叫作程序

ymcui 发表于 2015-11-4 11:18:01

谢谢:llsheng_73的帮助
页: [1]
查看完整版本: 相同的函数怎么整合在一起