【求助】有没有办法用ghpython建立一个像Anemone那样的循环可以去驱动gh里的电池?

我尝试用 rs.sticky建立一个全局变量当作循环的控制条件,但是发现无法从第二个电池中停止整个循环:

#电池1
if "count" not in sc.sticky.keys():
    sc.sticky["count"] = 0
    for i in range(10):
        sc.sticky["count"] += 1
        a = sc.sticky["count"]
        print a
        if sc.sticky["end"]:
            break

#电池2
if x >0:
    sc.sticky["end"] = True
    print "final x = ",x
    del sc.sticky["count"]
else :
    sc.sticky["end"] = False

应该是电池必须运行完才会计算后面的电池。那样一来把循环的停止条件设置在后面就无法提供给前面的电池使用了。

应该怎么做才对?

修改前面.gh (3.6 KB)


给你个小工具帮助你完善当前的代码
你卡住的地方就是GH的连线,后面py的输出不能再去传到前面的py输入了,因为那样GH会出错(不允许循环)

用我这个小工具可以帮助你将第二个py的输出连到C1,再传到C0前面的panel,而panel再去作为前面py的输入,这样就绕考了GH连线不能循环的限制,起到了数据往前的循环。

1 个赞

虽然倒腾半天没理解发生了什么,不过确实解决了问题,很棒,赞

其实如果非要循环,插件还是挺方便的。

Gh本来的架构就不太兼容循环,因此不管是插件还是代码,实现起来都有点nasty

能用就行

主要是我需要对数据做迭代处理,但是插件没法做停止条件。这样一来除非强行拉一个比较大的循环次数,那就太费时间了,算一次算半天

image

不会,exit 这里条件为 true 的时候,即便没有达到 Repeat 所设置的次数,也会停止循环。

1 个赞

老师请教一下,我不会代码,不知道问题是否有点奇怪,就是您这个小工具,无论c1有多少个数字,c0也是输出一个,是否有可能将c1里的数字都输出呢

image
没改代码的情况下可以支持字符串拷贝
至于多个数据,这个代码不行。
但你可以通过字符串转化轻易实现

我们还是尽量花时间去研究有意义的话题吧。这种逆反GH原理的非常规操作尽量少研究