首页 理论教育 使用GUI访问内核数据,详尽指南

使用GUI访问内核数据,详尽指南

时间:2023-10-17 理论教育 版权反馈
【摘要】:可以使用abaqusGui模块或者kernelAccess模块,从Abaqus/CAE中的GUI来获取内核mdb及会话对象。每一个模块在GUI中对于编程具有优势和劣势。abaqusGui代理对象经常地从内核得到更新,并且通过一个过程中的函数调用来获取它们(快)。然而,在某些情况下,代理对象可能过期。可以使用kernelAccess模块mdb和对话代理对象来执行任何Abaqus脚本界面内核命令。例如,调用Part对象的getVolume方法:from kernelAccess import mdb,sessionpartNames=mdb.models['Model-1'].parts.keys()v=mdb.models['Model-1'].parts['Part-1'].getVolume()由于该进程涉及通过IPC机制进行GUI-内核通信,因此在顾虑性能的地方不推荐使用。

使用GUI访问内核数据,详尽指南

可以使用abaqusGui模块或者kernelAccess模块,从Abaqus/CAE中的GUI来获取内核mdb及会话对象。每一个模块在GUI中对于编程具有优势和劣势。从每一个模块中获取对象:

from abaqusGui import mdb,session

或者

from kernelAccess import mdb,session

输入的对象是内核中实际对象的代理。

可以查询abaqusGui模块mdb和会话代理对象的对象属性,但是它们不能被任意的方法调用(如keys()、values()和items()那样的库方法)所使用。abaqusGui代理对象经常地从内核得到更新,并且通过一个过程中的函数调用来获取它们(快)。然而,在某些情况下,代理对象可能过期。例如,当一个脚本在运行时,直到它停止时,代理对象才得到更新。

可以使用kernelAccess模块mdb和对话代理对象来执行任何Abaqus脚本界面内核命令。除了查询内核对象的属性外,还可以调用它们的方法并且得到任何返回值,好像在内核中执行代码一样。kernelAccess代理对象总是更新的,因为获取它们同步调用了内核对象,同时创建进程中通信(IPC)流量。当使用kernelAccess代理对象替代abaqusGui模块代理对象时,这种与内核即时的互动造成了一个性能劣势。例如,调用Part对象的getVolume方法:(www.xing528.com)

from kernelAccess import mdb,session

partNames=mdb.models['Model-1'].parts.keys()

v=mdb.models['Model-1'].parts['Part-1'].getVolume()

由于该进程涉及通过IPC机制进行GUI-内核通信,因此在顾虑性能的地方不推荐使用。换句话说,应当仅使用此进程来获取数据,或者调用不花费“长时间”来执行的方法。如果性能不是问题,则可以从abaqusGui模块获取mdb和对话对象,代替kernelAccess模块。

虽然可以在一个脚本中导入kernelAccess模块,该脚本在应用启动脚本完成之前已经运行,但是在应用启动脚本完成前,用户不能查询mdb和对话对象。换言之,用户可以在GUI初始构造过程中的执行代码里,将kernelAccess模块导入到脚本中;然而,不应当试图获取mdb或者会话对象,因为GUI中的某些用户交互需要它。更多的信息见11.2节。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