[ID CS4-CS6] Дублирование GraphicLine [VB.NET]

  • Автор темы Автор темы Oleg_Sh
  • Дата начала Дата начала

Oleg_Sh

Топикстартер
15 лет на форуме
Сообщения
181
Реакции
50
Кто-нибудь знает как сдублировать GraphicLine?
Такой код не работает:
Код:
Dim myLine As InDesign.GraphicLine = myDoc.Pages.Item(1).GraphicLines.Add(myDoc.ActiveLayer, idLocationOptions.idAtBeginning)
Dim newLine As InDesign.PageItem
newLine = myLine.Duplicate()
.Duplicate должен возвращать PageItem
Ошибка:
System.InvalidCastException: 'Недопустимый тип возвращаемого аргумента.'
Сам объект в индезайне дублируется, но переменной не присваивается.
 
Dim newLine As InDesign.GraphicLine попробуйте

либо приведите возвращаемое к GraphicLine
 
  • Спасибо
Реакции: Oleg Butrin
Dim newLine As InDesign.GraphicLine попробуйте
Пишет, что InDesign.GraphicLine это интерфейс, и его нельзя использовать совместно с NEW

либо приведите возвращаемое к GraphicLine
Код:
Dim nwLine As PageItem
nwLine = CType(myLine.Duplicate(), PageItem)
тот же результат.

Код:
myLine.Duplicate()
такой вариант, без присвоения результата, тоже допустим. Но и он возвращает туже ошибку.
 
Свою задачу решил через Try/Catch. Сначала сдублировать, сместить и преобразовать исходный GraphicLine, сделать его копию, и снова сместить и преобразовать исходный.
Но это не спортивно.
 
VB.NET применительно к адобовскому скриптингу использовать тоже неспортивно.'))'
Кому как.
По мне, так писать скрипт больше 10 строк в ESTK, все равно что бегать в мешках и на костылях через барьеры. Как редактор, худо-бедно можно писать, но отладка просто адский-ад.
 
Как редактор, худо-бедно можно писать, но отладка просто адский-ад.
Ну сам интерфейс VB.NET в адобовскую объектную модель - адский ад. Ибо все работает не так, как кажется. :(
 
Оно-то, в принципе, и немудрено - когда вы запускаете скрипт из индизайна или ESTK, то адобовский интерпретатор худо-бедно, но исполняет собственную программу. А вы ради кажущегося удобства отладки, запускаете другой интерпретатор, который через кривой нативный интерфейс, написанный индусами чисто на отвертись, пытается управлять другим интерпретатором и принимать от него совершенно противоестественные данные. Получается, как будто вы привязали жигули-копейку к хвосту лошади, которой пытаетесь управлять из кабины. Все бы ничего, да лошадь сама не едет, а стоит на железнодорожной платформе, которую, в свою очередь, везет паровоз, а машинист ориентируется исключительно на звук ржания.
 
  • Спасибо
Реакции: George
Оно-то, в принципе, и немудрено - когда вы запускаете скрипт из индизайна или ESTK, то адобовский интерпретатор худо-бедно, но исполняет собственную программу. А вы ради кажущегося удобства отладки, запускаете другой интерпретатор, который через кривой нативный интерфейс, написанный индусами чисто на отвертись, пытается управлять другим интерпретатором и принимать от него совершенно противоестественные данные. Получается, как будто вы привязали жигули-копейку к хвосту лошади, которой пытаетесь управлять из кабины. Все бы ничего, да лошадь сама не едет, а стоит на железнодорожной платформе, которую, в свою очередь, везет паровоз, а машинист ориентируется исключительно на звук ржания.
Может и так, но удобства отладки вовсе не кажущиеся, а действительно на порядок лучше чем в ESTK.
А как уж оно там изнутри устроено, мне все равно, если результат одинаковый.
 
Ну как скажете.
А потом удивляемся, увидев пакеты, у которых в одну кучу сляпаны на живую нитку взаимно дублирующиеся, рекурсивно вызываемые друг из друга сотни модулей на яве, питоне, дотнете и прочем зоопарке платформ. Работает же? И недорого - голодные студенты из Калькутты за плошку риса каждый слепили.
 

Не по теме:
Оно-то, в принципе, и немудрено - когда вы запускаете скрипт из индизайна или ESTK, то адобовский интерпретатор худо-бедно, но исполняет собственную программу. А вы ради кажущегося удобства отладки, запускаете другой интерпретатор, который через кривой нативный интерфейс, написанный индусами чисто на отвертись, пытается управлять другим интерпретатором и принимать от него совершенно противоестественные данные. Получается, как будто вы привязали жигули-копейку к хвосту лошади, которой пытаетесь управлять из кабины. Все бы ничего, да лошадь сама не едет, а стоит на железнодорожной платформе, которую, в свою очередь, везет паровоз, а машинист ориентируется исключительно на звук ржания.
По-моему, это должно быть на Башорге.

 
Может и так, но удобства отладки вовсе не кажущиеся, а действительно на порядок лучше чем в ESTK.
По заданному вопросу очевидно, что удобство отладки на порядок лучше. :sarcasm:
В JavaScript вся эта радость выполняется в одну строку без необходимости отладки вообще.
 

Не по теме:
А потом удивляемся, увидев пакеты, у которых в одну кучу сляпаны на живую нитку взаимно дублирующиеся, рекурсивно вызываемые друг из друга сотни модулей на яве, питоне, дотнете и прочем зоопарке платформ.
Ну ты палку-то так не гни!

 

Не по теме:
Да я че? - Я ниче, было б все исключительно на питоне, слова б не сказал! '))'
 
исключительно на питоне
Вот, кстати, пример того, как решается предложенная задача на питоне. Вообще без проблем.
Код:
import win32com.client

app = win32com.client.dynamic.Dispatch('Indesign.Application.CS6')
doc = app.ActiveDocument
page = doc.Pages(1)
source = page.GraphicLines.Add()
dest  = source.Duplicate([10, 10])
 
Насколько я понимаю, питон где-то в глубине себя тоже в IL транслируется? 'hmmm'
Соответсвенно, в моем примере разница с VB.NET в том, что копейка привязана нее к хвосту лошади, а посредством змеи '))'
 
Насколько я понимаю, питон где-то в глубине себя тоже в IL транслируется?
Я ни разу не эксперт в COM-технологии, но есть мнение, что обращения к свойствам COM-объектов и вызовы их же методов работают через собственный интерфейс, не связанный с трансляцией в IL.
 
Разница чисто в длине змеи