find/changeObjectPreferences

Статус
Закрыто для дальнейших ответов.

_JVK_

Чатланин
Топикстартер
10 лет на форуме
Сообщения
184
Реакции
175
Всем доброго времени.
Требуется найти все объекты одного цвета и перекрасить их в другой.
(InDesign CS3 5.0.1, Mac OS X 10.4.11)

app.findObjectPreferences.fillColor = 'Black'
app.changeObjectPreferences.fillColor = 'Paper'
myDoc.changeObject()


В окне поиска/замены пишет:
Fill:
Colour:(Unnamed Colour)
и естественно ничего не меняет

Скажите пожалуйста что я делаю не так?
 

vbatushev

20 лет на форуме
Сообщения
2 242
Реакции
1 227
Ответ: find/changeObjectPreferences

Swatch передай филколору.
 

_JVK_

Чатланин
Топикстартер
10 лет на форуме
Сообщения
184
Реакции
175
Ответ: find/changeObjectPreferences

vbatushev сказал(а):
Swatch передай филколору.
Простите за тупость, а как это сделать?
 

Specialist

15 лет на форуме
Сообщения
2 035
Реакции
8
Ответ: find/changeObjectPreferences

Не знаю как с объектами, а вот с поиском текста по свотчам была проблема. Изучите вот это:
http://forum.rudtp.ru/showthread.php?t=32846&highlight=Swatch

Там же можете посмотреть и пример передачи поиску Swatch'а.
 

_JVK_

Чатланин
Топикстартер
10 лет на форуме
Сообщения
184
Реакции
175
Ответ: find/changeObjectPreferences

Specialist сказал(а):
Не знаю как с объектами, а вот с поиском текста по свотчам была проблема. Изучите вот это:
http://forum.rudtp.ru/showthread.php?t=32846&highlight=Swatch

Там же можете посмотреть и пример передачи поиску Swatch'а.
Натыкался на подобную проблему вот тут
Ссылка битая к сожалению
 

Specialist

15 лет на форуме
Сообщения
2 035
Реакции
8

_JVK_

Чатланин
Топикстартер
10 лет на форуме
Сообщения
184
Реакции
175
Ответ: find/changeObjectPreferences

Ну зато есть пример передачи свотча.
Вы имеете ввиду
Код:
app.findTextPreferences.fillColor = app.activeDocument.swatches.item('Red');
Если да то у меня на строку
Код:
app.findObjectPreferences.fillColor = app.activeDocument.swatches.item('Black')
ругается, говорит что
Invalid value for set property 'fillColor'.
Expected Swatch, String or NothingEnum enumeration, but received Color
 

vbatushev

20 лет на форуме
Сообщения
2 242
Реакции
1 227
Ответ: find/changeObjectPreferences

Потому что нет у Вас swatch'а с именем Black.
 

_JVK_

Чатланин
Топикстартер
10 лет на форуме
Сообщения
184
Реакции
175
Ответ: find/changeObjectPreferences

vbatushev сказал(а):
Потому что нет у Вас swatch'а с именем Black.
Я понимаю, что я что-то непонимаю, а вот что я непонимаю, понять немогу.

Создаю swatch скриптом,

Код:
mySw = myDoc.colors.add(1,1,1,100)
mySw.name = 'reCol'
В панели swatches кисть С1 M1 Y1 K100 с именем reCol появляется.

Далее:
Код:
app.findObjectPreferences.fillColor = app.activeDocument.swatches.item('reCol')
или
Код:
app.findObjectPreferences.fillColor = mySw
Итог один:
Invalid value for set property 'fillColor'.
Expected Swatch, String or NothingEnum enumeration, but received Color

Что не так? Окончательно запутался.
Помогите пожалуйста!
 

Specialist

15 лет на форуме
Сообщения
2 035
Реакции
8
Ответ: find/changeObjectPreferences

_JVK_ сказал(а):
Создаю swatch скриптом,

Код:
mySw = myDoc.colors.add(1,1,1,100)
mySw.name = 'reCol'

вы не свотч, а цвет создали.
 

_JVK_

Чатланин
Топикстартер
10 лет на форуме
Сообщения
184
Реакции
175
Ответ: find/changeObjectPreferences

Specialist сказал(а):
вы не свотч, а цвет создали.
Скажите как создать именно swatch? У swatches нет метода add
 

Specialist

15 лет на форуме
Сообщения
2 035
Реакции
8
Ответ: find/changeObjectPreferences

_JVK_ сказал(а):
Скажите как создать именно swatch? У swatches нет метода add

Я был бы рад, если бы мне самому кто-нибудь это сказал.
Короче, чтобы не плодить сущностей сверх необходимого привожу код, который был по той нерабочей ссылке:

Код:
var myColName = 'Red'; 
var myCol = getCol(myColName); 

app.findTextPreferences = app.changeTextPreferences = null; 

//app.findTextPreferences.fillColor = myCol; 
try { 
 myTempSwatch = app.colors.add({name:myColName}); 
} catch (e) { 
 myTempSwatch = app.colors.item(myColName); 
} 
app.findTextPreferences.fillColor = myColName; 
myTempSwatch.remove(); 
var myFind = app.documents[0].findText(); 
alert(myFind.length); 

function getCol(aCol) 
{ 
 try { 
 var theColor = app.documents[0].colors.add({name:aCol}); 
 } 
 catch (e) 
 { 
 var theColor = app.documents[0].swatches.item(aCol); 
 } 
 return theColor 
}

Два момента. Первое. Здесь ищется не объект, а текст. Думаю поправить не составит труда.
Второе. Желательно немного дописать этот код, чтобы временный свотч удалялся только если он создан скриптом, а не присутствовал изначально. Решается при помощи навешивания ScriptLabel.
 

_JVK_

Чатланин
Топикстартер
10 лет на форуме
Сообщения
184
Реакции
175
Ответ: find/changeObjectPreferences

2 Specialist
Спасибо за код, с его помощью решил проблему поиска замены underlineColor. Но к сожалению не работает он с обектами.
В окне поиска/замены по прежнему пишет:
Fill:
Colour:(Unnamed Colour)

и опять таки ничего не находит.
Для поиска/замены объекта пришлось использовать loadFindChangeQuery. Другого выхода пока ненахожу.
 
Статус
Закрыто для дальнейших ответов.