【C#】【SAP2000】OAPI文档案例详解

创建一个简单的结构模型,运行分析,提取结果,并将结果与手算值进行比较。

以下是详细的代码解析:

  1. 开头部分是一些using语句,引用了必要的命名空间,特别是SAP2000v1, 它包含了SAP2000 API的类和方法。

  2. 在Main方法中,首先定义了一些变量,用于控制是启动一个新的SAP2000实例还是附加到一个已有的实例,以及SAP2000程序的路径。

bool AttachToInstance;  //是否附加到一个已有实例
AttachToInstance = false;bool SpecifyPath;  //是否指定SAP2000程序路径
SpecifyPath = false;string ProgramPath;  //SAP2000程序路径
ProgramPath = @"C:\Program Files\Computers and Structures\SAP2000 22\SAP2000.exe";
  1. 接下来是创建模型文件的目录和文件名。
string ModelDirectory = @"C:\CSiAPIexample";  //模型文件的目录
string ModelName = "API_1-001.sdb";  //模型文件名
string ModelPath = ModelDirectory + System.IO.Path.DirectorySeparatorChar + ModelName;  //模型文件完整路径
  1. 然后,创建一个cOAPI对象mySapObject,它是与SAP2000应用程序交互的主要对象。
cOAPI mySapObject = null;
  1. 创建一个cHelper对象myHelper,它提供了一些辅助方法。
cHelper myHelper;
myHelper = new Helper();
  1. 根据AttachToInstance的值,决定是附加到一个已有的SAP2000实例,还是启动一个新的实例。如果是启动新实例,那么还要根据SpecifyPath的值决定是使用指定的路径还是使用默认的安装路径。
