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

    Dialog with Webdialog

    Scheduled Pinned Locked Moved Developers' Forum
    12 Posts 5 Posters 525 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

      Yea, I'm not happy about the Ruby/JS link. Converting all data to string and parsing it back into it's correct value... urkh!
      As you mentioned - with small amount of data it's awkward. With larger amount it's horrible as you'll suffer from the limit you can deal with in an URL (can't remember what this figure is). So larger pieces of data have to be broken into chunks - just to add to the pain.

      I'm sorry that I haven't gotten any answers for you. I've found no good solutions for this. I'm paying close attention to this thread.

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

      1 Reply Last reply Reply Quote 0
      • chrisglasierC Offline
        chrisglasier
        last edited by

        @martinrinehart said:

        I have finally got control of communication between Ruby and JavaScript. And I have concluded that, for something small (sending a string from either to the other) this was way too complicated.

        Anybody have ideas for making this easier so that those who come after don't have to fight through this stuff?

        And an explanation of "skp:get_data@" as an URL would be welcome. An explanation that errs on the side of verbosity would be welcome.

        Have a look at this topic and download the plugin. Even if you are not interested in managing scenes (from your book I know you are!) compare the .rb and .js file just to see how easy it is.

        @thomthom said:

        Yea, I'm not happy about the Ruby/JS link. Converting all data to string and parsing it back into it's correct value... urkh!

        If you keep to the key/value concept you can run out arrays from strings that need only be comma delimited:

        ` list = rubyString.split(",")

        for(a=0; a<list.length; a+=2){
        if(list[a] == 0){
        rn=list[a+1]
        sceneReformComponentsArray[rn] = new Array() } //new record
        sceneReformComponentsArray[rn][list[a]] = list[a+1] } } //standard`

        The more you code the keys and values with numbers the smaller your stored string.

        @thomthom said:

        As you mentioned - with small amount of data it's awkward. With larger amount it's horrible as you'll suffer from the limit you can deal with in an URL (can't remember what this figure is). So larger pieces of data have to be broken into chunks - just to add to the pain.

        Just do something like this:

        In .html file:

        <input id = box type = hidden>

        In .js file:

        ` document.getElementById("box").value = saveR.toString(",")

        window.location = "skp:sceneTreeStringSave"`

        In .rb file

        $dlg.add_action_callback("sceneTreeStringSave") {|d, p| v = d.get_element_value("box") model = Sketchup.active_model create_if_nil = true masterDic = model.attribute_dictionary "master",create_if_nil masterDic[0] = v puts masterDic[0] }

        According to Scott:

        There doesn't appear to be a limit on the amount of data you can transfer this way with any
        of the versions of IE that we test with. (6, 7, and 😎

        source

        See also this topic to see how I (and, it seems, RickW) make the interaction between the SU display and web dialog.

        Hold tight!

        Chris

        With TBA interfaces we can analyse what is to be achieved so that IT can help with automation to achieve it.

        1 Reply Last reply Reply Quote 0
        • M Offline
          MartinRinehart
          last edited by

          @chrisglasier said:

          Even if you are not interested in managing scenes (from your book I know you are!)

          Hope you like the book, but you haven't paid for it. Feedback please!

          On topic, is it your contention that the existing JS/Ruby communication is as simple as possible? Lots of software is produced with the management directive "We've got to ship something, even if it's ugly." Engineer says (to self) "This is crap but it'll work." and (to boss) "OK, I'll go with what we got."

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

          1 Reply Last reply Reply Quote 0
          • chrisglasierC Offline
            chrisglasier
            last edited by

            @martinrinehart said:

            @chrisglasier said:

            Even if you are not interested in managing scenes (from your book I know you are!)

            Hope you like the book, but you haven't paid for it. Feedback please!

            I understand what you mean but it sounds like I'm a criminal if you don't give the context, viz:

            @unknownuser said:

            This is commercial, for-profit work. At some point there will be a send-me-money feature added. At this point (mid-summer, 2009) that feature does not exist. The whole price right now is feedback.

            The part I might be interested in is not yet started. Are you waiting for SCF to supply enough information, then write it and then charge us. Doesn't sound quite right eh!

            As far as I am concerned what exists is good enough to support a business operating system that could be as successful as bar code based operations in supermarkets i.e. we need digital machines more than we need better software.

            My regards

            Chris

            With TBA interfaces we can analyse what is to be achieved so that IT can help with automation to achieve it.

            1 Reply Last reply Reply Quote 0
            • M Offline
              MartinRinehart
              last edited by

              @chrisglasier said:

              The part I might be interested in is not yet started.

              Chris, I tried your plugin. You won't need the Ruby half of the tutorial. You're way past where I'm going.

              I'm identifying a small subset of Ruby that is suitable for teaching beginning programmers and then using that language subset to create geometry. For "UI" we'll put pseudo-constants into the beginning of each Ruby and then edit the code:

              # stairs.rb
              RISE = 7
              RUN = 9
              NSTEPS = 14
              ...
              
              

              Going farther requires Ruby, HTML, CSS and JavaScript - too much for a tutorial on SketchUp modeling.

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

              1 Reply Last reply Reply Quote 0
              • Chris FullmerC Offline
                Chris Fullmer
                last edited by

                Have you looked at my tutorials on beginning ruby Martin? They are far from perfect, but perhaps might give you some ideas of what you do or do not like about my approach. You know, a starting point to build on, or move away from. Either way, it might be helpful.

                They are both located in the sketchucation tutorials section (not the tutorials forum, the actualy tutorials.sketchucation.com place). But I think they are offline currently due to some site remodeling. THey should hopefully be back up shortly.

                Chris

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

                1 Reply Last reply Reply Quote 0
                • M Offline
                  MartinRinehart
                  last edited by

                  @chris fullmer said:

                  Have you looked at my tutorials on beginning ruby Martin?

                  No, I haven't but I am VERY interested. MartinRinehart at gmail dot com.

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

                  1 Reply Last reply Reply Quote 0
                  • chrisglasierC Offline
                    chrisglasier
                    last edited by

                    @martinrinehart said:

                    Chris, I tried your plugin. You won't need the Ruby half of the tutorial. You're way past where I'm going.

                    Don't you think as baby-boomers we should offer potential opportunities given our experience, not just regurgitate what already exists?

                    My regards

                    Chris

                    With TBA interfaces we can analyse what is to be achieved so that IT can help with automation to achieve it.

                    1 Reply Last reply Reply Quote 0
                    • M Offline
                      MartinRinehart
                      last edited by

                      @chrisglasier said:

                      Don't you think as baby-boomers ...
                      Chris

                      As baby boomers? Are you jumping to conclusions?

                      I'd say more, but I've got to go turn Greetings from Asbury Park over. The A side just finished.

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

                      1 Reply Last reply Reply Quote 0
                      • R Offline
                        RickW
                        last edited by

                        @martinrinehart said:

                        On topic, is it your contention that the existing JS/Ruby communication is as simple as possible? Lots of software is produced with the management directive "We've got to ship something, even if it's ugly." Engineer says (to self) "This is crap but it'll work." and (to boss) "OK, I'll go with what we got."

                        It's really not too bad. If you give all your form fields an ID, you can reference them in ruby without relying on the info passed in the callback. In fact, there are times I don't pass any data in the callback itself, instead using

                        dialog.get_element_value("myfield")
                        

                        to access the information I need. I only pass the info through the callback if the info is limited to one data set, and then only occasionally.

                        RickW
                        [www.smustard.com](http://www.smustard.com)

                        1 Reply Last reply Reply Quote 0
                        • M Offline
                          MartinRinehart
                          last edited by

                          @rickw said:

                          If you give all your form fields an ID, you can reference them in ruby without relying on the info passed in the callback. In fact, there are times I don't pass any data in the callback itself, instead using

                          dialog.get_element_value("myfield")
                          

                          to access the information I need. I only pass the info through the callback if the info is limited to one data set, and then only occasionally.

                          Excellent tip. Thanks.

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

                          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