当前位置: 首页 > news >正文

如何使用Python从SACS结构数据文件中提取节点数据信息并导出到EXCEL

在现代工程设计中,结构分析和数据处理是不可或缺的一部分。特别是在海洋工程、桥梁建设等领域,SACS文件被广泛应用。这种文件格式包含了结构模型的各种重要信息,包括节点(JOINT)、构件(ELEMENT)、荷载等数据。而节点数据(JOINT部分)通常是进行结构分析的基础,因此提取节点数据信息是分析过程中非常重要的一步。

在本文中,我们将通过一个简单的Python脚本,向大家展示如何从一个SACS结构数据文件中提取节点数据信息,并将其导出为Excel文件,方便后续分析和处理。

1. SACS文件简介

sacinp.文件专为SACS结构分析和设计而设计。它包含了结构模型的所有数据,通常被工程师用于模拟和计算。文件中的"JOINT"部分记录了每个节点的信息,节点包括了三维坐标、约束条件等关键信息。例如,一个节点可能表示某个支撑点的位置,或者是结构中某个组件的连接点。

节点数据通常以以下格式展示:

节点编号
节点名称
节点的三维坐标(X, Y, Z)
约束条件
其他相关属性

2. 任务目标

在这篇文章中,我们的目标是从一个SACS文件中提取"JOINT"部分的数据。这些数据包括每个节点的编号、名称、坐标以及约束等信息。提取后,我们将把这些信息导出为一个Excel文件,以便进一步分析。

3. Python代码解析

3.1 读取SACS文件

首先,我们使用Python的open()函数打开SACS文件,并使用readlines()方法读取文件中的每一行。这样可以将文件中的所有内容以行的形式存储在列表中。

with open(file_path, 'r') as file:lines = file.readlines()

3.2 提取JOINT部分的数据

在SACS文件中,JOINT部分包含了节点数据,而CENTER部分则标志着JOINT部分的结束。因此,我们遍历每一行,当遇到JOINT时开始记录数据,直到遇到CENTER为止。

joint_data = []
in_joint_section = Falsefor line in lines:line = line.strip()  # 去除行末换行符和多余空格# 开始记录JOINT部分的数据if line.startswith('JOINT'):in_joint_section = Truejoint_data.append(line)continue# 如果遇到CENTER,结束读取JOINT部分if line.startswith('CENTER'):breakif in_joint_section:joint_data.append(line)

3.3 处理数据格式

由于文件中的节点数据是以空格分隔的,我们需要通过空格拆分每一行的内容,并去除多余的空格。特别地,我们还要处理负号的情况,确保坐标值如-12.34能正确解析。

processed_data = []
for row in joint_data:row_values = [value for value in row.replace('-', ' -').split() if value]processed_data.append(row_values)

3.4 存储并导出数据

我们使用pandas库将处理后的数据存储在一个DataFrame中。pandas是一个非常强大的数据分析工具,可以帮助我们更高效地处理和展示数据。最后,通过to_excel()方法将数据导出为Excel文件。

joint_df = pd.DataFrame(processed_data, columns=['JOINT', 'Joint_name', 'X', 'Y', 'Z', '约束', "u"])
joint_df.to_excel(output_file, index=False)

3.5 成功提示

最后,脚本会输出一条消息,告诉用户数据已经成功导出。

print(f"JOINT 数据已成功导出到 '{output_file}'")

4. 结果与输出

运行这段代码后,你会得到一个名为joint_data_output.xlsx的Excel文件。这个文件包含了从SACS文件中提取的所有JOINT部分的数据,具体包括每个节点的编号、名称、三维坐标、约束条件等信息。数据会以表格的形式展示,便于进一步的分析和使用。

5. 总结

通过这段Python代码,我们可以轻松地从SACS文件中提取JOINT部分的数据,并将其导出为一个Excel文件。这对于工程师来说,无论是进行结构分析、数据可视化,还是进一步的计算模拟,都非常实用。通过Python与pandas库的结合,我们能够高效、准确地处理大量数据,从而大大提高工作效率,减少人为错误。

