我正在Abaqus中创建一条线多边形线,但无法向我的线添加点。
# Define the modelname
modelname = "SpineModel"
# Define list with with partnames
PartNames = ["C7", "L1", "L2", "L3", "L4", "L5", "S1", "T1", "T2", "T3", "T4", "T5", "T6", "T7", "T8", "T9", "T10",
"T11", "T12"]
for i in range(19):
# Define CoG [x,y,z] coordinates of each vertebrae
CoG_OldX = mdb.models[modelname].parts[PartNames[i]].features['CoG'].xValue
CoG_OldY = mdb.models[modelname].parts[PartNames[i]].features['CoG'].yValue
CoG_OldZ = mdb.models[modelname].parts[PartNames[i]].features['CoG'].zValue
CoG_OldXYZ = [CoG_OldX, CoG_OldY, CoG_OldZ]
# Print CoG to check the values
print(CoG_OldXYZ)
Spline_OLD = mdb.models[modelname].parts[PartNames[i]].WirePolyLine(mergeType=IMPRINT, meshable=False,
points=CoG_OldXYZ)
运行此代码后,收到一个错误;类型错误:点[0];找到浮点数,应为元组
但是,当我打印CoG_OldXYZ时,它确实打印了所需的坐标(x,y,z坐标的19倍)。
当我将“Spline_OLD”替换为以下内容时,代码将按照我的要求运行:
Spline_OLD = mdb.models[modelname].parts[PartNames[i]].WirePolyLine(mergeType=IMPRINT, meshable=False,
points=(
[12.31, -127.52, -467.5],
[14.2, -120.15, -484.72],
[16.52, -112.85, -502.51],
[13.43, -107.49, -520.53],
[3.66, -103.59, -536.55],
[-11.15, -101.88, -551.4],
[-24.81, -100.96, -566.95],
[-34.72, -101.45, -585.07],
[-38.81, -103.47, -605.76],
[-37.71, -107.53, -627.81],
[-27.91, -112.2, -649.67],
[-14.15, -116.35, -670.89],
[2.91, -120.57, -691.64],
[19.53, -123.48, -716.06],
[28.89, -128.22, -745.13],
[31.48, -130.96, -777.89],
[26.69, -129.92, -810.52],
[16.55, -116.49, -838.38],
[11.82, -93.95, -853.25]))
为什么我不能使用“CoG_OldXYZ”作为WirePolyline的点?我当前做错了什么?
1条答案
按热度按时间5anewei61#
如果你观察并试图理解,错误本身就说明了你在做什么错事。
不管怎样,我从Abaqus脚本参考指南中找到了这个,
分
点对的元组,每个点对本身由一个元组表示。
这意味着您必须提供至少2个点来创建
WirePolyLine
。因此,当您一次传递多个点时,代码会正确运行。现在,在
for
循环中,您可以将点保存在一个列表中,在for
循环之后,您可以使用WirePolyLine
方法并将该列表作为参数传递。请参考以下示例: