Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SIMULIA/ABAQUS
  Knotenkoordinaten ausgeben lassen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Knotenkoordinaten ausgeben lassen (5551 mal gelesen)
exzessiv
Mitglied
Student


Sehen Sie sich das Profil von exzessiv an!   Senden Sie eine Private Message an exzessiv  Schreiben Sie einen Gästebucheintrag für exzessiv

Beiträge: 23
Registriert: 04.07.2012

erstellt am: 09. Jul. 2012 15:30    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hey,

ich stehe im Moment wohl ein bisschen auf dem Schlauch. Ich will mir die Koordinaten zu den Knoten ausgeben lassen. Das Bauteil sollte sich im unverformten Zustand befinden. Da ich immer noch Schwierigkeiten mit dem Python-Programmieren habe, kann es auch sein, dass mein Ansatz schon falsch ist Im Abaqus Scripting Manual hab ich jetzt auch nicht den Nötigen Hinweis finden können. Wenn ich das Programm in Abaqus laufen lasse, passiert einfach nichts. Es kommt keine Fehlermeldung, daher weiß ich nicht wo ich ansetzten soll.

Hier mein Code:


# Do not delete the following import lines

from abaqus import *
from abaqusConstants import *
import part

Teil = mdb.models['Model-1'].parts['balken_test_parameterexport']
Knotenliste = Teil.nodes
for i in Knotenliste:
print 'Node = %d x = %6.4f, y = %6.4f, z = %6.4f\n'  % (i.label, i.coordinates[0], i.coordinates[1], i.coordinates[2])

Kann mir da jemand weiterhelfen?
Grüße, Elias


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

slein89
Mitglied



Sehen Sie sich das Profil von slein89 an!   Senden Sie eine Private Message an slein89  Schreiben Sie einen Gästebucheintrag für slein89

Beiträge: 139
Registriert: 30.04.2012

erstellt am: 10. Jul. 2012 09:23    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für exzessiv 10 Unities + Antwort hilfreich

Willst du die Knoten wirklich aus der Model Datei (MDB) auslesen oder aus einer ODB? Bei ersterem kannst du dir die Knoten auch einfach aus dem INPUT File nehmen. Dein Code funktioniert bei mir auf jeden Fall. Ich erhalte die Koordinaten der Knoten. Hast du dein Part vielleicht noch nicht vernetzt? Hast du den Code eingefügt so wie er hier in deinem Post steht? Dann müsstest du noch einen Tabulator/ eine Einrückung bei der letzten Zeile einfügen.

Grüße

Slein

P.S.: Es wäre schön, wenn du immer eine Rückmeldung gibst, ob das Problem gelöst werden konnte oder nicht (siehe dein letzter Beitrag)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

exzessiv
Mitglied
Student


Sehen Sie sich das Profil von exzessiv an!   Senden Sie eine Private Message an exzessiv  Schreiben Sie einen Gästebucheintrag für exzessiv

Beiträge: 23
Registriert: 04.07.2012

erstellt am: 10. Jul. 2012 20:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

In meinem Code ist die Zeile schon eingerückt. Es passiert immernoch nichts... Vernetzt ist alles, ich habe auch schon eine Berechnung durchgeführt. Wie kann man sich die Koordinaten aus der odb holen? Im Scripting Manual steht irgendwas, ich steig aber noch nicht durch.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

slein89
Mitglied



Sehen Sie sich das Profil von slein89 an!   Senden Sie eine Private Message an slein89  Schreiben Sie einen Gästebucheintrag für slein89

Beiträge: 139
Registriert: 30.04.2012

erstellt am: 11. Jul. 2012 09:26    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für exzessiv 10 Unities + Antwort hilfreich


test.txt

 
Hier mal ein Skript, welches dir aus der ODB folgendes ausliest:

Knotenkoordinaten im undefinierten Zustand
Elemente mit zugehörigen Knoten
Knotenkoordinaten im deformierten Zustand <-- dazu musst du bei deiner Rechnung den FieldOutput "COORD" eingestellt haben
Verschiebungen
Spannungen

Ich hoffe das hilft.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

exzessiv
Mitglied
Student


Sehen Sie sich das Profil von exzessiv an!   Senden Sie eine Private Message an exzessiv  Schreiben Sie einen Gästebucheintrag für exzessiv

Beiträge: 23
Registriert: 04.07.2012

erstellt am: 11. Jul. 2012 10:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ich habe versucht das Skript so zu ändern, dass ich erstmal nur die Koordinaten bekomme:

from odbAccess import *
from abaqusConstants import *
import part

