[CDR 2017-2021] Записанный макрос некорректно работает с заливкой растровым узором

Okatama

Артифекс
Топикстартер
Сообщения
12
Реакции
0
Добрый день!
Есть ошибка при работе с макросами, сориентируйте, может, кто сталкивался уже и может подсказать решение?

Когда записываю макрос на заливку фигуры растровым узором, скрипт сохраняется, работает в текущем документе корректно, всё прекрасно.

Но при следующем открытии документа он заливает фигуру объектом с подписью "Растровый узор" с белым цветом вместо необходимой для заливки картинки.
Действие записываю простое - выбор заливки, ее настройки (размер+поворот) и применение к объекту.

Макрос на заливку обычным цветом работает отлично.

Записала видеофайл, что делаю и что получается -

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

Думала, может, ошибка в подтягивании картинки. Сделала еще вариант, когда скрипт выбирает не из заготовленного заранее комплекта заливок, а напрямую подтягивает джепег с папки. Но результат был тот же.

Чтобы вы могли посоветовать?
Благодарю за отклик!
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 187
Реакции
10 844
Вы сам текст макроса покажите, который записался
А узор стандартный или вы его создавали сами?
 

Okatama

Артифекс
Топикстартер
Сообщения
12
Реакции
0
Вы сам текст макроса покажите, который записался

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

Первый
JavaScript:
  // Recorded 7/26/2022
  let OrigSelection = host.ActiveSelectionRange;
  OrigSelection.Item(1).Style.StringAssign("{\"outline\":{\"width\":\"2000\",\"color\":\"CMYK,USER,0,0,0,100,100,00000000-0000-0000-0000-000000000000\"},\"fill\":{\"tilingFlagsMirrorHorizontal\":\"0\",\"tilingWidth\":\"2000000\",\"tilingFlagsNoSeams\":\"0\",\"tilingFlagsScaleToObject\":\"0\",\"fillName\":\"53536d92-bd98-4c61-a315-f2a49f24e2c2.2.colorbitmap\",\"angle\":\"0\",\"skew\":\"0\",\"tilingYOffset\":\"0\",\"tilingInterTileOffset\":\"0\",\"tilingHeight\":\"2000000\",\"tilingXOffset\":\"0\",\"tilingFlagsMirrorVertical\":\"0\",\"tilingFlagsScale\":\"0\",\"tilingFlagsColumnOffset\":\"0\",\"secondaryColor\":\"CMYK,USER,0,0,0,0,100,00000000-0000-0000-0000-000000000000\",\"type\":\"9\",\"overprint\":\"0\",\"primaryColor\":\"CMYK,USER,0,0,0,100,100,00000000-0000-0000-0000-000000000000\"},\"transparency\":{}}");
  OrigSelection.Item(1).Style.StringAssign("{\"outline\":{\"width\":\"2000\",\"color\":\"CMYK,USER,0,0,0,100,100,00000000-0000-0000-0000-000000000000\"},\"fill\":{\"tilingFlagsMirrorHorizontal\":\"0\",\"tilingWidth\":\"2000000\",\"tilingFlagsNoSeams\":\"0\",\"tilingFlagsScaleToObject\":\"0\",\"fillName\":\"53536d92-bd98-4c61-a315-f2a49f24e2c2.2.colorbitmap\",\"angle\":\"0\",\"skew\":\"0\",\"tilingYOffset\":\"0\",\"tilingInterTileOffset\":\"0\",\"tilingHeight\":\"2000000\",\"tilingXOffset\":\"0\",\"tilingFlagsMirrorVertical\":\"0\",\"tilingFlagsScale\":\"0\",\"tilingFlagsColumnOffset\":\"0\",\"secondaryColor\":\"CMYK,USER,0,0,0,0,100,00000000-0000-0000-0000-000000000000\",\"type\":\"9\",\"overprint\":\"0\",\"primaryColor\":\"CMYK,USER,0,0,0,100,100,00000000-0000-0000-0000-000000000000\"},\"transparency\":{}}");

