首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python缩短Grasshopper中的多个嵌套循环

python缩短Grasshopper中的多个嵌套循环
EN

Stack Overflow用户
提问于 2016-05-01 06:59:17
回答 1查看 344关注 0票数 0

我还找不到一种不使用多个嵌套循环的方法来解决这个问题。问题是我正在使用Rhinoceros的几何方法在两个列表之间进行比较。基本上有一列线,一组起始点和结束点(嵌套列表)。所有的起点和终点都与直线相接。该脚本将最接近开始的行的索引与最接近结束的行的索引进行比较,如果它们匹配,则返回True

这是我当前的代码:

代码语言:javascript
复制
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的值。我知道我的内存可能超载了,肯定有更快的方法来做到这一点,但我只是不确定该怎么做。

注意:如果直线与点之间的距离小于公差0.0001,则rc.Geometry.Curve.ClosestPoint返回True,这意味着该点在直线上。

EN

回答 1

Stack Overflow用户

发布于 2016-07-19 04:09:44

这个循环似乎并没有引用您的数据集中的任何其他内容,因此,通过使用grasshopper自己的内置工具,在每个对象上运行一小段代码可能是可以的。

代码语言:javascript
复制
pullSt = rc.Geometry.Curve.ClosestPoint(linesList[l], stPoint, 0.0001)[0]
pullEnd = rc.Geometry.Curve.ClosestPoint(linesList[l], endPoint, 0.0001)[0]
if pullSt == True and pullEnd == True:
    match = True

如果您右键单击输入,则可以将它们从树访问更改为项访问。

这只是一种猜测,因为你还没有说出你真正想要解决的问题。

如果你发了这个问题,我会更新更详细的答案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36961160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档