2017-08-25 46 views
1

我有过一个脚本接口执行的Abaqus CAE行动很多ABAQUS插件。对于执行后的许多操作,Abaqus执行一些需要一些时间的显示刷新过程。如果模型很小并且脚本没有做太多,那就没问题。但是,例如我的脚本中的一个脚本获取了一部分,并将其复制到用户CSV文件指定的坐标处的程序集中。有时候可能会有2000次这样的复制。在这种情况下,完成程序需要很长时间,大部分时间您只能看到“设置显示...”如何抑制“设置显示...”中的Abaqus脚本

此外,“设置显示...”会覆盖脚本的进度(里程碑),所以很难看剧本到底有多远。

有什么办法,直到脚本完成暂停该显示更新的行为呢?也许有一种方法可以重新定义abaqus更新函数,直到脚本完成或者因为根据手册,唯一可以做的就是防止更新颜色方案,但这根本没有任何帮助。

任何提示将不胜感激,谢谢!

编辑:为了澄清我用如下因素视口对象的方法没有白费:

disableRefresh() 
disableColorCodeUpdates() 

什么的disableColorCodeUpdates()做是很清楚,当颜色编码模型中的视口使用的好处是显而易见的。但是,我看到使用和不使用disableRefresh()没有区别。

编辑:对不起,这样漫长的等待,只是现在我有机会在ABAQUS回去。下面是一个简单的例子脚本,需要一个部分,并将其放置在装配:

import random 
modelName='Model-1' 
partName='Part-1' 
noInst=1000 

i = 0 
lists = [] 
for i in range(noInst): 
    lists.append([random.random()*10,random.random()*10,random.random()*10]) 

totalParts = len(lists) 
session.Viewport(name='Viewport: 2', origin=(6.63750028610229, 
     20.7638893127441), width=335.746887207031, height=149.77685546875) 
session.viewports['Viewport: 2'].makeCurrent() 
session.viewports['Viewport: 2'].maximize() 
session.viewports['Viewport: 1'].restore() 

for n,l in enumerate(lists): 
    milestone('Replicating parts', 'parts', n+1, totalParts) 
    a = mdb.models[modelName].rootAssembly 
    p = mdb.models[modelName].parts[partName] 
    a.Instance(name='Random_'+'-'+str(n), part=p, dependent=ON) 
    a = mdb.models[modelName].rootAssembly 
    a.translate(instanceList=('Random_'+'-'+str(n),), vector=(float(l[0]), float(l[1]), float(l[2]))) 

如果我尝试不指定显示对象创建视口对象。视口默认为初始视口中当前显示的对象。我注意到,如果我将模块从amssembly更改为任何其他例如部分,我获得了速度的提高,但它依赖于该部分足够空。如果我的模型部件大而复杂,在“设置显示器”时仍然很慢,我的里程碑在任何情况下都会被“设置显示器”覆盖。

+0

你能展示一个简单的示例脚本吗?我做了很多操作系统的abaqus脚本,并且从未见过“设置显示” – agentp

+0

如果您创建并切换到新的视口而未指定显示的对象,会发生什么情况? –

+0

什么是“里程碑”? – agentp

回答

2

我想我已经在类似的情况,我在那里创建元素一个接一个在GUI CAE会议上见过这个。我无法弄清楚如何禁用屏幕刷新,而且速度非常慢。有两种解决方法:

使用替代命令,如果存在的话,这一次创造了许多项目。在上面的示例中,我不是一次使用Element方法创建每个新元素,而是一次生成整个零件和网格,并且显着更快地生成makePartFromNodesAndElements。就你而言,有可能做类似的事情。

2.如果您不需要活动GUI,请从系统shell运行脚本:abaqus cae noGui=script.py。您甚至可以从命令行界面将参数传递给脚本。

我只是想到了另外一个(未经测试)的可能性是,你可以创建并切换到新视而不指定显示的对象。然后尝试一下你的代码,看看它是否能加快速度。

+0

中找到它。1.找不到该函数的任何替代命令; 2.这不是一个选项,因为代码是插件的一部分,有助于装配建模; 3.我尝试了它,并且创建的新视口默认为当前对象。但是,我注意到如果切换到零件模块,我可以提高速度。 – UN4