[CDR 2017-2021] как через vba сделать эффект Pointillizer?

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

Nezar

Участник
Топикстартер
Сообщения
158
Реакции
3
Добрый день.
даже не знаю куда копать ((
попробовал записать макрос когда применяется этот эффект - получилось такое
Dim s1 As Shape
Set s1 = ActiveShape.Shapes(1).Shapes(1).ConvertToBitmapEx(4, False, True, 30, 1, True, False, 0)
s1.Delete

но если потом повторно запустить - получается обычная пикселезация - совершенно не то что должно было получиться.
может ктото сталкивался - подскажите куда копать?
спасибо!
 
попробовал записать макрос когда применяется этот эффект - получилось такое
а там разве не было такой фразы:
' Recording of this command is not supported
нет там и нажатия на кнопку Apply в докере
Events скупо сообщает о Apply Vector Effect
и ещё ...
116220

увы, нет (кто знает, м.б. пока нет) в VBA эффекта Pointillize, как и PhotoCocktail
 
а там разве не было такой фразы:
' Recording of this command is not supported
нет там и нажатия на кнопку Apply в докере
Events скупо сообщает о Apply Vector Effect
и ещё ...
Посмотреть вложение 116220
увы, нет (кто знает, м.б. пока нет) в VBA эффекта Pointillize, как и PhotoCocktail
Ты невнимательно прочел вопрос. Топикстартер не хочет вызова из макроса экстеншна Pointillize, у него по какой то причине не получается достичь правильного преобразования серого изображения в BlackWhite. Просто он немного неумело выразил свою мысль, скрин с настройками окна опций преобразования сильно помог бы нам всем во взаимопонимании и решении данной проблемы
 
а там разве не было такой фразы:
' Recording of this command is not supported
Была. Поэтому я и написал что попытка тупо записать макрос - не сработала.

что интересно тут -ConvertToBitmapEx(4, False, True, 30, 1, True, False, 0) - численно указаны какието параметры, но эти же числа были в настройках эффекта.

Топикстартер не хочет вызова из макроса экстеншна Pointillize
может плохо описал проблему - но именно это и хочу - "как через vba сделать эффект Pointillizer?"
скрин с настройками я конечно могу приложить - но он совершенно никак не поможет, т.к. пока на данном этапе не понятно существует ли вообще такая возможность запуска ((
 
Брррр
То есть вы действительно хотели ЗАПИСАТЬ В МАКРОС ВЫЗОВ ЭКСТЕНШНА Pointillizer ?
'8()'
 
То есть вы действительно хотели ЗАПИСАТЬ В МАКРОС ВЫЗОВ ЭКСТЕНШНА Pointillizer ?
я хотел каким либо способом запустить этот эффект через vba. но долго не мог найти там такую функцию, и тоже видел что в перечне эффектов его нет.
поэтому попробовал записать в надежде что сам корел подскажет мне как в вба запустить такой эффект. иногда это помогает, т.к. не каждый день что то пишу и не знаю всех функций и т.д.
но, как оказалось запись макроса не помогла - все это пройденный этап )) просто я написал что делал в попытках решить проблему.
 
Этот эффект реализован сторонней программой - экстеншном, написанном на дотнете
Соответственно, как авторитетно заявляет Кэп, в родной объектной модели данного эффекта быть не может, а значит и автозапись работать не будет. Можно конечно расковырять код экстеншна и посмотреть как это реализованно, но, во первых, это сильно замороченно, во вторых, скорее всего, противозаконно.
Поэтому я и предположил, что вы, на самом деле, просто хотите добиться похожего эффекта путем установки большой круглой точки в параметрах преобразования ConvertToBitmapEx - это вполне реально
 
ага, теперь понял.
сомневаюсь что это реально.
там достаточно сложный результат с квадратами разного размера должен получится. причем квадраты должны быть в векторе.
вообще конечно это реально сделать, но времени уйдет тьма.
честно говоря я удивлен что не реализован банальный запуск еффекта через вба ((
 
банальный запуск еффекта через вба
Еще раз повторяю - это не родной эффект, а внешняя программа, которая изначально даже в поставку не входила, а продавалась за отдельные (хоть и символические) деньги
Вас же не удивляет что например баркод через VBA нельзя запускать?
 
это я тоже понял - Pointillizer.CorelExtension
просто по привычке пишу эффект...
 
а есть ли способ запускать Extension через ВБА?
 
та понятно что скорее всего будет через ж ))
как вариант сторонние макросы для автоматизации клепать - но это сильно замедлит работу ((
 
При большом желании можно написать макрос. Что-то подобное я недавно сделал, вот здесь можно глянуть:
Вконтакте по этому адресу: wall-109728554_111792
(а то ссылку форум заблокировал)
Можно назвать это "объемный поинтилизер" )))
 
  • Спасибо
Реакции: lev
можно, что я и сделал... правда работает по дольше чем родной ((
только к сожалению тот результат, который должен получится у меня - гораздо сложнее того что сделали вы ((
 
Покажите, что должно получится - можем обсудить алгоритм
 
задача - произвольный замкнутый шейп заполнить квадратами от 1 мм и до 50 ( если возможно).
а главное - за разумное время - с этим и проблема при работе с большими шейпами до 50 см.
есть идея оптимизации используя массив, но пока не доходят руки.
обкатываю этот, т.к. дальше еще куча преобразований.
 

Вложения

  • Безымянный-1.png
    Безымянный-1.png
    56.9 КБ · Просм.: 622
Последнее редактирование:
А, ну так сразу бы и сказали.
Лично я б делал так - взял бы размер минимального квадрата и перевел бы шейп в монохромный растр разрешением со сторону квадрата. Затем уменьшил бы разрешение в два раза и снова перевел. Затем в три... и так далее до 50. Получил бы 50 битовых наборов в каждом из которых установленному биту соответствует заполненный квадрат данного размера, вписывающийся в шейп. Думаю это самое быстрое что можно придумать вообще, хотя, хотя, конечно, не самое оптимальное. Но оптимизировать можно бесконечно.
 
не уверен что точно понял идею
но думаю такой вариант не подойдет, т.к. смещение равно размеру текущего квадрата, а это достаточно много и не позволит точно вписать максимально возможный квадрат в конкретную область.
у меня сейчас смещение для всех квадратов - 1мм.. со всеми вытекающими проблемами в виде очень медленного перебора. но зато достаточно точно работает.