2017-07-21 1 views
1

Je suis nouveau en Python. J'essayais d'assigner des conditions aux limites de certains ensembles dans Abaqus en exécutant le script Python suivant. Malheureusement, je vais avoir l'erreur suivante:Affectation de BC dans Abaqus

TypeError: unsupported operand types(s) for +: 'Assembly' and 'int', line 26, in <module> region = a.sets['layer-1' + '-' + str(a+1)]

Tout le monde, s'il vous plaît aidez-moi à cet égard ....

# Do not delete the following import lines 
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 job 
import sketch 
import visualization 
import xyPlot 
import displayGroupOdbToolset as dgo 
import connectorBehavior 

a = 1 
for i in range(13): 
    session.viewports['Viewport: 1'].assemblyDisplay.setValues(step='Step-1') 
    a = mdb.models['NodeSet'].rootAssembly 
    region = a.sets['layer-1' + '-' + str(a+1)] 
    mdb.models['NodeSet'].TemperatureBC(name='BC' + '-' + str(a+1), createStepName='Step-1', 
     region=region, fixed=OFF, distributionType=UNIFORM, fieldName='', 
     magnitude=1.0, amplitude='Amp' + '-' + str(a+1)) 
    a= a + 1 
+0

Votre 'a' est un assemblage et il ne peut pas être ajouté à un int. – Bonifacio2

+0

comment pourrais-je raté cela: o:/ Vous avez absolument raison, merci pour votre réponse et suggestion. – Nishad

Répondre

0

Je ne peux pas exécuter votre code d'exemple parce que from abaqus import * soulève une Erreur.

Cependant, votre problème est que vous semblez vouloir utiliser a comme compteur d'itération. Mais dans votre boucle, vous écrivez a = mdb.models['NodeSet'].rootAssembly, qui affecte ensuite un objet d'assemblage à la variable a. Vous ne pouvez pas ajouter de nombre à un objet d'assemblage, vous obtenez donc l'erreur.

Donc, essayez de changer simplement le nom de la variable de l'objet assmebly à autre chose que a, comme Assm par exemple

a = 1 
for i in range(13): 
    session.viewports['Viewport: 1'].assemblyDisplay.setValues(step='Step-1') 
    Assm = mdb.models['NodeSet'].rootAssembly 
    region = Assm.sets['layer-1' + '-' + str(a+1)] 
    mdb.models['NodeSet'].TemperatureBC(name='BC' + '-' + str(a+1), createStepName='Step-1', 
     region=region, fixed=OFF, distributionType=UNIFORM, fieldName='', 
     magnitude=1.0, amplitude='Amp' + '-' + str(a+1)) 
    a = a + 1 

.

+0

comment pourrais-je raté cela: o:/ Vous avez absolument raison, merci pour votre réponse et suggestion. – Nishad

+0

@Nishad Vous pouvez également noter que vous êtes en train de boucler 'for i dans range (13)', donc 'i' va s'incrémenter de 0 à 12. C'est en effet déjà compter vos itérations. Vous pouvez donc supprimer toutes les références au compteur d'itération 'a', remplacer toutes les instructions' str (a + 1) 'par' str (i + 2) 'et obtenir le même résultat. – saintsfan342000