如何使用 Abaqus python API 创建 material 方向 - 基准问题
How to create a material orientation using Abaqus python API - datums issue
我正在开发一个软件包,它允许我以编程方式扫描圆柱形零件的不同几何形状,这既是因为我的 material 是各向异性的,也是因为它使我的几何形状的数据分析更容易,我需要为每个生成的零件定义一个圆柱坐标系 csys_cyl
,然后将其指定为 material 方向。虽然我可以在 GUI 中轻松执行此操作,但 API 给我一个具体问题: 在分配 material 方向时,我实际上无法使用我生成的 csys 作为 [= materialOrientation
函数的 15=] 参数。 相反,我必须使用下面的代码,我只需在 datums
中调用我从生成的 .jnl 文件中获得的条目使用 GUI 时。有没有更好的方法来传递不依赖于硬编码 ID 号的 localCsys
参数?
csys_cyl = part.DatumCsysByThreePoints(
coordSysType=CYLINDRICAL, name='csys_cyl', origin=(0.0, 0.0, 0.0), point1=(
0.0, -1.0, 0.0), point2=(1.0, 0.0, 0.0))
part.MaterialOrientation(
additionalRotationField='', additionalRotationType=ROTATION_NONE, angle=0.0,
axis=AXIS_3, fieldName='',
localCsys=part.datums[2], # what I'm forced to do
# localCsys=csys_cyl, # what I would really like to do
orientationType=SYSTEM,
region=Region(cells=part.cells), stackDirection=STACK_3)
将其作为 部分对象 下的 特征 对象进行访问应该可行。
csys_cyl = part.DatumCsysByThreePoints(..., name='csys_cyl', ...)
type(csys_cyl)
将 return <type 'Feature'>
但同样可以用
完成
tmpVar = part.features['csys_cyl']
type(tmpVar)
也会return<type 'Feature'>
。从文档中,在 DatumCsys 对象
"The DatumCsys object has no direct constructor; it is created when a Feature object is created. ... "
我发现最有效的解决方案是使用我生成的 csys 对象的 id
属性。查了变量,好像csys_cyl
,DatumCsysByThreePoints
返回的对象只是泛型特征,暗部的回答返回的对象也是。
>>> print(csys_cyl)
({'children': '', 'id': 2, 'isOutOfDate': False, 'name': 'csys_cyl', 'parents': '', 'path': 'unknown', 'sketch': 'unknown'})
相比之下,从datums
字典中返回的对象是特定的DatumCsys
类型。
>>> print(part.datums[csys_cyl.id])
({'axis1': 'DatumAxis object', 'axis2': 'DatumAxis object', 'axis3': 'DatumAxis object', 'coordSysType': CYLINDRICAL, 'origin': 'DatumPoint object', 'pointOn': (0.0, 0.0, 0.0)})
于是我找到了解决方案,使用csys_cyl
的id
属性从字典中获取DatumCsys
,如下所示:
def add_cyl_csys(part):
###################################
## ADD CSYS AND MATERIAL ORIENTATIONS
###################################
csys_cyl = part.DatumCsysByThreePoints(
coordSysType=CYLINDRICAL, name='csys_cyl', origin=(0.0, 0.0, 0.0), point1=(
0.0, -1.0, 0.0), point2=(1.0, 0.0, 0.0))
part.MaterialOrientation(
additionalRotationField='', additionalRotationType=ROTATION_NONE, angle=0.0,
axis=AXIS_3, fieldName='',
localCsys=part.datums[csys_cyl.id],
orientationType=SYSTEM,
region=Region(cells=part.cells), stackDirection=STACK_3)
我正在开发一个软件包,它允许我以编程方式扫描圆柱形零件的不同几何形状,这既是因为我的 material 是各向异性的,也是因为它使我的几何形状的数据分析更容易,我需要为每个生成的零件定义一个圆柱坐标系 csys_cyl
,然后将其指定为 material 方向。虽然我可以在 GUI 中轻松执行此操作,但 API 给我一个具体问题: 在分配 material 方向时,我实际上无法使用我生成的 csys 作为 [= materialOrientation
函数的 15=] 参数。 相反,我必须使用下面的代码,我只需在 datums
中调用我从生成的 .jnl 文件中获得的条目使用 GUI 时。有没有更好的方法来传递不依赖于硬编码 ID 号的 localCsys
参数?
csys_cyl = part.DatumCsysByThreePoints(
coordSysType=CYLINDRICAL, name='csys_cyl', origin=(0.0, 0.0, 0.0), point1=(
0.0, -1.0, 0.0), point2=(1.0, 0.0, 0.0))
part.MaterialOrientation(
additionalRotationField='', additionalRotationType=ROTATION_NONE, angle=0.0,
axis=AXIS_3, fieldName='',
localCsys=part.datums[2], # what I'm forced to do
# localCsys=csys_cyl, # what I would really like to do
orientationType=SYSTEM,
region=Region(cells=part.cells), stackDirection=STACK_3)
将其作为 部分对象 下的 特征 对象进行访问应该可行。
csys_cyl = part.DatumCsysByThreePoints(..., name='csys_cyl', ...)
type(csys_cyl)
将 return <type 'Feature'>
但同样可以用
tmpVar = part.features['csys_cyl']
type(tmpVar)
也会return<type 'Feature'>
。从文档中,在 DatumCsys 对象
"The DatumCsys object has no direct constructor; it is created when a Feature object is created. ... "
我发现最有效的解决方案是使用我生成的 csys 对象的 id
属性。查了变量,好像csys_cyl
,DatumCsysByThreePoints
返回的对象只是泛型特征,暗部的回答返回的对象也是。
>>> print(csys_cyl)
({'children': '', 'id': 2, 'isOutOfDate': False, 'name': 'csys_cyl', 'parents': '', 'path': 'unknown', 'sketch': 'unknown'})
相比之下,从datums
字典中返回的对象是特定的DatumCsys
类型。
>>> print(part.datums[csys_cyl.id])
({'axis1': 'DatumAxis object', 'axis2': 'DatumAxis object', 'axis3': 'DatumAxis object', 'coordSysType': CYLINDRICAL, 'origin': 'DatumPoint object', 'pointOn': (0.0, 0.0, 0.0)})
于是我找到了解决方案,使用csys_cyl
的id
属性从字典中获取DatumCsys
,如下所示:
def add_cyl_csys(part):
###################################
## ADD CSYS AND MATERIAL ORIENTATIONS
###################################
csys_cyl = part.DatumCsysByThreePoints(
coordSysType=CYLINDRICAL, name='csys_cyl', origin=(0.0, 0.0, 0.0), point1=(
0.0, -1.0, 0.0), point2=(1.0, 0.0, 0.0))
part.MaterialOrientation(
additionalRotationField='', additionalRotationType=ROTATION_NONE, angle=0.0,
axis=AXIS_3, fieldName='',
localCsys=part.datums[csys_cyl.id],
orientationType=SYSTEM,
region=Region(cells=part.cells), stackDirection=STACK_3)