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

    [Code] Print the transformation matrix

    Scheduled Pinned Locked Moved Developers' Forum
    14 Posts 5 Posters 2.0k Views 5 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.
    • thomthomT Offline
      thomthom
      last edited by

      Is it to visually inspect the matrix of entities, if so you can use this tool: http://forums.sketchucation.com/viewtopic.php?t=44859

      Thomas Thomassen — SketchUp Monkey & Coding addict
      List of my plugins and link to the CookieWare fund

      1 Reply Last reply Reply Quote 0
      • Dan RathbunD Offline
        Dan Rathbun
        last edited by

        Here's my simple brute force method:

          def trans_matrix_text( gt )
        
            return "Not a trnasformation object!" unless gt.is_a?(Geom;;Transformation)
            
            a = gt.to_a
            
            w = 3  # width
            a.each{|n| s = n.to_s.size; w = s if s>w }
            l = (w*4)+3
            
            # create a line output format string;
            fmt = "  | %#{w}s %#{w}s %#{w}s %#{w}s |\n"
            
            text = "\n"
            
            text << (32.chr*2)<<151.chr<<151.chr<<(32.chr*l)<<151.chr<<151.chr<<"\n"
            text << fmt % [  a[0].to_s,  a[1].to_s,   a[2].to_s,  a[3].to_s ]
            text << fmt % [  a[4].to_s,  a[5].to_s,   a[6].to_s,  a[7].to_s ]
            text << fmt % [  a[8].to_s,  a[9].to_s,  a[10].to_s, a[11].to_s ]
            text << fmt % [ a[12].to_s, a[13].to_s,  a[14].to_s, a[15].to_s ]
            text << (32.chr*2)<<151.chr<<151.chr<<(32.chr*l)<<151.chr<<151.chr<<"\n"
            
            return text
        
          end # def
        
          pt = Geom;;Point3d.new( 11,22,33 )
          text = trans_matrix_text( Geom;;Transformation.new(pt) )
          
          UI.messagebox( text, MB_MULTILINE, "Tranformation Matrix" )
        
        

        I have tweaked my system by copying Consolas font to the font used by dialogs, so I have monospaced text output. (It was easier than tweaking the resources in the executable after each update.)

        trans_matrix_MB.png

        trans_matrix_IO.png

        💭

        I'm not here much anymore.

        1 Reply Last reply Reply Quote 0
        • D Offline
          dacastror
          last edited by

          Thanks for responding, I have helped a lot. 😄

          me a question arises about the transformations. if I need to apply a transformation to an object but not in the principal coordinate axes, but the coordinate axes of a group (rotated) what should I use?

          (sorry for my bad English)

          1 Reply Last reply Reply Quote 0
          • thomthomT Offline
            thomthom
            last edited by

            You mean, transform an object around its own axis and not world axis?

            Thomas Thomassen — SketchUp Monkey & Coding addict
            List of my plugins and link to the CookieWare fund

            1 Reply Last reply Reply Quote 0
            • D Offline
              dacastror
              last edited by

              @thomthom said:

              You mean, transform an object around its own axis and not world axis?

              yes, exactly

              1 Reply Last reply Reply Quote 0
              • thomthomT Offline
                thomthom
                last edited by

                Create a local transformation and apply with with .transform!( tramsformation ) instead of setting the .transformation matrix manually. Or am I missing something?

                Thomas Thomassen — SketchUp Monkey & Coding addict
                List of my plugins and link to the CookieWare fund

                1 Reply Last reply Reply Quote 0
                • D Offline
                  dacastror
                  last edited by

                  @thomthom said:

                  Create a local transformation and apply with with .transform!( tramsformation ) instead of setting the .transformation matrix manually. Or am I missing something?

                  How to create a local transformation? I would like to see some sample piece of code to guide me

                  1 Reply Last reply Reply Quote 0
                  • D Offline
                    dacastror
                    last edited by

                    I wonder if there is any way to know the orientation of a group with respect to the axis of the world

                    1 Reply Last reply Reply Quote 0
                    • TIGT Offline
                      TIG Moderator
                      last edited by

                      You have the model's axes from X_AXIS etc and ORIGIN.
                      Then you have group.transformation.axes or group.transformation.xaxis etc... and group.transformation.origin too...
                      So you can find the relative locations [which are points3ds] and angles between axes [which are vector3ds] - see the methods for those types...

                      TIG

                      1 Reply Last reply Reply Quote 0
                      • thomthomT Offline
                        thomthom
                        last edited by

                        @dacastror said:

                        @thomthom said:

                        Create a local transformation and apply with with .transform!( tramsformation ) instead of setting the .transformation matrix manually. Or am I missing something?

                        How to create a local transformation? I would like to see some sample piece of code to guide me

                        <span class="syntaxdefault"><br />point </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> instance</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">transformation</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">origin<br />vector </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> instance</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">transformation</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">yaxis<br />rotation </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> Geom</span><span class="syntaxkeyword">;;</span><span class="syntaxdefault">Transformation</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">rotation</span><span class="syntaxkeyword">(</span><span class="syntaxdefault"> point</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> vector</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> 30</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">degrees </span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">instance</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">transform</span><span class="syntaxkeyword">!(</span><span class="syntaxdefault"> rotation </span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> </span>
                        

                        Thomas Thomassen — SketchUp Monkey & Coding addict
                        List of my plugins and link to the CookieWare fund

                        1 Reply Last reply Reply Quote 0
                        • D Offline
                          dacastror
                          last edited by

                          thank you very much Thomas and Tig that prompt reply! 😄

                          I will try to implement your suggestions right now

                          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