Второй
JavaScript:
  // Recorded 7/26/2022
  let OrigSelection = host.ActiveSelectionRange;
  OrigSelection.Item(1).Style.StringAssign("{\"fill\":{\"primaryColor\":\"CMYK255,USER,0,255,0,0,100,cccd19cb-4675-4a5e-8bda-d0bbbaab8af0\",\"secondaryColor\":\"CMYK,USER,0,0,0,0,100,00000000-0000-0000-0000-000000000000\",\"overprint\":\"0\",\"type\":\"9\",\"fillName\":\"a58dff1f-aae6-41e0-aaca-664e24b92611.2.colorbitmap\",\"tilingInterTileOffset\":\"0\",\"tilingFlagsColumnOffset\":\"0\",\"tilingWidth\":\"2000000\",\"tilingFlagsNoSeams\":\"0\",\"tilingXOffset\":\"0\",\"tilingHeight\":\"2000000\",\"tilingFlagsMirrorVertical\":\"0\",\"angle\":\"0\",\"tilingYOffset\":\"0\",\"tilingFlagsScaleToObject\":\"0\",\"skew\":\"0\",\"tilingFlagsScale\":\"0\",\"tilingFlagsMirrorHorizontal\":\"0\"},\"outline\":{\"color\":\"CMYK,USER,0,0,0,100,100,00000000-0000-0000-0000-000000000000\",\"width\":\"2000\"},\"transparency\":{}}");
  OrigSelection.Item(1).Style.StringAssign("{\"fill\":{\"primaryColor\":\"CMYK255,USER,0,255,0,0,100,cccd19cb-4675-4a5e-8bda-d0bbbaab8af0\",\"secondaryColor\":\"CMYK,USER,0,0,0,0,100,00000000-0000-0000-0000-000000000000\",\"overprint\":\"0\",\"type\":\"9\",\"fillName\":\"a58dff1f-aae6-41e0-aaca-664e24b92611.2.colorbitmap\",\"tilingInterTileOffset\":\"0\",\"tilingFlagsColumnOffset\":\"0\",\"tilingWidth\":\"2000000\",\"tilingFlagsNoSeams\":\"0\",\"tilingXOffset\":\"0\",\"tilingHeight\":\"2000000\",\"tilingFlagsMirrorVertical\":\"0\",\"angle\":\"0\",\"tilingYOffset\":\"0\",\"tilingFlagsScaleToObject\":\"0\",\"skew\":\"0\",\"tilingFlagsScale\":\"0\",\"tilingFlagsMirrorHorizontal\":\"0\"},\"outline\":{\"color\":\"CMYK,USER,0,0,0,100,100,00000000-0000-0000-0000-000000000000\",\"width\":\"2000\"},\"transparency\":{}}");

А узор стандартный или вы его создавали сами?

Свой, сделала .fill из обычного jpg-а (там комплект был целый).
На видео стандартный узор кирпича из предложки Корела, результат тот же получается, вопрос не в картинке.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 187
Реакции
10 844
Видимо UID для каждой заливки в каждом документе специфический и надо делать больше телодвижений, чтобы его вычислить. Попробуйте записать одну и ту же заливку в разных файлах - если UID разные будут то этот способ не годится
 

Drawer

Участник
Сообщения
1 795
Реакции
793
Последнее редактирование:

izrukvruki

15 лет на форуме
Сообщения
1 839
Реакции
304
Вроде некоторые команды не записываются в макросы...

Если текстура большая, то может быть проще ее в объект как в контейнер поместить, без инструмента заливка текстурой...
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 187
Реакции
10 844
Вроде некоторые команды не записываются в макросы...

Если текстура большая, то может быть проще ее в объект как в контейнер поместить, без инструмента заливка текстурой...
Размноженную уже?
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 187
Реакции
10 844
Ну если большая, так ее и заливкой делать смысла никакого нет, в паверклип. А, кстати, корел умеет CMYK заливки?
 

izrukvruki

15 лет на форуме
Сообщения
1 839
Реакции
304
Код:
Sub TemporaryMacro()
    
    Dim s0 As Shape
    Set s0 = ActiveShape
    
    ActiveDocument.Unit = cdrMillimeter
    
    Dim impflt As ImportFilter
    Set impflt = ActiveLayer.ImportEx("C:\Users\41\Desktop\001.jpg", cdrJPEG)
    impflt.Finish
    
    Dim s1 As Shape
    Set s1 = ActiveShape
    
    s1.Move -5.988228, -1.886823
    
    k = s1.SizeHeight / s1.SizeWidth
    s1.SizeWidth = s0.SizeWidth + 10
    s1.SizeHeight = k * s1.SizeWidth
    
    s1.AddToPowerClip s0, -1
    
End Sub