Скрипт для Corel (преобразования цветов) - Цифровая печать как бизнес - форум и портал
Индустрия цифровой печати - отраслевой портал  

Вернуться   Цифровая печать как бизнес - форум и портал > Компьютеры и программное обеспечение в оперативной полиграфии > Программное обеспечение для оперативной полиграфии

Реклама на форуме
  • Дополнительный доход для сервисного инженера. Узнать как…
Ответ
 
Опции темы
Старый 29.01.2013, 14:31   #1
hatrix
Местный
 
Регистрация: 11.03.2011
Адрес: Russia
Сообщений: 777
Репутация: 44
По умолчанию Скрипт для Corel (преобразования цветов)

Столкнулся с проблемой такого рода - есть этикетки со штрих-кодом. Размер штрих-кода на этикетке 20х7 мм. Всё бы ничего, но при печати на ухабе c353p с использованием цветопрофиля линии в штрих-коде становятся слишком жирными и считывание того самого штрих-кода проходит не с первого раза, в общем народ мучается. Это плохо. Связано это с тем, что при конверсии цветов цвет линий в штрих-коде из 100% черного преобразуется в составной. Проблему пока решаю таким образом, небольшой скрипт по преобразованию цветов

Sub ColorCorrect()
Dim OrigSelection As ShapeRange
Set OrigSelection = ActiveSelectionRange
ActiveDocument.ConvertToColorContext CreateColorContext2("ColorPlus,KONICA MINOLTA C353 PS_4CC_280_CMYK.icm,Dot Gain 20%", BlendingColorModel:=clrColorModelCMYK)
ActiveDocument.AssignColorContext CreateColorContext2("ColorPlus,Coated FOGRA39 (ISO 12647-2:2004),Dot Gain 20%", BlendingColorModel:=clrColorModelCMYK)
End Sub

Далее запускаю скрипт ColorReplacer, лежит тут ColorReplacer.zip, и выполняю замену составного получившегося черного обратно в К-100%
Можно через штатные средства Corel Find&Replace, но так еще дольше по времени.
Поставил себе задачу сделать скрипт чтобы одновременно преобразовывал конверсию цветов и искал в макете все векторные объекты с черной составной заливкой и применял им К-100%. Но, поковырявшись в нем, понял, что сам не осилю. В общем, камрады, прошу помощи! Можете кинуть в меня умной книжкой или парой строчек кода, ну или еще чего-нибудь..)
hatrix вне форума   Ответить с цитированием
Старый 29.01.2013, 16:26   #2
Леша
Местный
 
Аватар для Леша
 
Регистрация: 12.01.2010
Адрес: Москва
Сообщений: 237
Репутация: 16
По умолчанию

а если пойти таким путем EDIT / find and replace/ replace object/ replace color/ и меняете составной на черный
Леша вне форума   Ответить с цитированием
Старый 29.01.2013, 17:13   #3
hatrix
Местный
 
Регистрация: 11.03.2011
Адрес: Russia
Сообщений: 777
Репутация: 44
По умолчанию

Ну да, только долго это, да еще и по каждой странице придется отдельно пройтись, причем два раза - для заливок и для обводок. Кстати, тот скрипт что по ссылке лежит, предлагает работать сразу с заливками и с обводками, только вот с обводками почему-то не справляется, где-то там тоже ошибка вкралась. И я её уж точно не найду - мозги не хватит)
hatrix вне форума   Ответить с цитированием
Старый 29.01.2013, 22:46   #4
Xromov
Местный
 
Аватар для Xromov
 
Регистрация: 15.09.2011
Адрес: Новосибирск
Сообщений: 1,205
Репутация: 60
По умолчанию

А изначально черный в RGB как G:0 чтоли задан?
Xromov вне форума   Ответить с цитированием
Старый 30.01.2013, 14:08   #5
hatrix
Местный
 
Регистрация: 11.03.2011
Адрес: Russia
Сообщений: 777
Репутация: 44
По умолчанию

