Шаг 15 - Скрипт для выбора линий

Недавно тут возникла задача. На чертеже есть залитые области и просто линии. Вот линии надо все выбрать, то есть только те, у которых нет заливки. Пришлось писать скрипт. Вот он:

' Kaev Artem 20 december 2000
'

DIM FOb AS LONG
DIM NOb AS LONG
DIM ReturnValue AS INTEGER
DIM ArrayID(100000) AS LONG
DIM MaxArray AS LONG

WITHOBJECT "CorelDraw.Automation.8" 
.UnselectAll
MaxArray=1
.SelectNextObject 
FOb=.GetObjectsCDRStaticID()
ReturnValue = .GetFillType()
IF ReturnValue=0 THEN
	ArrayID(MaxArray)=.GetObjectsCDRStaticID()
	MaxArray=MaxArray+1
ENDIF
WHILE (FOb<>NOb)
.SelectNextObject
NOb=.GetObjectsCDRStaticID()
ReturnValue = .GetFillType()
IF ReturnValue=0 THEN
	ArrayID(MaxArray)=.GetObjectsCDRStaticID()
	MaxArray=MaxArray+1
ENDIF
WEND

.UnselectAll
.SelectObjectOfCDRStaticID ArrayID(1)
FOR X=2 TO MaxArray-1 
.AppendObjectToSelection ArrayID(X)
NEXT X

END WITHOBJECT
END

Идея скрипта такая. Можно объявить массив DIM ArrayID(100000) AS LONG, а потом бежать по всем элементам. Это мы уже делали. И проверять есть ли у контура или линии заливка .GetFillType(). Если нет, то идентификатор объекта полученный функцией .GetObjectsCDRStaticID() заносим в массив. Потом мы заново начинаем выделять объекты, но только те, которые есть в массиве .AppendObjectToSelection ArrayID(X).


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.