不是很随机,更像是六进制(基于对象的句柄):
- (defun C:test ( / pref SS accm lyrs i enx tmp )
- (and
- LM:rand LM:randrange
- (setq pref (getstring "\nLayer prefix: " t))
- (setq SS (ssget "_:L-I"))
- (setq accm (vla-GetInterfaceObject (vlax-get-acad-object) (strcat "AutoCAD.AcCmColor." (substr (getvar 'acadver) 1 2))))
- (progn (vla-put-ColorMethod accm acColorMethodByRGB) t)
- (setq lyrs (vla-get-Layers (vla-get-ActiveDocument (vlax-get-acad-object))))
- (repeat (setq i (sslength SS))
- (setq enx (entget (ssname SS (setq i (1- i)))))
- (entmod (subst (cons 8 (setq tmp (strcat pref (cdr (assoc 5 enx))))) (assoc 8 enx) enx))
- (apply 'vla-SetRGB (cons accm (mapcar 'LM:randrange '(0 0 0) '(255 255 255))))
- (vla-put-TrueColor (vla-item lyrs tmp) accm)
- )
- )
- (and (eq 'VLA-OBJECT (type accm)) (vl-catch-all-apply 'vlax-release-object (list accm)))
- (princ)
- ); defun
- (vl-load-com) (princ)
- ;; Random in Range - Lee Mac
- ;; Returns a pseudo-random integral number in a given range (inclusive)
- (defun LM:randrange ( a b )
- (+ (min a b) (fix (* (LM:rand) (1+ (abs (- a b))))))
- )
- ;; Rand - Lee Mac
- ;; PRNG implementing a linear congruential generator with
- ;; parameters derived from the book 'Numerical Recipes'
- (defun LM:rand ( / a c m )
- (setq m 4294967296.0
- a 1664525.0
- c 1013904223.0
- $xn (rem (+ c (* a (cond ($xn) ((getvar 'date))))) m)
- )
- (/ $xn m)
- )
|