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
вместо этого. (обратите внимание, что параметры для этого вызова отличаются).