[AI CS4-CS6] Сравнение двух path items с третьим

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

Oleg Butrin

Топикстартер
20 лет на форуме
Сообщения
1 993
Реакции
1 224
Есть такая нелегкая задача.
Наличествуют два path items относительно сложной формы, скажем в виде буквы "Г" для наглядности. Причем один из них нормальный, а другой -- копия, отраженная по вертикали.
Есть третий объект, схожей формы, но отличающийся минимально и в плане path points и длиной и площадью.
Вопрос: как не глядя глазами проверить, третий объект на предмет совпадения с первым или вторым исходным?

В скрипте есть возможность совместить path items способом add?
 
есть возможность совместить path items способом add?
Нету. Булевы операции над объектами реализованы через плагин и в скрипте доступа к ним нет. Можно было б извернуться через экшн, но ты явно смотришь не в ту сторону.
У тебя фактически задача распознавания образов - ну так и решай ее подходящими средствами. Самое простое -приведи к общему масштабу, разбей на квадратные фрагменты и проверяй фигуру на попадание в них.
Но предупреждаю, средствами иллюстраторовского скриптинга это не сложно а очень сложно. Даже фотошопом проще было бы такое делать
 
Но предупреждаю, средствами иллюстраторовского скриптинга это не сложно а очень сложно.
:)
А средствами VB.Net это довольно просто. Я вижу это так: Graphics > DrawBezier. Причём через PictureBox.Image, а не Paint
Сначала рисуем одну кривульку (прямо из иллюстратора берём координаты), а сверху другую кривульку другим цветом и чуть потолще.
Потом начинаем проверять пиксели через flag.GetPixel(0, 0). Естественно перед этим придётся как-то скорректировать координаты и габариты.
Думаю, что мысль понятна. Всё это, разумеется, не обязательно показывать пользователю.


Не по теме:
А если через Paint, то можно векторный редактор набросать за очень короткое время. Это к0 вчерашнему спору, о том какой Basic ни на что не годный. '))' 'Starwa1'
 
То есть, я правильно понял мысль - предлагается средствами сторонних библиотек отрисовать кривую, отрастрировать ее и сличать попиксельно? И это каким-то боком ставится в достоинства к vb? '))' Я просто в шоке, а может, проще не лепить к кобыле пятую ногу а сразу писать на нормальном си нативный плагин к иллюстратору в котором все это можно сделать прямо и без всяких костылей? Или хотя бы, как советует Евгений, экстеншн, в котором доступ к растровой копии есть.
 
Если бы можно было использовать сторонние программы, то я бы в InDesign копию кривой отрисовал.
 
Ну сторонние программы не обязательно, если уж зашла речь про VBA то я б и не вспоминал про б-гомерзкий дотнет, а сразу вызывал оттуда нативный DLL. Хотя из jsx тоже exe вызывать можно. Но все это заправка шубы в трусы, данная задача превосходит возможности скриптинга и никакой васик ее не спасет. Более того, я считаю его худшим из всех возможных костылей.
 
То есть, я правильно понял мысль - предлагается средствами сторонних библиотек
Каких сторонних библиотек? Только vb.net и всё. К иллюстратору же не прикручен VBA, поэтому для пользователей бейсика логично писать в бесплатной vb.net express. К тому же работа VBA, как и старинный vb6 тоже обеспечена "сторонней библиотекой".
(Мне вообще интересно, кто не обеспечен сторонней бибилиотекой? JS что ли?)
Я просто в шоке, а может, проще не лепить к кобыле пятую ногу а сразу писать на нормальном си нативный плагин к иллюстратору в котором все это можно сделать прямо и без всяких костылей?
Смешно, да. Обсуждаем скриптинг называется. Не проще ли плугин забабахать?
отрисовать кривую, отрастрировать ее и сличать попиксельно?
Отрисовать кривую сразу в растр. И ничего не растрировать. Я на этом особенно заострил внимание - PictureBox.Image. И не сличать попиксельно, а просто поискать сколько старых пикселей осталось после того как вторая кривая ПЕРЕКРОЕТ первую:
а сверху другую кривульку другим цветом и чуть потолще.
Решение займёт одну, максимум две страницы кода. Причём, 90% всего кода можно скопипастить с msdn с тех ссылок, которые я дал. Я всю программу не делал, но на всякий случай частично проверил каждый этап. Легкотня и очень быстро. В отличие от:
Самое простое -приведи к общему масштабу, разбей на квадратные фрагменты и проверяй фигуру на попадание в них.
Но предупреждаю, средствами иллюстраторовского скриптинга это не сложно а ОЧЕНЬ СЛОЖНО. Даже фотошопом проще было бы такое делать
Но все это заправка шубы в трусы, данная задача превосходит возможности скриптинга и никакой васик ее не спасет.
Мы -- комсомольцы -- лёгких путей не ищем! '))'
 
Мне вообще интересно, кто не обеспечен сторонней бибилиотекой?
VBA и VB.NET
К иллюстратору же не прикручен VBA
Обсуждаем скриптинг называется.
Так это уже не скриптинг. Это по сути разработка стороннего приложения, обращающающегося к иллюстраторовской модели через интерфейс.
 
проверить, третий объект на предмет совпадения с первым или вторым исходным
это называется сравнить один объект с другим, и не важно есть ли там второй исходный или третий '8]

Но предупреждаю, средствами иллюстраторовского скриптинга это не сложно а очень сложно. Даже фотошопом проще было бы такое делать
и в фотошопе это будет работать очень медленно, не захочешь и скриптинга такого ':(8'
 
это называется сравнить один объект с другим, и не важно есть ли там второй исходный или третий
Это называется именно так, как называется. Задача сравнить именно два объекта и выбрать тот, который имеет меньшее отклонение.
 
Ну элементарно же.
Накладываешь два объекта друг на друга и считаешь гистограмму результирующего растра.
это кажется в последних версиях так, а в других с гистограммой были какие-то сложности
 
в других с гистограммой были какие-то сложности
В каких, интересно? Помнится, пока (кажется в CS4) пикер в скриптинг не вынесли, цвет пиксела програмно можно было исключительно через гистограмму смотреть, иначе никак.
Вы вспоминаете какие-то еще более отдаленные времена?
 
уже не примопню, было два варианта решения, одни из которых как раз работал начиная с cs6, и кстати нужно было именно проверять пикселы на цвет, сранивать с шаблоном не требовалось, и это все работало не быстро - это я запомнил
 
было два варианта решения, одни из которых как раз работал начиная с cs6, и кстати нужно было именно проверять пикселы на цвет
Скриптом попиксельно читать изображение в фотошопе - весьма тревожный симптом надвигающегося идиотизма. Для этого другие решения есть - плагин, на худой конец, экстеншн.