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

Accoler deux composants

Scheduled Pinned Locked Moved Français
9 Posts 4 Posters 10.8k 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.
  • K Offline
    kattig
    last edited by 29 Apr 2010, 15:22

    Bonjour,

    Je suis nouvelle sur ce forum ce qui n'empêche pas que j'ai cherché dans les différents topics si je trouvais mon bonheur mais en vain...

    Voici mon problème:

    J'ai crée un composant simple sur un fichier skp qui représente un morceau de clôture de largeur 6m.
    J'ai créé un fichier ruby afin de créer un clôture complète en fonction des coordonnées pris dans un fichier xml (position de chaque clôture) + la rotation afin de pouvoir les accoler.

    le problème est que cela ne se fait pas... Il y a toujours un décalage....

    Auriez-vous une idée de comment je peux joindre les bords de chaque morceau de clôture via ruby?

    Je vous remercie d'avance pour votre aide.

    Cordialement

    kattig

    Ps: je vous joint la capture d'écran


    capture d'écran

    1 Reply Last reply Reply Quote 0
    • J Offline
      Jean Lemire
      last edited by 30 Apr 2010, 12:44

      Bonjour.

      Je ne suis pas connaisseur en Ruby mais voici comment procéder manuellement.

      Une fois le premier morceau positionné, il faut saisir le deuxième morceau par un point d'extrémité qui devra ensuite s'accrocher sur un point d'extrémité du premier.

      Il faut être attentif à bien saisir le morceau par le bon point d'extrémité et ensuite bien le déposer sur le bon point d'extrémité.

      Avec un script Ruby, il faudrait probablement, pour chaque morceau, calculer les coordonnées du point final en fonction des coordonnées du point initial, de la longueur exacte du morceau et de l'angle que fait le morceau de clôture avec les axes rouge et vert. Ce point final servirait ensuite de position initiale pour le morceau suivant.

      Salutations.

      Jean (Johnny) Lemire from Repentigny, Quebec, Canada.

      1 Reply Last reply Reply Quote 0
      • P Offline
        pilou
        last edited by 30 Apr 2010, 15:46

        Component stringer by Chris Fulmer ne fait pas l'affaire ?

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

        1 Reply Last reply Reply Quote 0
        • K Offline
          kattig
          last edited by 2 May 2010, 08:09

          Bonjour Jean Lemire,

          Merci pour votre réponse.
          Le calcul est question dont vous faites référence avec déjà été précédemment fait. Ils se trouvent dans le fichier xml que j'ai parlé au début.
          Sinon, j'avais eu un message en mp me conseillant d'utiliser le boundingbox ou le glued_to mais:

          1. le boundingbox, je l'avais déjà testé manuellement sur la console pour voir ce que cela faisait mais cela ne donnait pas le rendu voulu...
          2. le glued_to ne concerne que les faces.. et ce n'est pas non plus ce que je recherche...

          Sinon, j'ai compris d'où venait mon problème:
          En utilisant le add_instance pour chaque point, cela rendait à chaque fois un composant et c'est à cause de cela que tous mes calculs étaient faussés et que les clotures n'étaient pas cote à cote..

          Ce que j'ai fait manuellement: j'ai éclaté tous les composants "cloture". A ce moment, presque toutes clotures se remettaient en place. Cependant, c'est "presque". Pour que le rendu soit complet, il fallait créer un composant sur toutes les entités des clotures.

          Niveau code, explosé un composant, j'utilise explode.
          Mais il me reste un soucis pour créer un composant sur toutes les entités générés par l'éclatement...
          Est-ce possible en ruby?
          Je sais que pour un group, on peut le créer grace à group.to_component.
          Y aurait-il un moyen de le faire via les entités?

          Merci d'avance pour votre aide.

          kattig

          PS: je suis toujours intéressée de connaître la solution pour coller les clôtures..

          1 Reply Last reply Reply Quote 0
          • P Offline
            pilou
            last edited by 2 May 2010, 09:57

            Il faut envoyer un PM à Fredo6 en français ou à TIG en anglais 😉

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

            1 Reply Last reply Reply Quote 0
            • K Offline
              kattig
              last edited by 2 May 2010, 12:07

              Bonjour Pilou,

              Merci pour votre réponse.
              Component stringer parait intéressant mais vu que j'ai déjà les coordonnées de chaque morceau (qui sont censé être bon), je préfèrerais rester sur cette voie...

              Je tiendrai compte de votre conseil en envoyant un MP à Fredo6.

              Merci

              Kattig

              1 Reply Last reply Reply Quote 0
              • A Offline
                adebeo
                last edited by 2 May 2010, 20:02

                Bonjour,

                je pense que tu devrais plutot analyser pourquoi tu as ce décalage par ce qu'il n'y a pas de raison que tes composants se éecalent.
                La méthode de tout exploser et de créer un composant fait un peu "pansement sur jambe de bois".

                tu peux mettre un petit bout de ton code et de xml ?

                adebeo
                Nos Formations sketchup
                Notre blog : www .adebeo.com/wp/
                Nos tutoriels: www .youtube.com/adebeo

                1 Reply Last reply Reply Quote 0
                • K Offline
                  kattig
                  last edited by 3 May 2010, 10:38

                  Bonjour Adebeo,

                  Effectivement, ce n'est pas la meilleur solution que de tout éclater...
                  En plus, cela créer une perte d'informations (qui est qui), etc.

                  J'ai vraiment tout cherché mais là, je ne sais plus où chercher de plus...

                  Voici un bout de xml:

                  
                  ....
                  <structlayer>
                    <name>Clotures</name>
                    <structure id="Cloture 1">
                     <modelfile>Cloture_image(skp6).skp</modelfile>
                     <point>
                      <x>601908.878706722</x>
                      <y>1815023.22060379</y>
                      <z>345</z>
                     </point>
                     <roll>0</roll>
                     <angle>1.85133587106625</angle>
                    </structure>
                    <structure id="Cloture 2">
                     <modelfile>Cloture_image(skp6).skp</modelfile>
                     <point>
                      <x>601907.217461881</x>
                      <y>1815028.98604095</y>
                      <z>345</z>
                     </point>
                     <roll>0</roll>
                     <angle>1.85133587106625</angle>
                   </structure>
                  ...
                  
                  

                  Et un bout de code ruby:

                  
                  ...
                  model = Sketchup.active_model
                  view = model.active_view
                  entities = model.entities
                  layers = model.layers
                  definitions = model.definitions	
                  ....
                  
                  structlayer.each_element('structure') do |structure|
                    point=structure.elements["point"]
                    x,y,z=point.elements.to_a
                  
                    roll=structure.elements["roll"].text
                    skpmodel=structure.elements["modelfile"].text
                    componentdefinition = definitions.load skpmodel
                    rotation_cloture = structure.elements["angle"]
                  
                    x = (x.text.to_f).m
                    y = (y.text.to_f).m
                    z = (z.text.to_f).m
                  
                    roll= (-1)*roll.to_f
                  
                    point = Geom;;Point3d.new(x, y, z)
                  
                    t = Geom;;Transformation.new
                    d = entities.add_instance componentdefinition, t
                    vector=Geom;;Vector3d.new 0,1,0
                    t = Geom;;Transformation.new d.transformation.origin, vector, roll
                  
                    d.transform! t  
                  
                    if(rotation_cloture)
                     vector = Geom;;Vector3d.new 0,0,1
                     t = Geom;;Transformation.new d.transformation.origin, vector, rotation_cloture.text.to_f
                     d.transform! t  
                     scaling_cloture = structure.elements["scaling"]
                     if(scaling_cloture)
                  	t = Geom;;Transformation.scaling d.transformation.origin, scaling_cloture.text.to_f, 1, 1
                  	d.transform! t
                     end
                  end
                  t = Geom;;Transformation.new point
                  d.transform! t
                  ...
                  

                  Franchement, je vous remercie infiniment si vous trouvez d'où vient le problème...

                  Cordialement

                  Kattig

                  1 Reply Last reply Reply Quote 0
                  • A Offline
                    adebeo
                    last edited by 9 May 2010, 20:56

                    Bonjour,

                    En reproduissant ton code mes composants sont bien alignés: je ne reproduis pas le problème. Si dessous des pistes de réflexion:

                    • Sur quelle version de sketchup est tu ?
                    • contrôle tes variable après changement de type pour vérifier que la conversion n'a pas créer de problèmes.
                    • essayé de positionner l'origine de ton composant au milieu de ce dernier. il me semble que ton décalage est de l'épaisseur du composant?
                    • les coordonnées x, y Z me paraissent ultra précise 10 chiffre après la virgule, ce qui me parait étrange ?
                    • essaye de réinitialiser des variables en début de loop.

                    tiens nous au courant

                    encore un petit truc :

                    est que ton composant n'aura pas des paramètre d'alignement ?

                    adebeo
                    Nos Formations sketchup
                    Notre blog : www .adebeo.com/wp/
                    Nos tutoriels: www .youtube.com/adebeo

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

                    Advertisement