目 录

  • Blog Links
  • 一、前言
  • 二、pywin32库
  • 三、帮助文档
  • 四、访问SAP2000
    • 4.1 ProgID
  • 五、文件
    • 5.1 新建
    • 5.2 打开
    • 5.3 保存
    • 5.4 退出
  • 六、视图
    • 6.1 刷新视图
    • 6.2 刷新窗口
  • 七、颜色
  • 八、示例
  • 九、尾声
  • 十、参考文献

Blog Links

  • DalNur | 博客总目录

  • Python 二次开发 SAP2000 概述

  • Python 二次开发 SAP2000 定义

  • Python 二次开发 SAP2000 绘制

  • Python 二次开发 SAP2000 指定 (未完待续)

  • Python 二次开发 SAP2000 分析 (未完待续)

  • Python 二次开发 SAP2000 设计 (未完待续)

  • Python 二次开发 SAP2000 实例

本系列博客暂未全部完结,极其不定期的更新。

转载请注明出处!

一、前言

  SAP2000 (Structure Analysis Program 2000) 是由美国 Computer and Structure Inc.(CSI) 公司开发研制的通用结构分析与设计软件,在世界范围内应用广泛。

  通过 SAP2000 API (Application Programing Interface/应用软件编程接口),用户便可编写程序控制 SAP2000,调用 SAP2000 中的各种功能,实现自动建模、自动分析,还可以实现自动调整参数、迭代运行等。

二、pywin32库

  pywin32 是一个 Python 库,为 Python 提供访问 Windows API 的扩展,提供了齐全的 windows 常量、接口、线程以及 COM 机制等,了解更多详见博客:如何利用Python和win32编程避免重复性体力劳动(一) 。

  如已安装 Anaconda,在 Anaconda Prompt 中键入 pip install pywin32 便可自动完成该库的导入;如未安装 Anaconda,也可 pip 手动导入,其在PyPI (Python Package Index) 上的注册地址为: https://pypi.org/project/pywin32 。

  本文通过 pywin32 库调用 SAP2000 程序,本文中的 SAP2000 版本为 v15.2.1,其余版本的调用类似。

三、帮助文档

  SAP2000 二次开发的官方帮助文档为 CSi_OAPI_Documentation ,该文件位于 SAP2000 的安装路径内,只要你的电脑中安装了 SAP2000,它就一定存在。

  按照如下方式操作可快速找到 CSi_OAPI_Documentation 文件:

    1. 安装文件搜索神器 Everything

    2. Everything 搜索栏内输入 CSi_OAPI_Documentation.chm 。

  如下图所示,便可看到 CSi_OAPI_Documentation 文件及其所在路径。

  此外,按如上方式还可得到的随软件一同安装到你电脑中的官方参考文档有:

  • SAP2000_cn.chm —— SP2000 Help 中文版

  • SAP2000.chm —— SP2000 Help 英文版

  • SAP2000Sched_cn.chm —— SP2000 Construction Scheduler / 施工进度表 和 非线性静力阶段施工荷载工况 中文版

四、访问SAP2000

