Autor
|
Thema: Python Skript für Abaqus (3554 mal gelesen)
|
sportgangg Mitglied
Beiträge: 4 Registriert: 17.08.2011
|
erstellt am: 17. Aug. 2011 15:36 <-- editieren / zitieren --> Unities abgeben:
Hallo allerseits, Ich habe folgendes Problem: Ich will ein Programm in Python schreiben welches vorhandene odb Dateien einliest und diese Dateien in der Reihenfolge des Einlesens wieder ausliest. Das Ziel ist es am Ende Art Daumenkino in abaqus zu haben , welches das eindringen eines Fräsers in ein Metallteil darstellt. Ich wollte das Programm folgendermaßen aufbauen: 1.) Eine while schleife öffnet die vorhandenen odbs 2.)Diese Dateien werden in einem Array gespeichert 3.) Das Array wird ausgelesen in gleicher Reihenfolge wie es eingelesen wurde Nun habe ich folgende Probleme weil ich das erste mal mit Python programmiere: 1.)Ich will die odbs öffnen aber sämtliche Befehle die ich in der abaqus Manual finde funktionieren nicht.Ich bräuchte jemanden der mir sagt wie ich die while schleife programmiere mit den eingelesenen odbs 2.) wie ich ein array erstelle weiß ich ,auch wie man elemente hinzufügt!Allerdings hab ich keinen Plan ,wie man die Dateien aus der Schleife in das array bekommt! Wäre echt klasse wenn man jemand mir hier helfen könnte Gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
dabauer82 Mitglied
Beiträge: 121 Registriert: 22.11.2007 Pro/E WiFi3 M050 Win 7 ABQ 6-14
|
erstellt am: 17. Aug. 2011 15:57 <-- editieren / zitieren --> Unities abgeben: Nur für sportgangg
Lass mal das auf dich wirken: Code:
# Do not delete the following import lines from abaqus import * from abaqusConstants import * from caeModules import * from math import * import __main__ from datetime import datetime, date, time def ODBPath(): import section import regionToolset import displayGroupMdbToolset as dgm import part import material import assembly import step import interaction import load import mesh import job import sketch import visualization import xyPlot import displayGroupOdbToolset as dgo import connectorBehavior import math myFolder = 'C:/Temp/' myFile = 'ZM_G15X5T2_1HG6_P250_D70_V70_M5k-1.odb' myOdbPath = myFolder+myFile myOdbFile = session.openOdb(name=myOdbPath, readOnly=True)
und damit kannst du dann loslegen und deine ODB auslesen.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mustaine Ehrenmitglied V.I.P. h.c.
Beiträge: 3554 Registriert: 04.08.2005 Abaqus
|
erstellt am: 18. Aug. 2011 09:56 <-- editieren / zitieren --> Unities abgeben: Nur für sportgangg
Zitat: Original erstellt von sportgangg: Nun habe ich folgende Probleme weil ich das erste mal mit Python programmiere: 1.)Ich will die odbs öffnen aber sämtliche Befehle die ich in der abaqus Manual finde funktionieren nicht.Ich bräuchte jemanden der mir sagt wie ich die while schleife programmiere mit den eingelesenen odbs 2.) wie ich ein array erstelle weiß ich ,auch wie man elemente hinzufügt!Allerdings hab ich keinen Plan ,wie man die Dateien aus der Schleife in das array bekommt!
1. Wozu die while-Schleife? Geh doch einfach mit einer for-Schleife duch alle Elemente der Liste.
Code: for x in liste: mach was mit x
2. Du willst etwas an die Liste anhängen? listenname.append(element)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
sportgangg Mitglied
Beiträge: 4 Registriert: 17.08.2011
|
erstellt am: 18. Aug. 2011 10:40 <-- editieren / zitieren --> Unities abgeben:
Hallo nochmal, Ersteinmal Vielen Dank für die Antworten! @Mustaine ich wollte eine while Schleife nehmen weil ich eine Variable Anzahl von odbs habe (s0 ca zw 120 u 150) Geht das auch mit der for schleife ? @erster Beitrag: Sehe ich das richtig das ich diese pfaddefinition für jedes odb machen müsste? Sorry für die nachfragen aber ich bin noch komplett neu in der Materie Merci Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
dabauer82 Mitglied
Beiträge: 121 Registriert: 22.11.2007 Pro/E WiFi3 M050 Win 7 ABQ 6-14
|
erstellt am: 18. Aug. 2011 10:46 <-- editieren / zitieren --> Unities abgeben: Nur für sportgangg
Ich bin mir nicht 100% sicher aber ich glaube das ABQ nur eine ODB-Session verwalten kann, daher müsstest du in der Tat dein Auslesen nacheinander durchführen und hierfür jede ODB nacheinander öffnen. Aber ggf. kann jmd anderes hierzu noch etwas sagen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mustaine Ehrenmitglied V.I.P. h.c.
Beiträge: 3554 Registriert: 04.08.2005 Abaqus
|
erstellt am: 18. Aug. 2011 11:37 <-- editieren / zitieren --> Unities abgeben: Nur für sportgangg
Eine for-Schleife geht durch alle Einträge einer Liste, egal wieviele es sind. Das aktuelle Arbeitsverzeichnis bekommt man mit os.getcwd(). Alle Datei in einem Pfad/Ordner dann mit os.listdir(pfad) Man kann beliebeig viele odbs öffnen, aber natürlich muss man angeben mit welcher man nun bestimmte Aktionen machen möchte. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
sportgangg Mitglied
Beiträge: 4 Registriert: 17.08.2011
|
erstellt am: 04. Okt. 2011 12:16 <-- editieren / zitieren --> Unities abgeben:
Hallo nochmal zusammen, Mir ist nun klar ,dass ich die odbs in ne liste machen will und diese liste dann mit einer for schleife auslesen will!Wie ich ne liste erstelle ist mir klar und auch wie ich Elemente dranhänge! Was mir immernoch schleierhaft ist wie ich meine odbs im Endeffekt bekomme Könnte mir jemand nen Code schreiben sagen wir meine odbs liegen im Ordner: C:/Ordner 1 Mein Files heißen :Odb1,odb2 ,odb3 Ich weiß das ich irgendwas mit os.getcwd machen muss aber so ganz is mir das noch net klar Merci Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mustaine Ehrenmitglied V.I.P. h.c.
Beiträge: 3554 Registriert: 04.08.2005 Abaqus
|
erstellt am: 04. Okt. 2011 13:06 <-- editieren / zitieren --> Unities abgeben: Nur für sportgangg
|
sportgangg Mitglied
Beiträge: 4 Registriert: 17.08.2011
|
erstellt am: 23. Jan. 2012 13:24 <-- editieren / zitieren --> Unities abgeben:
|
Mustaine Ehrenmitglied V.I.P. h.c.
Beiträge: 3554 Registriert: 04.08.2005 Abaqus
|
erstellt am: 24. Jan. 2012 10:24 <-- editieren / zitieren --> Unities abgeben: Nur für sportgangg
So wie man es auch manuell machen würde: Du verwendest die Python-Befehle um CAE zu starten, die odb zu öffnen und ein Plot zu generieren. welche Befehle das sind bekommst du ja über das Replay-File oder ein aufgezeichnetes Makro raus. [Diese Nachricht wurde von Mustaine am 24. Jan. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |