Gimp(Scheme)如何从脚本返回变量?

Gimp(Scheme)如何从脚本返回变量?,scheme,layer,gimp,Scheme,Layer,Gimp,看起来很简单,但我还没有找到答案 自定义脚本。如何返回变量 具体来说,我想返回copiedLayer (define (script-copy-first-layer inImg) (let* ( (layers (cadr (gimp-image-get-layers inImg) ) ) (numLayers (car (gimp-image-get-layers inImg) ) )

看起来很简单,但我还没有找到答案

自定义脚本。如何返回变量

具体来说,我想返回copiedLayer

(define (script-copy-first-layer inImg)
    (let* 
        ( 
            (layers       (cadr (gimp-image-get-layers inImg) ) )
            (numLayers    (car (gimp-image-get-layers inImg) ) )
            (layer        (aref layers 0))

            (copiedLayer (car (gimp-layer-copy layer TRUE)))
        )

        (gimp-image-add-layer inImg copiedLayer 0)
        (gimp-layer-set-visible copiedLayer TRUE)

        (gimp-layer-set-lock-alpha copiedLayer TRUE)
        (gimp-layer-add-alpha copiedLayer)      
    )
)

(script-fu-register
    "script-copy-first-layer"
    "<Image>/Image/Copy First Layer"
    "Copy First Layer"
    "Black Orchid Studios"
    "Black Orchid Studios"
    "July 2017"
    "RGB*, GRAY*"
    SF-IMAGE    "Image" 0
)
(定义(脚本复制IMG中的第一层)
(让我们*
( 
(层(cadr(gimp图像获取层inImg)))
(numLayers(car(gimp图像获取img中的层)))
(图层(aref图层0))
(复制层(car(gimp层复制层真)))
)
(gimp图像在MG复制层0中添加层)
(gimp图层集visible copiedLayer TRUE)
(gimp图层设置锁定alpha copiedLayer TRUE)
(gimp图层添加alpha复制图层)
)
)
(手稿)
“脚本复制第一层”
“/Image/复制第一层”
“复制第一层”
“黑兰花工作室”
“黑兰花工作室”
“2017年7月”
“RGB*,灰色*”
SF-IMAGE“图像”0
)

只需将
copiedLayer
添加到
let
语句的末尾

我相信这就是你需要的:

(define (script-copy-first-layer inImg)
    (let* 
        ( 
            (layers       (cadr (gimp-image-get-layers inImg) ) )
            (numLayers    (car (gimp-image-get-layers inImg) ) )
            (layer        (aref layers 0))

            (copiedLayer (car (gimp-layer-copy layer TRUE)))
        )

        (gimp-image-add-layer inImg copiedLayer 0)
        (gimp-layer-set-visible copiedLayer TRUE)

        (gimp-layer-set-lock-alpha copiedLayer TRUE)
        (gimp-layer-add-alpha copiedLayer)    

        copiedLayer
    )
)

(script-fu-register
    "script-copy-first-layer"
    "<Image>/Image/Copy First Layer"
    "Copy First Layer"
    "Black Orchid Studios"
    "Black Orchid Studios"
    "July 2017"
    "RGB*, GRAY*"
    SF-IMAGE    "Image" 0
)
(定义(脚本复制IMG中的第一层)
(让我们*
( 
(层(cadr(gimp图像获取层inImg)))
(numLayers(car(gimp图像获取img中的层)))
(图层(aref图层0))
(复制层(car(gimp层复制层真)))
)
(gimp图像在MG复制层0中添加层)
(gimp图层集visible copiedLayer TRUE)
(gimp图层设置锁定alpha copiedLayer TRUE)
(gimp图层添加alpha复制图层)
复印机
)
)
(手稿)
“脚本复制第一层”
“/Image/复制第一层”
“复制第一层”
“黑兰花工作室”
“黑兰花工作室”
“2017年7月”
“RGB*,灰色*”
SF-IMAGE“图像”0
)

您能准确地显示它的位置吗?有几个地方可能是该声明的“结尾”。还有,我需要用括号括起来吗?用括号编辑了答案。不,如果你在它周围加上括号,我相信编译器会尝试将它作为函数调用,这可能会产生错误。谢谢!现在,当我在另一个脚本中使用let语句时,我可以分配一个变量<代码>(让*((图层复制(脚本复制第一层图像))太好了,很高兴我能帮上忙!