如何在 SketchUp 的函数外调用数组 Ruby

How to call an array outside of a function in SketchUp Ruby

我正在构建自定义十进制度 (DD) 到十进制分秒 (DMS) 函数以在 SketchUp 中使用 Ruby。下面是我的脚本。

arg1 = 45.525123

def DMS(arg1)
    angle = arg1
    deg = angle.truncate()
    dec = (angle - angle.truncate()).round(6)
    totalsecs = (dec * 3600).round(6)
    mins = (totalsecs / 60).truncate()
    secs = (((totalsecs / 60) - (totalsecs / 60).truncate()) * 60).round(2)
    array = [deg, mins, secs]
end

DMS(arg1)

到目前为止一切顺利,如果您 运行 Ruby 中的这个脚本,您最终可能会得到一个数组,它为您提供 [45, 31, 30.44]

然后我尝试添加一行代码,以不同的名称分配该数组。这是带有额外行的新代码。

arg1 = 45.525123

def DMS(arg1)
    angle = arg1
    deg = angle.truncate()
    dec = (angle - angle.truncate()).round(6)
    totalsecs = (dec * 3600).round(6)
    mins = (totalsecs / 60).truncate()
    secs = (((totalsecs / 60) - (totalsecs / 60).truncate()) * 60).round(2)
    array = [deg, mins, secs]
end

DMS(arg1)
bearingarray = array

但是,如果您 运行 第二个代码块,您最终会得到一个 [1, 2, 3] 的数组。

我的期望是我会在数组中得到完全相同的值,但名称不同。

出了什么问题?我应该怎么做才能解决它?

感谢您的帮助!

你的第二个代码块是错误的,如果你 运行 它你会得到 undefined local variable or method array for main:Object.

您可能 运行 在交互式会话中编写代码,并且您之前已经定义了 array,考虑到 arrayDMS 函数的局部变量。

我会说你想做什么

arg1 = 45.525123

def DMS(arg1)
  angle = arg1
  deg = angle.truncate()
  dec = (angle - angle.truncate()).round(6)
  totalsecs = (dec * 3600).round(6)
  mins = (totalsecs / 60).truncate()
  secs = (((totalsecs / 60) - (totalsecs / 60).truncate()) * 60).round(2)
  array = [deg, mins, secs]
end


bearingarray = DMS(arg1)

正在将 DMS 的输出分配给 bearingarray