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

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

но если потом повторно запустить - получается обычная пикселезация - совершенно не то что должно было получиться.
может ктото сталкивался - подскажите куда копать?
спасибо!
 

dastin

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

увы, нет (кто знает, м.б. пока нет) в VBA эффекта Pointillize, как и PhotoCocktail
 

_MBK_

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

Nezar

Участник
Топикстартер
Сообщения
158
Реакции
3
а там разве не было такой фразы:
' Recording of this command is not supported
Была. Поэтому я и написал что попытка тупо записать макрос - не сработала.

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

Топикстартер не хочет вызова из макроса экстеншна Pointillize
может плохо описал проблему - но именно это и хочу - "как через vba сделать эффект Pointillizer?"
скрин с настройками я конечно могу приложить - но он совершенно никак не поможет, т.к. пока на данном этапе не понятно существует ли вообще такая возможность запуска ((
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 195
Реакции
10 846
Брррр
То есть вы действительно хотели ЗАПИСАТЬ В МАКРОС ВЫЗОВ ЭКСТЕНШНА Pointillizer ?
'8()'
 

Nezar

Участник
Топикстартер
Сообщения
158
Реакции
3
То есть вы действительно хотели ЗАПИСАТЬ В МАКРОС ВЫЗОВ ЭКСТЕНШНА Pointillizer ?
я хотел каким либо способом запустить этот эффект через vba. но долго не мог найти там такую функцию, и тоже видел что в перечне эффектов его нет.
поэтому попробовал записать в надежде что сам корел подскажет мне как в вба запустить такой эффект. иногда это помогает, т.к. не каждый день что то пишу и не знаю всех функций и т.д.
но, как оказалось запись макроса не помогла - все это пройденный этап )) просто я написал что делал в попытках решить проблему.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 195
Реакции
10 846
Этот эффект реализован сторонней программой - экстеншном, написанном на дотнете
Соответственно, как авторитетно заявляет Кэп, в родной объектной модели данного эффекта быть не может, а значит и автозапись работать не будет. Можно конечно расковырять код экстеншна и посмотреть как это реализованно, но, во первых, это сильно замороченно, во вторых, скорее всего, противозаконно.
Поэтому я и предположил, что вы, на самом деле, просто хотите добиться похожего эффекта путем установки большой круглой точки в параметрах преобразования ConvertToBitmapEx - это вполне реально
 

Nezar

Участник
Топикстартер
Сообщения
158
Реакции
3
ага, теперь понял.
сомневаюсь что это реально.
там достаточно сложный результат с квадратами разного размера должен получится. причем квадраты должны быть в векторе.
вообще конечно это реально сделать, но времени уйдет тьма.
честно говоря я удивлен что не реализован банальный запуск еффекта через вба ((
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 195
Реакции
10 846
банальный запуск еффекта через вба
Еще раз повторяю - это не родной эффект, а внешняя программа, которая изначально даже в поставку не входила, а продавалась за отдельные (хоть и символические) деньги
Вас же не удивляет что например баркод через VBA нельзя запускать?
 

Nezar

Участник
Топикстартер
Сообщения
158
Реакции
3
это я тоже понял - Pointillizer.CorelExtension
просто по привычке пишу эффект...
 

Nezar

Участник
Топикстартер
Сообщения
158
Реакции
3
а есть ли способ запускать Extension через ВБА?
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 195
Реакции
10 846

Nezar

Участник
Топикстартер
Сообщения
158
Реакции
3
та понятно что скорее всего будет через ж ))
как вариант сторонние макросы для автоматизации клепать - но это сильно замедлит работу ((
 

Karatau

Участник
Сообщения
60
Реакции
22
При большом желании можно написать макрос. Что-то подобное я недавно сделал, вот здесь можно глянуть:
Вконтакте по этому адресу: wall-109728554_111792
(а то ссылку форум заблокировал)
Можно назвать это "объемный поинтилизер" )))
 
  • Спасибо
Реакции: lev

Nezar

Участник
Топикстартер
Сообщения
158
Реакции
3
можно, что я и сделал... правда работает по дольше чем родной ((
только к сожалению тот результат, который должен получится у меня - гораздо сложнее того что сделали вы ((
 

Karatau

Участник
Сообщения
60
Реакции
22
Покажите, что должно получится - можем обсудить алгоритм
 

Nezar

Участник
Топикстартер
Сообщения
158
Реакции
3
задача - произвольный замкнутый шейп заполнить квадратами от 1 мм и до 50 ( если возможно).
а главное - за разумное время - с этим и проблема при работе с большими шейпами до 50 см.
есть идея оптимизации используя массив, но пока не доходят руки.
обкатываю этот, т.к. дальше еще куча преобразований.
 

Вложения

  • Безымянный-1.png
    Безымянный-1.png
    56.9 КБ · Просм.: 581
Последнее редактирование:

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 195
Реакции
10 846
А, ну так сразу бы и сказали.
Лично я б делал так - взял бы размер минимального квадрата и перевел бы шейп в монохромный растр разрешением со сторону квадрата. Затем уменьшил бы разрешение в два раза и снова перевел. Затем в три... и так далее до 50. Получил бы 50 битовых наборов в каждом из которых установленному биту соответствует заполненный квадрат данного размера, вписывающийся в шейп. Думаю это самое быстрое что можно придумать вообще, хотя, хотя, конечно, не самое оптимальное. Но оптимизировать можно бесконечно.
 

Nezar

Участник
Топикстартер
Сообщения
158
Реакции
3
не уверен что точно понял идею
но думаю такой вариант не подойдет, т.к. смещение равно размеру текущего квадрата, а это достаточно много и не позволит точно вписать максимально возможный квадрат в конкретную область.
у меня сейчас смещение для всех квадратов - 1мм.. со всеми вытекающими проблемами в виде очень медленного перебора. но зато достаточно точно работает.