本帖最后由 zhynt 于 2011-7-23 11:06 编辑
这个怎么样?
- (defun zx (pt ang / pt1 pt2 pt3 pt4 sen)
- (setq pt1 pt
- pt2 (polar pt1 (+ ang (* 0.25 pi)) (* (sqrt 2) 3))
- pt3 (polar pt2 (+ ang (* 0.75 pi)) (* (sqrt 2) 3))
- pt4 (polar pt3 (+ ang (* 0.25 pi)) (* (sqrt 2) 3))
- )
- (command "PLINE" pt1 pt2 pt3 pt4 "")
- (setq sen (entlast))
- (command "change" sen "" "p" "c" 1 "")
- (command "copy" sen "" pt1 (polar pt1 ang 3))
- (command "copy" sen "" pt1 (polar pt1 ang 6))
- )
- (defun c:jlb ( )
- (command "undo" "group")
- (setvar "osmode" 255)
- (setvar "cmdecho" 0)
- (setq p1 (getpoint "\n输入九厘板第一点:"))
- (setq p2 (getpoint p1 "\n输入九厘板下一点:"))
- (setvar "osmode" 0)
- (command "line" p1 p2 "")
- (setq ang (angle p1 p2))
- (setq ang1 (+ ang (* pi 0.5)))
- (setq ec (entlast))
- (command "change" ec "" "p" "c" 2 "")
- (command "line" (polar p1 ang1 9) (polar p2 ang1 9) "")
- (setq ec1 (entlast))
- (command "change" ec1 "" "p" "c" 2 "")
- (command "line" (polar p1 ang1 3) (polar p2 ang1 3) "")
- (setq ec3 (entlast))
- (command "change" ec3 "" "p" "c" 1 "")
- (command "line" (polar p1 ang1 6) (polar p2 ang1 6) "")
- (setq ec3 (entlast))
- (command "change" ec3 "" "p" "c" 1 "")
- (setq dist (distance p1 p2)
- ang (angle p1 p2)
- )
- (if (and (<= dist 39) (> dist 9))
- (zx (polar p1 ang (/ (- dist 9) 2)) ang)
- (progn (setq n (fix (/ dist 39)))
- (repeat n (zx (polar p1 ang (+ (* (1- n) 9)(* n 30))) ang) (setq n (1- n)))
- )
- )
- (setvar "osmode" 255)
- (command "undo" "end")
- (princ
- "\n本程序改编于燕川布衣,有问题及时与他或她联系.\nQQ:112100528"
- )
- (princ) ;静默退出
- )
|