仍然没有回复,但那又怎样。以下是我的想法:
- ; Grrr
- ; got the original grread example from: CAB, posted by fixo
- ; Grread + RGB
- ; 1. Select objects to change their truecolour
- ; 2. Specify colour increment value
- ; 3. Press [R/G/B] keys to manipulate the truecolor of the selection, [T] for transparency, [X] key to exit, [TAB] to reverse the increment
- (defun C:Grread+RGB ( / go SS ent vla-obj oColor tRed tGreen tBlue tTransparency oldcmdecho inc check)
- (defun *error* ( msg )
- (if loopFlag (setq loopFlag nil))
- (if go (setq go nil))
- (if oldcmdecho (setvar 'CMDECHO oldcmdecho))
- (if (not (member msg '("Function cancelled" "quit / exit abort")))
- (princ (strcat "\nError: " msg))
- )
- (princ)
- )
- (setq oldcmdecho (getvar 'CMDECHO))
- (setvar 'CMDECHO 0)
- (setq check T)
- (if (not inc) (setq inc 5))
- (initget (+ 2 4))
- (while check
- (setq inc (cond ((getint (strcat "\nSpecify colour increment value: <" (itoa inc) ">: "))) ( inc )))
- (cond
- ( (>= inc 255)
- (princ "\nThe increment must be below 255 !")
- )
- ( (<= inc 0)
- (princ "\nThe increment must be above 0 !")
- )
- (T
- (setq check nil)
- )
- )
- );while
- (if (not inc) (setq inc 5))
- (setq go T)
- (while go
- (if
- (and
- (princ "\nSelect objects to change their truecolour: ")
- (setq SS (ssget "_:L"))
- )
- (progn
-
-
- (setq tRed 0)
- (setq tGreen 0)
- (setq tBlue 0)
- (setq tTransparency 0)
-
- (princ "\nPress [R/G/B] keys to manipulate the truecolor of the selection, [T] for transparency, [X] key to exit, [TAB] to reverse the increment")
- (setq LoopFlag T)
- (while LoopFlag
- (setq UserIn (grread))
- (setq ReturnChar (cadr UserIn))
-
- (cond
- ((= ReturnChar 114) ; R
- (setq go nil)
- (setq tRed (+ tRed inc))
- (if (> tRed 255) (setq tRed 0))
- (if (< tRed 0) (setq tRed 255))
- (repeat (setq i (sslength SS)) ; iterate trought selection
- (setq ent (ssname SS (setq i (1- i)))) ; current entity
- (setq vla-obj (vlax-ename->vla-object ent))
-
- (if (vlax-property-available-p vla-obj "TrueColor" T)
- (progn
- (setq oColor (vlax-get-property vla-obj 'TrueColor))
- (vlax-invoke-method oColor 'SetRGB tRed tGreen tBlue)
- (vlax-put-property vla-obj 'TrueColor oColor)
- (vla-update vla-obj)
- )
- );if
-
- ); repeat
- (princ
- (strcat
- "\n[R]ed:" (itoa (vlax-get-property oColor 'Red))
- ", [G]reen:" (itoa (vlax-get-property oColor 'GREEN))
- ", [b]lue:" (itoa (vlax-get-property oColor 'BLUE))
- ", [T]ransparency:" (itoa tTransparency)
- ", press [X] to exit, [TAB] to reverse the increment "
- )
- )
- ) ; R
- ((= ReturnChar 103) ; G
- (setq go nil)
- (setq tGreen (+ tGreen inc))
- (if (> tGreen 255) (setq tGreen 0))
- (if (< tGreen 0) (setq tGreen 255))
- (repeat (setq i (sslength SS)) ; iterate trought selection
- (setq ent (ssname SS (setq i (1- i)))) ; current entity
- (setq vla-obj (vlax-ename->vla-object ent))
-
- (if (vlax-property-available-p vla-obj "TrueColor" T)
- (progn
- (setq oColor (vlax-get-property vla-obj 'TrueColor))
- (vlax-invoke-method oColor 'SetRGB tRed tGreen tBlue)
- (vlax-put-property vla-obj 'TrueColor oColor)
- (vla-update vla-obj)
- )
- );if
-
- ); repeat
- (princ
- (strcat
- "\n[R]ed:" (itoa (vlax-get-property oColor 'Red))
- ", [G]reen:" (itoa (vlax-get-property oColor 'GREEN))
- ", [b]lue:" (itoa (vlax-get-property oColor 'BLUE))
|