1

我尝试使用脚本通过电线连接点。出现有关 NameError 的警告。

我尝试在abaqus中运行的代码:

a = mdb.models['Model-1'].rootAssembly
v11 = a.instances['r-mesh-2'].vertices
v12 = a.instances['s-mesh-1'].vertices
v13 = a.instances['r-mesh-1'].vertices
v14 = a.instances['s-mesh-1-lin-2-1'].vertices
a.WirePolyLine(points=((v11.findAt(coordinates=(2.595, 0.22, -35.7)), 
    v12.findAt(coordinates=(2.595, 0.2, -35.7))), (v11.findAt(coordinates=(
    2.445, 0.22, -35.7)), v12.findAt(coordinates=(2.445, 0.2, -35.7))), (
    v13.findAt(coordinates=(1.095, 0.22, -35.7)), v12.findAt(coordinates=(
    1.095, 0.2, -35.7))), (v13.findAt(coordinates=(0.945, 0.22, -35.7)), 
    v12.findAt(coordinates=(0.945, 0.2, -35.7))), (v11.findAt(coordinates=(
    2.595, 0.22, -35.1)), v14.findAt(coordinates=(2.595, 0.2, -35.1)))), 
    mergeType=IMPRINT, meshable=OFF)
a = mdb.models['Model-1'].rootAssembly
e1 = a.edges
edges1 = e1.findAt(((2.595, 0.215, -35.1), ), ((0.945, 0.215, -35.7), ), ((
    1.095, 0.215, -35.7), ), ((2.445, 0.215, -35.7), ), ((2.595, 0.215, -35.7), 
    ))
a.Set(edges=edges1, name='Wire-1-Set-1')

这是错误: NameError: name 'IMPRINT' is not defined

另一次我故意将那部分代码更改为'mergeType ='IMPRINT',然后错误变为:TypeError:mergeType; 找到字符串,期待 IMPRINT、MERGE 或 SEPARATE

如何解决问题?

谢谢

4

1 回答 1

2

给您错误的模块期望来自另一个模块的某个常数。使用必要的常量导入模块:

from abaqusConstants import *

然后mergeType=IMPRINT, ...像你已经在做的那样使用。或者您可以避免污染您的命名空间并为其取别名:

import abaqusConstants as ac

然后使用mergeType=ac.IMPRINT, ....

于 2016-11-10T13:09:25.510 回答