[CDR 2017-2021] Найти штрих-код и закривить

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

mnemonix

ॐ मणि पद्मे हूँ
Топикстартер
Сообщения
683
Реакции
202
Добрый день, записал макрос, который закривляет штрих-код ITF-14.
В данном случае он работает при выделенном объекте CorelBarcode, а как сделать, чтобы в ходе выполнения скрипта находился объект CorelBarcode (невыделенный) и потом закривлялся. Спасибо.

Код:
Sub aaa()
    Dim OrigSelection As ShapeRange
    Set OrigSelection = ActiveSelectionRange
    OrigSelection.Cut
    ActiveLayer.PasteSpecial "Metafile"
    Dim Paste1 As ShapeRange
    Set Paste1 = ActiveSelectionRange
    Dim grp1 As ShapeRange
    Set grp1 = Paste1.UngroupAllEx
    grp1(1).Delete
    ActiveDocument.CreateShapeRangeFromArray(grp1(45), grp1(42), grp1(57), grp1(51)).Delete
    ActiveDocument.CreateSelection grp1(2), grp1(3), grp1(4), grp1(5), grp1(6), grp1(7), grp1(8), grp1(9), grp1(10), grp1(11), grp1(12)
    ActiveDocument.AddToSelection grp1(13), grp1(14), grp1(15), grp1(16), grp1(17), grp1(18), grp1(19), grp1(20), grp1(21), grp1(22), grp1(23)
    ActiveDocument.AddToSelection grp1(24), grp1(25), grp1(26), grp1(27), grp1(28), grp1(29), grp1(30), grp1(31), grp1(32), grp1(33), grp1(34)
    ActiveDocument.AddToSelection grp1(35), grp1(36), grp1(37), grp1(38), grp1(39), grp1(40), grp1(41), grp1(43), grp1(44), grp1(46), grp1(47)
    ActiveDocument.AddToSelection grp1(48), grp1(49), grp1(50), grp1(52), grp1(53), grp1(54), grp1(55), grp1(56), grp1(58)
    Dim s1 As Shape
    Set s1 = ActiveSelection.Group
    s1.Fill.UniformColor.CMYKAssign 0, 0, 0, 100
End Sub
 
ActiveDocument.CreateShapeRangeFromArray(grp1(45), grp1(42), grp1(57), grp1(51)).Delete ActiveDocument.CreateSelection grp1(2), grp1(3), grp1(4), grp1(5), grp1(6), grp1(7), grp1(8), grp1(9), grp1(10), grp1(11), grp1(12) ActiveDocument.AddToSelection grp1(13), grp1(14), grp1(15), grp1(16), grp1(17), grp1(18), grp1(19), grp1(20), grp1(21), grp1(22), grp1(23) ActiveDocument.AddToSelection grp1(24), grp1(25), grp1(26), grp1(27), grp1(28), grp1(29), grp1(30), grp1(31), grp1(32), grp1(33), grp1(34) ActiveDocument.AddToSelection grp1(35), grp1(36), grp1(37), grp1(38), grp1(39), grp1(40), grp1(41), grp1(43), grp1(44), grp1(46), grp1(47) ActiveDocument.AddToSelection grp1(48), grp1(49), grp1(50), grp1(52), grp1(53), grp1(54), grp1(55), grp1(56), grp1(58)
Вот этот кусок расово индийского кода наверняка работать будет исключительно на единственном и неповторимиом экземпляре баркода
 
  • Спасибо
Реакции: DukereD
Работает на любом ITF-14 из CorelBarcode
 
Работает на любом ITF-14 из CorelBarcode
Вам очень сильно повезло, но не делайте так никогда, этот код (как я понимаю, автозаписанный) безумный и глючный и представляет собой бомбу замедленного действия в вашем макросе, причем такую, что может сработать на отпечатанном многомиллионном тираже.
 
  • Спасибо
Реакции: DukereD
В скриптописании я ноль, поэтому тупо записал, но работает.
 
Как найти в документе невыделенный Barcode?
 
Barcode это OLE объект, можно выловить их. Как их отличать от других OLE, лень думать
Код:
ActivePage.FindShapes(, cdrOLEObjectShape).CreateSelection
Почему бы не использовать какую-нибудь из кучи уже написанных до Вас баркодокривилок, а не городить свою?
Экспорт-реимпорт баркода как-то попроще будет.
 
В X7 - OLE
Код:
If lev_Не_протестировал_код Then lev_Не_постит_код _на _форум
 
Последнее редактирование:
  • Спасибо
Реакции: mnemonix
Тогда это может сработать
 
Экспорт-реимпорт баркода как-то попроще будет.
Гораздо проще нажать на кнопку или hotkey, и всё мгновенно делается внутри документа. А в день таких документов может проходить не одна сотня.
 
А я Вам предлагал экспорт-реимпорт вручную делать?
 
  • Спасибо
Реакции: mnemonix
Код:
ActivePage.FindShapes(, cdrOLEObjectShape).CreateSelection

И да, Lev, это работает.'cooll)'
 
Для EAN-13 используем скрипты от РИОН (не реклама)
 
corel-macros-barcode-to-curve, да, и lev, собственно, уже сказал, что такого рода макросов куча
 
corel-macros-barcode-to-curve, да, и lev, собственно, уже сказал, что такого рода макросов куча
Да, он закривляет, но:
1. Работает только с выделенным объектом (что допустимо)
2. Не удаляет белую подложку-прямоугольник (удалить можно вручную, но это лишние телодвижения)
 
А потом Вам перекраска из ричблэка в блэк понадобится... :)
А потом...
 
Повторяю - ваш автозаписанный вариант работает на грани фола, так делать нельзя. Чуть изменение и он кусок не перекрасит или вылетит.
 
ричблэк/ргб/К100 - не имеет значения в данном случае, т.к. это транспортная упаковка, а удаление белой подложки позволяет выставить точные размеры штрих-кода
 
Последнее редактирование: