利用Sap2000API和C#开发插件的小例子(添加混凝土材料模块)

SAP2000是功能强大的结构分析与设计软件,但是由于并非本土软件,有些使用不符合国人习惯。本例利用Sap2000 和MS Visual C# 2008 开发了一个小插件,当然功能还很简单,仅有添加混凝土参数的功能。但举一反三,开发者或许能从本例中受到启发。

由于官方API是利用VB编写的,而且是英文版,极不方便阅读,本人在此真诚地邀请同行们进行翻译工作。

一、SAP2000 插件开发——全局设置

项目名称:SapTools

1、在VC#2010中,新建SapTools类库

2、添加引用“sap2000.exe”,“System.Windows.Forms”

3、重命名类“Class.cs”为“ClassMain.cs”

4、添加代码

using System.Windows.Forms;
using Sap2000;

5、修改“AssemblyInfo.cs”

将[assembly: ComVisible(false)]中的false改为true

6、在项目属性的“生成”标签中,勾选“为COM互操作注册(C)”

二、SAP2000 插件开发——主窗口设计

1、添加Windows窗体“FormMain.cs”

2、在“ClassMain”下添加代码

public static Sap2000.cSapModel SapModel0;
public void Main(ref Sap2000.cSapModel SapModel, ref Sap2000.cSapPlugin ISapPlugin)
{
SapModel0 = SapModel;
FormMain fMain = new FormMain();
fMain.ShowDialog();
ISapPlugin.Finish(0);
}

3、修改“FormMain”的Text属性为“Sap2000辅助工具箱”

4、在“FormMain”中添加菜单控件“menuStrip1”

新建菜单“材料(&M)”->“混凝土(&C)”->“导入普通混凝土”

新建菜单“材料(&M)”->“混凝土(&C)”->“导入高强混凝土”

三、SAP2000 插件开发——混凝土材料

1、新建类“ClassFunctions.cs”

2、在“ClassFunctions”下添加代码

