[CDR X5-X8] создать контур плоттерной резки для массива одинаковых PowerClip

dastin

Некромант-любитель
Топикстартер
12 лет на форуме
Сообщения
2 145
Реакции
2 043
Всем привет!
Задача: создать контур плоттерной резки для массива одинаковых PowerClip
Решение:
- массив создается средствами макроса Tiler (Oberon)
- у оригинала массива Outline ставится в ноль
- копия массива выносится на новую страницу
- из каждого PowerClip извлекается и удаляется всё содержимое
- Outline копии ставится в Black Hairline
остаётся назначить циклом всем PowerClip Frame стиль No Frame ...
на форуме Оберона нашелся код для Х6
Код:
Sub RemovePowerclipFrame()
    Dim s As Shape
   
    For Each s In ActiveSelection.Shapes
        If Not s.PowerClip Is Nothing Then
            If s.PowerClip.Shapes.Count = 0 Then
                s.CreateSelection
                Application.FrameWork.Automation.Invoke "7b022531-3cd7-487f-a797-9d80179dc821"

            End If
        End If
    Next s
End Sub
однако, он делает свое дело ровно на один шаг и останавливается
эмпирическим путем было выявлено, что следующая модификация
две строки после invoke
MsgBox "XXXXX", vbOKOnly
SendKeys "{ESC}"

дает результат - но всё же один раз на кнопочку [ОК] в окне MsgBox приходится нажимать - далее всё идет как по маслу.
Вопрос:
Как ли этот "затык" убрать, чтобы цикл корректно отрабатывал без всяких дополнительных нажатий
 
Последнее редактирование:

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 197
Реакции
10 847
Какой то совсем костыльный вариант у вас, ждать прямой работы от него весьма наивно. ;) Тогда уж проще не на VBA а на AHK подобное запрограммить. ;) А какой особый резон вынуждает к таким нетрадиционноориентированным решениям прибегать? Что именно из вышеперечисленного объектная модель не позволяет делать?
 

dastin

Некромант-любитель
Топикстартер
12 лет на форуме
Сообщения
2 145
Реакции
2 043
Результат выходит достаточно прямой. Но на ОК приходится разок нажать.
На чем-то прочем, кроме как на ВБА - практики нет.
Резон в том, что кучей эти фреймы не переводятся в кривые.Только по одному. И в ВБА нет такой функции, прямо ассоциированной с фреймом поверклипа. Тут стоит заметить - на Х5 - как только из поверклипа вынули содержимое - фрейм тут же перестаёт оным быть и становится кривой. В дальнейших версиях - фрейм продолжает оставаться фреймом и кроме как через этот invoke не достать.
Да ... плоттер это фрейм напрямую резать не желает.
Во всем остальном объектная модель справляется - есть готовый макрос, который предназначен для формирования контуров резки для массива одинаковых изделий
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 197
Реакции
10 847
А! Вам всего-то навсего надобно получить шейп маски?
Да коротко и яcно, здорово и вечно:
Код:
Set sCurve = ActiveLayer.CreateCurve(sh.DisplayCurve)
 sh.Delete
 

dastin

Некромант-любитель
Топикстартер
12 лет на форуме
Сообщения
2 145
Реакции
2 043
а разве фрейм поверклипа - кривая? Точнее он может быть и кривой, но все равно он фрейм. Вернуть его "к свету" можно только по правой клавише - Frame Type -> None. Или invoke
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 197
Реакции
10 847
  • Спасибо
Реакции: dastin

dastin

Некромант-любитель
Топикстартер
12 лет на форуме
Сообщения
2 145
Реакции
2 043
не дают ... пытаюсь ... говорят работать надо ... :)
Да работает. С одним и с кучей скомбинированных в одно - фрейм заменяется кривой.
Будем причесывать в цикл ...
Спасибо...

***
где для плюса надо нажать?
 

Jeine

Да здравствует разум! Да сгинет маразм!
15 лет на форуме
Сообщения
7 299
Реакции
6 312
  • Спасибо
Реакции: dastin

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 197
Реакции
10 847
Рынок искал новые подходы и ниши: мне попадались презервативы "Occam's Razor" с портретом средневекового схоласта и слоганом "Не следует умножать сущности без необходимости".
'))'