创建一个将文本放入 .txt 文件的插件
Create a plugin that puts text in a .txt file
我正在 Ruby 中创建一个插件。
此时我无法将添加到 Sketchup 模型的坐标插入到 .txt 文件中。
这是我的代码:
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
当我点击菜单 > 插件 > testtesttest 时必须打印坐标。
您忘记在 $stdout.puts(坐标)
后关闭文件
$stdout.close
这是将数据写入 JSON 文件而非简单文本文档的示例代码。
代码可以 运行 在 SketchUp 之外的终端中进行测试。只需确保遵循这些步骤...
- 复制下面的代码并将其粘贴到 ruby 文件中(示例:file.rb)
- 运行 终端
ruby file.rb
或 运行 中的脚本与 SketchUp。
- 脚本会将数据写入 JSON 文件并读取 JSON 文件的内容。
JSON 文件的路径是相对于第一步中创建的 ruby 文件的路径。如果脚本找不到路径,它将为您创建 JSON 文件。
module DeveloperName
module PluginName
require 'json'
require 'fileutils'
class Main
def initialize
path = File.dirname(__FILE__)
@json = File.join(path, 'file.json')
@content = { 'hello' => 'hello world' }.to_json
json_create(@content)
json_read(@json)
end
def json_create(content)
File.open(@json, 'w') { |f| f.write(content) }
end
def json_read(json)
if File.exist?(json)
file = File.read(json)
data_hash = JSON.parse(file)
puts "Json content: #{data_hash}"
else
msg = 'JSON file not found'
UI.messagebox(msg, MB_OK)
end
end
# # #
end
DeveloperName::PluginName::Main.new
end
end
我正在 Ruby 中创建一个插件。 此时我无法将添加到 Sketchup 模型的坐标插入到 .txt 文件中。
这是我的代码:
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
当我点击菜单 > 插件 > testtesttest 时必须打印坐标。
您忘记在 $stdout.puts(坐标)
后关闭文件$stdout.close
这是将数据写入 JSON 文件而非简单文本文档的示例代码。
代码可以 运行 在 SketchUp 之外的终端中进行测试。只需确保遵循这些步骤...
- 复制下面的代码并将其粘贴到 ruby 文件中(示例:file.rb)
- 运行 终端
ruby file.rb
或 运行 中的脚本与 SketchUp。 - 脚本会将数据写入 JSON 文件并读取 JSON 文件的内容。
JSON 文件的路径是相对于第一步中创建的 ruby 文件的路径。如果脚本找不到路径,它将为您创建 JSON 文件。
module DeveloperName
module PluginName
require 'json'
require 'fileutils'
class Main
def initialize
path = File.dirname(__FILE__)
@json = File.join(path, 'file.json')
@content = { 'hello' => 'hello world' }.to_json
json_create(@content)
json_read(@json)
end
def json_create(content)
File.open(@json, 'w') { |f| f.write(content) }
end
def json_read(json)
if File.exist?(json)
file = File.read(json)
data_hash = JSON.parse(file)
puts "Json content: #{data_hash}"
else
msg = 'JSON file not found'
UI.messagebox(msg, MB_OK)
end
end
# # #
end
DeveloperName::PluginName::Main.new
end
end