SAP2000 API入门指南(一)从外部程序调用
ycf888
ycf888 Lv.2
2009年04月01日 13:00:32
来自于SAP2000
只看楼主

在SAP2000 12的安装目录下,有一个SAP2000_API_Documentation.chm文件,这个文件就是API的文档,里面有入门指南、函数参考手册、样例代码等。我是从“Example 3 (Visual C# 2005)”这个样例代码学起的。当时我用VS2005,现在用VS2008一样OK。需要特别注意的是,这个文档并没有及时更新,实际的函数接口可能跟文档里写得不一样,因此样例代码是在编译时会出错的。需要做一些更改才能正常运行。这些更改通常是大小写问题,估计CSI的人都用VB,对大小写不重视吧。还有一些是函数的参数个数或类型不符,但不太多,稍微修改一下就OK。

在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,如下图所示。

1_newProject.png



2. 添加对SAP2000 API的引用。选菜单“项目/添加引用”,如下图:

2_addRef.png

在弹出的“添加引用”对话框中,选“浏览”标签,选中SAP2000目录下的SAP2000.exe文件,如下图。

3_addRefDialog.png

按“确定”按钮。VS2008生成了对SAP2000 API的引用。

在项目的“引用”中新增了“CsiGoCallbackLib”和“Sap2000”两项。可以展开“Sap2000”引用项看看,里面提供了许多类和方法,如下图.


4_objModel.png


3. 添加按钮。在解决方案中双击"form1.cs",在对话框中放置一个按钮,将该按钮的name改为"buttonTest", 将其Text改为“测试”,如下图。


5_form1.png


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,并用一个对话框输出结果,如下图所示:


6_output.png


我们现在去看看程序自动建立的模型。用SAP2000打开C:SapAPIAPI_1-001.sdb,可以看到已建立好的模型,如下图:

7_model.png

[ 本帖最后由 ycf888 于 2009-4-1 13:07 编辑 ]

1_newProject.png


2_addRef.png


3_addRefDialog.png


4_objModel.png


5_form1.png


6_output.png


7_model.png

雪下大了
2010年06月09日 10:22:49
2楼
:handshake
回复
fyhhh9999
2010年07月25日 12:13:45
3楼
谢谢楼主的无私奉献,这个对我有很大的用处,再次感谢
:time: :time: :time:
回复
faithlg
2010年07月28日 18:07:39
4楼
非常感谢
回复
abs0071980
2010年12月05日 12:16:02
5楼
强人楼主,鉴定完毕。:handshake :handshake :handshake :handshake :handshake :handshake
回复

相关推荐

APP内打开