::showLayer:: ВСЕГДА показывает текущий слой в шапке корела

Статус
Закрыто для дальнейших ответов.

wOxxOm

Участник
Топикстартер
Сообщения
798
Реакции
3
::showLayer:: Управление слоями на лету. Версия2

LayerFromSelected - аналог CtrlShiftJ в Photoshop - создает новый слой из выделенных объектов
SelectLayerShapes - (у меня "A") выделяет все объекты со слоёв, к котрому принадлежат выделенные объекты
SelectLayer - делает активным слой, на котором лежит выделенный объект
MoveShapesToCurrentLayer - (у меня CtrlShiftE) перемещает все выделенные объекты на активный слой
MergeLayersToCurrent - (CtrlE) сплющивает слои для всех выделенных объектов в активный
LabelLayer - (Ctrl . ) переименовать слой текущего объекта или (если не выделено) активный слой
DeleteLayer - (CtrlAltF8) удалить слой текущего объекта или (если не выделено) активный слой
toggleLayerAutoActivation - переключает автоматическое переключение на слой выделенного объекта

GroupAndSaveLayers - группирует выделенное, сохраняя во внутренних свойствах объектов принадлежность к слоям
UnGroupAndAssignLayers - берет все выделенные объекты и каждый, буде он группа, разгруппировывает и распихивает объекты по слоям, используя сохраненную ранее информацию во внутренних свойствах объектов, записанную первым макросом GroupAndSaveLayers.
UnGroupAndAssignLayersSkip - разгруппировать и раскидать по слоям (существующим), новые не создавать, а те объекты, что на несуществующих слоях будут помещены на активный слой
UnGroupAndAssignLayersOne - объекты с несуществующих в данный момент слоев все будут помещены в отдельный слой "From deleted layers"
UnGroupAndAssignLayersCreateAll - воссоздает все сохраненные в группе слои, но первоначальный порядок слоев в данной версии не сохраняется (а нужно ли?)

Типсы:
1. Название АКТИВНОГО слоя выводится в шапка CorelDraw
2. При включенном режиме активации слоя объекта
для объединения слоев или перемещения объектов на активный слой - выбираем сначала объекты (можно с разных слоев - все они будут обработаны), которые переместятся, затем клиаем с шифтом на объект, который лежит на слое-назначении, после чего запускаем макрос​

Скачать http://recent.tekcities.com/misc/showLayer--June2.zip
распаковать в C:\Program Files\Corel\CorelDRAW Graphics Suite 13\Draw\GMS\
для 12-го: C:\Program Files\Corel\Corel Graphics 12\Draw\GMS\
если нужно можно отдельно сделать и для 11-го
 

kerch

Участник
Сообщения
127
Реакции
0
Ответ: ::showLayer:: ВСЕГДА показывает текущий слой в шапке корела

По моему подглюкивает макрос. 04.jpg
У меня вообщето и так видно на каком слое находится объект. 05.jpg
Или я чего-то не понимаю?
 

Вложения

  • 04.jpg
    04.jpg
    85 КБ · Просм.: 765
  • 05.jpg
    05.jpg
    7.1 КБ · Просм.: 904

wOxxOm

Участник
Топикстартер
Сообщения
798
Реакции
3
Ответ: ::showLayer:: ВСЕГДА показывает текущий слой в шапке корела

kerch сказал(а):
По моему подглюкивает макрос. 04.jpg
У меня вообщето и так видно на каком слое находится объект. 05.jpg
Или я чего-то не понимаю?

посмотри ВНИМАТЕЛЬНЕЕ в Object manager - какой у тебя леер красным выделен? вот тот и есть ТЕКУЩИЙ - то есть тот который будет использован при ГРУППИРОВКЕ/ВСТАВКЕ
 

Alexus

Участник
Сообщения
3
Реакции
0
Ответ: ::showLayer:: ВСЕГДА показывает текущий слой в шапке корела

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

Lena_sun

Участник
Сообщения
170
Реакции
31
Ответ: ::showLayer:: ВСЕГДА показывает текущий слой в шапке корела

Надо все макросы от wOxxOm направить в корпорацию Corel, путь в следующей версии вставят их по дефолту - очень удобно.
Спасибо!
 

wOxxOm

Участник
Топикстартер
Сообщения
798
Реакции
3
Ответ: ::showLayer:: ВСЕГДА показывает текущий слой в шапке корела

ха, они устаревают каждый месяц, мне вот в кайф, не лень все это писать, пожалуйста
 

Alexus

Участник
Сообщения
3
Реакции
0
Ответ: ::showLayer:: ВСЕГДА показывает текущий слой в шапке корела

А можно сделать чтобы скрипт автоматически все выделенные обьекты раскидывал по слоям? Каждый обьект в свой слой - тогда идеально все в Фотошоп переносить!...
 

wOxxOm

Участник
Топикстартер
Сообщения
798
Реакции
3
Ответ: ::showLayer:: ВСЕГДА показывает текущий слой в шапке корела

Можно - надо вставить этот текст в VBA в модуль showLayers
Код:
Sub ScatterToNewLayers()
 Dim sr As New ShapeRange, prefx$, stat As AppStatus, sh As Shape, Lcnt&, L As Layer, Lp As Layer, Lerr$, s$
 If Not ActiveShape Is Nothing Then sr.AddRange ActiveSelectionRange _
 Else sr.AddRange ActivePage.SelectableShapes.All: _
 sr.AddRange ActiveDocument.Pages(0).Layers("Desktop").SelectableShapes.All
 
 If sr.Count = 0 Then Beep: Exit Sub
 prefx = InputBox("Prefix for layer name: ", "Create layers for " + CStr(sr.Count) + "objects", "L")
 
 Optimization = True: EventsEnabled = False
 ActiveDocument.PreserveSelection = False
 ActiveDocument.BeginCommandGroup "Create layers for " + CStr(sr.Count) + "objects"
 
 On Error Resume Next
 For Each sh In sr: Lcnt = Lcnt + 1: s = prefx + CStr(Lcnt)
 Set L = ActivePage.CreateLayer(s): If Not Lp Is Nothing Then L.MoveBelow Lp
 If L Is Nothing Then Set L = ActivePage.Layers(s)
 If L Is Nothing Then Lerr = Lerr + s + ", " _
 Else sh.Layer = L: Set Lp = L
 Next
 Optimization = False: EventsEnabled = True
 ActiveDocument.PreserveSelection = True
 ActiveDocument.EndCommandGroup
 
 sr.CreateSelection
 Application.CorelScript.RedrawScreen
 If Lerr <> "" Then MsgBox Lerr, vbExclamation, "Errors creating layers"
 End Sub

в первом сообщ. уже есть внутри showlayers.zip
 
Статус
Закрыто для дальнейших ответов.