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

    Does someone feel fit to adjust CGAL for usage out of ruby?

    Scheduled Pinned Locked Moved Developers' Forum
    13 Posts 7 Posters 829 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.
    • Chris FullmerC Offline
      Chris Fullmer
      last edited by

      Dude, we all are interested. Just post it!

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

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

        I'll publish it when I have a moment. Its still in development and no documentation. A couple more months should do the trick. These are the classes I've wrapped so far.

        rb_Offset_polygon_2
        rb_Point_2
        rb_Iso_cuboid_3
        rb_Nef_polyhedron_3
        rb_Polygon_with_holes_2
        rb_Polygon_2
        rb_Halffacet
        rb_X_monotone_curve_2
        rb_Offset_polygon_with_holes_2
        rb_SVertex
        rb_Aff_transformation_3
        rb_SHalfedge
        rb_Polygon_set_2
        rb_Lazy_exact_nt
        rb_Vertex
        rb_Point_3

        To compile it you'll need ruby, cgal and rice installed on your system. I'm on linux but if you get a windows or mac version compiled I'll post it too.

        If you can't wait, checkout my first shot at it (http://code.google.com/p/rgal/). Don't get used to the structure, though. I've changed most of how it works

        1 Reply Last reply Reply Quote 0
        • A Offline
          Aerilius
          last edited by

          That sounds good!!!

          As for compiling, I haven't yet tried much with Ruby C extensions.
          Since SketchUp on Linux runs in Wine (= Windows-like environment), wouldn't we need to compile it for Windows in any case? (Except that I have some plugins that bridge over and call faster native Linux tools.)
          Did you just do it for use in Ruby, or specifically for SketchUp?

          1 Reply Last reply Reply Quote 0
          • Dan RathbunD Offline
            Dan Rathbun
            last edited by

            Shame on you! . The rb_ prefix belongs to the Ruby Core !!

            Choose your own prefix, like cgal_

            I'm not here much anymore.

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

              @Aerilius Yes, I believe you do need to compile it under windows/mac. I think though that once someone has done that, the dll can then be used on other similar operating systems. The project I am working on doesn't interact with Sketchup directly. I have a Sketchup plugin that reads the Sketchup model and uploads it to a server. It is on the server that I have this library performing various geometric tasks. The result is then fed back into the Sketchup model. The library is indeed Sketchup independant. CGAL won't know what to do with a Sketchup::Point You'd have to do something like...
              p = Sketchup::Point3d(1,2,3) CGAL::Point_3::build(p.to_a)

              @Dan Those aren't the class names. Just a list of my cpp files that I copied and pasted. Rice takes care of creating the classes for me. I don't know what it does "under the hood" though.

              1 Reply Last reply Reply Quote 0
              • Dan RathbunD Offline
                Dan Rathbun
                last edited by

                @noelwarr said:

                @Dan Those aren't the class names. Just a list of my cpp files that I copied and pasted. Rice takes care of creating the classes for me. I don't know what it does "under the hood" though.

                Really? then I think you should edit your first post, as you clearly said:
                @noel said:

                These are the classes I've wrapped so far.

                However I was really referring to the C/C++-side function name prefixes.
                Use your own prefixes, please not the ones the Ruby Core uses.
                Or tell Rice to use "cgal_" as your function name prefixes.

                And I am glad to see the Ruby exposed methods are all wrapped in a CGAL module !

                I'm not here much anymore.

                1 Reply Last reply Reply Quote 0
                • A Offline
                  Aerilius
                  last edited by

                  Compiled fine and works fine in irb!
                  Tomorrow I'll try if I can cross-compile it.

                  Once you upload the latest version, can you update the requirements (saves a little research and time):
                  %(#000000)[sudo apt-get install **libcgal-dev libgmp-dev libmpfr-dev geom-view ruby-dev rubygems** sudo gem install **json rice**]

                  I had to modify dev.rb a little (json files were in additional quotes and evaled to string instead of hash): dev.rb

                  rgal.png

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

                    @dan rathbun said:

                    However I was really referring to the C/C++-side function name prefixes.
                    Use your own prefixes, please not the ones the Ruby Core uses.
                    Or tell Rice to use "cgal_" as your function name prefixes.

                    If it's just the internal C functions then it would make no difference what their name are. It's only the publicly exposed functions that matter.

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

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

                      I guess the starting point on a mac is instal cgal + depenencies...
                      Homebrew to the rescue

                      cgal version 3.8 for OS X
                      The formula for cgal was recently updated to version 3.8.

                      To install cgal on your Mac, open your Terminal application and run the following commands;

                      brew update
                      brew install cgal

                      This package, cgal, depends on;
                      cmake
                      boost
                      gmp
                      mpfr

                      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
                      • N Offline
                        noelwarr
                        last edited by

                        Here is is. Bare in mind it is work in progress. I've been working on it for months and spend a good few hours on it everyday. If anyone wants to contribute please let me know as there are a number of things that should be made clear before you get stuck in. I've made a lame attempt at documenting it. If anyone is seriously interested in using this they are gonna have to plough their way through cpp code. While the're doing this they might as well add to the documentation. I'm using comments and rdoc to automatically generate the docs. Have a look at ruby/Aff_transformation_3.rb to see how it works.

                        As far as dependencies go: cgal, gmp, mpfr, boost, qt3 and rice are necessary (I no longer use geomview)

                        http://noelwarr.github.com/rgal

                        DISCLAIMER: There is another project http://code.google.com/p/cgal-bindings/ that is writing language agnostic wrappers for CGAL using SWIG. The geometry factory is actively involved in this project, but I have too say it's rate of growth leaves much to be desired. It makes more sense to go in that direction but I found SWIG too complex to use.

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

                          I've been toying around on AWS today and I realised something. One of the RGAL's dependencies is Qt3. The precompiled CGAL library in the Ubuntu repository is NOT compiled with Qt3. This means that you have to compile CGAL yourself which is always a hassle. I don't know about other platforms though. It's possible that mac's precompiled CGAL works a charm

                          If bootstrap fails at rb_Nef_polyhedron_3.cpp because it can't find qapplication.h, you have two options.
                          *Either comment out the show method in the cpp file (dont forget to comment out the rice refference to it at the bottom of the file) and the two lines (qapplication and Qt_widget) in the rb_Nef_polyhedron_3.h file
                          *Or get your act together and compile CGAL from scratch remembering to set the Qt3 flag to true.

                          Ideally, it would be nice to have the Nef_polyhedron return a qt_widget object that ruby can then put in its own qt application. I have the feeling that that just isn't possible though.

                          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