sketchucation logo sketchucation
    • 登入
    Oops, your profile's looking a bit empty! To help us tailor your experience, please fill in key details like your SketchUp version, skill level, operating system, and more. Update and save your info on your profile page today!
    🔌 Smart Spline | Fluid way to handle splines for furniture design and complex structures. Download

    Webdialogs for SketchUp ......RIP!

    已排程 已置頂 已鎖定 已移動 Developers' Forum
    55 貼文 15 Posters 4.5k 瀏覽 15 Watching
    正在載入更多貼文
    • 從舊到新
    • 從新到舊
    • 最多點贊
    回覆
    • 在新貼文中回覆
    登入後回覆
    此主題已被刪除。只有擁有主題管理權限的使用者可以查看。
    • A 離線
      Aerilius
      最後由 編輯

      I will experiment again, but as far as I remember the single thread of SketchUp's Ruby freezes so that either the flag can not be set (because it is busy waiting) or whatever I do to wait never gets time to notice the changed flag.

      1 條回覆 最後回覆 回覆 引用 0
      • danielbowringD 離線
        danielbowring
        最後由 編輯

        @thomthom said:

        hmm... I can see times where async can be useful, but more often I want synchronous communication.

        How often does it actually need to be synchronous though? That is, the code must be executed before the next line. Also, how often can that not be turned into a async form (callbacks, promises, ...)?

        My main point is that predictability and expectations are important in API design. Also, the current implementation (window.location = ...) can have side effects - for example it will block/cancel any current requests, such as redirects or xhrs.

        1 條回覆 最後回覆 回覆 引用 0
        • thomthomT 離線
          thomthom
          最後由 編輯

          @unknownuser said:

          Also, the current implementation (window.location = ...) can have side effects - for example it will block/cancel any current requests, such as redirects or xhrs.

          Oh - haven't noticed that yet! ...that should be in the Lost Manual... that's important stuff.

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

          1 條回覆 最後回覆 回覆 引用 0
          • I 離線
            ilay7k
            最後由 編輯

            I vote for python. I work with it in cinema4d; ironpython - revit, robur(road software). And small [highlight=#ff4040:1yirh56j]c[/highlight:1yirh56j][highlight=#4000ff:1yirh56j]ythoning[/highlight:1yirh56j] 🤓

            and it has 64bit framework or anyCPU type...if current sku team can not port ruby to x64.

            1 條回覆 最後回覆 回覆 引用 0
            • T 離線
              tomot
              最後由 編輯

              I forgive Dan, he was probably off his meds again, although you can always count on him to give you his undivided attention when one is looking for a problem that needs solving. 😄 I'm not talking about dumping Ruby.

              You can see the Visual Programming, in the attached pic, the underlying Scripting is what makes the 3d surface appear, but its not something the user has to concern him or herself about. If you want to experiment you can replace a DIV module with a MULTI module and see the 3d result instantly, or replace TAN with a COS module, etc. etc.

              In addition, Download a free copy of Houdini from http://www.sidefx.com/index.php
              and you will see the same principles as grasshopper. Houdini calls it Procedural modeling, as opposed to Visual programming. The process is the same.

              other examples of what grasshopper can do generating experimental Architecture. http://formularch.blogspot.ca/


              grass.jpg

              my plugins
              tomot

              1 條回覆 最後回覆 回覆 引用 0
              • thomthomT 離線
                thomthom
                最後由 編輯

                Well, yea. Procedural modelling is a mighty interesting topic. However, there is nothing preventing that being done with the current Ruby API and WebDialog we already have.

                Procedural modelling can be implemented in whatever underlying scripting or programming language is available.

                I'm all for procedural modelling and I'm mighty interested in whatever project jolran is plotting.

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

                1 條回覆 最後回覆 回覆 引用 0
                • jolranJ 離線
                  jolran
                  最後由 編輯

                  Yet another Grasshopper framegrab...

                  One thing not discussed here regarding visual-flow-mombo-jumbo-programming is the complexity behind evaluating the chain of hierarchy, and when or what to update as soon as something changes in the gui.

                  I'm not sure Python would have any advantages over Ruby solving that computation..

                  But I guess that discussion is OT.

                  The GUI part is all very possible with webdialogs. In fact it's already happening 😉

                  1 條回覆 最後回覆 回覆 引用 0
                  • thomthomT 離線
                    thomthom
                    最後由 編輯

                    @jolran said:

                    In fact it's already happening 😉

                    🎉

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

                    1 條回覆 最後回覆 回覆 引用 0
                    • jolranJ 離線
                      jolran
                      最後由 編輯

                      What I've produced after months of work you or some of the others JS-nerds around here(you know who you are!) could probably have duddled together in a weekend or less, Thomthom 💚

                      Although the connector framework took some time to get acquainted with..

                      1 條回覆 最後回覆 回覆 引用 0
                      • Dan RathbunD 離線
                        Dan Rathbun
                        最後由 編輯

                        @tomot said:

                        I forgive Dan, he was probably off his meds again, ...

                        Or ON them. Sinus cold this past week!

                        @tomot said:

                        I'm not talking about dumping Ruby.

                        It's not feasible to have the app engine making two callbacks into 2 different scripting sub-processes.

                        IN truth... I am so weary of waiting for the Ruby API to be fixed, that I no longer care what language it is.

                        As long as it is fixed and kept updated.

                        If it's not Ruby, it is more likely to be Javascript IMHO.

                        I'm not here much anymore.

                        1 條回覆 最後回覆 回覆 引用 0
                        • A 離線
                          Aerilius
                          最後由 編輯

                          @unknownuser said:

                          Javascript IMHO.

                          Especially since such a partly implemented API already exists, and even a first plugin.
                          Even if JS is not a beauty of a language, it's benefits are the wide-spread and the billions that have been invested into its speed optimization (although Python/Ruby&Co. have also benefited from such developments).

                          For the original topic of this thread, neither webdialogs nor SketchUp's choice of scripting language matter. Node-based interfaces (previously mentioned as visual programming) are neither a replacement nor conflicting with webdialogs.

                          1 條回覆 最後回覆 回覆 引用 0
                          • I 離線
                            ilay7k
                            最後由 編輯

                            Interesting, why does ex-Asgvis use port of Ruby to Python and pyQt dialogs in vray for sketchup?

                            1 條回覆 最後回覆 回覆 引用 0
                            • thomthomT 離線
                              thomthom
                              最後由 編輯

                              They use such a bridge because they make V-Ray for SketchUp and V-Ray for Rhino share the same code-base so they can be developed in parallel.

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

                              1 條回覆 最後回覆 回覆 引用 0
                              • DavidBoulderD 離線
                                DavidBoulder
                                最後由 編輯

                                Interesting discussion. I work on OpenStudio which is a C++ SDK that includes a SketchUp plugin that uses ruby. We use tool called SWIG http://www.swig.org that gives us bindings to Ruby, Python, C# and potentially many other languages. Ruby is our most supported binding, but users are starting to use other bindings as well.

                                David

                                --

                                David Goldwasser
                                OpenStudio Developer
                                National Renewable Energy Laboratory

                                1 條回覆 最後回覆 回覆 引用 0
                                • AdamBA 離線
                                  AdamB
                                  最後由 編輯

                                  Dave,

                                  Marshalling parameters and providing some glue to call a C function isn't the problem - though I'm sure SWIG does a great job.

                                  The 'heavy lifting' is around exposing underlying C++ entities as first class objects in your chosen host language.

                                  Adam

                                  Developer of LightUp Click for website

                                  1 條回覆 最後回覆 回覆 引用 0
                                  • Q 離線
                                    qiucx
                                    最後由 編輯

                                    I do not know SU three month ago and never use ruby for programming. I would like to share my idea of three month usage.

                                    1. Webdialog is great idea for ui and HTML5 will extend this advantage. The disadvantage is that the UI provided by SU is not so good.
                                    2. The shortage of SU is that the api functions are not powerful, i expect more api to operate the SU and the support for ruby is not up to date. I'd like to easy use of new version ruby api in SU.
                                    3. SU should consider to support the usage in ipad and andriod base system.
                                    1 條回覆 最後回覆 回覆 引用 0
                                    • icehuliI 離線
                                      icehuli
                                      最後由 編輯

                                      I don't think ruby is the one to blame. It is very flexible. With the possibility to write ruby extensions in c/c++, on a Windows PC, one can also write it in C++/cli. Thus one can easily integrate any .net stuff. If one do not like webdialog, any other gui library can be linked through the extension. E.g. one can build c# plugin via p/invoke [DllImport("msvcrt-ruby18", CallingConvention = CallingConvention.Cdecl)]...
                                      For stuff like Visual Programming the most challenge thing is parametric model. In sketchup this is not easy, since entities can easy be manipulated. I mean e.g. if you simply delete the area of a face, it becomes 4 lines. The entities are not consistent. They are so flexible. And if this is not a issue, one can make some effort and create a Visual Programming interface for su.

                                      1 條回覆 最後回覆 回覆 引用 0
                                      • jolranJ 離線
                                        jolran
                                        最後由 編輯

                                        @unknownuser said:

                                        if you simply delete the area of a face, it becomes 4 lines. The entities are not consistent. They are so flexible. And if this is not a issue, one can make some effort and create a Visual Programming interface for su.

                                        That is why I use Open GL objects through a tool's draw class to visualize entities for "Visual Programming interface". It is to sketchy to try to alter Sketchups entities parametrically. Subdivide a face with a slider and youre toast, as you mention.

                                        The biggest problem, as I see it (so far) is that a webdialog freezes during any Ruby operation. Making webdialogs only really usable being used as a form-submit type of thing. One have to write very efficient Ruby code that masks that behavior.

                                        I wonder how other type of GUI's, you mention behave during Ruby operations..

                                        1 條回覆 最後回覆 回覆 引用 0
                                        • icehuliI 離線
                                          icehuli
                                          最後由 編輯

                                          One can use c# wpf or winform for the GUI. One can create another thread for the GUI. And use dispatcher for the calling, something like:
                                          in the ruby thread do
                                          wpfWindow.Dispatcher.BeginInvoke((Action)(() =>
                                          {
                                          wpfWindow.Show();
                                          wpfWindow.Activate();
                                          }), System.Windows.Threading.DispatcherPriority.ContextIdle, null);
                                          to open the window and call other functions in the gui.

                                          and in gui thread do
                                          using VALUE = System.Int32;
                                          ruby_extension.BeginInvoke(DispatcherPriority.Input,
                                          (Action)(() =>
                                          {
                                          VALUE state = 0;
                                          VALUE rb_mKernel = rb_eval_string_protect("Kernel", ref state);
                                          rb_funcall(rb_mKernel, rb_intern("puts"),
                                          rb_eval_string_protect(Encoding.UTF8.GetBytes("Hello, World!" + '\0'), ref state));
                                          }));
                                          to call ruby functions or evaluate ruby scripts.

                                          1 條回覆 最後回覆 回覆 引用 0
                                          • jolranJ 離線
                                            jolran
                                            最後由 編輯

                                            Oh, I wish I'd taken up on C or C++...

                                            Anyway, I gather Windows only ?

                                            Both plattforms ought to be provided to keep people happy.

                                            1 條回覆 最後回覆 回覆 引用 0
                                            • 1
                                            • 2
                                            • 3
                                            • 2 / 3
                                            • 第一個貼文
                                              最後的貼文
                                            Buy SketchPlus
                                            Buy SUbD
                                            Buy WrapR
                                            Buy eBook
                                            Buy Modelur
                                            Buy Vertex Tools
                                            Buy SketchCuisine
                                            Buy FormFonts

                                            Advertisement