У меня было чертовски много времени с функцией перемещения слоя, программированием сценария фотошопа на python.Слои заканчиваются внутри других наборов слоев, а не после них и т. Д.
Собственная команда для этого в Javascript в Photoshop:
layer.move(relativeObject, insertionLocation)
, где значение inserttionLocation может быть:
ElementPlacement.INSIDE, ElementPlace.PLACEATBEGINNING, ElementPlace.PLACEATEND, ElementPlace.PLACEBEFORE или ElementPlace.PLACEAFTER
Мой текущий код выглядит следующим образом:
@staticmethod
def moveLayer(layer, relativeLayer = None, placement = 3):
if placement == PHAPS.ElementPlacementPLACEATEND:
layers = PHAPS.app().ActiveDocument.layers
relativeLayer = layers[len(layers) - 1]
placement = PHAPS.ElementPlacementPLACEAFTER
elif placement == PHAPS.ElementPlacementPLACEATBEGINNING:
relativeLayer = PHAPS.app().ActiveDocument.layers[0]
placement = PHAPS.ElementPlacementPLACEBEFORE
layer.Move(relativeLayer, placement)
И вот мои предположенияпри значениях констант, которые, по-видимому, неверны:
ElementPlacementPLACEATBEGINNING = 1
ElementPlacementINSIDE = 2
ElementPlacementPLACEBEFORE = 3
ElementPlacementPLACEAFTER = 4
ElementPlacementPLACEATEND = 5
Я пытался отследить нативные значения этих констант, но Photoshop хорошо их скрывает.Я также пробовал код Action Manager, но мне его немного сложно понять.
Кто-нибудь знает надежный способ перемещения слоев в фотошопе с помощью python?Код диспетчера действий предпочтителен, но не обязателен.