sketchucation logo sketchucation
    • Login
    ℹ️ GoFundMe | Our friend Gus Robatto needs some help in a challenging time Learn More

    Identifier entité active

    Scheduled Pinned Locked Moved Français
    4 Posts 2 Posters 658 Views
    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

      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
      • TIGT Offline
        TIG Moderator
        last edited by

        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

          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
          • TIGT Offline
            TIG Moderator
            last edited by

            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
            • First post
              Last post
            Buy SketchPlus
            Buy SUbD
            Buy WrapR
            Buy eBook
            Buy Modelur
            Buy Vertex Tools
            Buy SketchCuisine
            Buy FormFonts

            Advertisement