Files
CavinHuang-comfyui-nodes-docs/docs/DF_Logic_node.md
2024-07-04 08:39:03 +08:00

96 lines
3.0 KiB
Markdown

# Documentation
- Class name: DF_Logic_node
- Category: Derfuu_Nodes/Functions
- Output node: False
- Repo Ref: https://github.com/comfyanonymous/ComfyUI
LogicNode节点执行基本逻辑运算,如比较操作(大于、小于、等于)和布尔运算(与、或、异或)。它通过评估条件并根据指定的逻辑确定结果,从而抽象地支持决策过程。
# Input types
## Required
- Operation
- 指定要执行的逻辑运算,包括比较和布尔运算,决定了CompareValue_A和CompareValue_B之间应用的逻辑。
- Comfy dtype: COMBO[STRING]
- Python dtype: str
- CompareValue_A
- 用于比较或逻辑运算的主要值。
- Comfy dtype: *
- Python dtype: object
## Optional
- CompareValue_B
- 用于比较或逻辑运算的次要值,与CompareValue_A一起用于评估指定的Operation。
- Comfy dtype: *
- Python dtype: object
- OnTrue
- 如果逻辑运算结果为真时返回的值。
- Comfy dtype: *
- Python dtype: object
- OnFalse
- 如果逻辑运算结果为假时返回的值。
- Comfy dtype: *
- Python dtype: object
# Output types
- *
- 逻辑运算的结果,可以是OnTrue或OnFalse值,具体取决于运算的结果。
- Comfy dtype: *
- Python dtype: object
## Usage tips
- Infra type: `CPU`
- Common nodes: unknown
## Source code
```python
class LogicNode:
def __init__(self) -> None:
pass
@classmethod
def INPUT_TYPES(cls) -> dict:
return {
"required": {
"Operation": Field.combo([
"A > B",
"A < B",
"A = B",
"A AND B",
"A OR B",
"A XOR B",
]),
"CompareValue_A": Field.any(),
},
"optional": {
"CompareValue_B": Field.any(),
"OnTrue": Field.any(),
"OnFalse": Field.any()
}
}
RETURN_TYPES = (ANY,)
CATEGORY = TREE_FUNCTIONS
FUNCTION = "do_logic"
def do_logic(self, CompareValue_A, CompareValue_B = False, OnTrue = False, OnFalse = False, Operation: str = "A AND B") -> tuple:
match Operation:
case "A > B":
value = OnTrue if CompareValue_A > CompareValue_B else OnFalse
case "A < B":
value = OnTrue if CompareValue_A < CompareValue_B else OnFalse
case "A = B":
value = OnTrue if CompareValue_A == CompareValue_B else OnFalse
case "A AND B":
value = OnTrue if CompareValue_A and CompareValue_B else OnFalse
case "A OR B":
value = OnTrue if CompareValue_A or CompareValue_B else OnFalse
case "A XOR B":
value = OnTrue if not (CompareValue_A and CompareValue_B) and (CompareValue_A or CompareValue_B) else OnFalse
case _:
value = None
return (value, )
```