Если есть вопросы по скриптам

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

similideus

12 лет на форуме
Сообщения
671
Реакции
349
Ответ: Если есть вопросы по скриптам

И самое главное — в варианте со сплитом, вы не производите действий с объектами публикации, а всего лишь создаете новую текстовую переменную с определенным значением.
 

similideus

12 лет на форуме
Сообщения
671
Реакции
349
Ответ: Если есть вопросы по скриптам

родитель.lines[номер строки].words.length
 

[Кот]

Участник
Сообщения
24
Реакции
0
Ответ: Если есть вопросы по скриптам

родитель.lines[номер строки].words.length это длина строки ?
тогда если одна стока то будет родитель.words.length
 

[Кот]

Участник
Сообщения
24
Реакции
0
Ответ: Если есть вопросы по скриптам

У меня InDesign ругается на j = par[z].lines[0].words.length
помогите пожалуйста разобраться почему.
 

similideus

12 лет на форуме
Сообщения
671
Реакции
349
Ответ: Если есть вопросы по скриптам

Какую ошибку пишет ExtendScript? Видимо вы неправильно обращаетесь к параграфу.
 

[Кот]

Участник
Сообщения
24
Реакции
0
Ответ: Если есть вопросы по скриптам

вот мой скрипт:
Код:
#target indesign
main ();
function main ()
{
	var mySel  = app.activeDocument.selection[0] 
	var i = mySel.parentStory.contents.substring(0, mySel.index).split('\r').length 
	var par = mySel.parentStory.contents.substring(0, mySel.index).split('\r') 
	var word 
	var j 
	var first 
	var a, b, v, g, d, e, jo, zh, z, i, k, l, m, n, o, p, r, s, t, y, f, x, c, ch, sh, sch, tvz, u, mz, ee, jy, ja 
	for (var z = 0; z<=i;z++)
	{
		//word = par[z].words[номер слова].contents.
		 j = par[z].lines[0].words.length
		for(var x=0;x<=j;x++)
		{
			word = par[z].words[x].contents.
			first = word[x].characters[0].contents
			switch (word[x])
			{
				case "а" && "А" : 
				a+= word[x] + " " + par[z] + 0xD ;
				break ;
				case "б" && "Б" : 
				b+= word[x] + " " + par[z] + 0xD ;
				break ;
				case "в" && "В" : 
				v+= word[x] + " " + par[z] + 0xD ;
				break ;
				case "г" && "Г" : 
				g+= word[x] + " " + par[z] + 0xD;
				break;
				case "д" && "Д" : 
				d+= word[x] + " " + par[z] + 0xD;
				break;
				case "е" && "Е" : 
				e+= word[x] + " " + par[z] + 0xD ;
				break;
				case "ё" && "Ё" : 
				jo+= word[x] + " " + par[z] + 0xD ;
				break;
				case "ж" && "Ж" : 
				zh+= word[x] + " " + par[z] + 0xD ;
				break;
				case "з" && "З" :
				z+= word[x] + " " + par[z] + 0xD ;
				break;
				case "и" && "И" : 
				i+= word[x] + " " + par[z] + 0xD ;
				break;
				case "к" && "К" : 
				k+= word[x] + " " + par[z] + 0xD ;
				break;
				case "л" && "Л" : 
				l+= word[x] + " " + par[z] + 0xD ;
				break;
				case "м" && "М" : 
				m+= word[x] + " " + par[z] + 0xD ;
				break;
				case "н" && "Н" :
				n+= word[x] + " " + par[z] + 0xD;
				break;
				case "о" && "О" :
				o+= word[x] + " " + par[z] + 0xD;
				break;
				case "п" && "П" :
				p+= word[x] + " " + par[z] + 0xD;
				break;
				case "р" && "Р" :
				r+= word[x] + " " + par[z] + 0xD ;
				break;
				case "с" && "С" :
				s+= word[x] + " " + par[z] + 0xD ;
				break;
				case "т" && "Т" :
				t+= word[x] + " " + par[z] + 0xD ;
				break;
				case "у" && "У" : 
				y+= word[x] + " " + par[z] + 0xD ;
				break;
				case "ф" && "Ф" : 
				f+= word[x] + " " + par[z] + 0xD;
				break;
				case "х" && "Х" : 
				x+= word[x] + " " + par[z] + 0xD ;
				break;
				case "ц" && "Ц" : 
				c+= word[x] + " " + par[z] + 0xD ;
				break;
				case "ч" && "Ч" : 
				ch+= word[x] + " " + par[z] + 0xD ;
				break;
				case "ш" && "Ш" : 
				sh+= word[x] + " " + par[z] + 0xD;
				break;
				case "щ" && "Щ" :
				sch+= word[x] + " " + par[z] + 0xD;
				break;
				case "ъ" && "Ъ" :
				tvz+= word[x] + " " + par[z] + 0xD ;
				break;
				case "ы" && "Ы" : 
				u+= word[x] + " " + par[z] + 0xD ;
				break;
				case "ь" && "Ь" : 
				mz+= word[x] + " " + par[z] + 0xD ;
				break;
				case "э" && "Э" : 
				ee+= word[x] + " " + par[z] + 0xD ;
				break;
				case "ю" && "Ю" : 
				jy+= word[x] + " " + par[z] + 0xD ;
				break;
				case "я" && "Я" : 
				ja+= word[x] + " " + par[z] + 0xD ;
				break;
				}
			}
		} 
	app.mySelection[0].contents+=app.mySelection[0].contents + "Г: "+ g+ "Д: "+ d+ "Е: " + e+ "Ё: " +jo+ "Ж: " + zh+ "З: " + z+ "И: " + i+ "К: " + k+ "Л: " + l+ "М: " + m+ "Н: " + n+"О: " + o+ "П: " + p+ "Р: " + r+ "С: " + s+ "Т: " +
	t+ "У: " + y+ "Ф: "+  f+ "Х: " + x+ "Ц: " + c+ "Ч: " + ch+ "Ш: " + sh+ "Щ: " + sch+ "Ъ: " +tvz+ "Ы: " + u + "Ь: " + mz+ "Э: "+ ee + "Ю: "  +jy + "Я: " + ja 
	}
 

