This document discusses advanced Ruby scripting techniques for Google SketchUp. It provides an overview of SketchUp and its Ruby API. It then describes 7 advanced techniques for integrating web content, controlling the camera, animating models, capturing keystrokes, combining JavaScript and Ruby, and using Ruby extension modules to create physics simulations and other advanced functionality. The document encourages learning more about the SketchUp API and joining related online communities.
2. What’s SketchUp?
Google’s 3D drawing tool
Used and loved by design professionals and hobbyists
Easy to learn yet powerful
Free and Pro versions are available
On the Nerdy Side…
Client application for PC & Mac
Written in C++ and Objective C
OpenGL for display layer
Has a Ruby programming API
3. How Do I Get to the API?
If you have SU, you have the API
You write a Ruby Script
Put your script into /SketchUp 6/Plugins folder and restart
SU
Control SketchUp via a powerful, consistent Object model
Sketchup.active_model.camera.eye.x
entities[0].transform! by_some_amount
edge.faces[0].material = some_color
4. WebDialogs
WebDialogs provide an embedded browser inside
SketchUp
Internet Explorer on PC
Webkit/Safari on Mac
5. Ruby Extension Modules
Extend Ruby with native code binary (aka extension
module)
Better performance
Better IP protection of your code
6. Advanced Technique 1:
Grab and Render Web Data
Ruby Opens a Webdialog to some webpage
The page uses AJAX or other techniques to pull data
TIP: If your webpage is local, you can get data across
domains
JS calls a ruby method and sends down that data to
SketchUp as a string
Stock Grabber
Demo
+ Footprinter
7. Advanced Technique 2:
Hide the Web Dialog
Provides a “permanent” Javascript environment
Javascript can take control at any time
How to do it on the PC?
my_dialog.show()
my_dialog.set_position(9999,9999)
On the Mac?
Secret
Just don’t call .show() method Demo Stock Grabber
8. Advanced Technique 3:
Use WebDialogs + Ruby to Control the Camera
Move the camera to control user experience
Export 2D screenshots to get web-friendly output from SU
Demo 3D Exporter
http://sketchup.google.com/download/plugins.html
3D Exporter is an open source project! Please contribute.
9. Advanced Technique 4:
Animate using Javascript’s setTimeout
Create a timer in Javascript…
timerID = setTimeout(quot;nextFrame()quot;, 500)
It runs in the browser’s thread (not SketchUp’s)
Quietly sends commands to Ruby to create animation.
Demo Spin My Yoda
10. Advanced Technique 5:
Capture Key Strokes with Javascript
document.onClick can capture keystrokes
dialog.show_modal() can force focus to your dialog
Interesting way of adding keyboard support to SketchUp
Demo Nudge My Yoda
11. Advanced Technique 6:
Bring ‘em all together
JS + Ruby Games in SketchUp
Prince IO
Dem The SketchUp Knight
o
12. Advanced Technique 7:
Ruby Extension Modules
Take these animation and processing techniques to
the next level
SketchyPhysics is a great example… numerous demos on
YouTube
13. Learn More
Get SketchUp
http://sketchup.google.com
API Documentation
http://code.google.com/apis/sketchup/
Join the SketchUp API Blog
http://sketchupapi.blogspot.com/
Join the Ruby User Group
http://groups.google.com/group/Ruby-API