Ruby 创建一个插件,将文本放入.txt文件

Ruby 创建一个插件,将文本放入.txt文件,ruby,text,module,stdout,sketchup,Ruby,Text,Module,Stdout,Sketchup,我正在用Ruby创建一个插件。 此时,我无法在.txt文件中插入添加到Sketchup模型的坐标 这是我的代码: require 'sketchup.rb' SKETCHUP_CONSOLE.show rescue Sketchup.send_action("showRubyPanel:") $stdout = File.new('file.txt', 'w') module HWmakemyownplug def self.fileplug model = Sketchup.ac

我正在用Ruby创建一个插件。 此时,我无法在.txt文件中插入添加到Sketchup模型的坐标

这是我的代码:

require 'sketchup.rb'
SKETCHUP_CONSOLE.show rescue Sketchup.send_action("showRubyPanel:")
$stdout = File.new('file.txt', 'w')

module HWmakemyownplug
  def self.fileplug
    model = Sketchup.active_model 
    #Make some coordinates.
    coordinates = [[2,0,39],[0,0,1],[1,1,0]]
    #Add the points in Sketchup. This works!
    coordinates.each { |point| model.active_entities.add_cpoint(point) }
    #Puts the coordinates to the textfile 'file.txt'. This doesn't work!
    $stdout.puts(coordinates)   

  end #def self.fileplug
end #module makemyownplug

if (!file_loaded?(__FILE__))

  #Add to the SketchUp tools menu
  extensions_menu = UI.menu("Plugins")
  extensions_menu.add_item("testtesttest") { HWmakemyownplug::fileplug }
  # Let Ruby know we have loaded this file
  file_loaded(__FILE__)

end

当我点击菜单>插件>测试时,必须打印坐标。

您忘记在$stdout.put(坐标)之后关闭文件


$stdout.close

此时$stdout.put(坐标)不起作用,我得到一个空文件为什么要将文件句柄分配给
$stdout
。最好将其指定给局部变量。否则,您会弄乱标准输出,从而影响其他扩展。此外,请查看打开文件的块参数版本,以确保文件始终正确关闭。