相同的函数怎么整合在一起?
(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)))
)
)
(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:59 编辑
yshf 发表于 2015-11-2 15:47 static/image/common/back.gif
非常感谢!最好能保留角度命令,这样可以直接输入。
(defun c:30 ())
(defun c:45 ())
(defun c:60 ())
(defun c:120 ())
.
.
.
.
(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)) 保留角度命令,那就改为:(defun c:test1()
(if (= (setq jdz (getint "\n角度<30>:")) nil)
(setq jdz 30)
)
(eval (read (strcat "(c:" (itoa jdz) ")")))
(princ)
)
页:
[1]