• Login
sketchucation logo sketchucation
  • Login
๐Ÿค‘ SketchPlus 1.3 | 44 Tools for $15 until June 20th Buy Now

[Plugin] Perpendicular Face Tools (UPDATED 26-03-09)

Scheduled Pinned Locked Moved Plugins
201 Posts 64 Posters 174.4k Views 65 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.
  • T Offline
    TIG Moderator
    last edited by 17 Mar 2009, 09:26

    It's the original face that needs to be un-grouped. I agree that the face put on the end of the line is best left grouped to allow you to move its origin or rotate it about the line etc - you can explode it before doing a followme etc...

    Here's my thinking on the rotation conundrum...

    Let's do the square for now - seems to me that first you make a group containing a 'flat' square with its centre set at the origin and then move it to the select vertex at the end of the edge, transform rotating it so its face is perpendicular to the picked-vertex's edge... So far so good. Now we check the geometry of the square - it only has four vertices, so find the two with the lowest Z-value***. These are the vertices of the bottom-most edge. Now find the mid-point between them - we use this to work out the vector from the 'centre' (picked-vertex's location) to this mid-point and the angle between that and a 'vertical' vector in the same plane as the face: that 'angle' is the angle that we'll use later on to rotate everything so that it is 'orthogonal' to the XYZ axes.

    Let's call the centre 'c' and two lowest points 'p1' and 'p2' - these are known - and the mid-point we'll call 'm' - that we need to get...
    To find a point mid-way between two others use...

     m = Geom;;Point3d.linear_combination(0.5,p1,0.5,p2) 
    

    We can then get the vector from 'c' to 'm', let's call it 'cm' - simply subtract the point values...

     cm = c - m 
    

    Now to find the 'vertical vector' (let's call it 'vv') - first find a point ('t') 1 unit away from 'c' above the surface of the face by the edge's [positive] 'vector' and then project it down till it hits the face at 'v' - the line between 'c' and 'v' is the 'vertical vector' against which we'll rotate the face...

     t = c.offset(vector,1)
     ang = (t-c).angle_between(t-[0,0,-1]) # i.e. the tilt on face normal
     hyp = 1/Math;;cos(ang) # i.e. the drop from t to face plane
     h = [t.x,t.y,(t.z)-hyp] # i.e. the point t projected onto the face's plane
     vv = c-h # the vertical vector
    
    

    Now get it's angle to the 'mid-point vector'

     angle = vv.angle_between(cm) 
    

    You then need to work on the face of the square and transform/rotate the whole thing around the picked-vertex's edge by the 'angle'... Done.

    ***Note: IF the Z of all of the square's vertices is the same [simple test to look at the four] then it's 'flat' so then we'll find the lowest two Ys and rotate it to be orthogonal about the Z axis instead. Also note that in this 'flat' case the 'vertical' vector needs to be (0,-1,0) to match the Y...

    For the custom face do something similar but group the face, copy it, explode the original back to where it was and then use the copy's bounding box centre as its 'origin', move and transform it to the vertex, use the new location's bounds to get an enclosing rectangle to get minimum Zs etc, all as above etc etc...

    I haven't tried this code, but it should at least form the basis of something that''ll work...

    .

    TIG

    1 Reply Last reply Reply Quote 0
    • C Offline
      Chris Fullmer
      last edited by 17 Mar 2009, 18:44

      Thanks for walking me through this TIG. Hopefully I'll get a chance to try to get this implemented tonight or tomorrow. Lots of work-work and school-work today ๐Ÿ˜ž

      Chris

      Lately you've been tan, suspicious for the winter.
      All my Plugins I've written

      1 Reply Last reply Reply Quote 0
      • C Offline
        cosycat
        last edited by 17 Mar 2009, 21:19

        looking at this, I wondered how difficult it would be to create a script that 'blended' between two diffrent faces at either end of a line.

        1 Reply Last reply Reply Quote 0
        • C Offline
          Chris Fullmer
          last edited by 17 Mar 2009, 22:40

          Unfortunately, it would be very difficult - for me! I have thought similar thoughts, and that is a plugin that is on my wishlist. I am working on anther ruby that begins to get into that arena of morphing from one shape to another, but it is really new territory for me. Maybe in time ๐Ÿ˜„

          Chris

          Lately you've been tan, suspicious for the winter.
          All my Plugins I've written

          1 Reply Last reply Reply Quote 0
          • X Offline
            xrok1
            last edited by 17 Mar 2009, 22:52

            @cosycat said:

            looking at this, I wondered how difficult it would be to create a script that 'blended' between two diffrent faces at either end of a line.

            Like this?


            cap.jpg

            โ€œThere are three classes of people: those who see. Those who see when they are shown. Those who do not see.โ€

            http://www.Twilightrender.com try it!

            1 Reply Last reply Reply Quote 0
            • T Offline
              thomthom
              last edited by 17 Mar 2009, 23:01

              Not like that. That simply scales the shape. They are talking about morphing for instance a circle shape to a star shape.

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

              1 Reply Last reply Reply Quote 0
              • X Offline
                xrok1
                last edited by 17 Mar 2009, 23:05

                that would be a loft wouldn't it?

                โ€œThere are three classes of people: those who see. Those who see when they are shown. Those who do not see.โ€

                http://www.Twilightrender.com try it!

                1 Reply Last reply Reply Quote 0
                • P Offline
                  pilou
                  last edited by 18 Mar 2009, 00:35

                  In Nurbs language it's more kown as a sweep ๐Ÿ˜„sweep.jpg

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

                  1 Reply Last reply Reply Quote 0
                  • C Offline
                    Chris Fullmer
                    last edited by 25 Mar 2009, 07:17

                    WOOHOO!!! I finally got it. Little by little I"m understanding transformations....after getting TONS of help from TIG on this script, and Fredo and pretty much everyone else. So I'm pleased to announce the updates to this script:

                    Perpendicular Face Tools
                    Description: Three Perpendicular Face tools to help create faces perpendicular to the end of lines.
                    Usage: Activate it at Plugins>Chris Fullmer Tools>Perpendicular Line Tools. Change the size of squares by entering a new dimension into the measuerments box after the face has been created. Change the radius of circles by entering "12s" for 12 sides into the measurements box. To use the custom face tool, create your face flat on the groundplane. The script attempts to line up the x axis as the bottom edge of the face.

                    v1.0 Updates:

                    • The original face now explodes upon exiting the custom face tool.
                    • Added support so that faces will stay oriented with a flat edge on the horizontal plane.
                    • Holding ctrl while creating a face will over-ride the flat horizontal feature and revert back to the default SketchUp "Arbitrary Rotation".
                    • Now faces can be added anywhere to a line - on the endpoint (existing feature), in the middle of a line, or on a vertex of 2 lines. The vertex of 3 lines is not supported.

                    I think that is everything that was requested on this script and more. Faces now orient better, the custom face gets exploded on exiting the tool, AND being able to add perpendicular faces to a single edge, an endpoint and the vertices of 2 lines. Please let me know if there are bugs. Its quite possible. I've tried to test it thoroughly, but its always possible I've missed something ๐Ÿ˜„

                    Hope it helps,

                    Chris

                    PS. I think I'll do some icons for this tomorrow. Also, the video is not updated yet on the front page. I'm too tied to do it right now. I'll do it tomorrow.

                    Lately you've been tan, suspicious for the winter.
                    All my Plugins I've written

                    1 Reply Last reply Reply Quote 0
                    • C Offline
                      Chris Fullmer
                      last edited by 25 Mar 2009, 17:00

                      I found a little bug where the custom face needs to be drawn with the back face pointing upwards. I'll try to fix that shortly so the face can be facing either way.

                      Chris

                      Lately you've been tan, suspicious for the winter.
                      All my Plugins I've written

                      1 Reply Last reply Reply Quote 0
                      • W Offline
                        wolfy
                        last edited by 25 Mar 2009, 19:54

                        Chris, thank you so much for this, as well as other, wonderful scripts. Your expertise is highly appreciated!! โ˜€

                        1 Reply Last reply Reply Quote 0
                        • C Offline
                          Chris Fullmer
                          last edited by 25 Mar 2009, 20:13

                          Thanks! I'm currently sitting at my computer pulling my hair out though because I can't make the custom face tool work more solidly......grrr. If I draw it, and then run the script, it normally works. But if I reverse it, its borken. OR sometimes just moving it or making a copy of it and using the copy is enough to make my script not orient it correctly. I've still got some ideas to fix it so no matter what you do it, it will orient itself uniformly. I'll get it. Once I do, I'll upload a new version. I've even got a great toolbar for the new update.

                          Chris

                          Lately you've been tan, suspicious for the winter.
                          All my Plugins I've written

                          1 Reply Last reply Reply Quote 0
                          • kenK Offline
                            ken
                            last edited by 25 Mar 2009, 20:19

                            Chris

                            Thanks for the update. However, now I have two Chris Fullmer Menu in my plugins. Is that what you intended?

                            #1
                            Scale and Rotate
                            Component on Faces
                            Select Lines by Lenght

                            The other:
                            #2
                            Perpendicular Face Tool
                            3 Line Tool

                            Thanks for all your work

                            Ken

                            Fight like your the third monkey on Noah's Ark gangway.

                            1 Reply Last reply Reply Quote 0
                            • C Offline
                              Chris Fullmer
                              last edited by 25 Mar 2009, 20:25

                              Hmm, that is not at all what I intended. I'll check to see if I messed up my menu system somehow. Thanks for letting me know,

                              Chris

                              Lately you've been tan, suspicious for the winter.
                              All my Plugins I've written

                              1 Reply Last reply Reply Quote 0
                              • jeff hammondJ Offline
                                jeff hammond
                                last edited by 25 Mar 2009, 20:28

                                sweet
                                thank you!

                                dotdotdot

                                1 Reply Last reply Reply Quote 0
                                • jeff hammondJ Offline
                                  jeff hammond
                                  last edited by 25 Mar 2009, 21:47

                                  1 thing, (and this is more/less for discussion because i'm well aware i might be in the minority)

                                  with the perp.circle, would you rather have the vertex of the segments at the top -or- one of the segments being horizontal (the way it's working now).

                                  personally, i think it would be better if the vertex were at the top so diameter/radius lines can be drawn vertically or horizontally..

                                  (am i even making any sense? ๐Ÿ˜„ )

                                  that aside, i really like the change to perp.square.. having the horizontal edge is great.

                                  dotdotdot

                                  1 Reply Last reply Reply Quote 0
                                  • P Offline
                                    putnik
                                    last edited by 25 Mar 2009, 23:13

                                    @unknownuser said:

                                    having the horizontal edge is great.

                                    +1. Thank you, Chris.

                                    http://keshas.info

                                    1 Reply Last reply Reply Quote 0
                                    • jeff hammondJ Offline
                                      jeff hammond
                                      last edited by 26 Mar 2009, 00:06

                                      for example... drawing something like this:

                                      screenshot 2.jpg

                                      would be 3 or 4 steps faster if the vertex of the circle were up top instead of the segment.. regardless of that part though, this script is way better than having to manually draw the perpendicular plane to begin with..

                                      dotdotdot

                                      1 Reply Last reply Reply Quote 0
                                      • C Offline
                                        Chris Fullmer
                                        last edited by 26 Mar 2009, 01:06

                                        ok, I have updated it again. This time it has a toolbar:

                                        per_faces_toolbar.jpg

                                        I've also attempted to fix some serious issues with the custom face tool and how it orients itself. Unfortunately, its still only about 99% right. There are times when the custom face tool will not orient the face as expected. Often when used on a line that perfectly on the y axis. I'm sure its just a bug in how I'm rotating. But I've looked at the code too long and its really messy. So maybe later I'll re-write it from scratch to clean it up.

                                        As for rotating so that a point is always up.....I'm listening. I don't quite get the benefit by the example you showed though. I generally like to draw through circles on the mid point of edges, not on the vertices. But I might be the only one. So do you have another example that shows how it would be useful to do it with a vertice always on top?

                                        I also updated the video on the front page.

                                        Chris

                                        Lately you've been tan, suspicious for the winter.
                                        All my Plugins I've written

                                        1 Reply Last reply Reply Quote 0
                                        • X Offline
                                          xrok1
                                          last edited by 26 Mar 2009, 01:33

                                          @unknownuser said:

                                          1 thing, (and this is more/less for discussion because i'm well aware i might be in the minority)

                                          with the perp.circle, would you rather have the vertex of the segments at the top -or- one of the segments being horizontal (the way it's working now).

                                          personally, i think it would be better if the vertex were at the top so diameter/radius lines can be drawn vertically or horizontally..

                                          (am i even making any sense? ๐Ÿ˜„ )

                                          that aside, i really like the change to perp.square.. having the horizontal edge is great.

                                          if you type an uneven number of segments you will have a vert at the top. ๐Ÿ˜‰

                                          โ€œThere are three classes of people: those who see. Those who see when they are shown. Those who do not see.โ€

                                          http://www.Twilightrender.com try it!

                                          1 Reply Last reply Reply Quote 0
                                          • 1
                                          • 2
                                          • 3
                                          • 4
                                          • 5
                                          • 10
                                          • 11
                                          • 3 / 11
                                          • First post
                                            Last post
                                          Buy SketchPlus
                                          Buy SUbD
                                          Buy WrapR
                                          Buy eBook
                                          Buy Modelur
                                          Buy Vertex Tools
                                          Buy SketchCuisine
                                          Buy FormFonts

                                          Advertisement