2017-08-02 4 views
0

Je suis très nouveau sur Sketchup et rubis, j'ai travaillé avec Java et C#, mais c'est la première fois avec le rubis.rubis sérialisation scène SketchUp

Maintenant, j'ai un problème, je dois sérialiser toutes scène dans une JSON (hiérarchie de la scène, le nom de l'objet, objet matériel et la position pour ce seul objet) comment puis-je faire cela?

Je l'ai déjà fait pour Unity3D (C#) sans problème.

J'ai essayé ceci:

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

'require 'json'; some_var.to_json' – Kris

+1

Il n'y a pas construit en sérialisation des entités SketchUp/modèles à JSON si vous avez besoin de comprendre votre propre méthode. Pour chaque sous-classe de 'Sketchup :: Entity' vous devez déterminer quelles propriétés exporter et comment les représenter. Comment vous faites cela est déterminé par les exigences de tout ce qui va l'utiliser. – thomthom

+0

hmm .. Cette question est sur la façon de creuser récursive vers le bas dans chaque enfant instance du modèle? Parce que je remarque que votre code ne traverse que la racine et le premier niveau. – thomthom

Répondre

0

Avez-vous essayé le 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

ty mais pas mon problème, je dois obtenir tous les objets dans la hiérarchie je suis Tring avec la méthode récursive –

+0

Je ne suis pas sûr que vous voulez dire, il convertit l'ensemble de la structure de données JSON, j'ai ajouté un exemple à la réponse. – Kris