#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 标准件生图辅助(apiyi 通道,无风格前缀)。 从 prompts/标准件/<名>.txt 读 UTF-8 prompt,生成纯结构示意图到 生成结果/窗户标准件/。 为什么需要它: - 避开 Windows shell 传中文 prompt 给 Python argv 的 GBK/UTF-8 乱码坑; - 标准件是工程结构图(平涂色块、无光照),【不加】STYLE_SEED_EN(那是 cel-shaded 游戏风格,会冲突)。 Usage(用英文 key,避免中文 argv): python _gen_standard_parts.py # 默认:front + axo(阳台两件) python _gen_standard_parts.py front # 仅阳台正投影 python _gen_standard_parts.py axo # 仅阳台轴测 python _gen_standard_parts.py bedroom narrow # 卧室窗 + 厨卫窄窗 """ import sys from pathlib import Path HERE = Path(__file__).resolve().parent # ai-art-research/tools/ RESEARCH = HERE.parent # ai-art-research/ sys.path.insert(0, str(HERE)) from image_gen import get_client, cmd_generate # 英文 key → (prompt 文件名, 尺寸) # 横向构图(宽立面/阳台)用 1536x1024;单个竖窗用 1024x1024 PARTS = { "front": ("阳台窗-正投影", "1536x1024"), "axo": ("阳台窗-轴测", "1536x1024"), "bedroom": ("普通窗-卧室", "1024x1024"), "narrow": ("窄窗-厨卫", "1024x1024"), "stair": ("楼梯间窗", "1024x1024"), } keys = sys.argv[1:] or ["front", "axo"] client = get_client() for k in keys: if k not in PARTS: print(f"❌ 未知标准件 key: {k} (可用: {' '.join(PARTS)})") continue name, size = PARTS[k] pf = RESEARCH / "prompts" / "标准件" / f"{name}.txt" if not pf.exists(): print(f"❌ prompt 文件不存在: {pf}") continue prompt = pf.read_text(encoding="utf-8") print(f"\n{'='*60}\n=== 标准件 [{k}] {name} 尺寸 {size} ===\n{'='*60}") cmd_generate(client, prompt, use_style=False, size=size, quality="medium", model=None, subdir="窗户标准件") print("\n✅ 全部完成")