在SAP2000 12的安装目录下,有一个SAP2000_API_Documentation.chm文件,这个文件就是API的文档,里面有入门指南、函数参考手册、样例代码等。我是从“Example 3 (Visual C# 2005)”这个样例代码学起的。当时我用VS2005,现在用VS2008一样OK。
需要特别注意的是,这个文档并没有及时更新,实际的函数接口可能跟文档里写得不一样,因此样例代码是在编译时会出错的。需要做一些更改才能正常运行。这些更改通常是大小写问题,估计CSI的人都用VB,对大小写不重视吧。还有一些是函数的参数个数或类型不符,但不太多,稍微修改一下就OK。
本文描述如何能运行“Example 3 (Visual C# 2005)”样例代码。环境为SAP2000 V12.0.2 + Visual Studio 2008.
1. 打开VS2008,新建项目,选C#, Windows窗体应用程序,名称为Example3,如下图所示。
2. 添加对SAP2000 API的引用。选菜单“项目/添加引用”,如下图:
在弹出的“添加引用”对话框中,选“浏览”标签,选中SAP2000目录下的SAP2000.exe文件,如下图。
按“确定”按钮。VS2008生成了对SAP2000 API的引用。
在项目的“引用”中新增了“CsiGoCallbackLib”和“Sap2000”两项。可以展开“Sap2000”引用项看看,里面提供了许多类和方法,如下图.
3. 添加按钮。在解决方案中双击"form1.cs",在对话框中放置一个按钮,将该按钮的name改为"buttonTest", 将其Text改为“测试”,如下图。
4. 为按钮添加代码。双击“测试”按钮,切换到代码视图,在函数buttonTest_Click中添加代码。我们将API文档的"Example 3 (Visual C# 2005)"中的代码粘贴到这里。存盘、编译。VS2008会报17个错误,都是“找不到类型或命名空间名称“SAP2000””。原因是引用了SAP2000 API后,VS2008自动给出的命名空间是“Sap2000”,而样例代码中的是"SAP2000",大小写不同。
5. 修改错误。将“SAP2000”全部替换为“Sap2000”。再编译,还有错误,包括以下地方:
ret = SapModel.View.RefreshView(0, ref temp_bool);
函数原型为:
int RefreshView(int Window, bool Zoom);
第2个参数前不应有ref,删除之,变为:
ret = SapModel.View.RefreshView(0, temp_bool);
错误:
ret = SapModel.LoadPatterns.Add("1", Sap2000.eLoadPatternType.LTYPE_OTHER, 1, ref temp_bool);
函数原型为:
int Add(string Name, eLoadPatternType MyType, double SelfWTMultiplier, bool AddAnalysisCase);
第4个参数前不应有ref,删除之,变为:
ret = SapModel.LoadPatterns.Add("1", Sap2000.eLoadPatternType.LTYPE_OTHER, 1, temp_bool);
将所有错误处按以上方法修改后,编译通过。
6. 建立文件夹C:SapAPI,程序会将SAP文件存放在这里。运行程序,按“测试”按钮。程序自动启动SAP2000,自动建模,自动分析,自动关闭SAP2000,并用一个对话框输出结果,如下图所示:
我们现在去看看程序自动建立的模型。用SAP2000打开C:SapAPIAPI_1-001.sdb,可以看到已建立好的模型,如下图:
[
本帖最后由 ycf888 于 2009-4-1 13:07 编辑 ]
全部回复(4 )
只看楼主 我来说两句回复 举报
回复 举报