Скрипт Abaqus для измерения площади поверхности/объема

Ответ на следующий вопрос уже был опубликован следующим образом: Заданный ранее вопрос: Скрипт Abaqus измеряет/вычисляет площадь поверхности Ответ на него выглядит следующим образом:Ответ предоставлен, однако при его реализации я получаю следующую ошибку:

******AttributeError: 'Part' object has no attribute 'getVolume****'"**

Теперь, просматривая руководство пользователя Abaqus Scripting, я увидел, что getVolume() и getArea() являются атрибутами объекта Part. Все равно ошибка. Есть идеи, где я ошибаюсь?

Редактировать: предоставленные атрибуты существуют только для MdB, а не для odb, отсюда и проблема. Кроме того, мне не удалось получить экземпляры в MdB, потому что я использовал файл выходной базы данных (из файла .inp, а не .cae), и это не включены экземпляры в MdB. Я надеюсь, что это поможет. Если вы используете файл .cae, вы получите экземпляры, имеющие некоторое значение, а не пустые, и тогда легко вычислить объем и площадь.


person mash    schedule 30.08.2017    source источник
comment
может проблема с версией? фактическая ссылка на предыдущий вопрос была бы хорошей.   -  person agentp    schedule 30.08.2017
comment
stackoverflow.com/q/36423255/1004168   -  person agentp    schedule 30.08.2017
comment
@agentp Я думаю, что это не проблема версии, так как я пытался выполнить тот же набор команд в предыдущей версии с теми же входными данными, и я получил тот же результат.. :( .Я думаю, что что-то не так в том, что я делаю .И все же спасибо за ссылку..;)   -  person mash    schedule 31.08.2017
comment
какой фактический код вы использовали для получения этой ошибки? Тот факт, что он ищет атрибут getVolume вместо метода getVolume(), наводит меня на мысль, что вы, возможно, опустили скобки?   -  person Daniel F    schedule 31.08.2017
comment
@DanielF: Нет, я включил их. Я мог бы ошибаться здесь, но я думаю, что объект «часть» отличается в разных случаях, и поэтому является атрибутом ist. Некоторые чтения о доступности объекта заставляют меня поверить в это. Я могу ошибаться насчет Это ссылка на него:abaqus.software.polimi.it/v6.13/books/cmd/   -  person mash    schedule 31.08.2017
comment
Ну, мы не можем сказать, в чем проблема, без какого-либо кода. Пожалуйста, попробуйте дать минимальный воспроизводимый пример, чтобы мы могли воспроизвести ошибку.   -  person Daniel F    schedule 31.08.2017
comment
››› из abaqus import * ››› из abaqusConstants import * ››› import main ››› import visualization ››› myViewport = session.Viewport(name='Beam') ››› odbPath = 'X:\work\mulyea\New\Job-1.odb' ››› myOdb = session.openOdb(name=odbPath, readOnly=False) ››› myViewport.setValues(displayedObject=myOdb) ››› myOdb. части session.openOdb(r'X:/work/mulyea/New/Job-1.odb').parts ››› myOdb.parts.getVolume() AttributeError: объект «Репозиторий» не имеет атрибута «getVolume»   -  person mash    schedule 31.08.2017
comment
Извините, я не могу прикрепить снимок, так как у меня нет необходимых представителей, чтобы добавить еще один снимок. :(   -  person mash    schedule 31.08.2017
comment
отредактируйте код в вопросе. слишком сложно читать код в комментариях.   -  person agentp    schedule 31.08.2017
comment
насколько я могу судить, щурясь, вы ссылаетесь на весь список частей, а не только на одну.   -  person agentp    schedule 01.09.2017
comment
Теперь, когда показан фактический код и правильная ошибка (пожалуйста, укажите это в вопросе!), Я согласен с @agentp. Репозиторий Abaqus похож на словарь Python. Метод getVolume применяется к объекту Part, содержащемуся в репозитории. Используйте цикл и суммируйте выходные данные каждой Части, если вы действительно этого хотите.   -  person Matt P    schedule 01.09.2017


Ответы (1)


Для измерения объема вы можете использовать такую ​​команду (проверено на Abaqus 6.14-5).

volume_element=session.xyDataListFromField(odb=odb, outputPosition=WHOLE_ELEMENT, variable=(('EVOL', WHOLE_ELEMENT), ), elementSets=('PART-1.SET-1'))

Затем вы можете получить доступ к своему значению объема, используя:

volume_element[i].data[1][1]

Надеюсь, это поможет вам!

person Antoine Chalon    schedule 17.10.2017