Нет, цвет изначально задан как C - 0, M - 0, Y - 0, K - 100
После цветокоррекции - C - 32, M - 20, Y - 15, K - 85
Вот его нужно вернуть в исходное значение.
Кстати, если цвет задан как G:0, то проблем не возникает. Как вариант, можно сначала поменять везде К100 на G:0, а потом выполнить цветокоррекцию, но для этого все равно нужно писать скрипт (макрос). Кажись так даже лучше будет. Спасибо за идею)
hatrix вне форума   Ответить с цитированием
Старый 30.01.2013, 14:17   #6
d_Serg
Местный
 
Регистрация: 19.06.2009
Адрес: СПб
Сообщений: 8,348
Репутация: 252
По умолчанию

Цитата:
Сообщение от hatrix Посмотреть сообщение
Нет, цвет изначально задан как C - 0, M - 0, Y - 0, K - 100
После цветокоррекции - C - 32, M - 20, Y - 15, K - 85
Вот его нужно вернуть в исходное значение.
В Питстопе это делается за 3 клика мышью
d_Serg вне форума   Ответить с цитированием
Старый 30.01.2013, 16:31   #7
hatrix
Местный
 
Регистрация: 11.03.2011
Адрес: Russia
Сообщений: 777
Репутация: 44
По умолчанию

Цитата:
Сообщение от d_Serg Посмотреть сообщение
В Питстопе это делается за 3 клика мышью
Ага, а питстоп для акробата
А я хочу в кореле, и за один клик.
Вот что-то получилось, вроде делает что надо, но только если объекты "сами по себе". Теперь надо думать как сделать чтобы залазил в сгруппированные объекты и в паверклипы.

Sub ColorCorrect()
Dim sh As Shape
Dim cnt As Integer
Dim findcolor As Color, replacecolor As Color
Dim p As Page, pActive As Page

Set findcolor = CreateCMYKColor(0, 0, 0, 100)
Set replacecolor = CreateGrayColor(0)

Set pActive = ActivePage
For Each p In ActiveDocument.Pages
p.Activate
For Each sh In ActiveDocument.ActivePage.Shapes
If sh.Fill.Type = cdrUniformFill Then
If sh.Fill.UniformColor.IsSame(findcolor) Then
sh.Fill.UniformColor = replacecolor
cnt = cnt + 1
End If
End If

If sh.Outline.Type = cdrOutline Then
If sh.Outline.Color.IsSame(findcolor) Then
sh.Outline.Color = replacecolor
cnt = cnt + 1
End If
End If
Next sh
Next p

pActive.Activate

ActiveDocument.ConvertToColorContext CreateColorContext2("ColorPlus,KONICA MINOLTA C353 PS_4CC_280_CMYK.icm,Dot Gain 20%", BlendingColorModel:=clrColorModelCMYK)
ActiveDocument.AssignColorContext CreateColorContext2("ColorPlus,Coated FOGRA39 (ISO 12647-2:2004),Dot Gain 20%", BlendingColorModel:=clrColorModelCMYK)

End Sub
hatrix вне форума   Ответить с цитированием
Старый 30.01.2013, 16:39   #8
d_Serg
Местный
 
Регистрация: 19.06.2009
Адрес: СПб
Сообщений: 8,348
Репутация: 252
По умолчанию

Цитата:
Сообщение от hatrix Посмотреть сообщение
А я хочу в кореле, и за один клик.
да ради бога... чего тогда спрашиваете А если Вам завтра заказчик верстку в Люстре принесет.... а послезавтра в Ворде - и для них будете скрипты делать? в этом плане Питстоп универсальнее
Хотя, конечно, дело вкуса....
d_Serg вне форума   Ответить с цитированием
Старый 30.01.2013, 16:55   #9
hatrix
Местный
 
Регистрация: 11.03.2011
Адрес: Russia
Сообщений: 777
Репутация: 44
По умолчанию

Цитата:
Сообщение от d_Serg Посмотреть сообщение
чего тогда спрашиваете
Дык не шарю потому что
Печатаю в основном из корела, большинство макетов все же в нем достается. А люстру и ворд - в пдф, а тут уже и питстоп. Вам конечно за внимание к проблеме тоже спасибо! Поставлю-ка я вам тоже плюсик, а то не люблю когда люди нервничать начинают по пустякам)
hatrix вне форума   Ответить с цитированием
Старый 30.01.2013, 17:26   #10
Xromov
Местный
 