if (AttachToInstance)
{//附加到一个已运行的SAP2000实例mySapObject = myHelper.GetObject("CSI.SAP2000.API.SapObject");
}
else
{if (SpecifyPath){//从指定路径启动一个新的SAP2000实例mySapObject = myHelper.CreateObject(ProgramPath);}else{//从默认安装路径启动一个新的SAP2000实例mySapObject = myHelper.CreateObjectProgID("CSI.SAP2000.API.SapObject");}//启动SAP2000应用程序mySapObject.ApplicationStart();
}
  1. 创建一个cSapModel对象mySapModel,它代表SAP2000的结构模型,大部分操作都是通过它进行的。
cSapModel mySapModel;
mySapModel = mySapObject.SapModel;
  1. 初始化模型,创建一个新的空模型。
mySapModel.InitializeNewModel((eUnits.kip_in_F));
mySapModel.File.NewBlank();
  1. 定义材料属性。
mySapModel.PropMaterial.SetMaterial("CONC", eMatType.Concrete, -1, "", "");
mySapModel.PropMaterial.SetMPIsotropic("CONC", 3600, 0.2, 0.0000055, 0);
  1. 定义截面属性。
mySapModel.PropFrame.SetRectangle("R1", "CONC", 12, 12, -1, "", "");
  1. 定义截面属性修正系数。
double[] ModValue = new double[8];
//...
mySapModel.PropFrame.SetModifiers("R1", ref ModValue);
  1. 切换单位制为kip-ft。
mySapModel.SetPresentUnits(eUnits.kip_ft_F);
  1. 添加框架单元。
string[] FrameName = new string[3];
//...
mySapModel.FrameObj.AddByCoord(0, 0, 0, 0, 0, 10, ref temp_string1, "R1", "1", "Global");
mySapModel.FrameObj.AddByCoord(0, 0, 10, 8, 0, 16, ref temp_string1, "R1", "2", "Global"); 
mySapModel.FrameObj.AddByCoord(-4, 0, 10, 0, 0, 10, ref temp_string1, "R1", "3", "Global");
  1. 指定节点约束。
string[] PointName = new string[2];
bool[] Restraint = new bool[6];
//...
mySapModel.PointObj.SetRestraint(PointName[0], ref Restraint, 0);
mySapModel.PointObj.SetRestraint(PointName[1], ref Restraint, 0);
  1. 刷新视图,更新缩放。
mySapModel.View.RefreshView(0, false);
  1. 添加荷载工况。
mySapModel.LoadPatterns.Add("1", eLoadPatternType.Other, 1, true);
mySapModel.LoadPatterns.Add("2", eLoadPatternType.Other, 0, true);
//...
  1. 指定各个荷载工况下的荷载。
mySapModel.PointObj.SetLoadForce(PointName[0], "2", ref PointLoadValue, false, "Global", 0);
mySapModel.FrameObj.SetLoadDistributed(FrameName[2], "2", 1, 10, 0, 1, 1.8, 1.8, "Global", false, false, 0);  
//...
  1. 切换回kip-in单位制。
mySapModel.SetPresentUnits(eUnits.kip_in_F);
  1. 保存模型。
mySapModel.File.Save(ModelPath);
  1. 运行分析。
mySapModel.Analyze.RunAnalysis();
  1. 提取各个荷载工况下的分析结果。
double[] SapResult = new double[7]; 
for (i = 0; i <= 6; i++)
{mySapModel.Results.Setup.DeselectAllCasesAndCombosForOutput();mySapModel.Results.Setup.SetCaseSelectedForOutput(System.Convert.ToString(i + 1), true);if (i <= 3){mySapModel.Results.JointDispl(PointName[1], eItemTypeElm.ObjectElm, ref NumberResults, //...);}else{mySapModel.Results.JointDispl(PointName[0], eItemTypeElm.ObjectElm, ref NumberResults, //...);}              
}
  1. 关闭SAP2000,释放资源。
mySapObject.ApplicationExit(false);
mySapModel = null;  
mySapObject = null;
  1. 将SAP2000的分析结果与预设的独立计算结果进行对比,计算误差百分比,并输出对比结果。
double[] IndResult = new double[7];
//... 
for (i = 0; i <= 6; i++)
{PercentDiff[i] = (SapResult[i] / IndResult[i]) - 1;//...
}string msg = "";
msg = msg + "LC Sap2000 Independent%Diff\r\n";
for (i = 0; i <= 5; i++) 
{msg = msg + string.Format("{0:0}", i + 1) + "" + SapResultString[i] + "" + IndResultString[i] + "" + PercentDiffString[i] + "\r\n";
}
//...
Console.WriteLine(msg);

涵盖了SAP2000 API的许多基本功能,如

  • 创建模型
  • 定义材料
  • 截面属性
  • 创建结构对象
  • 指定荷载和约束条件
  • 运行分析
  • 提取结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/744271.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【JVM】Java虚拟机调优 配置启动参数

一、配置方式 options - JVM启动参数。 配置多个参数的时候&#xff0c;参数之间使用空格分隔 参数命名&#xff1a; 常见为 -参数名 参数赋值&#xff1a; 常见为 -参数名参数值 | -参数名:参数值 二、内存参数 -Xms:初始堆大小&#xff0c;JVM启动的时候&#xff0c;给定…

C++:vector类

vector的介绍及使用 1. vector 是表示可变大小数组的序列容器。 2. 就像数组一样&#xff0c; vector 也采用的连续存储空间来存储元素。也就是意味着可以采用下标对 vector 的元素进行访问&#xff0c;和数组一样高效。但是又不像数组&#xff0c;它的大小是可以动态改变的…

虾皮shopee根据ID取商品详情 API

公共参数 名称类型必须描述keyString是免费申请调用key&#xff08;必须以GET方式拼接在URL中&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#xff09;[item_search,item_get,item_search_shop等]cacheString否[yes,no]默认y…

pxe安装mini centos系统

一、准备工作 1、关闭防火墙和selinux systemctl stop firewalld && systemctl disable firewalldsetenforce 02、配置静态ip 需要在dhcp里面填写tftp配置&#xff0c;所以需要固定ip 二、dhcp安装配置 作用&#xff1a;给客户端提供ip地址&#xff0c;并告诉客户…

html5cssjs代码 017样式示例

html5&css&js代码 017样式示例 一、代码二、解释 这段HTML代码定义了一个网页的基本结构&#xff0c;包括头部、主体和尾部。在头部中&#xff0c;设置了网页标题、字符编码和样式。主体部分包含一个标题和一个表格&#xff0c;表格内分为两个单元格&#xff0c;左侧为…

JAVA后端开发面试基础知识(九)——SpringBoot

启动原理 SpringBoot启动非常简单,因其内置了Tomcat,所以只需要通过下面几种方式启动即可: @SpringBootApplication(scanBasePackages = {"cn.dark"}) public class SpringbootDemo {public static void main(String[] args) {// 第一种SpringApplication.run(S…

【ceph】ceph中osd报错,have spurious read error

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》&#xff1a;python零基础入门学习 《python运维脚本》&#xff1a; python运维脚本实践 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8…

提高转换效率的利器NCP13992ACDR2G 高性能电流模式LLC谐振变换器控制芯片

NCP13992ACDR2G产品概述&#xff1a; NCP13992ACDR2G是一款用于半桥谐振变换器的高性能电流模式控制器。该控制器实现了600 V栅极驱动器&#xff0c;简化了布局并减少了外部组件数量。内置的Brown−Out输入功能简化了控制器在所有应用程序中的实现。在需要PFC前级的应用中&…

采购代购系统独立站,接口采集商品上货

采购代购系统独立站的建设与商品上货接口的采集是一个综合性的项目&#xff0c;涉及前端开发、后端开发、数据库设计以及API接口的对接等多个环节。以下是一个大致的步骤和考虑因素&#xff1a; 一、系统规划与需求分析 明确业务需求&#xff1a;确定代购系统的核心功能&…

Python尝试循环连接服务器,如果连接成功则退出,如果超过3次连接失败则退出

下面是一个使用Python实现的程序&#xff0c;可以实现你描述的功能&#xff1a;通过SSH连接服务器并重启服务器&#xff0c;然后循环尝试连接服务器&#xff0c;如果连接成功则退出&#xff0c;如果超过3次连接失败则退出。 首先&#xff0c;请确保你已经安装了paramiko库&…

【SQL】1084. 销售分析III (多种解法;is null 和 =null 的区别图示 )

前述 知识点学习&#xff1a;MySQL 中 is null 和 null 的区别 题目描述 leetcode题目&#xff1a; 1084. 销售分析III 写法一 思路&#xff1a;“所有售出日期都在这个时间内”&#xff0c;也就是“在这个时间内售出的商品数量等于总商品数量” -- 解法1&#xff1a;ACCE…

桌面客户端软件开发框架

桌面客户端软件开发框架是用于创建桌面应用程序的工具集合&#xff0c;它们提供了开发者需要的基本组件、库和工具&#xff0c;以便于快速构建功能丰富、可靠的桌面应用程序。以下是一些常用的桌面客户端软件开发框架&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司…

30家地方征信平台名单

安徽省征信股份有限公司云南省征信有限责任公司甘肃征信股份有限公司北京金融大数据有限公司吉林省惠金信用信息服务有限公司江苏省联合征信有限公司广东图腾征信有限公司青海省征信有限公司浙江浙里信征信有限公江西普惠征信股份有限公司上海市联合征信有限公司四川征信有限公…

bpmn-js中实现shape的内置属性、节点的默认配置

bpmn-js中使用elementfactory模块来构建一个元素的结构,其构建构成和元素属性的组成可参考:聊一聊bpmn-js中的elementFactory模块https://blog.csdn.net/chf1142152101/article/details/136294768。构建元素的属性会自动帮我们生成一个对应类型的shape的Id,其余属性均为空,…

Android开发 Activity启动模式、ViewModel与LiveData,及Kotlin Coroutines

目录 Activity启动模式 onNewIntent解释 Activity启动模式的考虑时机 Service启动模式 ContentProvider的作用 Broadcast的注册方式 AsyncTask的作用 ViewModel LiveData Kotlin Coroutines 结合使用 Activity启动模式 Android中Activity的启动模式有四种&#xff0…

【深入理解设计模式】命令设计模式

命令设计模式&#xff1a; 命令模式&#xff08;Command Pattern&#xff09;是一种行为型设计模式&#xff0c;它将请求封装为一个对象&#xff0c;从而使你可以用不同的请求对客户端进行参数化&#xff0c;对请求排队或记录请求日志&#xff0c;以及支持可撤销的操作。 概述…

CentOS本地部署Tale博客并结合内网穿透实现公网访问本地网站

文章目录 前言1. Tale网站搭建1.1 检查本地环境1.2 部署Tale个人博客系统1.3 启动Tale服务1.4 访问博客地址 2. Linux安装Cpolar内网穿透3. 创建Tale博客公网地址4. 使用公网地址访问Tale 前言 今天给大家带来一款基于 Java 语言的轻量级博客开源项目——Tale&#xff0c;Tale…

数据采集实训电商数据爬取python代码 电商数据抓取

电商平台的数据抓取&#xff0c;一直是网页抓取公式的热门实战实例&#xff0c;之前我们通常是针对国内的电商平台进行数据抓取&#xff0c;昨天小编受到委托&#xff0c;针对一个俄罗斯电商平台wildberries做了数据抓取&#xff0c;抓取的主要内容是商品标题、价格及评价数量。…

python导入的缓存机制

问题来源&#xff1a; logger文件 import sysfrom loguru import loggerfrom app.internal.component.configer import settingsdef configure_logger():"""多进程环境&#xff0c;需要确保子进程能拿到正确初始化的logger实例:return:"""logg…

基于单片机的指纹采集识别系统设计

目 录 摘 要 I Abstract II 引 言 3 1 硬件选择与设计 5 1.1 总体设计及方案选择 5 1.1.1主控单片机选择 5 1.1.2传感器模块选择 6 1.1.3显示器模块选择 6 1.2 系统总体设计 7 2 系统硬件电路设计 8 2.1 系统主电路设计 8 2.1.1 主体电路设计 8 2.1.2 单片机最小系统设计 8 2.…