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

  • Автор темы Автор темы Oleg Butrin
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
Ответ: Если есть вопросы по скриптам

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

родитель.lines[номер строки].words.length
 
Ответ: Если есть вопросы по скриптам

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

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

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

вот мой скрипт:
Код:
#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 
	}
 
Ответ: Если есть вопросы по скриптам

Вот ваш поправленный скрипт, "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 
	}
 
Ответ: Если есть вопросы по скриптам

В документе появляется вот такой текст:
А: 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
хотя по идее должен появляться отформатированный текст(по алфавиту)
 
Ответ: Если есть вопросы по скриптам

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

сообщите о результатах
 
Ответ: Если есть вопросы по скриптам

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

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

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

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

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

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

Большое спасибо!
 
Ответ: Если есть вопросы по скриптам

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

Вот что я пока написал:
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  ;
    }
Еще нужно проверить стиль, которым написано слово. Но что-то ничего у меня не работает...
 
Ответ: Если есть вопросы по скриптам

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

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

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

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