Аватар для Xromov
 
Регистрация: 15.09.2011
Адрес: Новосибирск
Сообщений: 1,205
Репутация: 60
По умолчанию

Всем бы так не шарить! Я только одного не понял - зачем крутится cnt
Xromov вне форума   Ответить с цитированием
Старый 30.01.2013, 17:35   #11
hatrix
Местный
 
Регистрация: 11.03.2011
Адрес: Russia
Сообщений: 777
Репутация: 44
По умолчанию

можно удалить, это количество пройденных циклов, потом можно окошко выкинуть сколько объектов поменялось, но думаю это лишнее..
hatrix вне форума   Ответить с цитированием
Старый 30.01.2013, 18:50   #12
hatrix
Местный
 
Регистрация: 11.03.2011
Адрес: Russia
Сообщений: 777
Репутация: 44
По умолчанию

Есть прогресс - макрос теперь умеет залазить в первый уровень паверклипа и там менять. Роем дальше..
hatrix вне форума   Ответить с цитированием
Старый 31.01.2013, 02:37   #13
hatrix
Местный
 
Регистрация: 11.03.2011
Адрес: Russia
Сообщений: 777
Репутация: 44
По умолчанию

Ну всё. Вроде готово. Ищет в сгруппированных объектах и в паверклипах. Количество паверклипов и вложений друг в друга неограничено, с группами, соответственно, аналогично. Если кому не лень, затестите у себя, вдруг где ругнется или чего не сделает... Та часть, где конверсит цвета в профиль, можно удалить или свои профиля вписать, она в самом конце, предпоследние 2 строчки.

Sub ColorCorrect()

Dim findcolor, replacecolor As color
Dim p, pActive As Page
Dim ArAll, Ar1, Ar2 As ShapeRange
Dim x As Shape

ActiveDocument.PreserveSelection = False
Optimization = True
EventsEnabled = False

Set findcolor = CreateCMYKColor(0, 0, 0, 100)
Set replacecolor = CreateGrayColor(0)
Set pActive = ActivePage

For Each p In ActiveDocument.Pages
p.Activate
Set Ar1 = p.FindShapes
If Not Ar1 Is Nothing Then
Set ArAll = Ar1
Do
Set Ar2 = Nothing
For Each x In Ar1
If Not x.PowerClip Is Nothing Then
If Ar2 Is Nothing Then Set Ar2 = x.PowerClip.Shapes.FindShapes Else: Ar2.AddRange x.PowerClip.Shapes.FindShapes
End If
Next x
If Not Ar2 Is Nothing Then
Set Ar1 = Ar2
ArAll.AddRange Ar1
End If
Loop While Not Ar2 Is Nothing
End If

For Each x In ArAll
If x.Fill.UniformColor.IsSame(findcolor) Then x.Fill.UniformColor = replacecolor
If x.Outline.color.IsSame(findcolor) Then x.Outline.color = replacecolor
Next x
Next p

pActive.Activate

EventsEnabled = True
Optimization = False
ActiveDocument.PreserveSelection = True
ActiveDocument.EndCommandGroup

ActiveDocument.ConvertToColorContext CreateColorContext2("ColorPlus,KONICA MINOLTA C353 PS_4CC_280_CMYK.icm,Dot Gain 20%", BlendingColorModel:=clrColorModelCMYK)
ActiveDocument.AssignColorContext CreateColorContext2("ColorPlus,Coated FOGRA39 (ISO 12647-2:2004),Dot Gain 20%", BlendingColorModel:=clrColorModelCMYK)

End Sub
hatrix вне форума   Ответить с цитированием
Старый 31.01.2013, 03:14   #14
hatrix
Местный
 
Регистрация: 11.03.2011
Адрес: Russia
Сообщений: 777
Репутация: 44
По умолчанию

Да, забыл сказать, конверсия в профиль будет работать в X6-ом, и скорее всего в Х5-м, в Х4 - уже не пашет. Остальная часть должна быть рабочей в версиях не ниже ХЗ.
hatrix вне форума   Ответить с цитированием
Старый 05.02.2013, 19:03   #15
hatrix
Местный
 