Eugenyus

12 лет на форуме
Сообщения
1 960
Реакции
3 589
Ответ: Если есть вопросы по скриптам

Вот ваш поправленный скрипт, "10 отличий", думаю, найдёте сами.
PHP:
main ();
function main ()
{
	var mySel  = app.activeDocument.selection[0] 
	var i = mySel.parentStory.paragraphs.length 
	var par = mySel.parentStory.paragraphs 
	var word 
	var j 
	var first 
	var a, b, v, g, d, e, jo, zh, z, i, k, l, m, n, o, p, r, s, t, y, f, x, c, ch, sh, sch, tvz, u, mz, ee, jy, ja 
	for (var z = 0; z<i;z++)
	{
		//word = par[z].words[номер слова].contents.
		 j = par[z].lines[0].words.length;
		for(var x=0;x<j;x++)
		{
			word = par[z].words[x];
			first = word.characters[0].contents;
			switch (word[x])
			{
				case "а" && "А" : 
				a+= word[x] + " " + par[z] + 0xD ;
				break ;
				case "б" && "Б" : 
				b+= word[x] + " " + par[z] + 0xD ;
				break ;
				case "в" && "В" : 
				v+= word[x] + " " + par[z] + 0xD ;
				break ;
				case "г" && "Г" : 
				g+= word[x] + " " + par[z] + 0xD;
				break;
				case "д" && "Д" : 
				d+= word[x] + " " + par[z] + 0xD;
				break;
				case "е" && "Е" : 
				e+= word[x] + " " + par[z] + 0xD ;
				break;
				case "ё" && "Ё" : 
				jo+= word[x] + " " + par[z] + 0xD ;
				break;
				case "ж" && "Ж" : 
				zh+= word[x] + " " + par[z] + 0xD ;
				break;
				case "з" && "З" :
				z+= word[x] + " " + par[z] + 0xD ;
				break;
				case "и" && "И" : 
				i+= word[x] + " " + par[z] + 0xD ;
				break;
				case "к" && "К" : 
				k+= word[x] + " " + par[z] + 0xD ;
				break;
				case "л" && "Л" : 
				l+= word[x] + " " + par[z] + 0xD ;
				break;
				case "м" && "М" : 
				m+= word[x] + " " + par[z] + 0xD ;
				break;
				case "н" && "Н" :
				n+= word[x] + " " + par[z] + 0xD;
				break;
				case "о" && "О" :
				o+= word[x] + " " + par[z] + 0xD;
				break;
				case "п" && "П" :
				p+= word[x] + " " + par[z] + 0xD;
				break;
				case "р" && "Р" :
				r+= word[x] + " " + par[z] + 0xD ;
				break;
				case "с" && "С" :
				s+= word[x] + " " + par[z] + 0xD ;
				break;
				case "т" && "Т" :
				t+= word[x] + " " + par[z] + 0xD ;
				break;
				case "у" && "У" : 
				y+= word[x] + " " + par[z] + 0xD ;
				break;
				case "ф" && "Ф" : 
				f+= word[x] + " " + par[z] + 0xD;
				break;
				case "х" && "Х" : 
				x+= word[x] + " " + par[z] + 0xD ;
				break;
				case "ц" && "Ц" : 
				c+= word[x] + " " + par[z] + 0xD ;
				break;
				case "ч" && "Ч" : 
				ch+= word[x] + " " + par[z] + 0xD ;
				break;
				case "ш" && "Ш" : 
				sh+= word[x] + " " + par[z] + 0xD;
				break;
				case "щ" && "Щ" :
				sch+= word[x] + " " + par[z] + 0xD;
				break;
				case "ъ" && "Ъ" :
				tvz+= word[x] + " " + par[z] + 0xD ;
				break;
				case "ы" && "Ы" : 
				u+= word[x] + " " + par[z] + 0xD ;
				break;
				case "ь" && "Ь" : 
				mz+= word[x] + " " + par[z] + 0xD ;
				break;
				case "э" && "Э" : 
				ee+= word[x] + " " + par[z] + 0xD ;
				break;
				case "ю" && "Ю" : 
				jy+= word[x] + " " + par[z] + 0xD ;
				break;
				case "я" && "Я" : 
				ja+= word[x] + " " + par[z] + 0xD ;
				break;
				}
			}
		} 
	mySel.contents+=mySel.contents + "Г: "+ g+ "Д: "+ d+ "Е: " + e+ "Ё: " +jo+ "Ж: " + zh+ "З: " + z+ "И: " + i+ "К: " + k+ "Л: " + l+ "М: " + m+ "Н: " + n+"О: " + o+ "П: " + p+ "Р: " + r+ "С: " + s+ "Т: " +
	t+ "У: " + y+ "Ф: "+  f+ "Х: " + x+ "Ц: " + c+ "Ч: " + ch+ "Ш: " + sh+ "Щ: " + sch+ "Ъ: " +tvz+ "Ы: " + u + "Ь: " + mz+ "Э: "+ ee + "Ю: "  +jy + "Я: " + ja 
	}
 

