Advanced Ruby Scripting For SketchUp

Download as pdf or txt
Download as pdf or txt
You are on page 1of 14

Advanced Ruby Scripting

for SketchUp
Scott Lininger
May 29, 2008

Whats SketchUp?
Googles 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

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

WebDialogs
WebDialogs provide an embedded browser inside
SketchUp
Internet Explorer on PC
Webkit/Safari on Mac

Ruby Extension Modules


Extend Ruby with native code binary (aka extension
module)
Better performance
Better IP protection of your code

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

Demo

Stock Grabber
+ Footprinter

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?
Just dont call .show() method

Demo

Secret
Stock Grabber

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.

Advanced Technique 4:
Animate using Javascripts setTimeout
Create a timer in Javascript
timerID = setTimeout("nextFrame()", 500)

It runs in the browsers thread (not SketchUps)


Quietly sends commands to Ruby to create animation.

Demo

Spin My Yoda

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

Advanced Technique 6:
Bring em all together
JS + Ruby Games in SketchUp

Dem
o

Prince IO
The SketchUp Knight

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

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

You might also like