问题描述:
使用V24版本的SAP2000与grasshopper联动时无问题,但是使用V25版本后,启动代码会有报错,如图1所示,请问是什么原因?
图1.运行错误警告
解答:
从警告提示可以定位到第39行变量"SapModel",该错误通常由于代码中使用了未定义的变量或对象引起的。检查发现代码中无拼写或语法错误,并且SAP2000 V25的安装路径无误,如图2所示。
图2.SAP2000安装路径与注册表
再检查对象mySapObject,查看图3中函数GetObject用到的参数"CSI.SAP2000.API.SapObject"是否存在?该参数为API对象的程序ID,一般在注册表编辑器下可以查找,如图4所示,但是用户反馈没有找到此ID,继续沟通发现原因是:安装V25版本SAP2000后立即卸载了V24版本SAP2000。当电脑上同时安装有V24、V25版本的SAP2000时,使用插件工具卸载掉SAP2000 V24时,会将注册表中的程序ID:"CSI.SAP2000.API.SapObject"清理掉,导致调用SAP2000
V25出错。
图3.函数GetObject()
图4.注册表编辑器
解决办法:
需要重新安装SAP2000
V25,先卸载V25,再安装V25版本,程序ID自动会到注册表里面,安装后,可以正常调用。注册表是操作系统、各种硬件和用户安装的各种应用程序得以正常运行的核心数据库。当安装了应用程序或添加新硬件,安装程序或设备驱动程序会向注册表添加新的配置信息,如果用户需要启动某个程序,注册表将会给Windows系统提供与该应用程序相关的环境信息,系统据此完成相应的配置检查,并运行该程序。