← 返回
未分类

catia-com-bridge

CATIA V5 COM 通用桥梁。通过 Python subprocess 调用 cscript 执行 VBS 脚本, 规避 WorkBuddy 沙箱对 cscript 的直接封堵。适用于所有需要与 CATIA V5 进行 COM 交互的场景(坐标提取、属性读写、BOM 导出等)。要求 CATIA V5 已启动且目标文档已打开。
> CATIA V5 COM 通用桥梁。通过 Python subprocess 调用 cscript 执行 VBS 脚本, 规避 WorkBuddy 沙箱对 cscript 的直接封堵。适用于所有需要与 CATIA V5 进行 COM 交互的场景(坐标提取、属性读写、BOM 导出等)。要求 CATIA V5 已启动且目标文档已打开。
user_be15cbd0
未分类 community v1.0.0 1 版本 94444.4 Key: 无需
★ 0
Stars
📥 17
下载
💾 0
安装
1
版本
#latest

概述

catia-com-bridge — CATIA V5 COM 通用桥梁

概述

提供从 Python 安全调用 CATIA V5 COM 接口的通用方案:Python subprocess.run() → cscript → VBS → COM → CATIA

在 WorkBuddy 沙箱环境下,直接调用 cscript 可能被 LOLBin 策略拦截,但通过 Python 子进程嵌套调用已验证可行(2026-06-07)。

为什么需要这个桥梁?

问题原因解决方案
---------------------
Python win32com Position.GetComponents 返回全零CATIA V5-6R2024 B34 兼容性问题通过 VBS 原生 COM 调用
cscript 被 WorkBuddy 直接封堵(LOLBin)安全策略Python subprocess 嵌套调用绕过
每个 Skill 重复实现 subprocess 调用代码重复统一桥梁模块

本机环境

项目路径/值
---------------
CATIA V5C:\Program Files\Dassault Systemes\B34\win_b64\code\bin\CNEXT.exe
CATIA 版本V5-6R2024 B34 (R34.SP03.HF010)
PythonC:\Users\vobes23\.workbuddy\binaries\python\envs\default\Scripts\python.exe
cscriptWindows 自带(System32)

前置条件

  • Windows 系统(cscript 和 CATIA 均为 Windows 独占)
  • CATIA V5 已启动,目标文档已打开
  • Python 3.x(WorkBuddy managed)

工作原理

Python script
  └─ subprocess.run(["cscript", "//nologo", "script.vbs", arg1, arg2...])
       └─ cscript.exe (Windows Script Host)
            └─ script.vbs
                 └─ GetObject(, "CATIA.Application")  ← COM 连接到运行中的 CATIA
                      └─ 读取/操作 CATIA 对象模型
                           └─ WScript.Echo 输出结果 → Python stdout 捕获

使用方式

方式 1:直接使用桥梁模块(推荐)

import sys
sys.path.insert(0, r"C:\Users\vobes23\.workbuddy\skills\catia-com-bridge\scripts")
from catia_bridge import run_catia_script, check_catia_running

# 检查 CATIA 是否在运行
if not check_catia_running():
    print("ERROR: CATIA is not running")
    sys.exit(1)

# 执行 VBS 脚本
result = run_catia_script(
    vbs_path=r"D:\path\to\script.vbs",
    args=["output.txt", "extra_param"],
    timeout=300
)

if result.returncode == 0:
    for line in result.stdout.splitlines():
        print(line)
else:
    print(f"ERROR: {result.stderr}")

方式 2:Skill 引用模式

其他 Skill 声明对本 Skill 的依赖,使用桥梁函数:

# 在 Skill 脚本中
import sys
bridge_dir = r"C:\Users\vobes23\.workbuddy\skills\catia-com-bridge\scripts"
if bridge_dir not in sys.path:
    sys.path.insert(0, bridge_dir)

from catia_bridge import run_catia_script

VBS 脚本规范

被桥梁调用的 VBS 脚本应遵循以下规范:

  1. 接收参数:通过 WScript.Arguments 获取调用参数
  2. 连接 CATIASet catia = GetObject(, "CATIA.Application")
  3. 输出结果:使用 WScript.Echo 输出结构化数据
  4. 错误报告:使用 WScript.Echo "ERROR|CODE|Description" 格式
  5. 退出码WScript.Quit 0(成功)/ WScript.Quit 1(失败)

示例模板:

Option Explicit
Dim catia, outputPath
Set catia = GetObject(, "CATIA.Application")
outputPath = WScript.Arguments(0)  ' 第一个参数:输出文件路径

' 执行 CATIA 操作...
Dim fso, outFile
Set fso = CreateObject("Scripting.FileSystemObject")
Set outFile = fso.CreateTextFile(outputPath, True)
outFile.WriteLine "data..."
outFile.Close
WScript.Quit 0

桥梁 API 参考

check_catia_running() -> bool

检查 CATIA V5 进程是否在运行(通过进程名 CNEXT.exe)。

run_catia_script(vbs_path, args=None, timeout=300) -> CompletedProcess

执行 VBS 脚本并返回结果。

参数类型说明
------------------
vbs_pathstrVBS 脚本的绝对路径
argsList[str]传递给 VBS 脚本的参数列表
timeoutint超时时间(秒),默认 300

返回值 subprocess.CompletedProcess

  • .returncode — 0 成功
  • .stdout — WScript.Echo 输出
  • .stderr — 错误输出

get_catia_app() — 仅 VBS 侧

VBS 脚本内部使用的 CATIA 连接模式:

Set catia = GetObject(, "CATIA.Application")
Set topProduct = catia.ActiveDocument.Product

文件结构

catia-com-bridge/
├── SKILL.md
└── scripts/
    └── catia_bridge.py    ← 桥梁核心模块(纯 Python,零外部依赖)

使用本桥梁的 Skill

Skill用途
-------------
Loch&Bolzen Dual Verify提取定位件坐标
catia-conn-supp-extract提取 CONNECTOR/SUPPORT 属性

已知限制

  • 仅支持 Windows(依赖 cscript 和 CATIA COM)
  • 需要 CATIA 唯一实例(多实例时可能连接错误的实例)
  • VBS 脚本执行期间 CATIA UI 可能短暂无响应
  • 不适用于实时高频调用(每次调用启动一个 cscript 进程)

故障排查

现象原因解决
------------------
check_catia_running() 返回 FalseCATIA 未启动启动 CATIA 并打开目标文档
`ERROR\CATIA_NOT_FOUND`VBS 无法连接 CATIA确认 CATIA 进程存在
`ERROR\NO_ACTIVE_PRODUCT`CATIA 未打开 Product打开目标装配体
cscript 超时大装配体遍历耗时增加 timeout 参数
返回数据全零非 VBS 环境调用确认使用 VBS(非 Python win32com)

版本历史

共 1 个版本

  • v1.0.0 Initial release 当前
    2026-06-07 23:05 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

ai-intelligence

self-improving agent

pskoett
捕获经验教训、错误和纠正,以实现持续改进。使用时机:(1)命令或操作意外失败;(2)用户纠正……
★ 4,055 📥 795,902
developer-tools

Github

steipete
使用 `gh` CLI 与 GitHub 交互,通过 `gh issue`、`gh pr`、`gh run` 和 `gh api` 管理议题、PR、CI 运行及高级查询。
★ 666 📥 323,791
security-compliance

Skill Vetter

spclaudehome
AI智能体技能安全预审工具。安装ClawdHub、GitHub等来源技能前,检查风险信号、权限范围及可疑模式。
★ 1,210 📥 266,150