複数のネストされたループを使用せずにこの問題を解決する方法はまだ見つかりません。問題は、Rhinoceros の幾何学的手法を使用して 2 つのリストを比較していることです。基本的には、行のリスト、開始点と終了点のセット (ネストされたリスト) があります。すべての始点と終点が線に接しています。スクリプトは、先頭に最も近い行のインデックスと末尾に最も近い行のインデックスを比較し、一致する場合は を返します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 の値を比較する前に一時的に保存する必要があるようで、行き詰まりました。おそらくメモリが過負荷になっていることはわかっています。これを行うためのより高速な方法があるはずですが、方法がわかりません。
注: rc.Geometry.Curve.ClosestPoint はTrue
、線と点の間の距離が 0.0001 の許容値よりも小さい場合、つまり点が線上にある場合に戻ります。