notepad++不能运行vex脚本,仅作为外部编辑器配合houdini使用;需启用edit in external editor、设为默认编辑器、保存后手动刷新wrangle节点或开启auto-update才能实时生效。

Notepad++ 本身不能运行 VEX 脚本——它没有 Houdini 的执行环境,也不解析 @ptnum、f@Cd 这类内置属性语法。所谓“运行 VEX”,实际是借助外部工具链完成编辑 → 保存 → 在 Houdini 中加载/触发的闭环,关键在于同步效率和错误反馈及时性。
Notepad++ 编辑 VEX 时如何实时看到效果
Notepad++ 的角色只是“外部编辑器”,真正执行靠 Houdini 的 Wrangle 节点或 Expression Editor。要实现“改完保存就生效”,必须满足两个前提:
- Houdini 已启用
Edit in External Editor功能(需安装Houdini Expression Editor插件) -
Notepad++是系统默认关联的文本编辑器,且路径中不含空格(否则 Houdini 启动失败)
常见卡点:
- 第一次右键选
Edit in External Editor时没弹出选择框 → 检查 Houdini 是否以管理员权限运行(尤其 Windows 上) - 保存后 Houdini 没自动刷新 → 确认 Wrangle 节点的
Enable开关已打开,且参数面板中Language设为VEX - 修改后仍显示旧结果 → Houdini 默认不监听文件变化,需手动点击节点上的
⟳刷新按钮,或启用Auto-Update(部分版本支持)
NppExec 配合 Houdini 命令行工具做基础校验
虽然不能直接运行 VEX,但可用 NppExec 调用 hscript 或 hython 做轻量级语法预检(比如检查括号匹配、变量名拼写):
- 先确保系统 PATH 中包含 Houdini 的
bin目录(如C:\Program Files\Side Effects Software\Houdini20.5.345\bin) - 在
NppExec中新建脚本,内容类似:cmd /c "hscript -c \"opscript -d /obj/geo1/attribwrangle1\" "$(FULL_CURRENT_PATH)"
- 注意:该命令仅对已存在的 Wrangle 节点有效,且要求路径中无中文、无空格
- 更稳妥的方式是用
hython加载简单 parser,例如检查@符号是否成对、;是否缺失
容易踩的坑:
-
hscript在新版本 Houdini(20.5+)中默认禁用,需在Houdini.env中加HOUDINI_ENABLE_HSCRIPT=1 -
$(FULL_CURRENT_PATH)若含中文路径,hscript会报编码错误,建议开发时全用英文路径
中文注释与 VEX 语法高亮冲突怎么办
Notepad++ 默认的 C/C++ 语法高亮会把中文字符当非法符号标红,而 VEX 文件常含中文注释(如 // 设置粒子颜色)。这不是错误,但影响阅读:
- 不要用“C++”语言模式,改用“Plain Text”或自定义 UDL(User Defined Language)
- 推荐方案:安装
Python语言模式 + 关闭关键字高亮 → 因为 VEX 语法结构接近 C,但注释规则更松散,Python模式对//和/<em> </em>/兼容更好,且忽略非 ASCII 字符报错 - 若坚持用 UDL,重点屏蔽掉对
[\u4e00-\u9fff]的非法字符检测规则,只保留@.;{}等核心符号着色
注意:VSCode + VEX 插件 对中文注释支持更好,如果频繁写中文文档,Notepad++ 并非最优选。
为什么不用 Notepad++ 直接调用 hbatch 执行 VEX
有人尝试用 NppExec 调 hbatch -c "opscript ..." 想绕过 Houdini GUI 执行 VEX,结果几乎都失败,原因很实在:
-
hbatch是无界面批处理引擎,不加载 SOP 网络上下文,@ptnum、@Cd等属性根本不存在 - 即使硬塞一个几何体进去,VEX 运行依赖完整的
geometry handle和attribute schema,这些只能由 Houdini 实例动态构建 - 错误信息也极不友好,通常只报
Invalid expression,无法定位到具体哪一行
所以,“运行”的边界必须划清:Notepad++ 负责写得顺手、存得及时、跳转精准;Houdini 负责真正执行、调试、可视化。两者之间,一条保存动作就是最可靠的 IPC 机制。











