Adobe Illustrator CS2
У меня скрипты с тегами объектов работают неправильно.
Значение тега заменяется его именем.
Причем, происходит это и в бейсике и в яваскрипте.
Причем, на примерах скриптов самого Adobe!
1) Пример взят из Illustrator CS2 JavaScript Scripting Reference.pdf, стр 240.
Если на странице есть картинка,
то пример добавляет тег "AdobeWebSite" со значением "http://www.adobe.com/"
В него я добавил alert с именем и значением добавляемого тега
скопируйте код в текстовый файл с расширением .js
откройте илл и перетяните на окно нового документа любую картинку (или Menu > file > place)
запустите скрипт
увидите alert со значением тега не "http://www.adobe.com/", а "AdobeWebSite".
Т.е. значение тега заменяется именем тега.
2) Пример взят из директории ...\Adobe Illustrator CS2\Scripting\Sample Scripts\Visual Basic\Working with Tagged Art
Исходный файл - CreateDeleteTag.vbs
переработал его, что-бы в новом файле он выводил строку с именем и значением тега
------------------------------------
скопируйте код в текстовый файл с расширением .vbs
откройте в илле новый документ и запустите скрипт
увидите текст со значением тега не "myValue", а "myTest".
Т.е. значение тега заменяется именем тега.
В сохраненном без компрессии файле илла можно убедиться, что значение тега в любом случае = его имени.
Напр.:
Такая вот чешуя
Это у меня одного, или реальный баг скриптинга?
Спасибо всем, кто проверит и откликнется!
uriy
У меня скрипты с тегами объектов работают неправильно.
Значение тега заменяется его именем.
Причем, происходит это и в бейсике и в яваскрипте.
Причем, на примерах скриптов самого Adobe!
1) Пример взят из Illustrator CS2 JavaScript Scripting Reference.pdf, стр 240.
Если на странице есть картинка,
то пример добавляет тег "AdobeWebSite" со значением "http://www.adobe.com/"
В него я добавил alert с именем и значением добавляемого тега
Код:
// Set a URL property on all RasterItems and PlacedItems in the document
if ( app.documents.length > 0 ) {
doc = app.activeDocument;
if ( doc.placedItems.length + doc.rasterItems.length > 0 ) {
for ( i = 0; i < doc.pageItems.length; i++ ) {
imageArt = doc.pageItems[i];
if ( imageArt.typename == "PlacedItem" || imageArt.typename == "RasterItem") {
// Create a new Tag with the name AdobeURL and the
// value of the www link
urlTAG = imageArt.tags.add();
urlTAG.name = "AdobeWebSite";
urlTAG.value = "http://www.adobe.com/";
alert( "Tag Name: " + urlTAG.name + ", Value: " + urlTAG.value);
}
}
}
else {
alert( "No placed or raster items in the document" );
}
}
скопируйте код в текстовый файл с расширением .js
откройте илл и перетяните на окно нового документа любую картинку (или Menu > file > place)
запустите скрипт
увидите alert со значением тега не "http://www.adobe.com/", а "AdobeWebSite".
Т.е. значение тега заменяется именем тега.
2) Пример взят из директории ...\Adobe Illustrator CS2\Scripting\Sample Scripts\Visual Basic\Working with Tagged Art
Исходный файл - CreateDeleteTag.vbs
переработал его, что-бы в новом файле он выводил строку с именем и значением тега
Код:
Set appRef = CreateObject("Illustrator.Application.3")
If (appRef.Documents.Count = 0) Then
Set docRef = appRef.Documents.Add
Else
Set docRef = appRef.ActiveDocument
End If
If (docRef.PageItems.Count = 0) Then
Set textArt = docRef.TextFrames.Add
textArt.Position = Array(100, 200)
textArt.Contents = "Illustrator Scripting"
textArt.TextRange.CharacterAttributes.Size = 24
End If
appRef.DoJavaScript "alert('Adding a tag')"
' OR
' MsgBox "Adding a tag."
Set newTag = docRef.PageItems(1).Tags.Add
newTag.Name = "MyTest"
newTag.Value = "MyValue"
textArt.Contents = "Adding a tag, Name: " & newTag.Name & ", Value: " & newTag.Value
Rem now delete the tag.
Rem Obtain the tag using it's name
appRef.DoJavaScript "alert('Removing the tag.')"
' OR
' MsgBox "Removing the tag."
Set tagToDelete = docRef.PageItems(1).Tags("MyTest")
textArt.Contents = "Tag, Name: " & docRef.PageItems(1).Tags("MyTest").Name & ", Value: " &
docRef.PageItems(1).Tags("MyTest").Value
docRef.PageItems(1).Tags.Remove tagToDelete
appRef.DoJavaScript "alert('Tag deleted.')"
' OR
' MsgBox "Tag deleted"
скопируйте код в текстовый файл с расширением .vbs
откройте в илле новый документ и запустите скрипт
увидите текст со значением тега не "myValue", а "myTest".
Т.е. значение тега заменяется именем тега.
В сохраненном без компрессии файле илла можно убедиться, что значение тега в любом случае = его имени.
Напр.:
Код:
%_/ArtDictionary :
%_(MyTest) /String (MyTest) ,
Такая вот чешуя
Это у меня одного, или реальный баг скриптинга?
Спасибо всем, кто проверит и откликнется!
uriy