sketchucation logo sketchucation
    • Login
    ℹ️ Licensed Extensions | FredoBatch, ElevationProfile, FredoSketch, LayOps, MatSim and Pic2Shape will require license from Sept 1st More Info

    Tracé de ligne à partir de coordonnées dans Excel

    Scheduled Pinned Locked Moved Français
    16 Posts 4 Posters 4.7k Views 4 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.
    • Didier BurD Offline
      Didier Bur
      last edited by

      Bonjour,

      Exemple:
      p1=Geom::Point3d.new(1,2,3)
      p2=Geom::Point3d.new(4,5,6)
      Sketchup.active_model.entities.add_line(p1,p2)

      Ca c'est pour tracer une ligne entre 2 points dont on a les coordonnées.
      Pour ce qui est de lire le contenu d'un fichier, c'est une autre (assez simple) histoire.
      Le conseil dans ton cas c'est d'enregistrer le fichier Excel en CSV (forme texte, séparateur point-virgule), sinon bonjour les dégats en binaire.
      Ensuite il faut l'ouvrir depuis le script, et le lire pour convertir le contenu des ex-cellules en points 3D.
      Si tu es en panne fais-moi signe.
      A+

      DB

      1 Reply Last reply Reply Quote 0
      • B Offline
        BARROIS
        last edited by

        Yep Yep Yep !! ☀
        trés pédagogue Mrs.Bur, j'ai juste mis tes trois lignes dans fr_box.rb et 😍
        Je n'ose pas mettre à disposition mon "vector.rb" sur http://www.crai.archi.fr/RubyLibraryDepot/Ruby/fr_RUBY_Library_Depot.html
        ma première création en ruby: restons modeste.
        Y-a-t-il moyen de choisir le couleur du trait ? Je crois qu'il y a une fonction style quelque part.
        D'autre part, aurais-tu un exemple pour la lecture d'un .csv ?
        Enfin où se procurer un catalogue de fonctions ruby ?
        tu ne 🤢 pas tout ça de ton 👍, quel est ton ❓ secret ❓ Oh grand 😎!

        1 Reply Last reply Reply Quote 0
        • Didier BurD Offline
          Didier Bur
          last edited by

          Bonjour,

          @unknownuser said:

          Y-a-t-il moyen de choisir le couleur du trait ? Je crois qu'il y a une fonction style quelque part.

          Non, la classe "Edge" n'a pas de méthode "style". Un style est de toute façon une option qui s'applique à tout le modèle à la fois (dans une scène donnée), il est donc logique de ne pas pouvoir avoir des style de trait différents pour chaque ligne.

          DB

          1 Reply Last reply Reply Quote 0
          • B Offline
            BARROIS
            last edited by

            Excuses-moi d'insister pour l'exemple de lecture de fichier .csv ,
            Aurais-tu un exemple de code ruby ?

            D'avance merci

            1 Reply Last reply Reply Quote 0
            • Didier BurD Offline
              Didier Bur
              last edited by

              Minute, j'étais en train de le faire ! 🤣

              @unknownuser said:

              où se procurer un catalogue de fonctions ruby ?

              Le mieux c'est d'aller sur LE site de Ruby:
              http://www.ruby-doc.org/docs/ProgrammingRuby/html/builtins.html
              Pour l'API de Sketchup, la doc est TRES mal faite, pleines d'erreurs, pleines de trous, bref c'est nul. Le problème c'est qu'il n'existe rien d'autre.
              Le secret, c'est "essai-erreur", enfin presque.


              temp.rb

              DB

              1 Reply Last reply Reply Quote 0
              • B Offline
                BARROIS
                last edited by

                ☀ Merci beaucoup pour ton aide. ☀
                Je vais m'attacher maintenant à créer mon champ de vecteurs 💭
                et je t'enoie une photo. Promis !

                1 Reply Last reply Reply Quote 0
                • M Offline
                  Matt666
                  last edited by

                  @unknownuser said:

                  où se procurer un catalogue de fonctions ruby ?
                  Perso j'utilise plutot ça, dans LE même site...
                  Totalement d'ac avec toi Didier, ce site est dément !

                  @unknownuser said:

                  Le secret, c'est "essai-erreur", enfin presque.
                  🤣
                  Bien intéressant ce petit post ! Merci !

                  Frenglish at its best !
                  My scripts

                  1 Reply Last reply Reply Quote 0
                  • Didier BurD Offline
                    Didier Bur
                    last edited by

                    @unknownuser said:

                    ce site est dément

                    Normal, c'est le site qui héberge et diffuse Ruby.
                    Mais j'aime bien aussi ça:
                    http://www.noobkit.com/show/ruby/ruby/ruby-core.html
                    et ça:
                    http://pleac.sourceforge.net/pleac_ruby/
                    http://www.zenspider.com/Languages/Ruby/QuickRef.html#14
                    http://www.rubyfrance.org/documentations (en français pour une fois)

                    DB

                    1 Reply Last reply Reply Quote 0
                    • B Offline
                      BARROIS
                      last edited by

                      Resultat de "importer_fichier_vecteurs"
                      Au premier essai : Error de lecture sur le fichier 👎 E:\GDCB\Modélisation_Simulation_Thermique\Modélisation_aero\vecteurs.csv
                      ben oui, ruby n'admet pas les caractère accentué dans un fichier. OK !

                      Mais au deuxième essai, cela ne fonctionnait pas tout de même, ❗
                      j'ai du modifier un peu ton texte:

                        %(#0000FF)[tableau_lignes.each do |ligne|
                        coordonees=ligne.split(";")
                        #la methode split sépare la ligne en morceaux séparés par des points-virgule et renvoie un tableau (de chaines de caractères)
                        # Ca donne pour la premiere ligne: ["1", "2", "3", "4", "5", "6\n"]
                        # Il reste à transformer ces caractères en chiffres:
                        x1=ligne[0].to_f #les indices de tableau commencent à zéro et non à 1
                        y1=ligne[1].to_f
                        z1=ligne[2].to_f
                        x2=ligne[3].to_f
                        y2=ligne[4].to_f
                        z2=ligne[5].to_f
                        # N.B.: la methode to_f prend une chaine de caractères et la transforme en nombre, si elle peut
                        
                        # On crée les objets point3d correspondants:
                        p1=Geom::Point3d.new(x1,y1,z1)
                        p2=Geom::Point3d.new(x2,y2,z2)]
                      

                      par le texte suivant:

                       %(#0000FF)[tableau_lignes = IO.readlines(fichier)
                      #Ca donne: ["1;2;3;4;5;6\n", "7;8;9;10;11;12\n", "13;14;15;16;17;18\n"]
                      # les \n sont des caractères de fin de ligne
                      
                      # On parcourt le tableau ligne par ligne, et on éclate chaque ligne en un tableau de 3 valeurs X,Y et Z
                      tableau_lignes.each do |ligne|
                        coordonees=ligne.split(";")
                        #la methode split sépare la ligne en morceaux séparés par des points-virgule et renvoie un tableau (de chaines de caractères)
                        # Ca donne pour la premiere ligne: ["1", "2", "3", "4", "5", "6\n"]
                        # Il reste à transformer ces caractères en chiffres:
                        
                        x1=(coordonees[0].to_f)/2.54 #les indices de tableau commencent à zéro et non à 1
                        y1=(coordonees[1].to_f)/2.54
                        z1=(coordonees[2].to_f)/2.54
                        x2=(coordonees[3].to_f)/2.54
                        y2=(coordonees[4].to_f)/2.54
                        z2=(coordonees[5].to_f)/2.54
                        # N.B.: la methode to_f prend une chaine de caractères et la transforme en nombre, si elle peut
                        
                        # On crée les objets point3d correspondants:
                        p1=Geom::Point3d.new(x1,y1,z1)
                        p2=Geom::Point3d.new(x2,y2,z2)]
                      

                      Alors evidement le 2.54 c'est un petit coup de 👍

                      ça fonctionne pas mal, j'y retourne imédiatement !!! 😄

                      Qu'en penses-tu ? j'ai pourtant mis mes préférences en : Centimètre (système métrique)-3D
                      et quand je rentre les chiffres à la main en précisant ou non "cm" ça marche
                      J'ai essayer de mettre "570cm" au lieu de "570" dans le fichier csv, mais bernique ❗
                      En tout cas merci beaucoup, tu es vraiment toujours là ou il faut et quand il faut.

                      1 Reply Last reply Reply Quote 0
                      • B Offline
                        BARROIS
                        last edited by

                        Chose promise...
                        Voici une première représentation du flux de pression dans une ébauche de salle informatique.
                        Reste encore un peu à creuser coté loi de propagation, mais ça me plait déjà bien.
                        Grand Merci 😎
                        Ah si je pouvais aussi mettre en couleur les traits suivant chaud ou froid,
                        là ça serait top 😍
                        Il n'y a vraiment pas un truc pour ça dans Skechtup ???


                        Simu_essai_1.pdf

                        1 Reply Last reply Reply Quote 0
                        • pilouP Offline
                          pilou
                          last edited by

                          C'est avec ces couillonnades des différentes unités qu'on fait s'écraser sur Mars des programmes à plusieurs millions de dollars! (125) 😆
                          Y a des oreilles qui ont dû siffler 💚

                          Frenchy Pilou
                          Is beautiful that please without concept!
                          My Little site :)

                          1 Reply Last reply Reply Quote 0
                          • Didier BurD Offline
                            Didier Bur
                            last edited by

                            Utilises des calques differents en fonction de "chaud" ou "froid", mets une matière différente sur chacun des calques, et affiches test traits en couleur "matière".

                            Pour le coup de pouce, c'est une question de transformation de type: on passe d'une chaine de caractère à un chiffre en réel, qui pour SU est exprimé par défaut en pouces.
                            Donc il faut rajouter un ".cm" en fin de conversion, par exemple: "100".to_f.cm renvoie 39.3700787401575 ce qui fait bien 100 exprimé en cm.

                            DB

                            1 Reply Last reply Reply Quote 0
                            • B Offline
                              BARROIS
                              last edited by

                              incollable 😎
                              par contre je ne comprends pas le : "affiches tes traits en couleur "matière"."
                              dans la phrase :
                              Utilises des calques differents en fonction de "chaud" ou "froid", mets une matière différente sur chacun des calques,
                              et affiches tes traits en couleur "matière".

                              Et puis en fait je ne comprends rien: "mettre une matière sur un calque" me parait un barbarisme,
                              j'arrive à changer la couleur d'un calque (encore que sa couleur ne m'apporte pas grand chose.) ❓ ❓
                              Evidement cela vient de ces fameux concepts "objet", "attribut", etc, 👎
                              que je n'appréhende pas qui parle plutot Fortran IV, Cobol et autres languages de 1° génération. 😲
                              Je viens de parcourir toute la doc SU6_UserGuide_Fr.pdf.. rien pour m'éclairer.
                              Bon aller c'est week-end, je vais m' un peu.

                              1 Reply Last reply Reply Quote 0
                              • Didier BurD Offline
                                Didier Bur
                                last edited by

                                @unknownuser said:

                                par contre je ne comprends pas le : "affiches tes traits en couleur "matière"."

                                Fenêtres -> Styles, puis:
                                aretes_couleur.jpg
                                C'est la liste déroulante en bas qui est importante

                                Donc tu pourrais créer 3 calques admettons, "chaud, "tiede" et "froid", leur affecter une couleur respectivement rouge, orange et bleue.
                                Chaque vecteur lu est mis par le script sur un calque en fonction de sa température (il faut donc avoir la donnée dans le fichier CSV), et le tour est joué.

                                Pour mettre un objet quelconque sur un calque, il faut avoir son identificateur et appliquer la méthode "layer" à cet identificateur.
                                Dans ton cas ça donnerait:

                                
                                ligne_sketchup=Sketchup.active_model.entities.add_line(p1,p2)
                                if temperature < 10
                                  ligne_sketchup.layer = "froid"
                                  elsif temperature < 20 and temperature >= 10
                                    ligne_sketchup.layer = "tiede"
                                  else
                                    ligne_sketchup.layer = "chaud"
                                end
                                
                                
                                

                                Vite fait sur l'image ci-dessous: chaque cube est sur un calque qui lui-même à une couleur différente, l'affichage des arêtes est en mode "matière", et l'affichage des objets est en mode "couleur par calque".
                                calques_couleurs.jpg

                                DB

                                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