home *** CD-ROM | disk | FTP | other *** search
- REM Selects all the Objects of a color. It then applies a fill
- REM Select.csc July 20, 1995
-
- REM This is set up for RGB color mode. All the objects must be drawn in RGB for this to work.
- REM This is just an example of a search and replace script.
- REM This script could be easily edited to do something other than apply a uniform fill
-
- CONST ColorType = 5 'RGB
- DIM NumObjectsInDrawing&
- DIM Matches&(100)
- DIM RedTest AS BOOLEAN
- DIM GreenTest AS BOOLEAN
- DIM BlueTest AS BOOLEAN
-
- BEGIN DIALOG Dialog1 314, 150, "Select Objects of RGB Value:"
- TEXT 10, 30, 50, 8, "Red Value"
- SPINCONTROL 70, 30, 50, 12, RedVal%
- TEXT 10, 52, 50, 8, "Green Value"
- SPINCONTROL 70, 52, 50, 13, GreenVal%
- TEXT 10, 76, 50, 8, "Blue Value"
- SPINCONTROL 70, 76, 50, 13, BlueVal%
- TEXT 126, 30, 50, 8, "Tolerance +/-"
- SPINCONTROL 180, 30, 50, 13, RedTol%
- TEXT 126, 53, 50, 8, "Tolerance +/-"
- SPINCONTROL 180, 53, 50, 12, GreenTol%
- TEXT 126, 76, 50, 8, "Tolerance +/-"
- SPINCONTROL 180, 76, 50, 13, BlueTol%
- CHECKBOX 240, 30, 36, 10, "Ignore", RedIgnore%
- CHECKBOX 240, 52, 40, 10, "Ignore", GreenIgnore%
- CHECKBOX 240, 76, 38, 10, "Ignore", BlueIgnore%
- OKBUTTON 56, 107, 65, 17
- CANCELBUTTON 186, 107, 70, 17
- END DIALOG
-
- REM Set Defaults
- NumObjectsInDrawing = 20
- RedVal = 255
- GreenVal = 255
- BlueVal = 255
- RedTol = 10
- BlueTol = 10
- GreenTol = 10
- RedIgnore = 0
- GreenIgnore = 0
- BlueIgnore = 0
-
- RETRY:
- ret = DIALOG(dialog1)
- IF CANCEL THEN STOP
-
- REM Check Values
-
- IF RedVal > 255 OR RedVal < 0 THEN
- BEEP
- MESSAGE "RED VALUE IS INVALID"
- RedVal = 255
- GOTO RETRY
- END IF
- IF GreenVal > 255 OR GreenVal < 0 THEN
- BEEP
- MESSAGE "GREEN VALUE IS INVALID"
- GreenVal = 255
- GOTO RETRY
- END IF
- IF BlueVal > 255 OR BlueVal < 0 THEN
- BEEP
- MESSAGE "BLUE VALUE IS INVALID"
- BlueVal = 255
- GOTO RETRY
- END IF
- IF RedTol > 255 OR RedTol < 0 THEN
- BEEP
- MESSAGE "RED TOLERANCE IS INVALID"
- RedTol = 255
- GOTO RETRY
- END IF
- IF GreenTol > 255 OR GreenTol < 0 THEN
- BEEP
- MESSAGE "GREEN TOLERANCE IS INVALID"
- GreenTol = 255
- GOTO RETRY
- END IF
- IF BlueTol > 255 OR BlueTol < 0 THEN
- BEEP
- MESSAGE "BLUE TOLERANCE IS INVALID"
- BlueTol = 255
- GOTO RETRY
- END IF
-
- WITHOBJECT DRAW
- ret = true
- .UnSelectAll
-
- DIM Booltest as boolean 'Boolean set to false when its back to the first object
- Booltest = TRUE
-
- .SelectNextObject -1
- FirstID& = .GetObjectsCDRStaticID()
-
- REM For Each Object
- DO WHILE Booltest
- .SelectNextObject -1
- IF .GetObjectsCDRStaticID() = FirstID THEN Booltest = False
- .GetUniformFillColor t&, Color1&, Color2&, Color3&, Color4&
- REM Booleans FOR each color type
- REM Within tolerance OR ignored.
- IF t = ColorType THEN
- RedTest = (ABS(Color1 - RedVal) < RedTol) OR (RedIgnore = 1)
- GreenTest = (ABS(Color2 - GreenVal) < GreenTol) OR (GreenIgnore = 1)
- BlueTest = (ABS(Color3 - BlueVal) < BlueTol) OR (BlueIgnore = 1)
- IF RedTest AND GreenTest AND BlueTest THEN
- Count% = Count% + 1
- REM Store The Objects that satisfy conditions.
- Matches(count) = .GetObjectsCDRStaticID()
- END IF
-
- ELSE
- Message "Non RGB Object found and Ignored"
- END IF
- LOOP
- .UnSelectAll
-
- REM Select all in array
- FOR i% = 1 TO Count
- .SelectObjectOfCDRStaticID Matches(i)
- NEXT i
-
- REM Get the fill color
- BEGIN DIALOG FillColorDialog 140, 150, "Select Objects of RGB Value:"
- TEXT 10, 30, 50, 8, "Red Value"
- SPINCONTROL 70, 30, 50, 12, RedFill%
- TEXT 10, 52, 50, 8, "Green Value"
- SPINCONTROL 70, 52, 50, 13, GreenFill%
- TEXT 10, 76, 50, 8, "Blue Value"
- SPINCONTROL 70, 76, 50, 13, BlueFill%
- OKBUTTON 13, 107, 51, 17
- TEXT 6, 7, 121, 18, "Please select RGB values for the fill color"
- PUSHBUTTON 72, 107, 51, 17, "&None"
- END DIALOG
- ret = DIALOG(FillColorDialog)
- IF ret = 3 THEN STOP 'If None chosen
-
- REM This applies the fill to the selected objects
- .ApplyUniformFillColor 5, RedFill%, GreenFill%, BlueFill%, 0
-
- END WITHOBJECT
-