很喜欢徐子尧版的《绣红旗》,用lisp编写了一段绣红旗代码,练习之作。还让豆包AI配诗一首,感觉还不错:
绣红旗志
铁窗难锁赤心昂,丝线穿针绣锦章。
五星闪耀红旗展,热血千秋映曙光。
 - (defun c:yt_f6 (/ v1 v2 v3) ;绘制红旗
- (setq v1 (getvar "osmode"))
- (setq v2 (getvar "cmdecho"))
- (setq v3 (getvar "blipmode"))
- (setq BB1 (getpoint "\n 指定红旗一个角点:"))
- (setq BB2 (getpoint BB1 "\n 指定红旗对角角点:"))
- (setq B1 (mapcar 'min BB1 BB2))
- (setq B2 (mapcar 'max BB1 BB2))
- (setvar "osmode" 0)
- (setvar "cmdecho" 0)
- (setvar "blipmode" 0)
- (setq i1 (min (/ (- (car B2) (car B1)) 30) (/ (- (cadr B2) (cadr B1)) 20)))
- (setq B2 (polar (polar B1 0 (* 30 i1)) (/ pi 2) (* 20 i1)))
- (command "layer" "m" "red_flag" "c" "1" """")
- (command "rectang" B1 B2)
- (setq A1 (polar (polar B1 0 (* 5 i1)) (/ pi 2) (* 15 i1)))
- (setq A2 (polar (polar B1 0 (* 10 i1)) (/ pi 2) (* 18 i1)))
- (setq A3 (polar (polar B1 0 (* 12 i1)) (/ pi 2) (* 16 i1)))
- (setq A4 (polar (polar B1 0 (* 12 i1)) (/ pi 2) (* 13 i1)))
- (setq A5 (polar (polar B1 0 (* 10 i1)) (/ pi 2) (* 11 i1)))
- (command "layer" "m" "yellow_flag" "c" "2" """")
- (setq p1 (polar A1 (/ (* (+ (* 0 72) 90) pi) 180) (* 3.333 i1)))
- (setq p2 (polar A1 (/ (* (+ (* 1 72) 90) pi) 180) (* 3.333 i1)))
- (setq p3 (polar A1 (/ (* (+ (* 2 72) 90) pi) 180) (* 3.333 i1)))
- (setq p4 (polar A1 (/ (* (+ (* 3 72) 90) pi) 180) (* 3.333 i1)))
- (setq p5 (polar A1 (/ (* (+ (* 4 72) 90) pi) 180) (* 3.333 i1)))
- (command "pline" p1 (polar p1 (angle p1 p3) (* (distance p1 p3) 0.382))
- p2 (polar p2 (angle p2 p4) (* (distance p2 p4) 0.382))
- p3 (polar p3 (angle p3 p5) (* (distance p3 p5) 0.382))
- p4 (polar p4 (angle p4 p1) (* (distance p4 p1) 0.382))
- p5 (polar p5 (angle p5 p2) (* (distance p5 p2) 0.382))
- "c")
- (command "-hatch" "p" "solid" A1 "")
- (setq n 0)
- (while (< n 4)
- (setq A6 (nth n (list A2 A3 A4 A5)))
- (setq p1 (polar A6 (+ (/ (* 0 72 pi) 180) (angle A6 A1)) i1))
- (setq p2 (polar A6 (+ (/ (* 1 72 pi) 180) (angle A6 A1)) i1))
- (setq p3 (polar A6 (+ (/ (* 2 72 pi) 180) (angle A6 A1)) i1))
- (setq p4 (polar A6 (+ (/ (* 3 72 pi) 180) (angle A6 A1)) i1))
- (setq p5 (polar A6 (+ (/ (* 4 72 pi) 180) (angle A6 A1)) i1))
- (command "pline" p1 (polar p1 (angle p1 p3) (* (distance p1 p3) 0.382))
- p2 (polar p2 (angle p2 p4) (* (distance p2 p4) 0.382))
- p3 (polar p3 (angle p3 p5) (* (distance p3 p5) 0.382))
- p4 (polar p4 (angle p4 p1) (* (distance p4 p1) 0.382))
- p5 (polar p5 (angle p5 p2) (* (distance p5 p2) 0.382))
- "c")
- (command "-hatch" "p" "solid" A6 "")
- (setq n (1+ n)))
- (command "layer" "m" "red_flag" "c" "1" """")
- (command "-hatch" "p" "solid" (polar (polar B1 0 i1) (/ pi 2) i1) "")
- (setvar "osmode" v1)
- (setvar "cmdecho" v2)
- (setvar "blipmode" v3)
- (princ)
- )
|