Random Tools Extension for SketchUp

A set of tools to randomize various things in a SketchUp Model

Description

This extension contains a set of tools to randomize various things in a SketchUp Model, such as: Object placement, rotation, scale, face extrusion, vertex locations, textures. Also allows to place objects randomly on faces or on edges (with scale, rotation, and orientation variations) and to swap or erase objects randomly. This extension combines several of my randomizing scripts from my book and tutorials on sketchupfordesign.com and makes them available in a single package.

Specifically, these tools are available:

  • Random Face Push/Pull
  • Random Vertex Positions
  • Place Components Randomly on Faces
  • Place Components Randomly on Edges
  • Place Components Randomly on Vertices
  • Randomize Objects (Scale, Rotation, Position)
  • Randomly Swap Objects
  • Randomly Erase Objects
  • Randomize Texture Positions

These tools are useful to create random variations in landscape items (trees, shrubs, etc.) or to add grass or fur. For architectural models, they can randomize repeating textures and create small perturbations that make items look more realistic.

Usage

This extension’s functions can be accessed via the Tools > Random Tools menu item or its toolbar:

Since each of these tools operates on different things, at least one of the following must be selected before the tool is started. A reminder will be shown when that has not happened.

  • Random Face Push/Pull: At least one ungrouped face (you can “go inside” a group to edit its faces without the need for exploding it)
  • Random Vertex Positions: At least one ungrouped edge (ditto)
  • Place Components Randomly on Faces: One component instance and at least one ungrouped face (if the number per face is less than 1, then this applies a placement probability – e.g. 0.5 is a 50% probability)
  • Place Components Randomly on Edges: One component instance and at least one ungrouped edge (if the number per edge is less than 1, then this applies a placement probability – e.g. 0.5 is a 50% probability)
  • Place Components Randomly on Vertices: One component instance and at least one ungrouped edge
  • Randomize Objects (Scale, Rotation, Position): At least one group or component instance (all of these are +/- adjustments)
  • Randomly Swap Objects: At least two component instances
  • Randomly Erase Objects: At least one group or component instance (works within groups, too)
  • Randomize Texture Positions: At least one ungrouped face, or a group (textures must have been applied to individual faces, not the entire group)

If you select other items than those requested, then those will simply be ignored. Where a single component instance is needed (i.e. for the placement tools), only the first selected component will be used.

When placing components on edges and vertices, you can select “normal” as a direction. Since edges don’t have a normal direction (only faces do), this will orient as follows:

  • If the edge is not connected to a face: The object will point up (parallel to the blue axis). This is the same as for the “Up” option.
  • If the edge is connected to one face: That face’s normal direction will be used. Keep in mind that a face could be flipped which results in an inverted normal.
  • If the edge is connected to two faces: The average of both normal directions will be used.

Remember that a lot of copies can be added quickly to your model when you are placing components randomly. Use these tools as efficiently as possible.

Did you find this extension useful? Contribute to its development with any amount (via PayPal):

Screenshots and Videos

Show Off Your Work

Did you create something amazing with this extension? I would love to see it! You can either upload an image in the comment section below (public) or privately send it to me.

Extension Terms and Conditions

BY INSTALLING, ACCESSING OR USING THIS SOFTWARE, YOU (THE USER) AGREES TO BE BOUND BY THE TERMS AND CONDITIONS AS PROVIDED BELOW.

LICENSE:

This is free software, provided under the GPL license (https://www.gnu.org/licenses/gpl-3.0.html).

(c) Alexander Schreyer, alexschreyer.net

DISCLAIMER:

THIS SOFTWARE IS PROVIDED ‘AS IS’ AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHOR OR ANY COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY ARISING FROM, OUT OF OR IN CONNECTION WITH THIS SOFTWARE OR THE USE OR OTHER DEALINGS IN THIS SOFTWARE.

WHERE APPLICABLE, THIRD-PARTY MATERIALS AND THIRD-PARTY PLATFORMS ARE PROVIDED ‘AS IS’ AND THE USER OF THIS SOFTWARE ASSUMES ALL RISK AND LIABILITY REGARDING ANY USE OF (OR RESULTS OBTAINED THROUGH) THIRD-PARTY MATERIALS OR THIRD-PARTY PLATFORMS.

Downloads

You can now find this extension in Trimble’s Extension Warehouse. For an easy install (and update notifications), browse to it from inside SketchUp (2013 or newer) and install it directly.

Alternative downloads

Linked below are the installation files (RBZ and ZIP formats) for the current and some previous versions of this extension.

To install these files, follow the SketchUp folks’ instructions. You can also find this extension on GitHub.

Revision History

  • Version 1.4 (8/23/2022)
    – Now allows for fractional (probability) placement for faces and edges
    – Fixed positioning and rotation (was only positive, now +/-)
    – Fixed random erase within groups
  • Version 1.3 (3/14/2022)
    – Added random delete tool
  • Version 1.2.1 (7/12/2020)
    – Now saves dialog values
    – Fixed issue with vertices double-counting
    – Fixed issue with pre-2020 layer names
    – Fixed inch-saving bug in preferences
    – New function: Place on vertices
  • Version 1.1 (6/25/2020):
    – Added correct help webpage URL
    – Added toolbar
    – Randomizing objects now works on groups as well (uses bounding box center)
    – Vertices now randomize correctly about their position
    – New function: Randomly swap objects (components only)
  • Version 1.0 (6/19/2020):
    – Initial release

Troubleshooting

You can reset this extension by pasting the following code into SketchUp’s Ruby Console (which can be found under the Extensions menu) and executing it (hit Enter):

Sketchup.write_default( "as_randomtools" , "random_extrusion" , nil )
Sketchup.write_default( "as_randomtools" , "random_vertices" , nil )
Sketchup.write_default( "as_randomtools" , "random_place_faces" , nil )
Sketchup.write_default( "as_randomtools" , "random_place_edges" , nil )
Sketchup.write_default( "as_randomtools" , "random_place_vertices" , nil )
Sketchup.write_default( "as_randomtools" , "randomize_objects" , nil )
Sketchup.write_default( "as_randomtools" , "random_delete" , nil )
Sketchup.write_default( "as_randomtools" , "randomize_objects" , nil )

References

Comments and Reactions