相关文章:

如何使用Python从SACS结构数据文件中提取节点数据信息并导出到EXCEL

在现代工程设计中,结构分析和数据处理是不可或缺的一部分。特别是在海洋工程、桥梁建设等领域,SACS文件被广泛应用。这种文件格式包含了结构模型的各种重要信息,包括节点(JOINT)、构件(ELEMENT)…...

Java网约车项目实战:实现抢单功能详解

在网约车项目中,抢单功能是非常关键的一部分,它决定了司机能否及时响应乘客的订单,提高整个平台的运营效率。本文将详细介绍如何使用Java来实现网约车项目的抢单功能,并提供一个完整的代码示例,以便读者能够直接运行和…...

SSRF服务端请求Gopher伪协议白盒测试

前言 是什么SSRF? 这个简单点说就是 服务端的请求伪造 就是这个如果是个 请求图片的网站 他的目的是请求外部其他网站的 图片 但是 SSRF指的是让他请求本地的图片 再展示出来 请求的是他的服务器上的图片 SSRF(Server-Side Request Forgery:服务器端请求伪造) …...

html+css+js网页设计 美食 家美食1个页面

htmlcssjs网页设计 美食 家美食1个页面 网页作品代码简单,可使用任意HTML辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作)。 获取源码 1&#xf…...

初学stm32---高级定时器输出n个pwm波

目录 高级定时器简介:(F1) 高级定时器框图 重复计数器特性 高级定时器输出指定个数PWM实验原理 高级定时器输出指定个数PWM实验配置步骤 相关HAL库函数介绍 关键结构体介绍 高级定时器简介:(F1) 1.高级定时器 :TIM1/TIM8 2.主要特性&…...

旅游管理系统|Java|SSM|VUE| 前后端分离

【技术栈】 1⃣️:架构: B/S、MVC 2⃣️:系统环境:Windowsh/Mac 3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7 4⃣️:技术栈:Java、Mysql、SSM、Mybatis-Plus、VUE、jquery,html 5⃣️数据库可…...

imgproxy图像处理的高效与安全

摘要 imgproxy作为一个高效且安全的独立服务器,为图像处理提供了全新的解决方案。它不仅简化了图像调整和转换的过程,还极大地提升了处理速度,确保了整个流程的安全性。通过集成imgproxy,用户可以轻松优化网页上的图像,提高加载速度,改善用户体验。本文将深入探讨imgpro…...

LLM并行计算的论文

LLM并行计算的论文 基础并行计算方法相关 《Gpipe: Efficient Training of Giant Neural Networks using Pipeline Parallelism》:提出了Gpipe这种流水线并行方法,通过将数据批量进一步等分成若干microbatch,并以流水线的方式执行,减少计算中空泡的比例,极大地拓展了模型…...

Linux 搭建 nginx+keepalived 高可用 | Nginx反向代理

注意:本文为 “Linux 搭建 nginxkeepalived (主备双主模式) 高可用 | Nginx反向代理” 相关文章合辑。 KeepalivedNginx实现高可用(HA) xyang0917 于 2016-09-17 00:24:15 发布 keepalived 的 HA 分为抢占模式和非抢占模式,抢占…...

Spring Boot 项目中 Maven 剔除无用 Jar 引用的最佳实践

目录 引言Maven 依赖管理的基础概念 2.1 什么是 Maven 依赖2.2 Maven 的依赖传递机制 无用依赖的常见问题与影响剔除无用 Jar 引用的常见方法 4.1 识别无用依赖4.2 使用 Maven 的 dependency:analyze 插件4.3 配置 scope 以优化依赖范围4.4 使用 exclude 排除传递依赖4.5 分析…...

useWhyDidYouUpdate详解

目录 API Params demo演示 源码 useWhyDidYouUpdate是ahooks库中的一个hook函数&#xff0c;用于帮助开发者排查是哪个属性改变导致了组件的 rerender。 API type IProps Record<string, any>;useWhyDidYouUpdate(componentName: string, props: IProps): void; …...

c++入门——c++输入cin和输出cout的简单使用

