183017064 发表于 2025-4-11 11:34:50

发个随机改颜色的代码——娱乐用

本帖最后由 183017064 于 2025-4-29 14:29 编辑

;; 自定义颜色命令
(defun c:C1 () (setcolor 6))   ; 洋红
(defun c:C2 () (setcolor 1))   ; 红色
(defun c:C3 () (setcolor 2))   ; 黄色
(defun c:C4 () (setcolor 3))   ; 绿色
(defun c:C5 () (setcolor 4))   ; 青色
(defun c:C6 () (setcolor 5))   ; 蓝色
(defun c:C7 () (setcolor 11))    ; 棕色
(defun c:C8 () (setcolor 190))   ; 紫色
(defun c:CC () (setcolor 256))   ; 随层


;;; ======================================================
(defun setcolor (colorcode / color-palette color-name ss cnt ent)
    ;; 颜色名称对照表
    (setq color-palette
      '(
            (1 . "红色")   (2 . "黄色")   (3 . "绿色")
            (4 . "青色")   (5 . "蓝色")   (6 . "洋红")
            (11 . "棕色")    (190 . "紫色")   (256 . "随层")
      )
    )
   
    ;; 获取颜色名称
    (setq color-name
      (if (setq temp (assoc colorcode color-palette))
            (cdr temp)
            "未知颜色"
      )
    )
   
    ;; 显示颜色设置提示
    (princ
      (strcat
            "\n当前颜色: "
            color-name
            " (代码 "
            (itoa colorcode)
            ")"
      )
    )
   
    ;; 实体选择
    (if (setq ss (ssget))
      (progn
            (setq cnt 0)
            (repeat (sslength ss)
                (setq ent (ssname ss cnt))
                (entmod
                  (append
                        (entget ent)
                        (list (cons 62 colorcode))
                  )
                )
                (setq cnt (1+ cnt))
            )
            ;; 显示修改结果
            (princ
                (strcat
                  "\n成功修改 "
                  (itoa cnt)
                  " 个实体颜色为 "
                  color-name
                )
            )
      )
      ;; 空选择提示
      (princ "\n未选择任何实体,颜色已设置但未应用")
    )
    (princ) ; 静默退出
)

;;; ======================================================
(princ "\n颜色快捷命令加载成功 (C1-C8/CC)")
(princ)
(defun RandomColor (/ ent color-list) ; 随机颜色命令
    (setq color-list '(
      40    ;
      201   ;
      11    ;
      110   ;
      160   ;
      212   ;
    )) ; 预置颜色
    (while (setq ent (car (entsel "\n选实体: ")))
      (entmod            ; 关键修改语句
            (append
                (entget ent)
                (list (cons 62 (nth (rem (getvar "MILLISECS") (length color-list)) color-list)))
(defun RandomColorall (/ ent) ; 随机颜色命令
    (while (setq ent (car (entsel "\n选实体: ")))
      (entmod
            (append
                (entget ent)
                (list (cons 62 (1+ (rem (getvar "MILLISECS") 255))))
            )
      )
    )
    (princ)
)作为一个子程序用,当选用一个元素作为基准的话,可以清楚的表达一下。实用性可有可无,添加一点制图的趣味性。(PS:个人认为)

yjwht 发表于 2025-4-11 15:29:19

都试了,前者在color-list中随机颜色,后者在1~255中随机颜色。

magicheno 发表于 2025-4-11 17:23:07

感谢大佬分享

MZ_li 发表于 2025-4-12 09:04:47

感谢大佬分享

jkop 发表于 2025-4-12 10:16:57

娱乐性,还能兼做入门学习用!

season_88 发表于 2025-4-12 21:05:56

谢谢大佬分享

183017064 发表于 2025-4-13 20:35:53

jkop 发表于 2025-4-12 10:16
娱乐性,还能兼做入门学习用!

我也没想那么多,就是想,当我们选择一个元素作为基准的时候,能不能清楚一点。
页: [1]
查看完整版本: 发个随机改颜色的代码——娱乐用