odbPath = 'Verschiebung_Test.odb'
Part = 'Part-1-1'
Step = 'Step-1'

odb = openOdb(path=odbPath)
assembly = odb.rootAssembly


OUT=open('Koordinaten.txt','w')

for n in assembly.instances[Part].nodes:
OUT.write(str(n.label) + '\t' + str(n.coordinates[0]) +'\t' 
+ str(n.coordinates[1]) + \ '\t' + str(n.coordinates[2]) + '\n')

OUT.close()

In der for-Schleife ist die Zeile im Skript auch eingerückt. Es kommt allerdings folgende Fehlermeldung:

line 21, in <module> for n in assemly.instances[Part].nodes:
KeyError: Part-1-1


Auserdem habe ich es vorhin auch selbst versucht:

from odbAccess import *
from abaqusConstants import *
from math import *

import part
import odbAccess

odbPath = 'Verschiebung_Test.odb'

odb = openOdb(path=odbPath)

a = odb.rootAssembly

Knotenliste = a.nodes

for i in Knotenliste:
print 'Node = %d x = %6.4f, y = %6.4f, z = %6.4f\n' % (i.label, i.coordinates[0], i.coordinates[1], i.coordinates[2])

Wenn ich dieses Skript ausführe passiert überhaupt nichts.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

slein89
Mitglied



Sehen Sie sich das Profil von slein89 an!   Senden Sie eine Private Message an slein89  Schreiben Sie einen Gästebucheintrag für slein89

Beiträge: 139
Registriert: 30.04.2012

erstellt am: 11. Jul. 2012 10:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für exzessiv 10 Unities + Antwort hilfreich

Bei dem ersten Skript:

"Part-1-1" ist offensichtlich falsch. Groß und Kleinschreibung sind wichtig. Also entweder heißt der Part "PART-1-1" oder noch anders. Öffne am besten die ODB im Viewer und klappe den Reiter "Instances" auf. Dort sollte der Part drinne stehen.

Warum bei deinem zweiten Skript nichts passiert, sehe ich so auch nicht. Lade am besten mal die ODB hoch (musst du vorher als ZIP packen).

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

exzessiv
Mitglied
Student


Sehen Sie sich das Profil von exzessiv an!   Senden Sie eine Private Message an exzessiv  Schreiben Sie einen Gästebucheintrag für exzessiv

Beiträge: 23
Registriert: 04.07.2012

erstellt am: 11. Jul. 2012 10:38    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Verschiebung_Test.zip

 
Da habe ich schon nachgeschaut und dort steht Part-1-1. Ich habe mal die ODB angehängt.