c输入cin、输出cout 1 cin2 cout3 cin和cout说明 c在c语言的输入、输出函数的基础上进行了封装。 1 cin c可以理解为控制台&#xff0c;in可以理解为输入。 参考代码&#xff1a; void f(){int a;float b;double c;char d;cin>>a>>b>>c>>d;//这里和…...

Spring Cloud LoadBalancer (负载均衡)

目录 什么是负载均衡 服务端负载均衡 客户端负载均衡 Spring Cloud LoadBalancer快速上手 启动多个product-service实例 测试负载均衡 负载均衡策略 自定义负载均衡策略 什么是负载均衡 负载均衡(Load Balance&#xff0c;简称 LB) , 是高并发, 高可用系统必不可少的关…...

微服务-1 认识微服务

目录​​​​​​​ 1 认识微服务 1.1 单体架构 1.2 微服务 1.3 SpringCloud 2 服务拆分原则 2.1 什么时候拆 2.2 怎么拆 2.3 服务调用 3. 服务注册与发现 3.1 注册中心原理 3.2 Nacos注册中心 3.3 服务注册 3.3.1 添加依赖 3.3.2 配置Nacos 3.3.3 启动服务实例 …...

基于51单片机的交通灯带拐弯proteus仿真

地址&#xff1a; https://pan.baidu.com/s/1cgqRHMHp9VJet4vs5LiG5A 提取码&#xff1a;1234 仿真图&#xff1a; 芯片/模块的特点&#xff1a; AT89C52/AT89C51简介&#xff1a; AT89C52/AT89C51是一款经典的8位单片机&#xff0c;是意法半导体&#xff08;STMicroelectro…...

1229java面经

1,Java中synchronized关键字是否是可重入的? 可重入的定义 可重入是指当一个线程已经获取了某个对象的锁&#xff0c;在该锁没有释放的情况下&#xff0c;如果这个线程再次请求获取这个对象的锁&#xff0c;是可以成功获取的&#xff0c;而不会出现自己把自己锁死的情况。简单…...

MySQL中查看表结构

1. 使用 DESCRIBE 或 DESC 命令 DESCRIBE&#xff08;或其简写 DESC&#xff09;是最简单和最直接的方法&#xff0c;可以显示表的列信息。 语法&#xff1a; DESCRIBE table_name; -- 或者 DESC table_name;示例&#xff1a; 假设有一个名为 employees 的表&#xff0c;可以…...

python利用selenium实现大麦网抢票

大麦网&#xff08;damai.cn&#xff09;是中国领先的现场娱乐票务平台&#xff0c;涵盖演唱会、音乐会、话剧、歌剧、体育赛事等多种门票销售。由于其平台上经常会有热门演出&#xff0c;抢票成为许多用户关注的焦点。然而&#xff0c;由于票务资源的有限性&#xff0c;以及大…...

FME教程:一键批量调换图斑X、Y坐标,解决因为坐标弄反了,导致GIS弹窗提示“范围不一致”警告问题

目录 一、实现效果 二、实现过程 1.读取数据 2.提取坐标 3.调换图斑的X、Y坐标 4.输出成果 5.模板的使用 三、总结 在工作中有时候会出现因为失误导致图斑的X、Y坐标弄反&#xff0c;在GIS中打开是会提示“范围不一致”警告的弹窗警告&#xff0c;如果重做工作量非常大…...

OpenCV-Python实战(4)——图像处理基础知识

一、坐标 在 OpenCV 中图像左上角坐标为&#xff08;0&#xff0c;0&#xff09;&#xff0c;竖直向下为 Y&#xff08;height&#xff09; &#xff1b;水平向右为 X&#xff08;width&#xff09;。 二、生成图像 2.1 灰度图像 img np.zeros((h,w), dtype np.uint8) i…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...

JavaScript基础-API 和 Web API

在学习JavaScript的过程中&#xff0c;理解API&#xff08;应用程序接口&#xff09;和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能&#xff0c;使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件&#xff0c;我的文件路径是/etc/mysql/my.cnf&#xff0c;有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...