96 lines
3.0 KiB
Markdown
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, )
|
|
|
|
```
|