[Кот]

Участник
Сообщения
24
Реакции
0
Ответ: Если есть вопросы по скриптам

В документе появляется вот такой текст:
А: undefinedБ: undefinedВ: undefinedГ: undefinedД: undefinedЕ: undefinedЁ: undefinedЖ: undefinedЗ: 185И: 185К: undefinedЛ: undefinedМ: undefinedН: undefinedО: undefinedП: undefinedР: undefinedС: undefinedТ: undefinedУ: undefinedФ: undefinedХ: 3Ц: undefinedЧ: undefinedШ: undefinedЩ: undefinedЪ: undefinedЫ: undefinedЬ: undefinedЭ: undefinedЮ: undefinedЯ: undefined
хотя по идее должен появляться отформатированный текст(по алфавиту)
 

Eugenyus

12 лет на форуме
Сообщения
1 960
Реакции
3 589
Ответ: Если есть вопросы по скриптам

Да, пропустил.
1. Строка switch (word[x]) должна быть switch (word)
2. Строку "a+= word[x] + " " + par[z] + 0xD ;" и ей подобные надо заменить на "a+= word + " " + par[z] + 0xD ;" , т.е. после слова word убрать [x]

сообщите о результатах
 

[Кот]

Участник
Сообщения
24
Реакции
0
Ответ: Если есть вопросы по скриптам

Я сделал все как вы сказали, но это не сработало. Мне кажется все дело в 0xD. Это ведь символ абзаца ?
 

Eugenyus

12 лет на форуме
Сообщения
1 960
Реакции
3 589
Ответ: Если есть вопросы по скриптам

символ абзаца "\r" . Именно в кавычках.
Если не получится, выложите наверное кусок текста и опишите что нужно из него получить, а то так гадать можно бесконечно.
 

mr.Dream

