изменить BleedOffsetRect

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

Oleg_Sh

Топикстартер
15 лет на форуме
Сообщения
179
Реакции
50
Добрый день!
Подскажите как через VB изменить PDFSaveOption.sBleedOffsetRect
Делаю так:
Код:
Dim options = New Illustrator.PDFSaveOptions()
      
        With options
            For Each i In .BleedOffsetRect
                i = i * 0 + 3
            Next
Получаю i=3, но в BleedOffsetRect ничего не меняется
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Во-первых, что за индусский код i=i*0+3? А почему не i=3?
Во-вторых, избегайте пользоваться конструкциями For Each In - пользуйтесь нормальным For i=1 to 4 ...
И, в третьих, вы уверены, что bleedOffsetRect - это массив отступов, а не координаты прямоугольника внутри них?
У меня лично такой уверенности нет
 

Oleg_Sh

Топикстартер
15 лет на форуме
Сообщения
179
Реакции
50
И, в третьих, вы уверены, что bleedOffsetRect - это массив отступов, а не координаты прямоугольника внутри них?
это ничего не меняет. bleedOffsetRect показывается как System.Array и изменить значения в нем не получается.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Потому, что он предполагает перебор свойств объекта bleedOffsetRect а вам нужны элементы массива. Это вовсе не одно и то же. Пробуйте bleedOffsetRect(i)=3
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Что значит тот же? То есть вы ставите bleedOffsetRect(1)=3 потом читаете его - значение не присваивается? Или как? Свойство, по идее, должно быть доступно для записи.
 

Oleg_Sh

Топикстартер
15 лет на форуме
Сообщения
179
Реакции
50
То есть вы ставите bleedOffsetRect(1)=3 потом читаете его - значение не присваивается?
Вот именно. Значение остается неизменным. При этом другие свойства PDFSaveOption изменяются без проблем
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Странно.
А какая версия иллюстратора? И какие там изначально значения - нули?
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Даже если сразу инициализировать массив как у них?
А из джавы пробовали, может это только бейсиковский баг?
 
  • Спасибо
Реакции: Oleg_Sh

Oleg_Sh

Топикстартер
15 лет на форуме
Сообщения
179
Реакции
50
На js такая конструкция срабатывает:
Код:
exOPDF = new PDFSaveOptions();
with(exOPDF){
      bleedOffsetRect = [3, 5, 10, 0];
}
на VB напрямую назначить массив не удается, но вышло вот так:
Код:
Dim options = New Illustrator.PDFSaveOptions()

        With options
            Dim arr() = {3, 3, 3, 3}
            .BleedOffsetRect = arr
        End With
При этом VStudio показывает что .BleedOffsetRect является массивом содержащим Double-значения. Но если arr() описать как Double (Integer тоже пробовал), то при назначении его BleedOffsetRect, выпадает в ошибку "компонента COM возвращена ошибка в формате HRESULT E_FAIL".
Проблема решена. Спасибо @_MBK_ за помощь!
 
Последнее редактирование:

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Чудны пути адобы
 
Статус
Закрыто для дальнейших ответов.