Скрипт: выделение только симметричных ( острых) узлов на заднаной кривой.

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

Anyata

Участник
Топикстартер
Сообщения
11
Реакции
0
Здравствуйте всем.
Ищу скрип, который мог бы выделять на выделенной кривой только симметричные узлы или только острые узлы. Или наоборот , отключать , на выделенной кривой узлы заданного типа. Может есть такой плагин или скрипт.

Я по узлам не много смогла найти. Только Better Handles, которые проводят операции с множественными узлами . Но вот выбирать по типу узлов , там нет, максимум, если подвести курсор к узлу, то появиться значек о том какой это узел ( угловой, симметричный, острый).

Я так же встречала как то в Корел дро ( 13 версия) , там можно было настроить цветовую кодировку узлов, ( зеленым цветом выделялись симметричные узлы, а красным острые, когда всю кривую выделил шейп тулом).

Может есть что то подобное в Иллюстраторе, Выделяешь кривую и вместо узлов одинакового цвета видно разноцветные узлы, сразу становится понятно какие где узлы, острые или симметричные.

Часто делаю Лайф трейс, и на вид абсолютно гладкие кривые иногда состоя из острых узлов, которые на вид выглядят симметричными. Прходится в ручную проверять каждый узел.
 
Ответ: Скрипт: выделение только симметричных ( острых) узлов на заднаной кривой.

Я сначала подумал что написать такой скрипт будет проще простого, однако нарисовал кривульку с тремя острыми узлами и одним гладким, глянул, а иллюстратор определяет их все как гладкие (pathtype = aismooth). Слегка удивлен %| Пока-что разбираться с этим явлением нет времени.
 
Ответ: Скрипт: выделение только симметричных ( острых) узлов на заднаной кривой.

Вот нашла скрипт по превращению всех выделенных узлов в симметричные:

//$.bp()
mySelection = activeDocument.selection;
if (mySelection.length>0){
for(i=0;i<mySelection.length;i++){
if(mySelection.pathPoints){
papo=mySelection.selectedPathPoints;
for(q=0;q<papo.length;q++){
if(papo[q].selected==PathPointSelection.ANCHORPOINT){
papo[q].pointType=PointType.SMOOTH;
}
}
}
}
}else{}

Работает нормально.
Как я понимаю суть этого скрипта, то если в вбраных узлах присутствуют острые , то изменить их на гладкие.
А как сделать так что бы вместо изменения на гладкие они бы выкрашивались другим цветом или деселектились.
 
Ответ: Скрипт: выделение только симметричных ( острых) узлов на заднаной кривой.

Этот скрипт написал muchacho еще этак в 2003 году, но работает он только с узлами которые кажутся гладкими, а на самом деле острые, причем что тогда, что сейчас, лично у меня он срабатывает только когда начинаешь двигать усы узла, и кстати он не превращает все выделенные узлы в симметричные.

Выкрашивать узлы другим цветом с помощью скриптинга невозможно. Хотелось бы узнать в каких кореловских настройках такое можно сделать?
 
Ответ: Скрипт: выделение только симметричных ( острых) узлов на заднаной кривой.

Да, этот скрипт не првевращат узлы в гладкие, острые узлы так и остаються острыми на вид, а их ручки начинают двигаться зависимо друг от друга ( тянешь одну, тянется и другая), как я понимаю ,это свойство симметричного узла.
Те, кривая остается не изменной , а узел менятся.
Как мне кажеться нужно водить понятие острый симметричны и тупой симметричный.
Подобные узлы ( острые симметричные ) я часто встречала при экспорте из одного редактора в другой.
Но это по сути не важно, данный скрипт различает 2 типа узлов и в заданном типе меняет свойства.

В Кореле :
"Включается через реестр (Пуск>Выполнить...>regedit):
в ветке

HKEY_CURRENT_USER > Software > Corel > CorelDRAW > 13.0 > CorelDRAW > Application Preferences > Base Tool Pref присваиваем параметру "NodeColorCoding" значение "1".
 
Ответ: Скрипт: выделение только симметричных ( острых) узлов на заднаной кривой.

> "NodeColorCoding" значение "1".

Угу, только в x4 NodesColorCoding". Спасибо не знал.


Не по теме:
Кстати, Anyata, вы, извините, точно женщина? ;] Просто такой серьезный подход к делу, я в шоке.


У вас какая операционная система и какой иллюстратор? Дело в том что в новых версиях иллюстратора есть функция конвертирования выбранных узлов, а насчет выбора можно подумать.
 
Ответ: Скрипт: выделение только симметричных ( острых) узлов на заднаной кривой.

У меня XP и CS3. Конвертацию узлов можно делать без проблем, Better Handles исключительно рекомендую. У меня задача, как узнать какие узлы псевдо- симметричные , а на самом деле острые. Один способ дергать каждый узел в ручную, а вот второй это скрипт или плагни. Знать бы еще по каким критериям ( свойствам объекта) сам Иллюстратор различает какой узел гладкий , какой острый. И скорей всего, там не угол ( или положение , координаты ручек), а именно свойсто ( тянешь одну , двигается другая).

Так же хочу спросить, как Вы думаете если заказать такой скрип за деньги , сколько это будет стоить ( порядок)?
 
