VB scripting. Работа с селекцией

  • Автор темы Автор темы GoodvinVV
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

GoodvinVV

Участник
Топикстартер
Сообщения
85
Реакции
2
Добрый день. ....раньше писал разные разности под Корел на VBA ...назрела необходимость написать скрипт (VB!!) для Илюстратора и... честно говоря не могу понять некоторых вещей...
Несколько вопросов к просвященным...
1. Как работать с селекцией? (координаты, размеры, перемещение)
2. Как работать с цветом? (присвоить заливке, обводке)
 
Ответ: VB scripting. Работа с селекцией

Для VB достаточно сделать:
Код:
Set appRef = CreateObject("Illustrator.Application")
Set docRef = appRef.ActiveDocument

После этого открываем Locals и смотрим. В 95% случаев даже справка не нужна, ибо всё и так видно.
 
Ответ: VB scripting. Работа с селекцией

Для VB достаточно сделать:
Код:
Set appRef = CreateObject("Illustrator.Application")
Set docRef = appRef.ActiveDocument

После этого открываем Locals и смотрим. В 95% случаев даже справка не нужна, ибо всё и так видно.

наверное у меня тот случай из 5%...
 
Ответ: VB scripting. Работа с селекцией

Хм, но там же всё предельно просто. Глядим в locals и видим как добраться к выделению, где размеры, где координаты — всё визуально, думать не надо '))'

Еще есть примеры (обычно тут) c:\Program Files\Adobe\Adobe Illustrator\Scripting\Sample Scripts\

Просто лень расписывать, то что и так подробно расписано.
 
Ответ: VB scripting. Работа с селекцией

Хм, но там же всё предельно просто. Глядим в locals и видим как добраться к выделению, где размеры, где координаты — всё визуально, думать не надо '))'

Еще есть примеры (обычно тут) c:\Program Files\Adobe\Adobe Illustrator\Scripting\Sample Scripts\

Просто лень расписывать, то что и так подробно расписано.


В "locals " чисто пусто или я не правильно смотрю либо
переустановить Visual Basic может в этом дело..??
 
Ответ: VB scripting. Работа с селекцией

вот что есть :
Код:
Set appRef = CreateObject("Illustrator.Application")
 If appRef.Documents.Count > 0 Then
     If Not IsEmpty(appRef.Selection) Then
        mySelection = appRef.Selection
        endIndex = UBound(mySelection)
        startIndex = LBound(mySelection)
        Set newGroup = appRef.ActiveDocument.GroupItems.Add

          For i = startIndex To endIndex
               Set artItem = mySelection(i)
               Set dupItem = artItem.Duplicate(newGroup, aiPlaceAtEnd)
          Next
          MsgBox "ширина:" & newGroup.Width / MM & "  Высота:" & newGroup.Height / MM
               newGroup.Delete
      End If
  End If
Вопрос: можно ли как то ещё узнать размеры и позицию выделеных элементов?
(не создаваю группу)
 
Ответ: VB scripting. Работа с селекцией

У вас там есть цикл по массиву, так вот вместо создания группы можно снимать значения одного из трех Bounds (в вашем случае GeometricBounds, так как размеры обводки не учитываются). Четыре переменные для координат: левой верхней точки и правой нижней, в этом же цикле проверяем какая самая-присамая.

/и, кстати, не обязательно замерять индексы массива, можно через For Each/
 
Ответ: VB scripting. Работа с селекцией

есть такой пример (см.rar)
вопрос как определить границы "видимого"?
ControlBounds, VisibleBounds ,GeometricBounds не помогли...(((( исключение объктов из селекции не вариант...
 

Вложения

Ответ: VB scripting. Работа с селекцией

А что значит границы видимого?

Вообще, чтобы определять любые границы в ai, нужен глубокий анализ. Никто не запрещает вам тоже пройтись по всем подобъектам и поанализировать. Если не получится — не огорчайтесь, этого толком не умеют даже создатели иллюстратора — ошибки выравнивания маскированных объектов прекрасный тому пример.
 
Ответ: VB scripting. Работа с селекцией

у меня границы видимого это то, что в документе *.ai видно глазами в режиме отображения оверпринт превью.

глубокий анализ сильно замедлит выполнение скрипта ведь таких обектов может быть не одна сотня....побовал ...повесил комп..
может не циклом по GeometricBounds а еще как то можно...?
 
Ответ: VB scripting. Работа с селекцией

Не знаю. Даже несколько тысяч объектов скрипт обработает за пару-тройку секунд на среднем компе. Что там может подвесить систему? Да и вообще какой практический смысл ваших изысканий?
 
Ответ: VB scripting. Работа с селекцией

...обрезные метки по селекции..))
 
Статус
Закрыто для дальнейших ответов.