2017-08-02 4 views
0

私はSketchupとRubyの新機能ですが、私はjavaとC#で作業しましたが、これは初めてのrubyです。ruby​​ sketchup scene serialization

今私は1つのjson(シーン階層、オブジェクト名、オブジェクトマテリアルとこれを単一のオブジェクトのために配置)ですべてのシーンをシリアライズする必要があります。どうすればいいですか?

私はunity3D(c#)でこれを問題なく実行しました。

私はこれを試してみました:

def main 
    avr_entities = Sketchup.active_model.entities # all objects 

    ambiens_dictionary = {} 
    ambiens_list = [] 

    avr_entities.each do |root| 

    if root.is_a?(Sketchup::Group) || root.is_a?(Sketchup::ComponentInstance) 
     if root.name == "" 
     UI.messagebox("this is a group #{root.definition.name}") 

     if root.entities.count > 0 
      root.entities.each do |leaf| 
      if leaf.is_a?(Sketchup::Group) || leaf.is_a?(Sketchup::ComponentInstance) 
       UI.messagebox("this is a leaf #{leaf.definition.name}") 
      end 
      end 
     end 

     else 
     # UI.messagebox("this is a leaf #{root.name}") 
     end 
    end 
    end 
end 
+0

' 'JSON' を必要としたことがあります。 some_var.to_json' – Kris

+1

JSONにSketchUpエンティティ/モデルのシリアル化が組み込まれていないので、独自の方法を理解する必要があります。 'Sketchup :: Entity'の各サブクラスに対して、エクスポートするプロパティとその表現方法を決定する必要があります。あなたはそれをどのように使用するのかの要件によって決定されます。 – thomthom

+0

hmm ..モデルのすべての子インスタンスに再帰的に掘り下げる方法についてのこの質問はありますか?私はあなたのコードがルートと最初のレベルをたどることに気が付いているからです。 – thomthom

答えて

0

あなたはJSON library

require 'json' 
source = { a: [ { b: "hello" }, 1, "world" ], c: 'hi' }.to_json 
source.to_json # => "{\"a\":[{\"b\":\"hello\"},1,\"world\"],\"c\":\"hi\"}" 
+0

私の問題ではありませんが、階層内のすべてのオブジェクトを取得する必要があります。再帰メソッドを使用しています。 –

+0

データ構造全体がJSONに変換されているとは限りません。 – Kris

関連する問題