如果不使用多个嵌套循环,我还找不到解决此问题的方法。问题是我正在使用 Rhinoceros 的几何方法对两个列表进行比较。基本上有一个行列表,一组起点和终点(嵌套列表)。所有的起点和终点都接触线。该脚本将最接近开头的行的索引与最接近结尾的行的索引进行比较,如果它们匹配,则返回True
.
这是我当前的代码:
for i in range (10):
for j in range (100):
for k in range (3):
for l in range (len(linesList)):
pullSt = rc.Geometry.Curve.ClosestPoint(linesList[l], stPoint[i][j][k], 0.0001)[0]
pullEnd = rc.Geometry.Curve.ClosestPoint(linesList[l], endPoint[i][j][k], 0.0001)[0]
if pullSt == True and pullEnd == True:
match[i][j][k] = True
我认为它可能适用于生成器表达式,但我被卡住了,因为看起来我实际上必须在相互比较之前临时存储 pullSt 和 pullEnd 值。我知道我可能会超载我的记忆,必须有更快的方法来做到这一点,但我只是不确定如何。
True
注意:如果直线和点之间的距离小于 0.0001 的容差,则返回 rc.Geometry.Curve.ClosestPoint ,这意味着该点在线上。