Перевод Пантонов в CMYK

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

ragman

Топикстартер
12 лет на форуме
Сообщения
669
Реакции
0
Есть задача: с помощью скрипта (VB.Net) перевести все имеющиеся в документе Пантоны в CMYK (это одна из многих задач).
Пробую так:
PHP:
        Dim myIll As Illustrator.Application
        Dim i As Integer
        Dim mySwatch As Illustrator.Spot

        myIll = CreateObject("Illustrator.Application.3")
        myDocIll = myIll.ActiveDocument

        For i = 1 To myDocIll.Spots.Count
            mySwatch = myDocIll.Spots.Item(i)
            mySwatch.ColorType = Illustrator.AiColorModel.aiProcess
        Next i
Выдает неопознаную ошибку на том свотче который применен в документе, а те которые обходит в процесс не превращаются
Пробовал вместо Spot обходить Swatch. Еще хуже - у него нет .ColorType
Может посоветуете чего?
 
Ответ: Перевод Пантонов в CMYK

Попробую ответить навскидку, сейчас под рукой VB нету
Сватчи [None] и [Registration] имеют предустановленный тип и не могут редактироваться-удаляться. Попробуй их отсечь в цикле.
 
Ответ: Перевод Пантонов в CMYK

2smw75
Я обхожу не сватчи а споты. У свотчей нету .ColorType и я незнаю как свотч перевести в процесс из пантона.
Кстати, если можешь напиши на JS я переведу для VB.
 
Ответ: Перевод Пантонов в CMYK

Ну раз никто не откликнулся, поделюсь своими находками

К сожалению, в Илле нет понятия Color, а есть CMYKColor, SpotColor и RGBColor, т.е. цвет в конкретной модели.
Поэтому была придумана конструкция с намеренным совершение ошибки:
PHP:
        On Error Resume Next

        Dim i As Integer
        Dim mySpotColor As Illustrator.SpotColor
        Dim myColor As Illustrator.AiColor
        Dim mySwatch As Illustrator.Swatch


        For i = 1 To myDocIll.Swatches.Count
            mySwatch = myDocIll.Swatches.Item(i)
            If mySpot.Name <> "[Registration]" Then
                mySpotColor = mySwatch.Color
                If mySpotColor.Spot.ColorType = Illustrator.AiColorModel.aiSpot Then
                    mySpotColor.Spot.ColorType = Illustrator.AiColorModel.aiProcess
                End If
            End If
        Next i
Таким образом, в строке "mySpotColor = mySwatch.Color" происходит ошибка, если Color данного Swatch не Spot. Но благодаря конструкции "On Error Resume Next" программа не вываливается а проходит дальше.
Тестовые испытания показали работоспособность данного кода. Осталось провести полевые испытания.
 
Статус
Закрыто для дальнейших ответов.