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

    Redéfinir l'orientation des vues standards (iso, de face, ..

    Scheduled Pinned Locked Moved Français
    11 Posts 4 Posters 6.1k 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.
    • J Offline
      jeanluc_16
      last edited by

      Bonjour à tous ceux qui ne sont pas encore en vacances,

      Je cherche à imprimer à l'échelle une vue dont la direction est perpendiculaire à un pan de charpente d'une maison.
      Pour celà, je repositionne les axes du modèle à l'angle du toit, et selon la pente de celui-ci.

      Je pensais que les vues standard (de face, de dessus, ...etc)allaient gentiment s'aligner sur la nouvelle position des axes.
      Mais cela n'est pas le cas: les vues standard restent conforme à leurs directions d'origine.
      Je n'arrive pas à avoir une vue standard qui soit perpendiculaire au pan de ma toiture.
      Et sans vue standard, pas d'impression à l'échelle.

      Il y quelque chose qui m'échappe.
      Merci pour vos lumières.

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

        Salut et bienvenue !
        Si j'ai compris, ton pan de charpente n'est parallèle à aucun des axes existants, c'est ça ?

        Dans ce cas je ne vois pas comment faire... A part tourner ta charpente pour la rendre parallèle à l'un des axes... Si qqn a une méthode...

        Frenglish at its best !
        My scripts

        1 Reply Last reply Reply Quote 0
        • vickV Offline
          vick
          last edited by

          J'ai jamais fait,mais peut être avec une coupe ......... ❓

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

            Clic-droit sur un des axes, puis "Aligner la vue". Sauf que c'est juste valable pour la vue en plan. Pour les autres, j'ai pas de soluce. On ne peut même pas faire un script Ruby pour combler le manque, vu qu'il n'y a aucun moyen de récupérer les paramètres des axes. L'API a bien des lacunes...

            DB

            1 Reply Last reply Reply Quote 0
            • J Offline
              jeanluc_16
              last edited by

              Bonjour,

              C'est bien ce que je craignais, hormis une mise en position du modèle par rotation, il n'y a pas de solution simple.

              merci en tout cas pour vos réponses.

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

                Salut !
                @ Didier :
                Juste une idée comme ça : est-il possible de créer un ruby qui affiche la vue de face de la face d'une entité sélectionnée ?
                Procédure :
                1- Sélectionner une face
                2- On récupère l'inclinaison de la face
                3- On tourne la vue en cours pour afficher la face sélectionnée
                4- Zoom.

                Ensuite je ne sais pas s'il est possible 'imprimer à l'échelle avec cette méthode. Je bosse (Je tente, un peu... ça risque de prendre du temps !) sur un affichage de la vue actuelle à l'échelle désirée (la cause de ce post). Comme ça, on pourrait imprimer à l'échelle sans avoir à passer par la boite dialogue d'impression...

                Frenglish at its best !
                My scripts

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

                  Bonjour,

                  @unknownuser said:

                  est-il possible de créer un ruby qui affiche la vue de face de la face d'une entité sélectionnée ?

                  Oui: tu récupères la normale de la face (face.normal) et tu affectes camera.direction avec ce vecteur, ou tu mets le camera.eye au bout du vecteur normal et la camera.target à l'extrêmité de normal.reverse.
                  Pour se mettre à une distance correcte (face.normal est normé à 1), il faudra sans doute faire face.normal.length=distance (distance étant la distance de la caméra à la face).
                  C'est là qu'on voit que pour gérer l'échelle, c'est une autre paire de manches...

                  DB

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

                    Salut Didier ! Merci pour ces conseils !!

                    @unknownuser said:

                    C'est là qu'on voit que pour gérer l'échelle, c'est une autre paire de manches...

                    Clairement...

                    @unknownuser said:

                    Pour se mettre à une distance correcte (face.normal est normé à 1), il faudra sans doute faire face.normal.length=distance (distance étant la distance de la caméra à la face).

                    Oui, ou alors faire juste un zoom étendu. Après c'est l'utilisateur qui zoom s'il veut..

                    Frenglish at its best !
                    My scripts

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

                      Re,
                      Désolé didier, mais je n'arrive pas à reproduire ce que tu dis...

                      @unknownuser said:

                      tu récupères la normale de la face (face.normal) et tu affectes camera.direction avec ce vecteur

                      Je ne peux pas modifier camera.direction... Brmbl 😡

                      EDIT : Bon en fait j'ai trouvé un moyen, mais ça m'a pas l'air dément... Surtout le camera.up....

                      Qu'en penses-tu Didier (ou Fredo6, si tu es dans le coin 😉 )??

                      def f2f
                      	model = Sketchup.active_model
                      	ent = model.selection[0]
                      	camera = model.active_view.camera
                      	camera.set(ent.normal.to_a,ent.normal.reverse.to_a,Geom;;Vector3d.new(1, 0, 0))
                      	Sketchup.send_action("viewZoomToSelection;")
                      end
                      

                      Frenglish at its best !
                      My scripts

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

                        Non, non ça va pas le faire:

                        camera = camera.set eye, target, up

                        eye et traget doivent être des point3d (même avec to_a, tu récupère un tableau normé entre 0 et 1, donc ton point va être faux), et up un vecteur (et up, c'est vers Z en principe, donc Geom::Vector3d.new(0, 0, 1) (à moins que tu veuilles avoir la tête en bas 😄 )

                        
                        def f2f
                           model = Sketchup.active_model
                           ent = model.selection[0]
                           normal=ent.normal
                           #calcul du centroide de la face;
                           centre = ent.centroid
                           camera = model.active_view.camera
                           camera.set(centre.offset(normal),centre,Geom;;Vector3d.new(0, 0, 1))
                           Sketchup.send_action("viewZoomToSelection;")
                        end
                        

                        Bon là tu vas me dire: comment je calcule le centre de gravité de la face ❓
                        Comme ça:
                        Tu ajoutes une méthode à la classe "Face":

                        
                        class Sketchup;;Face
                         def centroid
                          xs = ys = zs = 0.0
                          n = self.outer_loop.vertices.length #nombre de points du contour extérieur
                          self.outer_loop.vertices.each do |v| #pour tous les points du contour
                            xs += v.position.x #ajouter son X à la somme des x
                            ys += v.position.y
                            zs += v.position.z
                          end
                         return Geom;;Point3d.new(xs/n,ys/n,zs/n) #point3d des moyennes des coordonnées
                         end
                        end
                        

                        Ensuite si tu fais ent.centroid et que ent est une face, tu récupères son centroide, comme dans le code plus haut. Bon, j'ai pas testé mais ça devrait marcher.

                        DB

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

                          😲 😮 Houlà !!!
                          Impressionnant ! Ce pti truc, notamment

                          centre.offset(normal)
                          

                          Et aussi le code pour trouver le centroide !!

                          D'ailleurs, ta fonction doit prendre en compte les courbes, nan ? puisqu'il prend tous les sommets rencontrés ! Génial...

                          Merci à toi pour tout ça, ça fonctionne très bien !!

                          PS : Bon ça veut bien dire que j'ai du pain de deux livres (au moins... Ptet même une boulangerie) sur la planche.... Ya plein de trucs très très TREEES nébuleux encore.... En même temps, comme dirait un gars sur un autre forum
                          @unknownuser said:

                          Si vous êtes persuadés de tout savoir sur un sujet, c'est que vous en ignorez quelque chose...

                          😄

                          Frenglish at its best !
                          My scripts

                          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