• Login
sketchucation logo sketchucation
  • Login
⚠️ Libfredo 15.4b | Minor release with bugfixes and improvements Update

How do I get Mathn.rb to work?

Scheduled Pinned Locked Moved Developers' Forum
15 Posts 5 Posters 716 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.
  • E Offline
    Ellipser
    last edited by 27 May 2014, 21:54

    I'm trying to simplify my code by using Mathn, this is of course a ruby program that is an add-on. It works when I'm just using straight Ruby by itself, not involving Sketchup at all. (I can tell that Sketchup is using a different version of Ruby, when I do a query).

    When I use Mathn on Sketchup's Ruby, it doesn't work. Why is that? What do I need to do to get Mathn to work? Is there some additional plugin I need to put somewhere? Is there some "require" line of code I need to use? Can I have my code somehow use the "external" ruby software that I have outside of Sketchup and I play with using Notepad++? But, if I do this, it would make my plugin program a lot more complicated if someone else wants to use it.

    Anyway, if someone out there knows how to use "Mathn" in a plugin, please inform. TYIA.

    And, btw, I went looking in the Sketchup file to see where it keeps a copy of Ruby. I couldn't find it, so perhaps it's deeply embedded in the code and non-accessible? Just out of curiosity, does anyone know where Sketchup keeps the Ruby interpreter?

    1 Reply Last reply Reply Quote 0
    • D Offline
      driven
      last edited by 27 May 2014, 22:03

      upgrade to v2014, it uses Ruby 2.0 Standard Library

      > require 'mathn'
      Math.sqrt(4/9) 
      (2/3)
      > 
      Math.sqrt(4.0/9.0)
      0.6666666666666666
      > 
      Math.sqrt(- 4/9)  
      (0+(2/3)*i)
      

      john

      learn from the mistakes of others, you may not live long enough to make them all yourself...

      1 Reply Last reply Reply Quote 0
      • J Offline
        Jim
        last edited by 27 May 2014, 22:08

        The StdLib is here:

        C:\Program Files (x86)\SketchUp\SketchUp 2014\Tools\RubyStdLib

        I thought Mathn was left out for being incompatible, or drastically changing the way mathematics are represented in Ruby?

        Hi

        1 Reply Last reply Reply Quote 0
        • J Offline
          Jim
          last edited by 27 May 2014, 22:15

          I see, you are using SketchUp 13. Version 13 uses a very old and and obsolete version of Ruby and does not have any of the standard library files available.

          Why do you need from mathn?

          Hi

          1 Reply Last reply Reply Quote 0
          • D Offline
            driven
            last edited by 27 May 2014, 22:16

            @jim
            if I restart SU and try this without the require 'mathn'...

            > Math.sqrt(- 4/9)  
            Error; #<Math;;DomainError; Numerical argument is out of domain - "sqrt">
            <main>;in `sqrt'
            <main>;in `<main>'
            -e;1;in `eval'
            nil
            

            so, it appears to be functional on mac at least...

            john

            learn from the mistakes of others, you may not live long enough to make them all yourself...

            1 Reply Last reply Reply Quote 0
            • J Offline
              Jim
              last edited by 27 May 2014, 22:35

              But how many plugins count on the Math module not changing behavior?

              Hi

              1 Reply Last reply Reply Quote 0
              • T Offline
                tt_su
                last edited by 28 May 2014, 09:59

                I think we saw some plugins failing because of how "mathn" modified the base classes. But it was not one of the removed libs. We removed only what caused crashes.

                While we didn't remove the lib, we kind of hoped no one would use it, as it will break some plugins. I think I made changes to a couple of my plugins to account for the possibility of mathn.

                One example of what happens with mathn.
                ` n = 2 / 3
                0

                require "mathn"
                true

                m = 2 / 3
                (2/3)

                n.class
                Fixnum

                m.class
                Rational`

                1 Reply Last reply Reply Quote 0
                • E Offline
                  Ellipser
                  last edited by 28 May 2014, 12:51

                  Thanks. I'm going to upgrade to 2014. I'm using it for its complex numbers functions. That spirograph plugin I made crashes the system with relatively simple designs, and I am going to re-do it using complex numbers with the hope that it uses less system resources and averts a crash.

                  I'll post the plugin when I'm done with it.

                  Thanks for all the info too. Some of those questions were just wondering out loud.

                  When I really get good at Sketchup Ruby, I'll be able to make all the designs in the little booklet that comes with the kit. It's some really cool symmetry I think.


                  Sprirograph in 4 way.jpg

                  1 Reply Last reply Reply Quote 0
                  • T Offline
                    tt_su
                    last edited by 28 May 2014, 13:14

                    @ellipser said:

                    Thanks. I'm going to upgrade to 2014. I'm using it for its complex numbers functions. That spirograph plugin I made crashes the system with relatively simple designs, and I am going to re-do it using complex numbers with the hope that it uses less system resources and averts a crash.

                    Right, I doubt you crash for the reasons you think. If that's your motivation to use it then I don't really think it'll pay off.
                    When you crash, you get a BugSplat dialog, right? Did you submit these? Did you enter any info in them that we can look up? We might be able to help you pin-point the source of your crash and find a workaround with less guessing.

                    1 Reply Last reply Reply Quote 0
                    • E Offline
                      Ellipser
                      last edited by 28 May 2014, 16:05

                      @tt_su said:

                      @ellipser said:

                      Thanks. I'm going to upgrade to 2014. I'm using it for its complex numbers functions. That spirograph plugin I made crashes the system with relatively simple designs, and I am going to re-do it using complex numbers with the hope that it uses less system resources and averts a crash.

                      Right, I doubt you crash for the reasons you think. If that's your motivation to use it then I don't really think it'll pay off.
                      When you crash, you get a BugSplat dialog, right? Did you submit these? Did you enter any info in them that we can look up? We might be able to help you pin-point the source of your crash and find a workaround with less guessing.

                      I guess I'm not using the right terminology. It really doesn't crash, it just takes a long time to process, so long that I resort to a ctrl-alt-delete after about 5 minutes of waiting. I guess part of this is that I'm using a slow computer. Sometimes when I use that plugin, it says, "Sketchup is not responding" but if I wait long enough, it eventually completes the process.

                      So, really there is no crash, just that I'm using a slow computer. I never really thought that a crash is different than a process that takes too long and you get a Microsoft-level error message.

                      1 Reply Last reply Reply Quote 0
                      • T Offline
                        tt_su
                        last edited by 28 May 2014, 18:54

                        Are you just doing computations? Or are you generating geometry?
                        For computations adding more Ruby code (ie another Ruby library) won't speed things up. I've had to resort to writing Ruby C Extensions to do calculations fast. For just doing math C/C++ isn't that scary. We got examples of projects in Visual Studio and Xcode on GitHub that have everything set up to toy around.
                        If it's generating geometry there might be ways to get better performance - bulk operations etc.

                        Do you have some code to look at - that way we would know exactly what we're dealing with here?

                        1 Reply Last reply Reply Quote 0
                        • D Offline
                          Dan Rathbun
                          last edited by 28 May 2014, 21:17

                          @tt_su said:

                          I think we saw some plugins failing because of how "mathn" modified the base classes. But it was not one of the removed libs. We removed only what caused crashes.

                          While we didn't remove the lib mathn.rb, we kind of hoped no one would use it, as it will break some plugins.

                          With Ruby 2.x, developers can now use refinements for explicit files.
                          Using this lib should be OK within a refined file.

                          ADD: The lib may need to be wrapped in a refine block.

                          I'm not here much anymore.

                          1 Reply Last reply Reply Quote 0
                          • E Offline
                            Ellipser
                            last edited by 29 May 2014, 14:34

                            @tt_su said:

                            Are you just doing computations? Or are you generating geometry?
                            For computations adding more Ruby code (ie another Ruby library) won't speed things up. I've had to resort to writing Ruby C Extensions to do calculations fast. For just doing math C/C++ isn't that scary. We got examples of projects in Visual Studio and Xcode on GitHub that have everything set up to toy around.
                            If it's generating geometry there might be ways to get better performance - bulk operations etc.

                            Do you have some code to look at - that way we would know exactly what we're dealing with here?

                            I'm generating geometry on this plugin:http://sketchucation.com/forums/viewtopic.php?f=323%26amp;t=57790

                            I took a class in C++, so I can do that, and have done a significant amount of C++ for embedded microcontrollers.

                            I'd like to learn how to interface C++ with Sketchup, so I can speed things up. Basically my problem is that I need a road-map of sorts to get there.
                            First thing is, what C++ compiler should I use? Visual Studio? I don't want to pay Bill Gates $500 for just hobbyist work that I'm doing. I used DevC++ before. I'm not at all familiar with Xcode, so I guess I'll Google that after I'm done writing this post.

                            I've seen the SDK code on the Trimble site, but, what next? Step 1 would be of course to download a C++ compiler. Then what? Where do I put all the header files? Could you recommend a tutorial if there is one?

                            Ultimately, I'm going to interface Sketchup with my 3D printer, which is in the final stages of being made. (It already does plotting when provided G-code). Next step is mounting the extrusion head and generating G-code from a Sketchup file. Also, with just using the Dremel mount I have, I can do milling. I want to do some Celtic designs created in Sketchup and then milled into wood.

                            Thanks for you time, btw.

                            1 Reply Last reply Reply Quote 0
                            • D Offline
                              Dan Rathbun
                              last edited by 31 May 2014, 04:37

                              FYI: GCode project that needs someone to take it up.
                              http://sketchucation.com/forums/viewtopic.php?f=180%26amp;t=54636

                              I'm not here much anymore.

                              1 Reply Last reply Reply Quote 0
                              • T Offline
                                tt_su
                                last edited by 2 Jun 2014, 13:41

                                @ellipser said:

                                I'd like to learn how to interface C++ with Sketchup, so I can speed things up. Basically my problem is that I need a road-map of sorts to get there.
                                First thing is, what C++ compiler should I use? Visual Studio? I don't want to pay Bill Gates $500 for just hobbyist work that I'm doing. I used DevC++ before. I'm not at all familiar with Xcode, so I guess I'll Google that after I'm done writing this post.

                                https://github.com/SketchUp/ruby-c-extension-examples
                                That git repo includes Visual Studio and Xcode project examples for an Hello World extension - including the Ruby libs and headers we use.

                                @ellipser said:

                                I've seen the SDK code on the Trimble site, but, what next? Step 1 would be of course to download a C++ compiler. Then what? Where do I put all the header files? Could you recommend a tutorial if there is one?

                                The C SDK is for reading and writing SKP files -not for acting on the live model.

                                @ellipser said:

                                Ultimately, I'm going to interface Sketchup with my 3D printer, which is in the final stages of being made. (It already does plotting when provided G-code). Next step is mounting the extrusion head and generating G-code from a Sketchup file. Also, with just using the Dremel mount I have, I can do milling. I want to do some Celtic designs created in Sketchup and then milled into wood.

                                Nice! Got a project blog?

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

                                Advertisement