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

    Drop Geometry to Surface - Brainstorming for methods

    Scheduled Pinned Locked Moved Developers' Forum
    12 Posts 7 Posters 922 Views 7 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.
    • M Offline
      MartinRinehart
      last edited by

      I'm not sure I understand what you want to do. Is the object a ComponentInstance?

      Author, Edges to Rubies - The Complete SketchUp Tutorial at http://www.MartinRinehart.com/models/tutorial.

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

        SmartDrop does this, so maybe there are some ideas to be drawn out from it.

        http://forums.sketchucation.com/viewtopic.php?t=3474

        Hi

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

          @jim said:

          SmartDrop does this, so maybe there are some ideas to be drawn out from it.

          SmartDrop deals with the bounding box of the instances - not the actual geometry.

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

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

            @martinrinehart said:

            I'm not sure I understand what you want to do. Is the object a ComponentInstance?

            Drop a Group or ComponentInstance downwards to the surface underneath by the actual geometry inside.

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

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

              An instance will 'rest' on the surface on three points [?].
              Test all instance-vertices and their intersections with the surface - getting paired points.
              Take the pair with the shortest distance between them.
              We'll all that instance_pt0 and surface_pt0
              Drop the instance vertically onto that surface-point.
              Now retest [excluding the instance_pt0, that is now zero distance away].
              If at least two of the other tested vertex-points are also zero distance away you do nothing more as the instance now rests on the surface.
              If not then find the nearest matched pair again = instance_pt1 and surface_pt1.
              This time you can't 'drop' the instance - you need to rotate it in 3D so this second vertex is touching the surface NEAR surface_pt1 [can actually be on it!].
              To do that find the
              angle = surface_pt0.vector_to(surface_pt1)angle_between(surface_pt0.vector_to(instance_pt1))
              then the transformation to rotate the instance
              axis = surface_pt0.vector_to(surface_pt1).cross(surface_pt0.vector_to(instance_pt1)) tr = Geom::Transformation.rotation(surface_pt0, axis, -angle) ### it's untested! or maybe +angle ??? instance.transform!(tr)
              Now we have the instance rotated so that instance_pt0 and instance_pt1 both touch the surface...
              Retest for nearest matched pair again - this time omitting the 2 vertices that touch the surface.
              If there is at least one pair at zero distance do no more since you have three touching vertices; if not you need to re-rotate the instance again so that the third [nearest paired] vertex instance_pt2 again touches the surface NEAR the intersection at surface_pt2.
              We need a pivot_point relative to surface_pt0 and surface_pt1...
              vector01=surface_pt0.vector_to(surface_pt1) line01=[surface_pt0, vector01]
              Find the point on line01 nearest surface_pt2
              pivot_point = surface_pt2.project_to_line(line01)
              Find the vectors from pivot_point to surface_pt2 and instance_pt2 and the angle between them
              etctetc yawn!
              'cross' the vectoro1 and the vector pivot_point.vector_to(surface_pt2) to get the rotation_axis.
              again transform rotation the instance about pivot_point and rotation_axis by ang [or -ang???] and you should now have at least 3 points of contact ?????????????
              I ran out of steam during the last few bits of code but you get the idea........... πŸ‘Š

              TIG

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

                That's the thing - is brute force the only method? Testing all kinds of combinations?

                Another issue: say you find three points that rest of the surface, now, it could be that they are very close together - say a chair's leg, you might end up with the chair resting on one foot and the remaining three legs in the air.
                I guess we are then talking about taking mass and gravity into account - a whole lot more complicated?

                One way I was pondering about was - brute force iterate over various combinations and see in which combination the most points are closest to the surface ... ?

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

                1 Reply Last reply Reply Quote 0
                • jeff hammondJ Offline
                  jeff hammond
                  last edited by

                  not really sure how krill is doing this but maybe it's related?

                  http://forums.sketchucation.com/viewtopic.php?t=24676

                  .

                  dotdotdot

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

                    @unknownuser said:

                    not really sure how krill is doing this but maybe it's related?

                    http://forums.sketchucation.com/viewtopic.php?t=24676

                    .

                    Never noticed that plugin before.
                    It's not doing what I'm trying to do though - but still interesting. It subdivides the selected group and makes it fit to the surface underneath. Nearly like vacuum forming. Could come in handy.

                    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

                      @thomthom said:

                      I'm able to find the points facing the surface underneath - but then what?
                      Any clever way of fitting the object to the surface?

                      There's a theread over at GG, where a guy and I discussed this a few days ago.
                      He had a different purpose of course.
                      contour seen from above
                      .

                      I'm not here much anymore.

                      1 Reply Last reply Reply Quote 0
                      • N Offline
                        notareal
                        last edited by

                        Maybe kirill2008 Stick groups to mesh can inspire
                        http://forums.sketchucation.com/viewtopic.php?t=24676

                        Welcome to try [Thea Render](http://www.thearender.com/), Thea support | [kerkythea.net](http://www.kerkythea.net/) -team member

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

                          @notareal said:

                          Maybe kirill2008 Stick groups to mesh can inspire
                          http://forums.sketchucation.com/viewtopic.php?t=24676

                          Same as Jeff's link. πŸ˜‰

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

                          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