Hallo Community,
ich bin sehr neu in der Pythonsphäre. Momentan arbeite ich daran eine Automatisierung für Abaqus in Python zu schreiben. Jedoch habe ich folgende Frage:
Ich habe ein Hauptprogramm und 5 Subprogramme.
Im Hauptprogramm habe ich alle Submodule importiert und es klappt. Sprich kann alle Funktionen und Variablen die ich im Submodul deklariert habe aufrufen und verwenden.
Jedoch habe ich den Fall, dass bei mir zwei Submodule abhängig von einander sind. Wie kann ich die Variablen von Submodul1 unter Submodul2 verwenden? Wenn ich Submodul1 importiere bekomme ich eine Fehlermeldung.
Beispiel:
Submodul 1:
def Mat(Mat1,em1,qkz1):
mdb.models['Model-1'].Material(name=Mat1)
mdb.models['Model-1'].materials[Mat1].Elastic(table=((em1,
qkz1), ))
Submodul 2:
def Sections(Sec1):
mdb.models['Model-1'].HomogeneousShellSection(idealization=NO_IDEALIZATION,
integrationRule=SIMPSON, material=Mat1, name=Sec1, numIntPts=5,
poissonDefinition=DEFAULT, preIntegrate=OFF, temperature=GRADIENT,
thickness=2, thicknessField='', thicknessModulus=None, thicknessType=
UNIFORM, useDensity=OFF)
Es handelt sich um die fettgedruckte Variable.
Vielen Dank im Voraus.
abhängige Submodule
-
BlackJack
@cc33: Variablen sollten in Modulen auf Modulebene überhaupt nicht existieren. Und ich habe so ein bisschen die Befürchtung beim Importieren verwendest Du den *, was man auch nicht machen sollte. In Modulen, auf Modulebene, sollte nur Code stehen der Konstanten, Funktionen, und Klassen definiert. Werte werden als Argumente übergeben und sollten nicht als Variablen auf Modulebene existieren.
@BlackJack: Verwende * nicht beim importieren von Modulen. Mein Ziel ist es eigentlich, dass ich den Übergabewert als Variable definiere und es dann im Hauptprogramm ändern kann. Srpich wenn ich statt 'Aluminium' -- 'Kohlenstofffaser' schreibe, möchte ich dass es überall geändert wird :/
@cc33: Variablen werden überall dort, wo sie gebraucht werden, als Argumente übergeben. Dann kannst Du einfach im Hauptprogramm Aluminium statt Kohlenstofffaser übergeben und überall wird mit dem geänderten Wert gerechnet.
-
BlackJack
@cc33: Im ersten Modul ist das ein Parameter von der Funktion, also sowieso ein lokaler Name der nur innerhalb der Funktion sichtbar ist. Im zweiten Beispiel ist nicht ersichtlich wo der Wert herkommen sollte, weil der Name einfach so aus dem nichts zu kommen scheint.
@Sirius3: Sprich ich müsste dann in jeder Definition die Argumente angeben.
Und im Hauptprogramm bei jeder Funktion die Argumente ändern.
Beispiel:
Submodul1:
def Mat(Mat1):
-------- =Mat1-----------------
Submodul2
def Section(Mat1, Sec1)
----------------=Sec1----[Mat1]--------
Hauptmodul
Submodul1.Mat(´Aluminium')
Submodul2.Section('Aluminium','AluSection')
Meinen Sie es so?
Und im Hauptprogramm bei jeder Funktion die Argumente ändern.
Beispiel:
Submodul1:
def Mat(Mat1):
-------- =Mat1-----------------
Submodul2
def Section(Mat1, Sec1)
----------------=Sec1----[Mat1]--------
Hauptmodul
Submodul1.Mat(´Aluminium')
Submodul2.Section('Aluminium','AluSection')
Meinen Sie es so?
