• Black Twitter Icon
  • Black Facebook Icon
  • Instagram
  • Black YouTube Icon

Code a SketchUp layer/scene script with Ruby!

Updated: May 17, 2018



In this tutorial, we're writing a #SketchUp script that will automatically create scenes with the names of every layer in your model. The best part is that entities which belong to a specific layer will only be visible in the scene that matches that layer's name.


The instructions on how to run the script with the Ruby Code Editor Plugin is in my first tutorial.


But, If you like LayerScene and want to install it as a SketchUp Extension/Plugin which includes a toolbar button, then you can buy it for a small fee in the link below.

Buy Here



Before explaining what each line of code does, let me recommend you the following book so you can better understand the Ruby syntax.


Programming Ruby 1.9 & 2.0


Click the link and get a copy of this book, it will give you the knowledge to start coding with Ruby which is the language that SketchUp uses to create Extensions/Plugins. Also, if you use the link to buy the book it will help this blog gain a little bit of revenue. Thanks in Advance!



Lets Begin!

When you're starting to prototype ideas it is best to start small and at this point, 14 lines of code was all we needed to proof our concept. The following is a breakdown of the logic behind each line of code and the API calls used in the script...Enjoy!


With the first line of code, we gather data from our current SketchUp model and store it as an object in a variable named model. From there we store entities, pages, layers and current layer in their own variables so we can use them later.

API: Model , Entities , Pages , Layes , Model #activelayer


To start making the scenes using the layers name we have to start iterating through each SketchUp layer.

API: Layers #each

We don't have to make another variable to store the current layer being iterated but it reads a little better when using it on line 11 at the end.

API: Layer

Iterate through each page and erase the ones that share the same name as the layers.

API: Pages #each , Pages #erase , Layer #name , Page #name


Add new page with active layer name.

API: Pages #add , Layer #name

Hide all entiies if the layer they belong to is not the active layer.

API: Entities #each , Drawingelement #hidden , Drawingelement #layer


Update the selected page before creating a new one.

API: Pages #selected_page , Page #update


Unhide every entity before repeating the process.

API: Entities #each , Drawingelement #hidden


Finished!

I hope this tutorial was useful and helped you see that making tools for SketchUp can be easier than you initially thought. There is still more ground to cover so please subscribe to the website to receive email notifications about updates, tutorials, deals and much more. Also, tell me if you have an idea for a script you want me to try to solve together. See you next time for my next blog post tutorial!

190 views
0