Ошибка создания результатов writeFieldReport в Abaqus

Я новичок на форуме. Я не являюсь опытным программистом, но мне нужно писать сценарии на Python, чтобы запускать моделирование методом конечных элементов с помощью Abaqus без графического интерфейса. Симуляция работает нормально, но когда я пытаюсь создать текстовый файл, содержащий результаты, я получил следующее сообщение об ошибке

Файл "C: / ... my_scrypt.py, строка 208, в INTEGRATION_POINT),)) Нет активных объектов. Отчет не создан

Вот сценарий:

(197)    from odbAccess import *
(198)    from abaqusConstants import *
(199)    from odbMaterial import *
(200)    from odbSection import *
(201)    
(202)    o1 = session.openOdb(name='C:/Temp/Job-1.odb')
(203)    odb = session.odbs['C:/Temp/Job-1.odb'].steps['apply_load']
(204)    session.writeFieldReport(fileName='C:/Temp/abaqus.rpt', append=ON, 
(205)        sortItem='Element Label', odb=odb, step=0, frame=1, 
(206)        outputPosition=INTEGRATION_POINT, variable=(('PEMAG', 
(207)        INTEGRATION_POINT), ('PRESSONLY', INTEGRATION_POINT), ('S', 
(208)        INTEGRATION_POINT), ))

Спасибо за любую помощь


person drSlump    schedule 01.03.2016    source источник
comment
Сначала вы должны отобразить некоторые элементы в области просмотра.   -  person hgazibara    schedule 01.03.2016
comment
не могли бы вы привести мне пример?   -  person drSlump    schedule 01.03.2016
comment
Теперь Abaqus нужно каким-то образом выяснить, из каких элементов вы пытаетесь читать результаты. Если вы запускаете скрипт из Abaqus Viewer, сначала опубликуйте элементы, для которых нужно получить данные, в области просмотра. Если вы запускаете его из командной строки, определите группу отображения и установите соответствующий параметр для writeFieldReport.   -  person hgazibara    schedule 01.03.2016
comment
Помимо отсутствующей группы отображения, у вас есть символ odb, указывающий на шаг, что делает его объектом шага, а не объектом odb.   -  person agentp    schedule 02.03.2016
comment
Вы запускаете этот скрипт из Abaqus Viewer? Или вы надеетесь экспортировать данные без графического интерфейса?   -  person DougR    schedule 02.03.2016
comment
Я надеюсь экспортировать данные в текстовый файл из командного окна. Я запускаю скрипт с помощью этой команды os.system (start abaqus cae nogui = C: / Temp / test)   -  person drSlump    schedule 02.03.2016
comment
как сказал агент, исправьте строку 203. odb = session.odbs ['C: /Temp/Job-1.odb']. тогда сообщите нам, если у вас все еще есть проблема.   -  person will    schedule 03.03.2016
comment
odb = session.odbs ['C: /Temp/Job-1.odb'] исправлено, но по-прежнему не работает. но я добавил эти строки: session.viewports ['Viewport: 1']. setValues ​​(displayObject = o1) session.viewports ['Viewport: 1']. odbDisplay.setFrame (step = 0, frame = 1) перед строкой 203 и все работает нормально: /   -  person drSlump    schedule 07.03.2016
comment
не знаю почему работает. но большое спасибо за помощь   -  person drSlump    schedule 07.03.2016
comment
Вы должны опубликовать свой рабочий код в качестве ответа.   -  person agentp    schedule 07.03.2016


Ответы (2)


Большое спасибо за помощь, ребята. Вот рабочий код:

from odbAccess import *
from abaqusConstants import *
from odbMaterial import *
from odbSection import *

o1 = session.openOdb(name='C:/Temp/Job-1.odb')
session.viewports['Viewport: 1'].setValues(displayedObject=o1)
session.viewports['Viewport: 1'].odbDisplay.setFrame(step=0, frame=1)
odb = session.odbs['C:/Temp/Job-1.odb']
session.fieldReportOptions.setValues(columnLayout=SEPARATE_TABLES)
session.writeFieldReport(fileName='C:/Temp/abaqus.rpt', append=OFF, 
    sortItem='Element Label', odb=odb, step=0, frame=1, 
    outputPosition=INTEGRATION_POINT, variable=(('PEMAG', 
    INTEGRATION_POINT), ('PRESSONLY', INTEGRATION_POINT), ('S', 
    INTEGRATION_POINT), ))
person drSlump    schedule 08.03.2016

Когда я начал программировать на Python, это была одна из моих первых строк кода, которая отлично работала. Однако теперь, когда я расширяю свой код, я начал получать ту же ошибку, что и вы описали: «Нет активных сущностей. Отчет не был создан».

В вашем случае вы используете существующее окно просмотра, называемое «Viewport: 1», однако при создании нового окна просмотра вы должны сделать это окно просмотра текущим. Это следующий код, который я использую для создания myViewport:

myViewport = session.Viewport(name=ViewportName, origin=(0, -100),width=250, height=150)
myViewport.odbDisplay.commonOptions.setValues(visibleEdges=FREE,deformationScaling=UNIFORM,uniformScaleFactor=(1))

# Open the output database and associate it with the viewport.
# Then set the plot state to CONTOURS_ON_DEF

try: myOdb = visualization.openOdb(path=odbNames)
except (AbaqusException), value:  print ('Error:', value)

myViewport.setValues(displayedObject=myOdb)
myViewport.odbDisplay.display.setValues(plotState=(CONTOURS_ON_DEF,))

myViewport.viewportAnnotationOptions.setValues(triad=OFF,title=OFF,state=OFF,compass=OFF, legendDecimalPlaces=2,legendNumberFormat=FIXED)
myViewport.odbDisplay.basicOptions.setValues(coordSystemDisplay=OFF, renderBeamProfiles=ON)

myViewport.view.rotate(xAngle=90,yAngle=90,zAngle=0)
myViewport.view.rotate(xAngle=90,yAngle=90,zAngle=0)
myViewport.view.rotate(xAngle=0, yAngle=0, zAngle=180)
#        myViewport.view.rotate(mode=TOTAL)
myViewport.view.pan(xFraction=0.1) # yFraction for vertical panning
myViewport.view.setValues(projection=PARALLEL)
myViewport.makeCurrent() #This makes the viewport current
person Luc Kootte    schedule 22.01.2019