Files
CavinHuang-comfyui-nodes-docs/docs/Range(Step) - Int.md
2024-07-04 08:39:03 +08:00

2.6 KiB

Documentation

  • Class name: Range(Step) - Int
  • Category: List Stuff
  • Output node: False

该节点用于在指定范围内生成整数序列,允许用户控制起始值、终止值和步长。它旨在基于可自定义的间隔和端点创建整数列表,支持包含和不包含终点的两种模式。

Input types

Required

  • start
    • 指定范围的起始值。该参数设置整数序列的起点。
    • Comfy dtype: INT
    • Python dtype: List[int]
  • stop
    • 确定范围的终止值。该参数定义整数序列的终点,可以根据end_mode设置为包含或不包含。
    • Comfy dtype: INT
    • Python dtype: List[int]
  • step
    • 定义范围内每个数字之间的间隔。该参数控制序列生成的步长。
    • Comfy dtype: INT
    • Python dtype: List[int]
  • end_mode
    • 表示终止值是包含还是不包含。该参数允许灵活定义整数序列的边界。
    • Comfy dtype: COMBO[STRING]
    • Python dtype: List[str]

Output types

  • range
    • 在指定范围内生成的整数序列。
    • Comfy dtype: INT
    • Python dtype: List[int]
  • range_sizes
    • 每个生成的整数序列的大小,提供了每个范围内元素数量的信息。
    • Comfy dtype: INT
    • Python dtype: List[int]

Usage tips

  • Infra type: CPU
  • Common nodes: unknown

Source code

class IntRangeNode:
    def __init__(self) -> None:
        pass

    @classmethod
    def INPUT_TYPES(s) -> Dict[str, Dict[str, Any]]:
        return {
            "required": {
                "start": ("INT", {"default": 0, "min": -4096, "max": 4096, "step": 1}),
                "stop": ("INT", {"default": 0, "min": -4096, "max": 4096, "step": 1}),
                "step": ("INT", {"default": 0, "min": -4096, "max": 4096, "step": 1}),
                "end_mode": (["Inclusive", "Exclusive"], {"default": "Inclusive"}),
            },
        }

    RETURN_TYPES = ("INT", "INT")
    RETURN_NAMES = ("range", "range_sizes")
    INPUT_IS_LIST = True
    OUTPUT_IS_LIST = (True, True)
    FUNCTION = "build_range"

    CATEGORY = "List Stuff"

    def build_range(
        self, start: List[int], stop: List[int], step: List[int], end_mode: List[str]
    ) -> Tuple[List[int], List[int]]:
        error_if_mismatched_list_args(locals())

        ranges = []
        range_sizes = []
        for e_start, e_stop, e_step, e_end_mode in zip_with_fill(
            start, stop, step, end_mode
        ):
            if e_end_mode == "Inclusive":
                e_stop += 1
            vals = list(range(e_start, e_stop, e_step))
            ranges.extend(vals)
            range_sizes.append(len(vals))

        return ranges, range_sizes