public void Conc1(ref Sap2000.cSapModel SapModel)
{
int ret;
ret = SapModel.PropMaterial.SetMaterial("C15", Sap2000.eMatType.MATERIAL_CONCRETE, -1, "", "");
ret = SapModel.PropMaterial.SetMaterial("C20", Sap2000.eMatType.MATERIAL_CONCRETE, -1, "", "");
ret = SapModel.PropMaterial.SetMaterial("C25", Sap2000.eMatType.MATERIAL_CONCRETE, -1, "", "");
ret = SapModel.PropMaterial.SetMaterial("C30", Sap2000.eMatType.MATERIAL_CONCRETE, -1, "", "");
ret = SapModel.PropMaterial.SetMaterial("C35", Sap2000.eMatType.MATERIAL_CONCRETE, -1, "", "");
ret = SapModel.PropMaterial.SetMaterial("C40", Sap2000.eMatType.MATERIAL_CONCRETE, -1, "", "");
ret = SapModel.PropMaterial.SetMaterial("C45", Sap2000.eMatType.MATERIAL_CONCRETE, -1, "", "");
ret = SapModel.PropMaterial.SetMPIsotropic("C15", 2.200E+4, 0.2, 1.000E-5, 0);
ret = SapModel.PropMaterial.SetMPIsotropic("C20", 2.550E+4, 0.2, 1.000E-5, 0);
ret = SapModel.PropMaterial.SetMPIsotropic("C25", 2.800E+4, 0.2, 1.000E-5, 0);
ret = SapModel.PropMaterial.SetMPIsotropic("C30", 3.000E+4, 0.2, 1.000E-5, 0);
ret = SapModel.PropMaterial.SetMPIsotropic("C35", 3.150E+4, 0.2, 1.000E-5, 0);
ret = SapModel.PropMaterial.SetMPIsotropic("C40", 3.250E+4, 0.2, 1.000E-5, 0);
ret = SapModel.PropMaterial.SetMPIsotropic("C45", 3.350E+4, 0.2, 1.000E-5, 0);
ret = SapModel.PropMaterial.SetOConcrete("C15", 15, false, 1.27, 1, 2, 3.300E-03, 5.000E-03);
ret = SapModel.PropMaterial.SetOConcrete("C20", 20, false, 1.54, 1, 2, 3.300E-03, 5.000E-03);
ret = SapModel.PropMaterial.SetOConcrete("C25", 25, false, 1.78, 1, 2, 3.300E-03, 5.000E-03);
ret = SapModel.PropMaterial.SetOConcrete("C30", 30, false, 2.01, 1, 2, 3.300E-03, 5.000E-03);
ret = SapModel.PropMaterial.SetOConcrete("C35", 35, false, 2.20, 1, 2, 3.300E-03, 5.000E-03);
ret = SapModel.PropMaterial.SetOConcrete("C40", 40, false, 2.39, 1, 2, 3.300E-03, 5.000E-03);
ret = SapModel.PropMaterial.SetOConcrete("C45", 45, false, 2.51, 1, 2, 3.300E-03, 5.000E-03);
}
3、在之后继续添加代码
public void Conc2(ref Sap2000.cSapModel SapModel)
{
int ret;
ret = SapModel.PropMaterial.SetMaterial("C50", Sap2000.eMatType.MATERIAL_CONCRETE, -1, "", "");
ret = SapModel.PropMaterial.SetMaterial("C55", Sap2000.eMatType.MATERIAL_CONCRETE, -1, "", "");
ret = SapModel.PropMaterial.SetMaterial("C60", Sap2000.eMatType.MATERIAL_CONCRETE, -1, "", "");
ret = SapModel.PropMaterial.SetMaterial("C65", Sap2000.eMatType.MATERIAL_CONCRETE, -1, "", "");
ret = SapModel.PropMaterial.SetMaterial("C70", Sap2000.eMatType.MATERIAL_CONCRETE, -1, "", "");
ret = SapModel.PropMaterial.SetMaterial("C75", Sap2000.eMatType.MATERIAL_CONCRETE, -1, "", "");
ret = SapModel.PropMaterial.SetMaterial("C80", Sap2000.eMatType.MATERIAL_CONCRETE, -1, "", "");
ret = SapModel.PropMaterial.SetMPIsotropic("C50", 3.450E+4, 0.2, 1.000E-5, 0);
ret = SapModel.PropMaterial.SetMPIsotropic("C55", 3.550E+4, 0.2, 1.000E-5, 0);
ret = SapModel.PropMaterial.SetMPIsotropic("C60", 3.600E+4, 0.2, 1.000E-5, 0);
ret = SapModel.PropMaterial.SetMPIsotropic("C65", 3.650E+4, 0.2, 1.000E-5, 0);
ret = SapModel.PropMaterial.SetMPIsotropic("C70", 3.700E+4, 0.2, 1.000E-5, 0);
ret = SapModel.PropMaterial.SetMPIsotropic("C75", 3.750E+4, 0.2, 1.000E-5, 0);
ret = SapModel.PropMaterial.SetMPIsotropic("C80", 3.800E+4, 0.2, 1.000E-5, 0);
ret = SapModel.PropMaterial.SetOConcrete("C50", 50, false, 2.64, 1, 2, 3.300E-03, 5.000E-03);
ret = SapModel.PropMaterial.SetOConcrete("C55", 55, false, 2.74, 1, 2, 3.300E-03, 5.000E-03);
ret = SapModel.PropMaterial.SetOConcrete("C60", 60, false, 2.85, 1, 2, 3.300E-03, 5.000E-03);
ret = SapModel.PropMaterial.SetOConcrete("C65", 65, false, 2.93, 1, 2, 3.300E-03, 5.000E-03);
ret = SapModel.PropMaterial.SetOConcrete("C70", 70, false, 2.99, 1, 2, 3.300E-03, 5.000E-03);
ret = SapModel.PropMaterial.SetOConcrete("C75", 75, false, 3.05, 1, 2, 3.300E-03, 5.000E-03);
ret = SapModel.PropMaterial.SetOConcrete("C80", 80, false, 3.11, 1, 2, 3.300E-03, 5.000E-03);
}
4、双击“导入普通混凝土”菜单,添加代码
SapTools.ClassFunctions sapFunc = new SapTools.ClassFunctions();
sapFunc.Conc1(ref SapTools.ClassMain.SapModel0);
5、双击“导入高强混凝土”菜单,添加代码
SapTools.ClassFunctions sapFunc = new SapTools.ClassFunctions();
sapFunc.Conc2(ref SapTools.ClassMain.SapModel0);
本例仅作为一个演示,未对可能的错误进行处理,请自行添加。 ——AL小虾
posted @ 2011-04-20 01:00  AL小虾  阅读(2799)  评论(3编辑  收藏  举报