2014-02-16 72 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