如何在出现“Unsuccessful command:”时跳转语句?Phases索引报错求助
解决PlxScripting结果获取异常与动态索引测试问题
一、捕获异常跳过报错语句
你遇到的PlxScriptingError本质是:当Phases索引为0-2时,对应阶段根本没有生成NodeToNodeAnchor.X类型的结果,导致getresults命令返回空触发了错误。要实现“遇到报错就跳转到下一条语句”,直接用Python的异常捕获机制就能搞定——把可能出错的代码放在try块里,用except精准捕获特定异常,然后在except块里做跳过处理即可。
示例代码:
# x是你的动态索引变量 x = 0 # 替换成你实际的动态值 try: testing = plateX = g_o.getresults(g_o.Phases[x], g_o.ResultTypes.NodeToNodeAnchor.X, 'node') # 执行到这里说明获取成功,可添加结果处理逻辑 print(f"Phase {x}的结果获取成功") except plxscripting.plx_scripting_exceptions.PlxScriptingError as e: # 只处理“无结果返回”的特定报错 if "Unsuccessful command: The command did not deliver any results" in str(e): print(f"Phase {x}无对应结果,跳过当前语句") else: # 其他PlxScripting错误可选重新抛出,避免遗漏未知问题 raise # 后续语句不受前面报错影响,会正常执行 print("继续执行下一条逻辑")
二、动态索引的批量测试方案
既然Phases[x]是动态变化的,建议写一个循环遍历所有Phase索引,批量测试哪些索引能正常获取结果,哪些会报错,这样能快速定位有效阶段:
# 遍历所有Phase索引 for x in range(len(g_o.Phases)): try: plateX = g_o.getresults(g_o.Phases[x], g_o.ResultTypes.NodeToNodeAnchor.X, 'node') print(f"✅ Phase {x}:成功获取结果,结果条数:{len(plateX)}") except plxscripting.plx_scripting_exceptions.PlxScriptingError as e: if "Unsuccessful command: The command did not deliver any results" in str(e): print(f"❌ Phase {x}:无对应结果,跳过") else: print(f"⚠️ Phase {x}:发生其他异常:{str(e)}")
运行这段代码后,你能清晰看到每个Phase索引的状态,后续动态使用时可以提前判断,或者直接用try-except兜底处理。
补充说明
为什么0-2阶段会报错?大概率是这些阶段属于模型初始化、加载或预计算阶段,还没生成NodeToNodeAnchor.X对应的结果数据;而3及以上阶段是完成了核心计算的阶段,所以能正常返回结果。如果想确认每个阶段支持的结果类型,可以用g_o.getresulttypes(g_o.Phases[x])来查看该阶段的所有可用结果类型。
内容的提问来源于stack exchange,提问作者KLo
相关产品推荐
相关产品推荐

