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.
    • 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