说了谁懂721 发表于 2015-11-2 14:53:31

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

(defun c:30 (/ GR LST PT)
(setqlst
   (entget
   (entmakex
       (list
         '(0 . "LINE")
         (cons 8 (getvar "CLAYER"))
         (cons 10
         (setq pt (getpoint "\n Specify the first point"))
         )
         (cons 11 pt)
       )
   )
   )
)
(princ "\n Specify the second point")
(while (and (setq gr (grread 5)) (= (car gr) 5))
    (entmod
      (subst
(cons 11 (polar pt (/ pi 6) (distance pt (cadr gr))))
(assoc 11 lst)
lst
      )
    )
    (entupd (cdr (assoc -1 lst)))
)
)

(defun c:45 (/ GR LST PT)
(setqlst
   (entget
   (entmakex
       (list
         '(0 . "LINE")
         (cons 8 (getvar "CLAYER"))
         (cons 10
         (setq pt (getpoint "\n Specify the first point"))
         )
         (cons 11 pt)
       )
   )
   )
)
(princ "\n Specify the second point")
(while (and (setq gr (grread 5)) (= (car gr) 5))
    (entmod
      (subst
(cons 11 (polar pt (/ pi 4) (distance pt (cadr gr))))
(assoc 11 lst)
lst
      )
    )
    (entupd (cdr (assoc -1 lst)))
)
)

(defun c:60 (/ GR LST PT)
(setqlst
   (entget
   (entmakex
       (list
         '(0 . "LINE")
         (cons 8 (getvar "CLAYER"))
         (cons 10
         (setq pt (getpoint "\n Specify the first point"))
         )
         (cons 11 pt)
       )
   )
   )
)
(princ "\n Specify the second point")
(while (and (setq gr (grread 5)) (= (car gr) 5))
    (entmod
      (subst
(cons 11 (polar pt (/ pi 3) (distance pt (cadr gr))))
(assoc 11 lst)
lst
      )
    )
    (entupd (cdr (assoc -1 lst)))
)
)

(defun c:120 (/ GR LST PT)
(setqlst
   (entget
   (entmakex
       (list
         '(0 . "LINE")
         (cons 8 (getvar "CLAYER"))
         (cons 10
         (setq pt (getpoint "\n Specify the first point"))
         )
         (cons 11 pt)
       )
   )
   )
)
(princ "\n Specify the second point")
(while (and (setq gr (grread 5)) (= (car gr) 5))
    (entmod
      (subst
(cons 11 (polar pt (/ pi 1.5) (distance pt (cadr gr))))
(assoc 11 lst)
lst
      )
    )
    (entupd (cdr (assoc -1 lst)))
)
)

(defun c:150 (/ GR LST PT)
(setqlst
   (entget
   (entmakex
       (list
         '(0 . "LINE")
         (cons 8 (getvar "CLAYER"))
         (cons 10
         (setq pt (getpoint "\n Specify the first point"))
         )
         (cons 11 pt)
       )
   )
   )
)
(princ "\n Specify the second point")
(while (and (setq gr (grread 5)) (= (car gr) 5))
    (entmod
      (subst
(cons 11 (polar pt (/ pi 1.2) (distance pt (cadr gr))))
(assoc 11 lst)
lst
      )
    )
    (entupd (cdr (assoc -1 lst)))
)
)

yshf 发表于 2015-11-2 15:47:20

(defun c:test (/ GR LST PT)
   (if (= (setq jdz (getint "\n角度<30>:")) nil)
       (setq jdz 30)
   )
   (setq hjdz (* pi (/ jdz 180.0)))
   (setqlst
      (entget
         (entmakex
            (list
                  '(0 . "LINE")
                   (cons 8 (getvar "CLAYER"))
                   (cons 10
                      (setq pt (getpoint "\n Specify the first point"))
                  )
                  (cons 11 pt)
         )
      )
   )
)
(princ "\n Specify the second point")
(while (and (setq gr (grread 5)) (= (car gr) 5))
    (entmod
      (subst
         (cons 11 (polar pt hjdz (distance pt (cadr gr))))
         (assoc 11 lst)
         lst
      )
    )
    (entupd (cdr (assoc -1 lst)))
)
)

说了谁懂721 发表于 2015-11-2 15:51:49

本帖最后由 说了谁懂721 于 2015-11-2 15:59 编辑

yshf 发表于 2015-11-2 15:47 static/image/common/back.gif

非常感谢!最好能保留角度命令,这样可以直接输入。
         (defun c:30 ())
         (defun c:45 ())
         (defun c:60 ())
         (defun c:120 ())
         .
         .
         .
         .

ludaweb 发表于 2015-11-2 17:59:27

(defun FixAngLine (ang / gr lst pt)
(setqlst
   (entget
   (entmakex
       (list
         '(0 . "LINE")
         (cons 8 (getvar "CLAYER"))
         (cons 10
         (setq pt (getpoint "\n Specify the first point"))
         )
         (cons 11 pt)
       )
   )
   )
)
(princ "\n Specify the second point")
(while (and (setq gr (grread 5)) (= (car gr) 5))
    (entmod
      (subst
(cons 11 (polar pt (/ pi ang) (distance pt (cadr gr))))
(assoc 11 lst)
lst
      )
    )
    (entupd (cdr (assoc -1 lst)))
)
(princ)
)
(defun c:30 () (FixAngLine 6))
(defun c:45 () (FixAngLine 4))
(defun c:60 () (FixAngLine 3))
(defun c:120 () (FixAngLine 1.5))
(defun c:150 () (FixAngLine 1.2))

yshf 发表于 2015-11-2 19:26:19

保留角度命令,那就改为:(defun c:test1()
    (if (= (setq jdz (getint "\n角度<30>:")) nil)
      (setq jdz 30)
    )
    (eval (read (strcat "(c:" (itoa jdz) ")")))
    (princ)
)
页: [1]
查看完整版本: 相同的函数怎么整合在一起?