Код Java из под VB.net

  • Автор темы Автор темы GoodvinVV
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

GoodvinVV

Участник
Топикстартер
Сообщения
85
Реакции
2
Есть проблема, может кто сталкивался и знает вопрос...
зависает illustrator и вылетает после запуска скрипта с параметрами..
суть:
есть некий код написаный на яве, но запускается он из под vb.net
так вот, в пределах одного файла все работает и нареканий нет, но стоит запустить в другом файле или если файлу реверт, то вылетает с ошибкой и программа и illustrator CS6
текст ошибки примерно такой:
error.png

Почему повторный запуск кода вызывает проблему?
Код:
Dim argList(5) As Object
              argList(0) = x1
              argList(1) = y1
              argList(2) = x2
              argList(3) = y2
              argList(4) = mycolor

AiApp.DoJavaScript( _
                "var scriptArgs=app.arguments;" & vbNewLine & _
                "var x1 = arguments[0]; " & vbNewLine & _
                "var y1 = arguments[1]; " & vbNewLine & _
                "var x2= arguments[2]; " & vbNewLine & _
                "var y2= arguments[3];" & vbNewLine & _
                "var mColor = arguments[4];" & vbNewLine & _
                "var docRef = activeDocument;" & vbNewLine & _
                "var piRef = docRef.pathItems;" & vbNewLine & _
                "//__________________________" & vbNewLine & _
                "var TLU = piRef.add();" & vbNewLine & _
                "TLU.setEntirePath( new Array( new Array( x1,y1),new Array( x1+1,y1),new Array(x1+1,y1-1 ),new Array(x1+1,y1-1 ),new Array(x1+Ts,y1-1 ),new Array( x1,y1-1) ) ) ;" & vbNewLine & _
                "TLU.position = new Array((x1-1-1), (y1+1+1) );" & vbNewLine & _
                "TLU.stroked = false;" & vbNewLine & _
                "TLU.filled = true;" & vbNewLine & _
                "TLU.fillColor = mColor;" & vbNewLine & _
                "TLU.name=""LT"";" & vbNewLine & _
                "TLU.fillOverprint=  true; " & vbNewLine & _
                "TLU.closed=true;" & vbNewLine & _
                "//__________________________", arg, 1)
 
Вопрос номер один: сам скрипт, если его запускать из под иллюстратора в виде jsx файла работает везде? Вопрос номер два: зачем вызывать жабакод из под VB, если данную последовательность (насколько я сходу вижу) можно сразу на VB реализовать?
 
1. Если запускать из jsx тоже ошибка...
2. Потому что быстрее работает..'hz'
это же фрагмент....так сказать...для общего понимания...
 
Тогда отлаживайте код на JSX а когда окончательно отладите, вставляйте в VB.
Хотя, хоть убейте, не пойму, как вызов жабы из бейсика может работать быстрее аналогичного бейсиковского кода?
ЗЫ:
WTF "Ts"?
 
Последнее редактирование:
new Array(x1+Ts,y1-1 ) читать как new Array(x1+1,y1-1 ). это лишь пример!
Код примера прост и работает но при переходе к следующему файлу ....error
 
Ну, в таком случае, сделайте полноценный JSX модуль и выложите его сюда, с указанием ошибки и места, на котором вылетает. А то снова экстрасенсорикой занимаемся: "у меня не работает программа, подскажите, почему это может быть?" '))'
 
Вылетает на строке :
"TLU.fillColor = mColor;"
mColor беру из коллекции.
коллекцию создаю так:

Код:
Dim SpotColorArray() As Object
    Dim mColect As New ArrayList

Код:
For Each mSwatch In documentSwatches
            ColorIllustSPOT = CreateObject("Illustrator.SpotColor")
            ColorIllustSPOT = mSwatch.Color
            
      ReDim Preserve SpotColorArray(mSwatch.index)
        SpotColorArray(mSwatch.index) = New Object
        SpotColorArray(mSwatch.index) = ColorIllustSPOT
        mColect.Add(SpotColorArray(mSwatch.index))

Next
 
Последнее редактирование:
То есть, все теперь все делаете на бейсике, новых цветов не создаете, цвета берете существующие из палитры свотчей? А посмотреть ни каком конкретно цвете валится можно? Или на любом? А если свой собственный цвет создать и его присвоить, как в примерах описано?
 
