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

    Parametric modeling, anyone?

    Scheduled Pinned Locked Moved Corner Bar
    45 Posts 14 Posters 3.7k Views 14 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.
    • tkluyskT Offline
      tkluysk
      last edited by

      @jolran
      Yes, we've done basic work trying to get a C# <-> Ruby socket working, but we hit a first wall with threads in Ruby.

      We're starting a more serious attempt soon.

      The SketchUp team has been really supportive sofar, and the community is vibrant, with several relevant and similar projects undertaken by its members, so with everybody's help, we feel confident we can pull it off.


      [MatterMachine(http://maattermachine.com)]

      1 Reply Last reply Reply Quote 0
      • JQLJ Offline
        JQL
        last edited by

        I really feel you guys should PM a lot to each other and talk to the SU team a lot. I feel it's a bit of a waste to not mix both your efforts and you can be sure you'll get a lot of us asking for more!!!

        Best of luck to both!

        João

        www.casca.pt
        Visit us on facebook!

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

          +1
          on Joãos comment

          1 Reply Last reply Reply Quote 0
          • tkluyskT Offline
            tkluysk
            last edited by

            Our first phase effort will involve building a working socket to pass data between C# and Ruby/SU. We have a socket going, but there are some issues passing data between the socket thread and main thread in Ruby.

            Second issue we're tackling is efficiently pass (or at least display) large amounts of triangles and line segments between MatterMachine and SU. Building 20000 triangles using Ruby takes about a second. That is too slow!


            [MatterMachine(http://maattermachine.com)]

            1 Reply Last reply Reply Quote 0
            • JQLJ Offline
              JQL
              last edited by

              @tkluysk said:

              Building 20000 triangles using Ruby takes about a second. That is too slow!

              I've just crossed my eyes on the "Cricket for sketchup" thread, (Pixero's fault on Thea Render Forum 😄) where Thomthom talks about a way to visualize geometric operations before commiting them to actual geometry. This is supposedly faster than that sec you talk about, but I can't understand half of what is being discussed...

              Jolran is there discussing it too so you should PM each other even more!

              http://sketchucation.com/forums/viewtopic.php?f=323%26amp;t=51564#p465815

              Cheers,

              João

              www.casca.pt
              Visit us on facebook!

              1 Reply Last reply Reply Quote 0
              • jolranJ Offline
                jolran
                last edited by

                We have alread PM each other but we are not on the "same page".
                So there is no collaboration going on.

                That is simply the game.

                Apparently Thomthom is on the "job".

                It would have been common curtesy contacting me as well since I've been
                posting stuff about this plugin for over a year, and a longtime member of this forum..
                But I guess this is the new Trimble policy

                Anyway. You will have an alternative when this .net application keeps crashing. 😉
                I'm not going to back off!

                @unknownuser said:

                Building 20000 triangles using Ruby takes about a second. That is too slow!

                I have no problem with 20K displaying it in OPEN_GL.
                It will take a couple of seconds more even if you untriangulate the geometry.
                An ex:


                brepstest.gif

                1 Reply Last reply Reply Quote 0
                • tkluyskT Offline
                  tkluysk
                  last edited by

                  Jolran, please: I PM you for a reason.

                  As far as I'm concerned we are very much on the same page, big picture wise. But again, I respect and understand if you'd rather go solo on this.

                  ThomThom is not 'on the job'. He has given us some early advice, and has been very supportive, as he has been with you, I'm sure. And we hope to be able to tap his wisdom in the future.

                  Anyway, I take away your advice on the direct GL drawing. It's a good one.


                  [MatterMachine(http://maattermachine.com)]

                  1 Reply Last reply Reply Quote 0
                  • jolranJ Offline
                    jolran
                    last edited by

                    Dear Tom. Please check your PM.

                    @unknownuser said:

                    ThomThomThom is not 'on the job'. He has given us some early advice, and has been very supportive, as he has been with you, I'm sure

                    Ok, I missunderstood that part.
                    And yes, he has.

                    Best regards/
                    Joel

                    1 Reply Last reply Reply Quote 0
                    • tkluyskT Offline
                      tkluysk
                      last edited by

                      @ JQL & DOD3R thanks for your encouraging words. We know we'll need those over the coming months!


                      [MatterMachine(http://maattermachine.com)]

                      1 Reply Last reply Reply Quote 0
                      • tt_suT Offline
                        tt_su
                        last edited by

                        @jolran said:

                        It would have been common curtesy contacting me as well since I've been
                        posting stuff about this plugin for over a year, and a longtime member of this forum..
                        But I guess this is the new Trimble policy

                        Sorry jolran, I didn't connect the two project. I knew you where working on something paremetric - but I had no idea how far you'd gotten and the exact details. I haven't been able to keep up to date with everything the last year. Last time I checked in it was about concepts I think. The screens you have to show here is mighty impressive!
                        Rest assured we have no "policy" of excluding anyone.

                        1 Reply Last reply Reply Quote 0
                        • jolranJ Offline
                          jolran
                          last edited by

                          Don't worry Thomthom. You have helpt me so much in the past.
                          Therefore I was a bit surprised not getting any info at all, that's all.

                          I must admit, I have been cryptic regarding this project. So I have myself to blame.

                          1 Reply Last reply Reply Quote 0
                          • tt_suT Offline
                            tt_su
                            last edited by

                            And we also have to be careful about sharing information which people come to us about. Some of it can be sensitive information which isn't meant to be shared.

                            I really like what I have seen so far from both of your projects, and it would be great if there was some way you all could benefit from each other.

                            We are here to answer questions should there be any. And we're paying close attention to these types of extensions as we're aware that there are improvements to the API to be desired. Performance is one of them.

                            1 Reply Last reply Reply Quote 0
                            • JQLJ Offline
                              JQL
                              last edited by

                              I don't want to contribute to promote any argument here, but I take it Jolran's aproach is the way I'd opt as it is Sketchup based, but the web based viewer/product configurator is the sort of thing I'd need on some projects of mine I've just started to develop.

                              I really hope both of you achieve your goals wich will greatly contribute for the community as a whole. If, your combined achievements could be awesome faster though...

                              Again best of all,

                              João

                              www.casca.pt
                              Visit us on facebook!

                              1 Reply Last reply Reply Quote 0
                              • tkluyskT Offline
                                tkluysk
                                last edited by

                                @JQL Portability to the web/cloud is central for us, and you might agree that this is where all things CAD/3D will end up. But you're right: it makes for an odd marriage with SketchUp in its current state. But odd couples often work out great 😄

                                We can think of a few elegant ways of integrating, though. Many plugin developers already resort to C/++ extensions for vast performance increase over Ruby, and we hear a C# wrapper for the API is on the way as well. Those apporaches are not very different from what we have in mind. If we (as in you included!) can demonstrate exciting applications done this way, we might get the SU team to play long, I'm sure.

                                For a larger pov, the MatterMachine integration might help shape people's ideas of what SketchUp's presence in the cloud could mean. The Sketchup Warehouses (asset & extensions) could become natural places to interact with SketchUp files, rather than pulling them into the desktop app. The WebGL viewer for SU files is a great step in that direction.


                                [MatterMachine(http://maattermachine.com)]

                                1 Reply Last reply Reply Quote 0
                                • tkluyskT Offline
                                  tkluysk
                                  last edited by

                                  MatterMachine - SketchUp: first contact!

                                  This is through a socket, straight from the Unity webplayer plugin in Chrome, to a SketchUp Ruby thread.

                                  The Ruby threads seem to refresh very erratically and somewhat infrequently. By far not fast enough to sustain, say, a 30fps link between MM and SU. It might very well be that that's as good as Ruby threads get. They are not much faster when run in a shell, outside of SU, so SU is not really to blame here we think.

                                  If we rule out error from us, we will work through a C++ socket instead.


                                  SU-MM-first-contact.png


                                  [MatterMachine(http://maattermachine.com)]

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

                                    @tkluysk said:

                                    MatterMachine - SketchUp: first contact!

                                    This is through a socket, straight from the Unity webplayer plugin in Chrome, to a SketchUp Ruby thread.

                                    The Ruby threads seem to refresh very erratically and somewhat infrequently. By far not fast enough to sustain, say, a 30fps link between MM and SU. It might very well be that that's as good as Ruby threads get. They are not much faster when run in a shell, outside of SU, so SU is not really to blame here we think.

                                    If we rule out error from us, we will work through a C++ socket instead.

                                    (disclaimer - i don't write code)

                                    are you trying to get all of the drawing to happen in sketchup itself? because i would imagine that being pretty slow for this type of plugin as it's going to be creating lots of geometry very quickly and i don't think sketchup can handle it except for the most basic of operations.

                                    what if it accepts geometry from sketchup (say, a line in a model) as input.. then does all the calculating/previewing/etc outside of the sketchup model space (or maybe in the space but using different type of preview drawing than normal sketchup?).. once a user is satisfied, the results are then drawn ('baked' in grasshopper terms) with real sketchup geometry.

                                    or is what i'm describing already what you and jolran's sneakpeeks showing?

                                    dotdotdot

                                    1 Reply Last reply Reply Quote 0
                                    • tt_suT Offline
                                      tt_su
                                      last edited by

                                      That's pretty much what they are doing. They calculate the parametric data and then translate that to the SketchUp native geometry.

                                      Doing that is best done in a compiled language instead of Ruby - as Ruby is slow for that kind of work. For that Ruby C Extensions allow you to bridge any language you want really.

                                      Creating bulk geometry via the Ruby API is another challenge - we're aware of that and we want to improve that. These kinds of extensions are good use cases to study in order to optimize the SketchUp platform.

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

                                        ^
                                        oh, ok.
                                        in that case, I'd only advise that you advise the compiled language is one that can be used cross platform 😄 (C++ maybe?)

                                        even if mac/win version isn't developed in parallel, a language that doesn't make it impossible to go to mac further down the line.

                                        dotdotdot

                                        1 Reply Last reply Reply Quote 0
                                        • jujuJ Offline
                                          juju
                                          last edited by

                                          @numerobis said:

                                          💚

                                          powerful stuff

                                          makes me happy in my pants

                                          such a pity I won't be able to make use of this

                                          Save the Earth, it's the only planet with chocolate.

                                          1 Reply Last reply Reply Quote 0
                                          • tkluyskT Offline
                                            tkluysk
                                            last edited by

                                            @jeff We tried a non-blocking socket in the main Ruby thread for a bit (ie, not running in a slow second thread), and that actually worked fine. We're now using a C++ socket, which is still an order of magnitude faster. We are working on an efficient way to pass large amounts of geometry data from MatterMachine to SketchUp, at a respectable framerate (10+ fps). The socket seems fine with that.

                                            The bottleneck is rapidly shifting to the translation of that geometry data to SketchUp geometry using Ruby, like you guessed.

                                            On suggestion from Jolran and ThomThom, we are representing geo using fast(er) GL draw calls while the user is editing (using a slider or in-view gizmo). Ideally, we want to build proper SketchUp geo as soon as the user stops editing (mouseup). We'll see if that's realistic. We'd like to get a better user experience than the Grasshopper - Rhino interaction.

                                            At this time, it looks like we should be able to compile for both Mac & PC, and even older versions of SketchUp using Ruby 1.8.


                                            [MatterMachine(http://maattermachine.com)]

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

                                            Advertisement