1

我是一个没有受过教育的编程笨蛋,所以请原谅糟糕的编码和一般的无知。

我正在使用 FreeCAD,它有一个 API 可以访问 CAD 模型中的一个点。

class mySnapper:
  def __init__(self):
    self.point = None
  def getPoint(self):
    FreeCADGui.Snapper.getPoint(callback=self.clicked)
  def clicked(self,point,extra):
    self.point = point
    print point
s = mySnapper()
s.getPoint()
print "point outside is:",s.point
print "~~~~"

这给了我以下结果:

点外是:无

~~~~

向量(320.0, -3414.0, 168.15)

显然,类函数在选择坐标点之前返回(并且当点值为“None”时)。

当点被选中时,向量值被打印出来,但此时类函数已经返回,所以我实际上不能使用它们。

如何访问“单击”回调函数中的值?是否可以实例化一个更新的全局变量?

我希望这是有道理的...

4

1 回答 1

0

尝试轮询,直到设置值:

import time
class mySnapper:
    def __init__(self):
    self.point = None
    def getPoint(self):
        FreeCADGui.Snapper.getPoint(callback=self.clicked)
    def clicked(self,point,extra):
        self.point = point

s = mySnapper()
while not s.getPoint():
    time.sleep(0.01) # wait for 10 ms before retrying
print s.getPoint() # now it should print Vector(320.0, -3414.0, 168.15)
于 2017-03-05T08:11:18.333 回答