绣红旗
很喜欢徐子尧版的《绣红旗》,用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" """")
(setqp1 (polar A1 (/ (* (+ (* 0 72) 90) pi) 180) (* 3.333 i1)))
(setqp2 (polar A1 (/ (* (+ (* 1 72) 90) pi) 180) (* 3.333 i1)))
(setqp3 (polar A1 (/ (* (+ (* 2 72) 90) pi) 180) (* 3.333 i1)))
(setqp4 (polar A1 (/ (* (+ (* 3 72) 90) pi) 180) (* 3.333 i1)))
(setqp5 (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)))
(setqp1 (polar A6 (+ (/ (* 0 72 pi) 180) (angle A6 A1)) i1))
(setqp2 (polar A6 (+ (/ (* 1 72 pi) 180) (angle A6 A1)) i1))
(setqp3 (polar A6 (+ (/ (* 2 72 pi) 180) (angle A6 A1)) i1))
(setqp4 (polar A6 (+ (/ (* 3 72 pi) 180) (angle A6 A1)) i1))
(setqp5 (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)
)
yjwht 发表于 2025-3-1 17:26
一直在忙,终于抽出一点时间学习了一下ferious的代码。做一下学习笔记:
1)原来不知道有这个chprop命令 ...
祝你一直进步 会当凌绝顶 又是一个刀迷啊..................
[*]改变 0图层生成块欢迎大佬指点提高
[*](defun c:wjx (/ v1 v2 v3 S1 ss1 x2 n ) ;绘制红旗
[*](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)))
[*]
[*](setq s1 (entlast));最后一个图元的图元名
[*];(command "layer" "m" "red_flag" "c" "1" """")
[*](command "rectang" B1 B2)
[*](command "CHPROP" (entlast) """LA" "0" "c" "1" "")
[*](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" """")
[*](setqp1 (polar A1 (/ (* (+ (* 0 72) 90) pi) 180) (* 3.333 i1)))
[*](setqp2 (polar A1 (/ (* (+ (* 1 72) 90) pi) 180) (* 3.333 i1)))
[*](setqp3 (polar A1 (/ (* (+ (* 2 72) 90) pi) 180) (* 3.333 i1)))
[*](setqp4 (polar A1 (/ (* (+ (* 3 72) 90) pi) 180) (* 3.333 i1)))
[*](setqp5 (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 "CHPROP" (entlast) """LA" "0" "c" "2" "")
[*](command "-hatch" "p" "solid" A1 "")
[*](command "CHPROP" (entlast) """LA" "0" "c" "2" "")
[*](setq n 0)
[*](while (< n 4)
[*] (setq A6 (nth n (list A2 A3 A4 A5)))
[*] (setqp1 (polar A6 (+ (/ (* 0 72 pi) 180) (angle A6 A1)) i1))
[*] (setqp2 (polar A6 (+ (/ (* 1 72 pi) 180) (angle A6 A1)) i1))
[*] (setqp3 (polar A6 (+ (/ (* 2 72 pi) 180) (angle A6 A1)) i1))
[*] (setqp4 (polar A6 (+ (/ (* 3 72 pi) 180) (angle A6 A1)) i1))
[*] (setqp5 (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 "")
[*] (command "CHPROP" (entlast) """LA" "0" "c" "2" "")
[*] (setq n (1+ n)))
[*]
[*](command "-hatch" "p" "solid" (polar (polar B1 0 i1) (/ pi 2) i1) "")
[*](command "CHPROP" (entlast) """LA" "0" "c" "1" "")
[*]
[*](setq ss1 (ssadd));ss1为自S1后生成的图元选择集
[*]
[*](while (setq s1 (entnext s1))
[*] (ssadd s1 ss1)
[*] (princ (sslength ss1))
[*])
[*]
[*](setq x2(strcat "DGWT-BLK-" (rtos (* (getvar "cdate") 1000000) 2 0)) )
[*](command "_block" x2 BB1 ss1 "")
[*](command "_insert" x2 BB1 "" "" "")
[*]
[*](command "CHPROP" (entlast) """LA" "0" "")
[*]
[*](setvar "osmode" v1)
[*](setvar "cmdecho" v2)
[*](setvar "blipmode" v3)
[*](princ)
[*])
@baitang36 目前我还没有权限加好友:handshake
感谢大家,我会继续努力,多发好作品!
同样喜欢玩的路过。
这是我以前用dynamo做的。
不错,支持一下。 不错,支持一下 虽然用不到,不得不赞 很好→很棒!很好~很棒!!很好……很棒!!!
四个小星星大小不一。 很好玩的一个程序 不错,支持一下。
liweitung 发表于 2025-2-24 08:46
四个小星星大小不一。
大小相同,是角度不一