• Login
sketchucation logo sketchucation
  • Login
🤑 SketchPlus 1.3 | 44 Tools for $15 until June 20th Buy Now

Identifier entité active

Scheduled Pinned Locked Moved Français
4 Posts 2 Posters 658 Views 2 Watching
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • N Offline
    normandyfrog
    last edited by 6 Mar 2011, 08:39

    Bonjour à tous

    A la recherche du Graal, je butine à gauche à droite. Comme tout débutant qui se respecte!

    La difficulté, après avoir compris le principe, est d’intégré un code à sa propre réalisation.
    En effet, si le code contient entities [n] sur le modèle. Cette entité n'a pas forcément le même index sur la nouvelle réalisation.

    J'ai trouvé un début de solution sur ce topic http://forums.sketchucation.com/viewtopic.php?f=180&t=9849&start=0&hilit=active_model.entities . Je fais N-1, N-2 ... sur la console Ruby. Réalisable sur un petit modèle, mais devient une galère sur un sujet plus élaboré.

    Existe il un plugin ou autre solution qui affiche l'index de l'entité active?
    Je ne suis pas encore assez calé pour ce genre de réalisation 😢
    Merci de votre attention
    Cordialement
    Laurent

    1 Reply Last reply Reply Quote 0
    • T Offline
      TIG Moderator
      last edited by 6 Mar 2011, 13:37

      By "active entities" I think you mean "selected entities" ?
      ss=Sketchup.active_model.selection gives you the current selection and
      ssa=ss.to_a makes a "snapshot" of it as an array of entities.
      ss0=ssa[0] is the first element in the array - this might not be the first entity selected; but if there's only one entity select that will be it...
      Then you can do something with it, like this...
      puts ss0.class to print the type of thing it is in the Console.
      ss0.erase! to erase it.
      ss0.layer=Sketchup.active_model.layers("NewLayer") to put it onto a layer named "NewLayer".
      ss0.hidden=true to hide it...
      Par "entités actif", je pense que vous voulez "entités sélectionnées" ?
      ss=Sketchup.active_model.selection vous donne la sélection actuelle et
      ssa=ss.to_a vous donne un "instantané" de celui-ci comme un tableau d'entités.
      ss0=ssa[0] est le premier élément du tableau - pourrait-ce pas la première entité sélectionnée; s'il ya seulement une entité but de sélectionner celui qui l'a...
      Ensuite, vous faites quelque chose avec elle, comme ceci...
      puts ss0.class pour imprimer sa type outre dans la console.
      ss0.erase! pour l'effacer.
      ss0.layer=Sketchup.active_model.layers("NewLayer") pourriez il place sur layer nommé "NewLayer".
      ss0.hidden=true pour le cacher...

      BUT if you mean the last added entity then the code you found, basically - Sketchup.active_model.entities.to_a[-1] - should give you a reference to it...

      MAIS si vous voulez dire la dernière entité ajouté, alors, vous avez trouvé le code, fond - Sketchup.active_model.entities.to_a[-1] - devrait vous donner une référence à elle...

      TIG

      1 Reply Last reply Reply Quote 0
      • N Offline
        normandyfrog
        last edited by 6 Mar 2011, 19:58

        Merci TIG

        Quand il y a la barrière de la langue. Il reste les exemples.

        Error 404 (Not Found)!!1

        favicon

        (sketchup.google.com)

        Je cherche à faire réagir la sphère comme le cercle au sol
        Pour cela j'ai trouvé le script sous la caméra (deuxième box)
        Sketchup.active_model.entities[11].material=nil
        $detected = false
        else
        Sketchup.active_model.entities[11].material="red"

        Je veux donc remplacer 11 dans le script

        Si j'applique
        model = Sketchup.active_model
        #Sketchup::Model:0x98da9c4
        sel = model.active_entities
        #Sketchup::Entities:0x9874a5c
        ss = model.selection
        #Sketchup::Selection:0x966390c
        n = sel.length - 1
        11
        ss.add(sel[10])
        1
        ss.add(sel[8])
        0
        ss.add(sel[9])
        1
        Je fini par sélectionner le bon élément [9]

        ss=Sketchup.active_model.selection
        #Sketchup::Selection:0x966390c
        ssa=ss.to_a
        [#Sketchup::Group:0x96737d0]
        ss0=ssa[0]
        #Sketchup::Group:0x96737d0
        puts ss0.class
        Sketchup::Group
        nil

        By "active entities" I think you mean "selected entities" ? Yes
        Je souhaite trouver cet index (numéro de la formule)plus rapidement en "selected entities"
        A+
        Laurent

        1 Reply Last reply Reply Quote 0
        • T Offline
          TIG Moderator
          last edited by 6 Mar 2011, 22:17

          It is virtually impossible to keep track of an entity by index in the order it appears in model.entities, even in a session it will vary as entities are deleted and added etc.
          It's even worse when a model is reopened. It's entities will almost certainly not be ordered in any useful way.

          If you must keep track of a specific entity give it a unique attribute which will exists across sessions and can be found later... For example, entity.set_attribute("IDdeLaurent", "tid", Time.now.to_f)
          Later on use entity.get_attribute("IDdeLaurent", "tid", nil).
          You iterate the entities until you find the one you want with the matching 'tid'...........
          *C'est pratiquement impossible de garder une trace de l'indice dans le périmètre année par jeu de mots qu'il apparaît dans model.entities, même dans une session les entités changés quand elles sont supprimés et etc ajouté.
          C'est encore plus mauvais quand a le modèle est rouvert. Ses entités presque ne sera certainement pas ordonnées de quelque manière utiles.

          Si vous devez maintenir une entité spécifique puis donnez-lui un attribut unique, qui existe entre les sessions et peut être retrouvé plus tard... Par exemple, entity.set_attribute("IDdeLaurent", "tid", Time.now.to_f)
          Plus tard, vous sur l'utilisation entity.get_attribute("IDdeLaurent", "tid", nil).
          Vous parcourir les entités jusqu'à ce que vous trouviez celui que vous voulez avec "tid" l'appariement...........*

          TIG

          1 Reply Last reply Reply Quote 0
          • 1 / 1
          1 / 1
          • First post
            1/4
            Last post
          Buy SketchPlus
          Buy SUbD
          Buy WrapR
          Buy eBook
          Buy Modelur
          Buy Vertex Tools
          Buy SketchCuisine
          Buy FormFonts

          Advertisement