Вылетает на строке :
"TLU.fillColor = mColor;"
mColor беру из коллекции.
коллекцию создаю так:


Код:
mColect.Clear()
        Dim mSwatch As Illustrator.Swatch

        Dim ColorIllustSPOT
        Dim i As Integer = 0

        For Each mSwatch In AiApp.ActiveDocument.Swatches
            ColorIllustSPOT = CreateObject("Illustrator.SpotColor")
            ColorIllustSPOT = mSwatch.Color

            ReDim Preserve SpotColorArray(i)
            SpotColorArray(i) = New Object
            SpotColorArray(i) = ColorIllustSPOT
            mColect.Add(SpotColorArray(i))
            i = i + 1
            ListBox3.Items.Add(i & "." & mSwatch.Name)
        Next

проверяю так:
запускаю в разных файлах...
Код:
For s = 0 To mColect.Count - 1
            colorUgol = mColect(s)

            Dim mpath As Illustrator.PathItem
            mpath = AiApp.ActiveDocument.ActiveLayer.PathItems.Rectangle(0, 0, 10, 100)
            mpath.Filled = False
            mpath.Stroked = False
            mpath.Left = 10 * s
            Try
                mpath.FillColor = colorUgol
            Catch ex As Exception
                MsgBox(ex.Message & vbNewLine & ex.StackTrace)
            End Try
        Next
и периодически получаю вот такое или просто умерает illustrator
upload_2013-11-19_12-24-41.png
 
ошибка была не в ява коде .. где то при создании и использовании цвета...
 
Как это не в явакоде? Ошибка при обращении к системым функциям из определенного вызова джава-метода. Отследите из какого, отследите цвет, алертов напихайте повсюду, в конце концов. Понятно, что ошибка не прямая, а наведенная, вы ж ее обойти хотите не так ли? А для этого ее локализовать нормально сперва надо.
 
отстранимся пока от Явы.

первая часть кода под кнопку №1 вторую под др. кнопку.
открываем файл с пантонами в свотчах () жмем кнопку №1 --создали колекцию красок .
открываем другой файл... жмем кнопку №2 и т.д.
файлу любому реверт и снова №2 и через раз илюстратор умирает
 
Catch ex As Exception
MsgBox(ex.Message & vbNewLine & ex.StackTrace)
End Try

ничего....просто зависает и мрёт 'otbline'
 
Ну почему же? Я, все таки надеюсь, что это не совсем уж плавающий баг и умирает он не на случайных цветах
Нет не так.
Между командами мбоксы натыкайте увидите где зависает.
 
Есть 100% последовательность когда возникает проблема:
1. Открываем файл №1
2. Запускаем программу жмем кнопку №1.
3. Закрываем файл №1.
4. Открываем файл №2.
5. Жмем кнопку №2.
получаем:
upload_2013-11-19_13-1-48.png

далее
upload_2013-11-19_13-2-3.png

далее
upload_2013-11-19_13-2-30.png
 
Вы ей богу какой то странный. %8 Что мне толку от ваших "кнопка 1", "файл 1" или слепых виндовых алертов? Информации в них ноль, или вы думаете, я как кашпировский по фотографии диагнозы ставить могу? Я вам уже целую страницу предлагаю способ: поставьте во всех ключевых местах программы мбоксы, отследите место на котором собственно вываливается эксепшн. Затем таким же образом определите цвет, с которым такое происходит. Если баг воспроизводим - то можно будет думать в чем он заключается и как обойти. А вы мне снова скриншоты системных эксепшнов шлете, как будто они какую то инфу содержат 'otbline'
В принципе, процентов девяносто, что ошибка именно на приведенном вами присваивании. Попробуйте тепрь определить на каком именно цвете такое происходит.
 
...
mpath.FillColor = colorUgol
здесь валиться начиная с registration и на каждом spot
 
из обнаруженного....
пока открыт файл по которому была сформирована коллекция, все работает как часы
 
АААА!
Ну так создавайте тогда новый массив цветов с нуля копируя туда не цвета целиком а посвойственно
 
"с нуля" это вместо mColect
"посвойственно" это AiColor, tint...???
а это поможет???
 
Статус
Закрыто для дальнейших ответов.