abaqus python提取楼层剪力_从变形的测试对象中提取节点坐标(abaqus-python)

我正在尝试创建一个python脚本来从ODB文件中提取节点坐标(来自abaqus)。

到目前为止,我已经提出了下面附带的代码(不介意我放在#后面的额外信息,有时它只是让我可以跟踪我正在做的事情)

问题是我提取的坐标是来自未变形的测试对象的坐标。我需要变形测试对象的节点坐标。

有人可以帮我了解如何使用python代码获取此信息吗?

from abaqus import *

from abaqusConstants import *

import __main__

import section

import regionToolset

import displayGroupMdbToolset as dgm

import part

import material

import assembly

import step

import interaction

import load

import mesh

import optimization

import job

import sketch

import visualization

import xyPlot

import displayGroupOdbToolset as dgo

import connectorBehavior

import shutil

import os

import sys

from odbAccess import openOdb

for ODBname in os.listdir("D:/r0333338/Documents/MP/nodal_files_genereren/OBD"): # this is where all your ODB files are located #t hier wordt ook de odb file gekozen die geopend zal worden

SUBname = ODBname[1:3] # My subject ID is saved in the ODB name - this helps me create the file #woerdt er hier de 3e tot6e letter van de ODBname gepakt ?

print 'Current File: '+ODBname #voor check welke file er gebruikt wordt #t (ZIT '.odb' hier bij in ?)

ODBnamefull = 'D:/r0333338/Documents/MP/nodal_files_genereren/OBD/'+ODBname # Full path to the ODB file, otherwise abaqus tries to find it in default work directory

odb = openOdb(path=ODBnamefull) #open the ODB file

assembly = odb.rootAssembly #t declareren van assembly?

session.viewports['Viewport: 1'].odbDisplay.setFrame(step=0, frame=1)

numNodes = 0 #t num nodes op nul zetten

f = open("D:/r0333338/Documents/MP/nodal_files_genereren/ODBoutput/nodal.txt", "w") #indien het bestand al bestaat moet er "a" staan ipv "w"

for name, instance in assembly.instances.items(): #t 'name' is naam van elke part van in de assembly ?

n = len(instance.nodes) #t tellen van hoeveelheid nodes

print 'Number of nodes of instance %s: %d' % (name, n) #moet niet in de file staan, kan eigenlijk weggelaten worden. (maar is een goede check?)

numNodes = numNodes + n #tellen van totaal aantal nodes (globaal over alle parts) maar is eigenlijk niet nodig?

f.write( "*Part, name=Part-1" + "\n")#moet erin staan volgens de MatchId regels

f.write( "*Nodes" + "\n") #moet erin staan volgens de MatchId regels

if instance.embeddedSpace == THREE_D: #indien het 3D is

print ' X Y Z' #moet niet in de file staan, maar is een goede check om te zien waar we zitten

for node in instance.nodes:

#print node #printen van node

f.write( str(node.label) + ";" ) #schrijven van nodenummer

f.write(str(node.coordinates[0]) + ";" + str(node.coordinates[1]) + ";" + str(node.coordinates[2]) + "\n") #schrijven van coordinaten [X;Y;Z] en enter

else: #indien het 2D is

print ' X Y' ';0' #moet niet in de file staan, maar is een goede check om te zien waar we zitten

for node in instance.nodes:

#print node #printen van node

f.write( str(node.label) + ";" )

f.write(str(node.coordinates[0]) + ";" + str(node.coordinates[1]) + ";" + str(node.coordinates[2]) + "\n") #schrijven van coordinaten [X;Y;Z] en enter

f.write( "*End Part" ) #moet erin staan volgens de MatchId regels

f.close()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值