Регистрация: 11.03.2011
Адрес: Russia
Сообщений: 777
Репутация: 44
По умолчанию

Макрос переделан заново, теперь всё работает как надо. На этом остановлюсь.
Если кому вдруг пригодится, то

Sub ColorCorrect()

Dim findcolor, replacecolor As color
Dim p, pActive As Page

ActiveDocument.PreserveSelection = False
Optimization = True
EventsEnabled = False

Set findcolor = CreateCMYKColor(0, 0, 0, 100)
Set replacecolor = CreateGrayColor(0)
Set pActive = ActivePage

For Each p In ActiveDocument.Pages
p.Activate
ColorCorrectItem p, findcolor, replacecolor
Next p

pActive.Activate

EventsEnabled = True
Optimization = False
ActiveDocument.PreserveSelection = True
ActiveDocument.EndCommandGroup

ActiveDocument.ConvertToColorContext CreateColorContext2("ColorPlus,KONICA MINOLTA C353 PS_4CC_280_CMYK.icm,Dot Gain 20%", BlendingColorModel:=clrColorModelCMYK)
ActiveDocument.AssignColorContext CreateColorContext2("ColorPlus,Coated FOGRA39 (ISO 12647-2:2004),Dot Gain 20%", BlendingColorModel:=clrColorModelCMYK)

End Sub

Sub ColorCorrectItem(obj, col1, col2)
Dim s As Shape
For Each s In obj.Shapes
If Not s.PowerClip Is Nothing Then
ColorCorrectItem s.PowerClip, col1, col2
If s.Fill.UniformColor.IsSame(col1) Then s.Fill.UniformColor = col2
If s.Outline.color.IsSame(col1) Then s.Outline.color = col2
Else
If cdrGroupShape = s.Type Then
ColorCorrectItem s, col1, col2
Else
If s.Fill.UniformColor.IsSame(col1) Then s.Fill.UniformColor = col2
If s.Outline.color.IsSame(col1) Then s.Outline.color = col2
End If
End If
Next s
End Sub
hatrix вне форума   Ответить с цитированием
Старый 05.02.2013, 19:48   #16
Сега
Местный
 
Регистрация: 13.08.2008
Адрес: Россия
Сообщений: 1,993
Репутация: 93
По умолчанию

На самом деле огромное спасибо за проделанный труд, вот у меня никогда не хватало терпения или желания разобраться, как корел все это делает, в смысле макросы. Иногда, когда уж сильно припрет, лез разбираться ... как непохоже на обычное программирование... Но вот что самое интересное, это делать преобразования по всему файлу, по всем слоям и свойствам. Короче взял, буду учиться ) плюсую обязательно. )
Сега вне форума   Ответить с цитированием
Старый 06.02.2013, 11:58   #17
hatrix
Местный
 
Регистрация: 11.03.2011
Адрес: Russia
Сообщений: 777
Репутация: 44
По умолчанию

Ну спасибо ведь не только мне, люди тоже помогали, Xromov вон на гениальную мысль натолкнул с G:0. Так что коллективный разум решает
hatrix вне форума   Ответить с цитированием
Старый 06.02.2013, 12:02   #18
Леша
Местный
 
Аватар для Леша
 
Регистрация: 12.01.2010
Адрес: Москва
Сообщений: 237
Репутация: 16
По умолчанию

Молодец! добился чего хотел
Леша вне форума   Ответить с цитированием
Ответ

Опции темы

Быстрый переход

183 204 195 210 237 243 263 7 8 152 15 16 13 11 10 14 35 9 256 123 37 144 145 146 179 20 258 21 22 124 23 24 97 127 128 25 26 126 136 154 64 65 254 233 159 162 163 164 66 27 98 48 56 120 58 59 60 61 62 135 63 165 166 200 201 202 51 53 167 169 168 172 52 55 54 125 255 207 217 218 219 220 221 222 223 224


"Форум индустрии цифровой печати" 2008-2023

Все вопросы по сотрудничеству:

Электропочта: info@trade-print.ru

Москва, Печатников пер.

Текущее время: 22:43. Часовой пояс GMT +4.

Яндекс.Метрика