Ответ: Скрипт: выделение только симметричных ( острых) узлов на заднаной кривой.

Better Handles я в своё время ставил, но он тогда был каким-то глюкавым, а как сейчас мне не интересно, т.к. юзаю xtreampath.

Насчет скрипта. Я, в ближайшее время попробую его сделать бесплатно, но если это будет сопряжено с какими-нибудь непредвиденными заморочками, или нехваткой времени, то я сразу сообщу. К тому же кроме меня тут немало людей могут озадачится этим вопросом. Может они подключатся.
 
Ответ: Скрипт: выделение только симметричных ( острых) узлов на заднаной кривой.

Спасибо, за бесплатно.
А если за платно, напишите в личку.
 
Ответ: Скрипт: выделение только симметричных ( острых) узлов на заднаной кривой.

Боюсь что проблема решения не имеет, по крайней мере мне пока решить её не удалось. Я, конечно еще посмотрю, но что-то у меня сильные сомнения в своих силах. В общем выкладываю то что имею на данный момент. Скрипт работает только с одной кривой, либо с одним Compound объектом.

Суть проблемы: сначала я пытался применить точную математику, уравнение прямой. В принципе я знал что значения в ai (да и вообще в программах) не совсем точны, пришлось в этом очередной раз убедиться. Рисуем овал. Он по определению состоит из симметричных узлов. Уменьшаем овал или поворачиваем, и начинается – один ус уже больше другого на 0.00001pt. Я начал округлять по правилам, потом округлять без правил (обрубая лишние цифры), потом комбинировать и то и другое — все варианты показывали разную степень точности на разных кривых. Короче, пока что основная ошибка скрипта в том, что он иногда сглаженный несимметричный узел определяет как угловой с двумя усами. Причем, есть к примеру затейливая кривая нарисованная карандашом. Все узлы гладкие. Скрипт определяет несколько узлов как негладкие. Выделяю часть кривой на которой гладкие, удаляю, запускаю скрипт по-новой. Теперь он определяет гладкими те которые до удаления определял как негладкие! Кривая никак не изменилась, не сдвинулась, не повернулась, просто часть кривой удалена, а значения уже другие. И победить я это пока не могу. Возможны еще какие-нибудь ошибки, т.к. я не полировал и писал под cs4, может на старых версиях вообще не запуститься. '))'
 

Вложения

  • ColorPoint.gif
    ColorPoint.gif
    10.9 КБ · Просм.: 909
  • ColorPoints.zip
    ColorPoints.zip
    1.2 КБ · Просм.: 385
Ответ: Скрипт: выделение только симметричных ( острых) узлов на заднаной кривой.

Хм, а ведь стоило подумать о скрипте с утра, а не поздно вечером, и проблема фактически побеждена. Исправил только одну строчку и качество определения узлов дошло до 99%. Вчерашний пост даже читать забавно "не имеет решения", "победить не могу", одну строчку поправил. ')))))'
 

Вложения

Ответ: Скрипт: выделение только симметричных ( острых) узлов на заднаной кривой.

Здравствуйте Всем.
Спасибо за скрип.

Вот только опробовать не могу, проблема со всеми скриптами вижул бейсика - не идут : выскакивает ошибка activex component can't create object

Пока гуглю безуспешно, все действия результата немеют.
 
Ответ: Скрипт: выделение только симметричных ( острых) узлов на заднаной кривой.

Да если выскакивает такая надпись, то дело дрянь... У меня пару лет назад что-то подобное тоже было и даже tech note на офсайте не помог. В принципе это может быть преодолено другими бейсиками — VB и VBA. Можете попробовать скопировать скрипт в любую программу где имеется среда VBA (MS Office, Corel, AutoCAD).
Alt+F11 > там зайти в Tools>References и подключить нужную библиотеку (к примеру Adobe Illustrator CS3). Скрипт следует добавить в любой модуль, любого проекта. Лучше, конечно сделать новый модуль > правой кнопкой мыши в проекте, либо в левом верхнем углу, либо через insert в меню. Самое первое слово в скрипте "Main" лучше убрать. Если всё пройдет хорошо то я просто напросто сделаю exe-файл.
 
Ответ: Скрипт: выделение только симметричных ( острых) узлов на заднаной кривой.

У меня не идут абсолютно все скипты вижуал бейсика ( те что есть сампел скрипт), так что склоняюсь к переустановке программы.
 
Ответ: Скрипт: выделение только симметричных ( острых) узлов на заднаной кривой.

А из VBA тоже не идут?
 
Ответ: Скрипт: выделение только симметричных ( острых) узлов на заднаной кривой.

Спасибо за скрипт еще раз, все получилось. Пришлось переустановить программу.
Так что хорошо.
 
Ответ: Скрипт: выделение только симметричных ( острых) узлов на заднаной кривой.

Неужели помогла перестановка ai? Вообще обычно если vbscript не идет, то это в системе причина. Иногда эту причину никакими шаманизмами не изгнать.
 
Ответ: Скрипт: выделение только симметричных ( острых) узлов на заднаной кривой.

Я много чего делала , возможно комплексный подход, зарегистрировала кучу DLL-ов, после переустановила программу и все пошло.
 
Статус
Закрыто для дальнейших ответов.