sketchucation logo sketchucation
    • Login
    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!
    🫛 Lightbeans Update | Metallic and Roughness auto-applied in SketchUp 2025+ Download

    Sketchup's API and Ruby

    Scheduled Pinned Locked Moved Developers' Forum
    5 Posts 3 Posters 1.5k Views 3 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.
    • A Offline
      arnouff
      last edited by

      my question:

      Is it possible to extract the "drawing zone" from sketchup and then, use it somewhere else using Ruby and Sketchup's API?

      Id like to insert the drawing zone in a selfmade form....... and use it code behind with Ruby. Or, remove all from the original sketchup's main screen.....menus, toolbars and the rest.

      first: is it possible ?
      if yes, how can i do ?

      thanks
      PL

      1 Reply Last reply Reply Quote 0
      • MarianM Offline
        Marian
        last edited by

        First of all you should ask yourself if it's legal

        http://marian87.deviantart.com/

        1 Reply Last reply Reply Quote 0
        • C Offline
          CPhillips
          last edited by

          I have done it. But its tricky and windows only. First I used windows messages to remove all the Sketchup UI elements leaving you with just a bare window. Then I used a C# app to grab that window and set its parent to be a panel in a form. It worked pretty well. But that was as far as I took it.

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

            mmm, legal, it's not.
            but im tricky for school.

            ... possible to fit the "drawing zone" into a webdialog ?
            ... is there any "transparency" property for a webdialog?

            i suppose the best way ("or the easy way") is a floating webdialog as a control bar
            over a naked sketchup original window.

            control bar connected to Ruby functions.

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

              To share, this is a post i found about it (by cphillips)

              Additionnal stuff:
              http://www.suwiki.org/suwiki/index.php?title=Ruby_Tutorial_-Dialog_Boxes_and_WIN32API%28Advanced%29

              the Win32API.so link below wont work
              you can get Win32API.so from there
              After you install ruby into a folder, say c:\RUBY, then Win32Api.so will be in
              c:\RUBY\lib\ruby\1.8\i386-mswin32

              the original post:
              http://groups.google.com/group/Ruby-API/browse_thread/thread/52ade11766148a57

              -The function is called "cleanSlate()".
              -It will remove all the menus and the window boarder.
              -You need to manually disable any toolbars you dont want.
              -Requires win32API.so lib(attached).

              NOTES:
              -It works by looking for a window named "Sketchup - Untitled".
              Therefore it will only work when no model is loaded. You could change
              this by editing the ruby.
              -It wont fully work at startup because the "Plugins" menu gets created
              after the cleanSlate() function is run.

              Enjoy
              Chris
              http://groups.google.com/group/sketchup-Pro-Groups/web/win32API.so
              http://groups.google.com/group/sketchup-Pro-Groups/web/cleanSlate.rb

              <code>
              require "sketchup.rb"
              require "Win32API"

              def cleanSlate()
              #setup win32 calls.
              findWindow=Win32API.new("user32.dll", "FindWindow", ['P','P'], 'N')
              sendMessage=Win32API.new("user32.dll", "SendMessage",['N','N','N','P'], 'N')
              getMenu=Win32API.new("user32.dll", "GetMenu", ['N'], 'N')
              getMenuItemCount=Win32API.new("user32.dll", "GetMenuItemCount",['N'], 'N')
              getSubMenu=Win32API.new("user32.dll", "GetSubMenu", ['N','N'], 'N')
              deleteMenu=Win32API.new("user32.dll", "DeleteMenu", ['N','N','N',],'N')
              drawMenuBar=Win32API.new("user32.dll", "DrawMenuBar", ['N'], 'N')
              setWindowLong=Win32API.new("user32.dll", "SetWindowLong",['N','N','N'], 'N')

              #find the sketchup window
              pw=findWindow.call(0,"Untitled - Sketchup")
              
              #remove the menu
              menu=getMenu.call(pw)
              while(getMenuItemCount.call(menu)>0)
              	menu=getMenu.call(pw)
              	deleteMenu.call(menu,0,0x400)
              	drawMenuBar.call(menu)
              end
              
              #force the layout to update.
              sendMessage.call(pw,0x0047,0,"")
              
              #remove the window boarders
              setWindowLong.call(pw,-16,0x00800000|0x10000000|0x00080000|0x00040000)
              

              end
              </code>

              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