Files
rui40000-RUI-Nodes/text_box_node.py
T
rui40000andClaude Opus 4.8 5d3834503e fix: 八方向拆分不再切断角色;全仓库参数补齐中文 tooltip
【修复】角色被格线切断(脚、手杖、飘起的斗篷被削掉)
新增 expand_beyond_cell(默认开启):格子只用来判定「这是哪个方向」,
角色的实际范围由它自身的连通区域决定,按质心归属确保邻居不混入。
实测 8/8 方向的裁剪框边缘 alpha 从 1.00(内容顶到边界=被切断)
降到 0.00,S 方向高度 326→356、E 方向宽度 150→188 把缺的部分找了回来。
代价是需要两遍扫描(先求全序列并集框再提取),耗时 4.7s→14.9s。

【规则】每个参数都必须有中文 tooltip,作为以后的统一约定
全仓库 26 个节点 169 个参数,此前缺 115 个,现已 100% 覆盖。
tooltip 写「怎么调」而不只是「是什么」:给取值区间的实际影响、
推荐值与踩坑提示(如 OpenAI/ZenMux 的地址栏不能带 :// ,
素材拆分节点用于动画序列时顺序会漂移等)。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-29 19:07:01 +08:00

49 lines
1.7 KiB
Python

# -*- coding: utf-8 -*-
"""
多行文本框(原样输出)节点
==========================
把输入的多行文本一字不动地输出为 STRING。
背景:WAS Node Suite 的「Text Multiline」节点会把 "#" 开头的行当注释删除,
还会做动态提示词/token 替换——喂 Markdown 文本时标题行(# 一级标题)会凭空
消失。本节点纯透传、零处理,专门用来安全地承载 Markdown / 代码等原样文本。
"""
class RuiTextBoxNode:
"""多行文本原样透传。"""
@classmethod
def INPUT_TYPES(cls):
return {
"required": {
"text": ("STRING", {
"default": "",
"multiline": True,
# 关闭动态提示词处理,杜绝 {a|b}、通配符等被前端改写
"dynamicPrompts": False,
"tooltip": "多行文本,一字不动地原样输出。\n"
"不删注释行、不做动态提示词/通配符/token 替换。\n\n"
"用来替代 WAS 的「Text Multiline」——那个节点会把\n"
"「#」开头的行当注释删掉,喂 Markdown 时标题会凭空消失。\n"
"承载 Markdown、代码等格式敏感的文本请用本节点。"
}),
},
}
RETURN_TYPES = ("STRING",)
RETURN_NAMES = ("text",)
FUNCTION = "passthrough"
CATEGORY = "Rui-Node🐶/文本处理📝"
def passthrough(self, text):
return (text,)
NODE_CLASS_MAPPINGS = {
"RuiTextBox": RuiTextBoxNode,
}
NODE_DISPLAY_NAME_MAPPINGS = {
"RuiTextBox": "多行文本框(原样输出) / Text Box (Raw)",
}