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

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

Scheduled Pinned Locked Moved Français
16 Posts 4 Posters 4.7k 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.
  • B Offline
    BARROIS
    last edited by 3 Sept 2008, 14:20

    Eternel débutant, je cherche à dessiner un champ de vecteur représentant des flux d'air dans une salle informatique... vaste sujet, n'est-ce pas.
    Je suis donc à la recherche d'un script tracant une ligne à partir d'un point, sachant que l'ensembles des points (X1,Y1,Z1,X2,Y2,Z2) sont dans un fichier Excel.

    J'ai bien un debut avec fr_box.rb, mais je n'ai pas la fonction "Ligne" qui va,
    ni la fonction lire un fichier Excel.

    D'avance merci de votre aide.

    1 Reply Last reply Reply Quote 0
    • B Offline
      BARROIS
      last edited by 3 Sept 2008, 14:38

      Je rectifie un peu car pour les points, il y a CLOUD.RB de Didier Bur 😎
      Ecole Nationale Supérieure d'Architecture de Nancy (F).
      Reste le problème de tracer un trait ou un vecteur.

      1 Reply Last reply Reply Quote 0
      • D Offline
        Didier Bur
        last edited by 3 Sept 2008, 19:53

        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 4 Sept 2008, 06:21

          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
          • D Offline
            Didier Bur
            last edited by 4 Sept 2008, 07:35

            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 4 Sept 2008, 08:04

              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
              • D Offline
                Didier Bur
                last edited by 4 Sept 2008, 08:07

                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 4 Sept 2008, 09:05

                  ☀ 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 4 Sept 2008, 11:07

                    @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
                    • D Offline
                      Didier Bur
                      last edited by 4 Sept 2008, 18:12

                      @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 5 Sept 2008, 09:09

                        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 5 Sept 2008, 10:16

                          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 5 Sept 2008, 11:44

                            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
                            • D Offline
                              Didier Bur
                              last edited by 5 Sept 2008, 13:41

                              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 5 Sept 2008, 14:28

                                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
                                • D Offline
                                  Didier Bur
                                  last edited by 5 Sept 2008, 14:34

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

                                  Advertisement