Скрипт для сваривания узлов в CorelDraw.

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

-=CMYK=-

Забанен
Топикстартер
Сообщения
3 320
Реакции
2
Скрипт для сваривания узлов в CorelDraw.

Написал с утра. Скачать тут: http://80.66.90.190/hole/temp/

В полученном zip-файле лежит сам файл скрипта и readme, который я тут цитирую чтобы не повторять что к чему.

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


----------- weldnodes.txt--------------
Скрипт для сваривания множества узлов в кривой
для Corel Draw 11.

РАСПРОСТРАНЕНИЕ СКРИПТА - БЕСПЛАТНОЕ. РАСПРОСТРА-
НЕНИЕ И ПРОДАЖА С ЦЕЛЬЮ НАЖИВЫ - ЗАПРЕЩАЕТСЯ!

Путь для помещения скрипта, WeldNodes.gms -

C:\Program Files\Corel\Corel Graphics 11\Draw\GMS

Для быстрой навигации:

Скопируйте этот путь в буфер обмена,
запустите Проводник (File Explorer) и
вставьте в адресную строку.

Как работает:

Проверяет все узлы в объекте, который может состоять
из множества суб-путей, на наличие таких узлов, у
которых совпадают обе координаты с заданной точностью:
точность задается в количестве знаков за запятой -
с помощью поля ввода расположенного в окне диалога
скрипта. Если два таких узла найдены - они свариваются
в один.

Существует два метода: однонаправленный и второй.

При однонаправленном методе, для каждого проверяемого
в данный момент узла проверяется его сосед в одном
направлении (поскольку скрипт проверяет узлы от конца,
то - в обратном). Этот метод полностью работоспособен
тогда, когда в кривой все суб-пути совпадают по
направлению порядка нумерации узлов от первого к
последнему и по собственному индексу в кривой.

Поэтому, когда в кривой есть суб-пути, которые не
совпадают по собственному индексу, а также имеют
не совпадающее с другими суб-путями направление
нумерации узлов от первого к последнему, следует
пользоваться Вторым методом.

Второй метод проверяет для одного текущего узла
ВСЕ ОСТАЛЬНЫЕ узлы в кривой. Если найдется еще один
крайний узел совпадающий с проверяемым по обеим
координатам с заданной точностью, то эти узлы будут
сварены в один.

Этот метод может завершиться полным исчерпанием ресурсов
компьютера если вы выберите для обработки объект
содержащий слишком много узлов. Поэтому, когда объект
содержит более 1000 узлов, то есть, когда для его
обработки потребуется более миллиона итераций, возникает
диалог предупреждения. Вы можете отказаться от обработки
чтобы уменьшить количество узлов стандартной командой
Corel Draw - Curve Smoothness.

Если все-таки вы видите что процессу конца и края не
видать, и что винчестер в компьютере лихорадочно тарахтит
выделяя место на диске под виртуальную память - жмите
кнопку STOP!.

Кнопка STOP! связана с клавишей ESC. После нажатия кнопки
STOP! процесс остановится потому что скрипт будет полностью
выгружен из памяти.

Кнопка Weld - связана с клавишей Enter.

Как пользоваться:

Запустите скрипт из меню Tool>Visual Basic>Play...
Выберите из списка внизу: WeldNodes (weldnodes.gms).
Нажмите Ок.

Если у вас объект требующий сваривания множества
узлов не выделен - выделите его. Диалог скрипта
работает в немодальном режиме. Затем, после того,
как нужный объект выделен - нажмите кнопку Weld.

Флаг "One Direction" - переключает выбор метода сваривания:
Выключенный - Второй метод.
Включенный - Однонаправленный метод.

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

А затем назначить кнопке или меню - клавиатурное сокращение.

Код скрипта запаролен. По всем вопросам обращаться: d-signer@inbox.ru

(c) 2003, d-signer@inbox.ru http://www.d-signer.narod.ru
 
Поскольку команда Close Curve не может корректно закрыть кривую имеющую несколько открытых суб-путей, то, данный скрипт может помочь в этом, поскольку вручную отлавливать это дело - кактус в задницу получить.

Кстати, превоходный факт: возможности VBA в этом деле явственно превосходят имеющийся арсенал инструментов и команд в самом Кореле. Все дело - только во времени, которое нужно положить на детальное изучение свойств и методов.
 
Статус
Закрыто для дальнейших ответов.