[Diese Nachricht wurde von exzessiv am 11. Jul. 2012 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

slein89
Mitglied



Sehen Sie sich das Profil von slein89 an!   Senden Sie eine Private Message an slein89  Schreiben Sie einen Gästebucheintrag für slein89

Beiträge: 139
Registriert: 30.04.2012

erstellt am: 11. Jul. 2012 10:45    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für exzessiv 10 Unities + Antwort hilfreich

Die ODB kann ich leider nicht öffnen, weil sie mit einer neueren ABAQUS Version erstellt wurde. Ich benutze v6.10. Dann schicke mir bitte, das INPUT File, mit dem du die ODB erzeugt hast.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

exzessiv
Mitglied
Student


Sehen Sie sich das Profil von exzessiv an!   Senden Sie eine Private Message an exzessiv  Schreiben Sie einen Gästebucheintrag für exzessiv

Beiträge: 23
Registriert: 04.07.2012

erstellt am: 11. Jul. 2012 10:51    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Verschiebung_Test.zip

 
Ich hoffe das ist die Richtige

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

exzessiv
Mitglied
Student


Sehen Sie sich das Profil von exzessiv an!   Senden Sie eine Private Message an exzessiv  Schreiben Sie einen Gästebucheintrag für exzessiv

Beiträge: 23
Registriert: 04.07.2012

erstellt am: 11. Jul. 2012 12:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ich habe noch ein kleines Problem, wie kann ich ein Dictionary erstellen, in dem jedem Knoten die Magnitude zugewiesen wird? Ich habe es mal versucht, allerdings haut das nicht wirklich hin:

from odbAccess import *
from abaqusConstants import *
from math import sqrt

import part


odbPath = 'Job-1.odb'

odb = openOdb(path=odbPath)

lastFrame = odb.steps['Step-1'].frames[-1]

displacement=lastFrame.fieldOutputs['U']

fieldValues=displacement.values

Verschiebung = {}   #Hier meine ich ein Dictionary erstellt zu haben

for v in fieldValues:
magnitude = sqrt(v.data[0]**2 + v.data[1]**2 + v.data[2]**2)
Verschiebung['v.nodeLabel'] = magnitude     # Hier wollte ich das Dictionary in der for-Schleife   
                                                        mit Einträgen füllen

a = len(Verschiebung)

print a

Als Ergebnis bekomme ich 1, allerdings habe ich knapp 500 Knoten...

Auserdem kommt im Ausgabefenster:

Warning: The database has been opened with readOnly flag on. It will remain readOnly.

Aber ich will ja eigentlich auch nur lesen und nix in die odb schreiben.

[Diese Nachricht wurde von exzessiv am 11. Jul. 2012 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

slein89
Mitglied



Sehen Sie sich das Profil von slein89 an!   Senden Sie eine Private Message an slein89  Schreiben Sie einen Gästebucheintrag für slein89

Beiträge: 139
Registriert: 30.04.2012

erstellt am: 11. Jul. 2012 14:07    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für exzessiv 10 Unities + Antwort hilfreich

Zu deinem letzten Beitrag:

Die Meldung mit Read-Only erhältest du, wenn du das Skript aufrufst und die ODB bereits geöffnet war (z.B. im Viewer). Mann könnte noch eine Option angeben, dass das Skript auch schreiben darf, aber das willst du ja nicht.

Schreibe mal "Verschiebung[v.nodeLabel]" statt Verschiebung['v.nodeLabel']". Bei deiner Variante besitzt das Dictionary nur einen einzigen key und der heißt "v.nodeLabel". Lässt du die Apostrophe weg, werden die Knotennummern als keys benutzt und es sollte 500 keys geben.

Dein INPUT File schau ich mir gleich mal an.

EDIT: Also wenn ich dein INPUTFILE ausführe und danach mein Skript auf die ODB loslasse, erhalte ich alle Werte (Knoten, Elemente,Spannung, Verschiebung). Du musst bei der Zeile mit part auch wirklich "PART-1-1" schreiben und nicht "Part-1-1". Groß- und Kleinschreibung sind wichtig!!!

[Diese Nachricht wurde von slein89 am 11. Jul. 2012 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

exzessiv
Mitglied
Student


Sehen Sie sich das Profil von exzessiv an!   Senden Sie eine Private Message an exzessiv  Schreiben Sie einen Gästebucheintrag für exzessiv

Beiträge: 23
Registriert: 04.07.2012

erstellt am: 11. Jul. 2012 14:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ich bekomme jetzt auch die Koordinaten, und das mit dem Dictionary hat auch funktioniert, vielen Dank.

Wenn ich bei mir den Reiter Instances öffne steht da Part-1-1 ist das im Code dann immer PART-1-1 oder muss man das einfach ausprobieren wenns nicht geht?

Kann man aus einem Dictionary auch die größten 5 oder 20 Elemente auslesen? Im Internet finde ich nur den Befehl, der das größte Element ausgiebt.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

slein89
Mitglied



Sehen Sie sich das Profil von slein89 an!   Senden Sie eine Private Message an slein89  Schreiben Sie einen Gästebucheintrag für slein89

Beiträge: 139
Registriert: 30.04.2012

erstellt am: 11. Jul. 2012 15:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für exzessiv 10 Unities + Antwort hilfreich

Für so was würde ich mir selber einen Sortieralgorithmus schreiben. Vorgefertigte Lösungen kenne ich keine, bin aber auch kein Python Experte.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

exzessiv
Mitglied
Student


Sehen Sie sich das Profil von exzessiv an!   Senden Sie eine Private Message an exzessiv  Schreiben Sie einen Gästebucheintrag für exzessiv

Beiträge: 23
Registriert: 04.07.2012

erstellt am: 11. Jul. 2012 15:34    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ich wäre gern kein so ein Experte wie du

Ich habe mir etwas gebastelt/ gefunden:

Verschiebung = { }

for v in fieldValues:
magnitude = sqrt(v.data[0]**2 + v.data[1]**2 + v.data[2]**2)
Verschiebung[v.nodeLabel] = magnitude

a = int(len(Verschiebung)*0.05)

b = Verschiebung.keys()

b.sort(key=Verschiebung.__getitem__)

Knoten_mit_groester_Verschiebung = b[-a:]

print Knoten_mit_groester_Verschiebung

Aus dem Dictionary bekomme ich zum Schluss die 5% der Knoten mit der Größten Verschiebung. Ich habe das Dictionary umgedreht (Knoten:Verschiebung ---> Verschiebung: Knoten)und sortiert. Dann musste ich mir nurnoch die letzten 5 % ausgeben lassen.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz