2014-02-16 102 views
0

加载Sketchup中的外部库时遇到问题Sketchup Ruby加载外部库

我想知道图像的原始宽度和高度。但我没有在Sketchup API中找到。所以我下载fastimage,一个库可以做到这一点。 (https://github.com/sdsykes/fastimage)。我用命令安装它:

gems install fastimage 

这种新的宝石是安装在C:\ Ruby186 \ LIB \红宝石\宝石\ 1.8。然后我需要在我的脚本(通过按照上面的链接turorial) :

require 'fastimage' 

但我得到的错误:没有这样的文件来加载 - fastimage

后来我发现在这个环节上一个解决方案:http://sketchucation.com/forums/viewtopic.php?t=29412#p257058。创建一个加载路径脚本,并创建一个到外部库的链接。创建此脚本后,将它们放入Sketchup中的插件文件夹中,然后再次运行Sketchup。但我仍然得到错误:没有这样的文件加载。

我的红宝石的版本是1.8.6,当我输入命令:将ruby_version移动到Sketchup ruby​​控制台中。它的输出是1.8.6(与我的红宝石版本相同)。我不明白为什么它不需要新的宝石。请帮助我,谢谢。

回答

1

,因为你用,你应该在你的可执行文件的前面指定require 'rubygems',所以:

require 'rubygems' 
require 'fastimage' 

如果需要引发错误,这意味着没有安装在你的系统当前 ,所以安装如下,例如:

apt-get install rubygems 
+0

我添加了require'rubygems',但它显示错误:没有这样的文件加载 - ruby​​gems – Beginner

+1

@Beginner似乎没有安装rubygems for你的红宝石版本,所以安装它。 –

+0

SketchUp仅附带Ruby 1.8 Core - 它不包含标准库。 – thomthom

0

要获得的图像的像素宽度和高度使用image_widthimage_height针对给定MaterialTexture对象的方法。 http://www.sketchup.com/intl/en/developer/docs/ourdoc/texture.php#image_width

这就是当你在SketchUp的情况下说“像”你的意思是纹理假设。如果您想从Image实例获取信息,请使用Image.pixelwidthImage.pixelheight。另一方面,如果您正在查看未加载到SketchUp中的位图的大小,那么由于SketchUp附带了Ruby 1.8核心而不是标准库,因此更加困难。你可以做一个Ruby C扩展,并在C做的工作。

+0

我必须保持图像宽度和高度之间的原始比率。所以我需要知道图像的原始宽度和原始高度,以便获得图像完整路径时的速率。我认为函数Image.pixelwidth和Image.pixelheight在这种情况下是无效的,因为我们首先需要Image对象,并且我们通过使用函数entities.add_image来获得它,但是这个函数需要图像的宽度参数和高度参数,我们只给出一个参数(宽度或高度),另一个参数取决于原始速率,但我之前并不知道原始速率。 – Beginner

+0

我阅读关于纹理的API。它说:“请记住,纹理是可重复的图像,当在一个表面上绘制时,”贴图“。但是这张图片不包含可重复的图片。 我刚刚找到了一种获取图像对象大小的方法。它是在另一个主题:http://stackoverflow.com/questions/2450906/is-there-a-simple-way-to-get-image-dimensions-in-ruby(该secodary答案有13票)。但我不确定这一点。 – Beginner

+0

您能描述一下您在SketchUp中如何处理图像吗?你想把它作为纹理还是'Image'实体? Entities.add_image的'width'和'height'参数不是像素尺寸 - 它们是模型中图像的大小。 – thomthom