#!/usr/bin/env python
# -*- coding: utf-8 -*-'''
=============================
Author: DalNur
Email: liyang@alu.hit.edu.cn
=============================
'''import win32com.clientSapObject = win32com.client.Dispatch("Sap2000v15.SapObject")  # create Sap2000 object
SapObject.ApplicationStart()  # start Sap2000 application
SapModel = SapObject.SapModel  # create SapModel object
SapModel.InitializeNewModel(9)  # initialize model

  初始化模型的单位为:N_mm_C 。

Item eUnits enumeration
kN_m_C 6
N_mm_C 9
N_m_C 10

4.1 ProgID

  上述代码中,“Sap2000v15.SapObject” 为 ProgID,根据 SAP2000 版本的不同,ProgID 可能发生变化,部分版本 SAP2000 的 ProgID 如下:

SAP2000 版本 ProgID
Sap2000v15 Sap2000v15.SapObject
- -

  其余版本 SAP2000 的 ProgID 在官方二次开发帮助文档中查看,具体查找位置如下图所示。

五、文件

5.1 新建

ret = SapModel.File.NewBlank()  # create new blank model

Remarks :

  1. 不要使用该函数来加载一个已经存在的模型,该该函数仅用于创建新模型以及呼叫程序启动 / 初始化新模型。

  2. 如果新空白模型成功创建则函数的返回值为 0 ,否则函数返回非 0 数值。

5.2 打开

fileName = "C:\SapAPI\Example 1-019a.sdb"
ret = SapModel.File.OpenFile(fileName)  # open an existing file

5.3 保存

ret=SapModel.File.Save("C:\SapAPI\x.sdb")  # save SDB file

Remarks :

  1. 如果指定文件名,则它须含拓展名 .sdb;如果不指定文件名,则使用当前名称将其保存。

  2. 如果文件没有当前名称,即文件为新建文件,此前从未保存过,则该函数报错: no file name specified 。

  3. 文件被成功保存,则该函数返回值为 0 ,否则函数返回非 0 数值。

5.4 退出

  当完成模型创建后,需要关闭 SAP2000 应用程序,此时,可采用如下 Python 代码实现:

SapObject.ApplicationExit(False)

  此外,SapModel 和 SapObjectobjects 必须设置为空,Python 代码如下:

SapModel = 0 SapObject = 0

  设置对象为空是非常重要的一步,它将断开用户程序与 SAP2000 间的联系,释放系统资源。如果对象没有设置为空,则 SAP2000 应用程序没有被完全关闭,仍然占用系统内存。此时,你可以在 Windows 任务管理器进程中看到,SAP2000 仍然运行。

  综上,在建模完成后的最后一步,应退出 SAP2000 应用程序,释放其占用的系统内存,完整的 Python 代码如下:

ret = SapObject.ApplicationExit(False)  # close Sap2000
SapModel = 0
SapObject = 0

六、视图

6.1 刷新视图

ret = SapModel.View.RefreshView(Window=0, Zoom=False)  # refresh view, update (initialize) zoom
Parameters Description
Window This is 0 meaning all windows or an existing window number. It indicates the window(s) to have its view refreshed.
Zoom If this item is True, the window zoom is maintained when the view is refreshed. If it is False, the zoom returns to a default zoom.

Remarks :

  This function refreshes the view for the specified window(s). It returns zero if the window views are successfully refreshed, otherwise it returns a nonzero value.

6.2 刷新窗口

ret = SapModel.View.RefreshWindow(Window=0)  # refresh all windows

七、颜色

  SAP2000 中可以为截面、材料等指定不同的颜色,以便于用户更直观的查看所创建的模型。若用户没有特意指定相应的颜色,则程序自动采用系统默认配色。用户如想自定义颜色,则需要为函数中的变量 color 指定数值,以定义颜色。如指定某框架截面属性的颜色为蓝色:

color = 16711935
ret = SapModel.PropFrame.SetTube(secName, matName, t3, t2, tf, tw, color)

  color 为非负整数,取值范围为 [ 0, 16777215 ],为十进制下的颜色代号,是由 RGB 颜色值转化而来的,具体换算公式如下:

color=R+256×G+256×256×B{color} = R + 256 × G + 256 × 256 × B color=R+256×G+256×256×B

  例如:对于白色(R=255,G=255,B=255),其颜色代号 color 为 255 + 256 × 255 + 256 × 256 × 255 = 16777215。

  常用标准颜色代号如下:

颜色 color 颜色 color
黑色 0 青色 16776960
红色 255 蓝色 16711680
黄色 65535 洋红 16711935
绿色 65280 白色 16777215

  该颜色定义方式与 AutoCAD 二次开发中关于颜色的定义方式相一致,如想了解更多,详见博客 【Python AutoCAD 系统设置 】。

八、示例

import win32com.client  # 库导入
SapObject = win32com.client.Dispatch("Sap2000v15.SapObject")  # 创建Sap2000对象
SapObject.ApplicationStart()  # 启动Sap2000程序
SapModel = SapObject.SapModel  # 创建SapModel对象
SapModel.InitializeNewModel(10)  # 初始化模型,设置单位为N_m_C。# call Sap2000 API functions here to perform desired tasks
# in this example a new 2D frame is created from template
ret = SapModel.File.New2DFrame(0, 3, 124, 3, 200)# save model
import os
APIPath = 'C:\API'
if not os.path.exists(APIPath):try:os.makedirs(APIPath)except OSError:pass
ret = SapModel.File.Save(APIPath + os.sep + 'API_1-001.sdb')# close the Sap2000 application, if desired
ret = SapObject.ApplicationExit(False)# set the objects to Nothing
# at the end of your program ALWAYS terminate the objects in this manner
SapModel = 0
SapObject = 0# open an existing file
SapObject = win32com.client.Dispatch("Sap2000v15.SapObject")
SapObject.ApplicationStart()
SapModel = SapObject.SapModel
SapModel.InitializeNewModel()
ret = SapModel.File.OpenFile("C:\API\API_1-001.sdb")#switch to k-in units
kip_in_F = 3;
ret = SapModel.SetPresentUnits(kip_in_F)# refresh view, update (initialize) zoom
ret = SapModel.View.RefreshView(Window=0, Zoom=False)

九、尾声

  以上,便是关于 Python 语言 二次开发 SAP2000 的简单介绍

  因篇幅有限,某些内容未做详细介绍,如有疑问,欢迎邮件交流。

  Email: liyang@alu.hit.edu.cn 。

  仅以此文为我 Python 调用 SAP2000 的相关工作做一个总结。

  与此同时,也希望能够为初学者/有需要的人提供多一点参考。

  本文仅用于个人学习,除此之外,无其他任何用途。

  因个人水平有限,文中难免有所疏漏,还请各位大神不吝批评指正。

  胸藏文墨怀若谷,腹有诗书气自华,希望各位都能在知识的 pāo 子里快乐徜徉。

  本文逻辑清楚,内容详实,引例丰富。

  欢迎大家点赞、评论及转载,转载请注明出处!

  为我打call,不如为我打款!

  最后,祝各位攻城狮们,珍爱生命,保护发际线!

十、参考文献

[1]. SAP2000中文版使用指南 (第二版). 北京金土木软件技术有限公司 & 中国建筑标准设计研究院 编著.

[2]. SAP2000 Help. Computers and Structures, Inc.

Python 二次开发 SAP2000 概述相关推荐

  1. Python 二次开发 SAP2000 定义

    目 录 Blog Links 一.前言 二.定义材料 2.1 创建新材料 2.2 设置密度与重度 2.3 设置弹性模量.泊松比与线膨胀系数 2.4 设置钢材力学行为 2.5 设置阻尼参数 三.截面属性 ...

  2. Python 二次开发 SAP2000 绘制

    目 录 Blog Links 一.前言 二.创建点 2.1 笛卡尔坐标系下创建点 2.2 柱坐标系下创建点 2.3 球坐标系下创建点 三.创建线 3.1 创建直线框架 3.1.1 由节点坐标创建直线框 ...

  3. Python 二次开发 Excel 简介

    目 录 一.前言 1.1 pywin32库 1.2 帮助文档 1.3 枚举 1.4 颜色 二.与 Excel 的连接 三.工作簿 Workbook 3.1 打开/新建 四.工作表 Worksheet ...

  4. abaqus python二次开发攻略_Abaqus二次开发Python脚本二次开发

    在上一篇博文中简要介绍了Abaqus中FORTRAN子程序二次开发,那么这次将对Abaqus的Python脚本二次开发进行概述. 就像在上一篇博文中提到的,基于Python的脚本开发又可以细分为如下三 ...

  5. python二次开发攻略-ABAQUS Python二次开发攻略

    第一部分 引言 第1章 Abaqus二次开发简介 12 1.1 为什么是Python 12 1.2 Python.FORTRAN与Abaqus 13 1.3 基于Python二次开发 14 第2章 P ...

  6. abaqus python二次开发攻略_基于CAE二次开发进行弹簧批量建模

    一. 为什么要进行弹簧批量建模 当一个公司或者学者从事科研任务时,往往通过有限元进行建模分析,建模的时间通常与工作效率挂钩.例如ABAQUS/CAE建模,想必很多老用户都有某种共同的感受,那就是实体模 ...

  7. abaqus python二次开发攻略.pdf 百度云_ABAQUS Python二次开发攻略 CAE分析大系

    内容推荐 本书是作者结合自己多年Abaqus 使用经验,在汲取国内外大量资料的基础上编写的一本Python 二次开发知识点笔记.内容涉及开发环境的搭建.Python 基础语法知识.Abaqus Pyt ...

  8. 迈德威视工业相机python二次开发,修改相机参数

    迈德威视工业相机python二次开发,修改相机参数 1. 调用官方给的参考例程grab.py 例程下载地址:https://www.mindvision.com.cn/rjxz/list_12.asp ...

  9. 国产微观交通仿真软件TESS NG V2.1 Python二次开发接口版本发布

    来源:上海济达交通科技有限公司 上海济达交通科技有限公司是国产TESS NG微观交通软件研发商.2022年9月26日,上海济达交通科技有限公司正式发布了TESS NG的V2.1 Python二次开发接 ...

最新文章

  1. CentOS下LAMP一键yum安装脚本
  2. 你知道我今天为什么来公司上班吗?
  3. Docker 命令终极教程:8步走
  4. 洛谷4400 BlueMary的旅行(分层图+最大流)
  5. IOS开发基础之截图、图片文字水印
  6. Java 菜鸟进美团,居然是看了这个......
  7. php 处理tiff,TIFF图像文件(五):LZW的PHP应用
  8. windows下用navicat远程链接虚拟机Linux下MySQL数据库
  9. 阶段3 3.SpringMVC·_03.SpringMVC常用注解_8 SessionAttributes注解
  10. 模拟电子技术基础》期中考试试题,仅供参考
  11. Python 实现控制一阶惯性系统
  12. VS2017安装MSDN帮助文档
  13. 利用US-100超声波传感器测距的核心代码
  14. ppm与LSB含义,换算
  15. python制作气温分布图_基于Python的多种形式气温分布图自动绘制
  16. help指令和man指令的区别
  17. 六面体单元matlab后处理,《有限元基础教程》_【MATLAB算例】基于节点六面体单元的空间块体分析(HexahedralDNode).doc...
  18. 我们都希望有一部属于自己的电脑。
  19. sslcontext java_java – SSLContext初始化
  20. linux如何打印脚本运行进度,linux-如何在使用systemd引导期间最后运行并打印我的脚本输出?...

热门文章

  1. plc是一种工业控制用的专用计算机,PLC(可编程控制器)与MC(微机)控制的区别
  2. 快速文件重命名,中文文件名转换成英文文件名
  3. 用java的jni调用C语言的API,实现带图形界面的一元稀疏多项式计算器
  4. 鸟哥,png图片压缩
  5. 把matlab移动到另一个盘,乾坤大挪移,教你如何将程序从一个硬盘移到另一个硬盘...
  6. 【VUE】跨标签页多页数据传输的实现
  7. 信息技术学业水平考试 上机考试 18题 Word操作题一(20分)
  8. 通信系统模型以及三角函数基本概念复习
  9. 2014版学车考驾照精华攻略 总有一个你需要!赶紧收藏吧!!
  10. 【正点原子MP157连载】第二十一章 嵌入式Linux LED驱动开发实验-摘自【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7