Участник
Сообщения
23
Реакции
0
Ответ: Если есть вопросы по скриптам

Всем привет!
Поставили задачу срочно перейти с CS на CS5. В старой библиотеке использовалось TextFrame.Searsh('Text', true, false, " ") в новой у TextFrame этого метода нет. Времени разобраться нет почти, если не сложно подскажите, чем заменить.
 

Eugenyus

12 лет на форуме
Сообщения
1 960
Реакции
3 589
Ответ: Если есть вопросы по скриптам

Всем привет!
Поставили задачу срочно перейти с CS на CS5. В старой библиотеке использовалось TextFrame.Searsh('Text', true, false, " ") в новой у TextFrame этого метода нет. Времени разобраться нет почти, если не сложно подскажите, чем заменить.

Структура такая:
PHP:
app.findTextPreferences = app.changeTextPreferences = null;
app.findTextPreferences.findWhat = "";
app.changeTextPreferences.changeTo = "";
currentText.changeText();
currentText - область поиска замены. Обратите внимание на заглавные буквы - всё должно быть набрано как здесь.
 

mr.Dream

Участник
Сообщения
23
Реакции
0
Ответ: Если есть вопросы по скриптам

Структура такая:
PHP:
app.findTextPreferences = app.changeTextPreferences = null;
app.findTextPreferences.findWhat = "";
app.changeTextPreferences.changeTo = "";
currentText.changeText();
currentText - область поиска замены. Обратите внимание на заглавные буквы - всё должно быть набрано как здесь.

Большое спасибо!
 

[Кот]

Участник
Сообщения
24
Реакции
0
Ответ: Если есть вопросы по скриптам

Всем доброе время суток !
Вот то, что я хочу сделать. Есть список компаний. Одна компания отделяется от другой энером. Нужно сделать так, что бы каждое слово, написанное определенным стилем, в названии каждой компании было в начале строчки, и это все становилось в алфавитном порядке.
На пример:
Исходник :
Код:
ЗАО «Торговый дом Мотовилихинские заводы»
ОДО «Глория Ключ»
ОАО «Белсельэлектросетьстой» филиал Завод «Энергоконструкция»
Руп «Минскэнерго» Жодинская Тэц
А должно получиться:
Код:
ЗАО «Торговый дом Мотовилихинские заводы» 
Торговый ЗАО «Торговый дом Мотовилихинские заводы»
дом ЗАО «Торговый дом Мотовилихинские заводы» 
Мотовилихинские ЗАО «Торговый дом Мотовилихинские заводы» 
заводы ЗАО «Торговый дом Мотовилихинские заводы» 
и так далее...

