script-fu неверное количество аргументов

Я хочу создать изображение, похожее на бумагу для ноутбука, и я подумал, что это легко, если секция рисования линий автоматизирована.

Чтобы сделать это, я решил использовать функцию GIMP с именем 'gimp-rect-select' и указать маленькое значение высоты.

Я поискал в Google и написал файл схемы, но когда я запустил его из меню Script-Fu GIMP, GIMP показал мне сообщение, как показано ниже.

Error while executing FU01-multi-rect-select:

Error: ( : 1) 

Invalid number of arguments for gimp-rect-select 
(expected 8 but received 9) 

Я бы хотел, чтобы вы увидели мой первый скрипт-фу и указали, где что-то не так.

Для меня моя пользовательская функция определена так, что она имеет 8 параметров, а не 9. Ниже приведен мой код.

    (define (FU01-multi-rect-select 
    image 
    drawable 
    x1 
    y1 
    w 
    h 
    p-offset 
    p-repeat
    )
    ;definition of variables
    (let* 
      (
        (X nil) 
        (Y nil) 
        (width nil) 
        (height nil) 
        (offset nil) 
        (repeat nil) 
        ;are they below necessary?
        (theLayer nil)
        (theImage nil)
      )
      ;(gimp-context-push ) 
      (gimp-image-undo-group-start image)
        
      ;(set! X (string->number x1))
      ;(set! Y (string->number y1))
      ;(set! width (string->number w))
      ;(set! height (string->number h))
      ;(set! offset (string->number p-offset))
      ;(set! repeat (string->number p-repeat))
        
      (set! X x1)
      (set! Y y1)
      (set! width w)
      (set! height h)
      (set! offset p-offset)
      (set! repeat p-repeat)

      (gimp-image-set-active-layer image drawable)
            
      (set! theLayer
        (car (gimp-image-get-active-layer image) )
      )
        
      ; select rectangle and after that, 
      ; add it to current selection
      ; multiple times that is specified with 'repeat'
      (while (> repeat 0)
        (gimp-rect-select image X Y width height 
                             CHANNEL-OP-ADD FALSE 0 0)
        (set! Y (+ Y height offset))
        (set! repeat (- repeat 1))
      )
        
      (gimp-image-undo-group-end image)
    ) ; end of let sentences

  )

    (script-fu-register "FU01-multi-rect-select" 
    "<Image>/Script-Fu/Select/multi rect select" 
    "add a rect selection to current selection multiple times\
    each time a rect is selected it is moved\
     in y axis by the value of offset" 
    "Masaaki Fujioka" 
    "copy right 2014 Masaaki Fujioka" 
    "August 3 2014" 
    "*" 
    SF-IMAGE    "SF-IMAGE"      0  
    SF-DRAWABLE "SF-DRAWABLE"   0   
    SF-VALUE    "start x"       "0" 
    SF-VALUE    "start y"       "0" 
    SF-VALUE    "width"         "0" 
    SF-VALUE    "height"        "0" 
    SF-VALUE    "offset"        "0" 
    SF-VALUE    "repeat"        "0" 

    )

person red-dolphin    schedule 04.08.2014    source источник


Ответы (1)


Как и говорится в сообщении об ошибке, у вас есть один дополнительный параметр для вызова gimp-rect-select — если вы проверите спецификации вызова в браузере процедур, после параметра «режим» должно быть одно логическое значение, чтобы указать, хотите ли вы для использования растушевки, и еще одно число, чтобы указать величину растушевки. Вы передаете два целых числа вместо одного необходимого числа.

Также обратите внимание, что этот вызов помечен как "устаревший" - это означает, что хотя он все еще работает в gimp-2.8, по ряду причин вы должны вызывать gimp-image-select-rectangle вместо этого. (обратите внимание, что параметры для этого вызова отличаются).

person jsbueno    schedule 04.08.2014
comment
Я неправильно понял, что число 9 произошло от FU01-multi-rect-select. - person red-dolphin; 16.08.2014
comment
Я постараюсь исправить это, в любом случае я ценю ваш немедленный ответ. - person red-dolphin; 16.08.2014