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

Я использую gimp2.8 с начала этого года. прежде всего, я говорю вам, что я не родной по-английски. Поэтому, если вы не знаете, о чем я хочу вас спросить, не стесняйтесь спрашивать меня о деталях. Я бы постарался объяснить как можно проще для понимания.

Позвольте мне объяснить мою проблему. Я хочу создать изображение, подобное бумаге для заметок, и я подумал, что это легко, если раздел рисования линий автоматизирован. Чтобы сделать это, я решил использовать функцию gimp под названием "gimp-rect-select" и указать небольшое значение высоты.

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

GIMP показал мне сообщение, как показано ниже.

Ошибка при выполнении FU01-multi-rect-select:

Ошибка: (: 1)

Неверное количество аргументов для gimp-rect-select

(ожидается 8, но получил 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" 

)

извините за длинные предложения, но спасибо за чтение.

1 ответ

Решение

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

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

Другие вопросы по тегам