Вот что я пока написал:
PHP:
#target indesign
main (); 
function main () 
{ 
    var mySel  = app.activeDocument.selection[0]  
    var i = mySel.parentStory.paragraphs.length  
    var par = mySel.parentStory.paragraphs  
    var word  
    var j  
    var first  
    var a = " ", b = " ", v = " ", g = " ", d = " ", e = " ", jo = " ", zh = " ", z = " ", i = " ", k = " ", l = " ", m = " ", n = " ", o = " ", p = " ", r = " ", s = " ", t = " ", y = " ", f = " ", x = " ", c = " ", ch = " ", sh = " ", sch = " ", tvz = " ", u = " ", mz = " ", ee = " ", jy = " ", ja = " "  ;
    for (var z = 0; z<i;z++) 
    { 
        j = par[z].lines[0].words.length; 
        for(var x=0;x<j;x++) 
        { 
            word = par[z].words[x]; 
            first = word.characters[0].contents; 
            switch (word) 
            { 
                case "а" || "А" :  
                a+= word + " " + par[z] + "\r" ; 
                break ; 
                case "б" || "Б" :  
                b+= word + " " + par[z] + "\r" ; 
                break ; 
                case "в" || "В" :  
                v+= word + " " + par[z] + "\r" ; 
                break ; 
                case "г" || "Г" :  
                g+= word + " " + par[z] + "\r"; 
                break; 
                case "д" || "Д" :  
                d+= word + " " + par[z] + "\r"; 
                break; 
                case "е" || "Е" :  
                e+= word + " " + par[z] + "\r" ; 
                break; 
                case "ё" || "Ё" :  
                jo+= word + " " + par[z] + "\r" ; 
                break; 
                case "ж" || "Ж" :  
                zh+= word + " " + par[z] + "\r" ; 
                break; 
                case "з" || "З" : 
                z+= word + " " + par[z] + "\r" ; 
                break; 
                case "и" || "И" :  
                i+= word + " " + par[z] + "\r" ; 
                break; 
                case "к" || "К" :  
                k+= word + " " + par[z] + "\r" ; 
                break; 
                case "л" || "Л" :  
                l+= word + " " + par[z] + "\r" ; 
                break; 
                case "м" || "М" :  
                m+= word + " " + par[z] + "\r" ; 
                break; 
                case "н" || "Н" : 
                n+= word + " " + par[z] + "\r"; 
                break; 
                case "о" || "О" : 
                o+= word + " " + par[z] + "\r"; 
                break; 
                case "п" || "П" : 
                p+= word + " " + par[z] + "\r"; 
                break; 
                case "р" || "Р" : 
                r+= word + " " + par[z] + "\r" ; 
                break; 
                case "с" || "С" : 
                s+= word + " " + par[z] + "\r" ; 
                break; 
                case "т" || "Т" : 
                t+= word + " " + par[z] + "\r" ; 
                break; 
                case "у" || "У" :  
                y+= word + " " + par[z] + "\r" ; 
                break; 
                case "ф" || "Ф" :  
                f+= word + " " + par[z] + "\r"; 
                break; 
                case "х" || "Х" :  
                x+= word + " " + par[z] + "\r" ; 
                break; 
                case "ц" || "Ц" :  
                c+= word + " " + par[z] + "\r" ; 
                break; 
                case "ч" || "Ч" :  
                ch+= word + " " + par[z] + "\r" ; 
                break; 
                case "ш" || "Ш" :  
                sh+= word + " " + par[z] + "\r"; 
                break; 
                case "щ" || "Щ" : 
                sch+= word + " " + par[z] + "\r"; 
                break; 
                case "ъ" || "Ъ" : 
                tvz+= word + " " + par[z] + "\r" ; 
                break; 
                case "ы" || "Ы" :  
                u+= word + " " + par[z] + "\r" ; 
                break; 
                case "ь" || "Ь" :  
                mz+= word + " " + par[z] + "\r" ; 
                break; 
                case "э" || "Э" :  
                ee+= word + " " + par[z] + "\r" ; 
                break; 
                case "ю" || "Ю" :  
                jy+= word + " " + par[z] + "\r" ; 
                break; 
                case "я" || "Я" :  
                ja+= word + " " + par[z] + "\r" ; 
                break; 
                } 
            } 
        }  
    mySel.contents+=mySel.contents + "А: "+ a + "Б: "+ b + "В: "+ v + "Г: "+ g+ "Д: "+ d+ "Е: " + e+ "Ё: " +jo+ "Ж: " + zh+ "З: " + z+ "И: " + i+ "К: " + k+ "Л: " + l+ "М: " + m+ "Н: " + n+"О: " + o+ "П: " + p+ "Р: " + r+ "С: " + s+ "Т: " + 
    t+ "У: " + y+ "Ф: "+  f+ "Х: " + x+ "Ц: " + c+ "Ч: " + ch+ "Ш: " + sh+ "Щ: " + sch+ "Ъ: " +tvz+ "Ы: " + u + "Ь: " + mz+ "Э: "+ ee + "Ю: "  +jy + "Я: " + ja  ;
    }
Еще нужно проверить стиль, которым написано слово. Но что-то ничего у меня не работает...
 

[Кот]

Участник
Сообщения
24
Реакции
0
Ответ: Если есть вопросы по скриптам

Если у вас есть хоть какая-нибудь маленькая идея по поводу выше написанного - пишите. Буду признателен даже за маленькие и не значительные идеи и подсказки. Ведь всякая мелочь может натолкнуть на истину.
 

similideus

12 лет на форуме
Сообщения
671
Реакции
349
Ответ: Если есть вопросы по скриптам

В каждом названии только одно слово отмечено нужным стилем или может быть несколько? Если несколько, то создаются копии такого параграфа, по одной на каждое слово?
 

[Кот]

Участник
Сообщения
24
Реакции
0
Ответ: Если есть вопросы по скриптам

В каждом параграфе может быть несколько слов, которые отмечены таким стилем. Эти параграфы в исходнике не повторяются.
 

similideus

12 лет на форуме
Сообщения
671
Реакции
349
Ответ: Если есть вопросы по скриптам

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