80 lines
3.6 KiB
Markdown
80 lines
3.6 KiB
Markdown
# Documentation
|
|
- Class name: GeneralSwitch
|
|
- Category: ImpactPack/Util
|
|
- Output node: False
|
|
- Repo Ref: https://github.com/ltdrdata/ComfyUI-Impact-Pack.git
|
|
|
|
GeneralSwitch节点旨在根据选择的索引管理和路由数据。它根据提供的索引选择一个输入,并从工作流的节点信息中检索相应的标签。该节点在工作流中的决策过程中起着关键作用,允许执行条件路径。
|
|
|
|
# Input types
|
|
## Required
|
|
- select
|
|
- 参数'select'对于确定节点将处理哪个输入至关重要。它指示节点用于识别工作流中进一步操作的正确输入的选择索引。
|
|
- Comfy dtype: INT
|
|
- Python dtype: int
|
|
## Optional
|
|
- sel_mode
|
|
- 参数'sel_mode'允许用户指定选择应基于提示还是执行上下文。这可以影响节点如何解释和响应输入,影响工作流的整体行为。
|
|
- Comfy dtype: BOOLEAN
|
|
- Python dtype: bool
|
|
- input1
|
|
- 参数'input1'作为可选输入提供给节点。它的作用是提供额外的灵活性,处理各种类型的数据,增强节点在不同工作流场景中的适应性。
|
|
- Comfy dtype: ANY
|
|
- Python dtype: Any
|
|
- unique_id
|
|
- 参数'unique_id'用于在内部标识工作流中的特定节点。它在节点引用自己的输入和配置设置的能力中起着至关重要的作用。
|
|
- Comfy dtype: UNIQUE_ID
|
|
- Python dtype: str
|
|
- extra_pnginfo
|
|
- 参数'extra_pnginfo'包含有关工作流中节点视觉表示的额外信息。它有助于自定义节点的外观并提供相关上下文信息。
|
|
- Comfy dtype: EXTRA_PNGINFO
|
|
- Python dtype: Dict[str, Any]
|
|
|
|
# Output types
|
|
- selected_value
|
|
- 输出'selected_value'代表基于输入索引选择的数据。它是节点操作的关键组成部分,因为它决定了将传递给后续处理的数据。
|
|
- Comfy dtype: ANY
|
|
- Python dtype: Any
|
|
- selected_label
|
|
- 输出'selected_label'提供与所选输入关联的标签。这对于提供有关正在处理的数据的上下文或额外信息非常有用。
|
|
- Comfy dtype: STRING
|
|
- Python dtype: str
|
|
- selected_index
|
|
- 输出'selected_index'指示用于选择输入的索引。它可以作为在工作流中跟踪选择的参考。
|
|
- Comfy dtype: INT
|
|
- Python dtype: int
|
|
|
|
# Usage tips
|
|
- Infra type: CPU
|
|
|
|
# Source code
|
|
```
|
|
class GeneralSwitch:
|
|
|
|
@classmethod
|
|
def INPUT_TYPES(s):
|
|
return {'required': {'select': ('INT', {'default': 1, 'min': 1, 'max': 999999, 'step': 1}), 'sel_mode': ('BOOLEAN', {'default': True, 'label_on': 'select_on_prompt', 'label_off': 'select_on_execution', 'forceInput': False})}, 'optional': {'input1': (any_typ,)}, 'hidden': {'unique_id': 'UNIQUE_ID', 'extra_pnginfo': 'EXTRA_PNGINFO'}}
|
|
RETURN_TYPES = (any_typ, 'STRING', 'INT')
|
|
RETURN_NAMES = ('selected_value', 'selected_label', 'selected_index')
|
|
FUNCTION = 'doit'
|
|
CATEGORY = 'ImpactPack/Util'
|
|
|
|
def doit(self, *args, **kwargs):
|
|
selected_index = int(kwargs['select'])
|
|
input_name = f'input{selected_index}'
|
|
selected_label = input_name
|
|
node_id = kwargs['unique_id']
|
|
nodelist = kwargs['extra_pnginfo']['workflow']['nodes']
|
|
for node in nodelist:
|
|
if str(node['id']) == node_id:
|
|
inputs = node['inputs']
|
|
for slot in inputs:
|
|
if slot['name'] == input_name and 'label' in slot:
|
|
selected_label = slot['label']
|
|
break
|
|
if input_name in kwargs:
|
|
return (kwargs[input_name], selected_label, selected_index)
|
|
else:
|
|
print(f'ImpactSwitch: invalid select index (ignored)')
|
|
return (None, '', selected_index)
|
|
``` |