Peter's Tools
(by Peter Harris)
A variety of tools including bill of materials tools, a project timer, an archiving tool, and more.
Support Email

This is a collection of scripts that I've written (with the help of many people) which I turned into a plugin and a toolbar to go with it. There are geometry-creating/editing tools, Bill of Materials and other data tools, a project timer, an archiving script, and more. Here is a list of available commands:


Bill of Materials and object data tools

  1. BOM - Calculates object weights (actually, mass) based on density and exports object notes and other attributes to a .csv file or to the clipboard. (Note: Objects need to have a real material assigned in order to do the weight calculations. See next tool…) Now includes more options and lets users select which columns to export. Items that can be exported to the bill of materials includes Part Name, Real Material & Weight, Box Size (bounding box, now split into 3 columns), Object Notes, Volume, Surface Area, Layer, Volume Centroid (now split into 3 columns), and Area Centroid (now split into 3 columns). This tool has a lot in common with Rhino's built-in properties export (export → Object Properties), except that this includes real material and weight, so if you don't need those properties, try the built-in tool first!
  2. RealMaterialTools - Includes options to add a real material to objects (includes a way to create custom materials based on the density, and it comes with some materials already in there), match real materials, select objects with no real material, or delete real material data from selected objects.
  3. ObjectNoteTools - Includes options to add an object note to objects, match object notes, select objects with no object notes, or delete notes from objects. Object notes show up in the BOM or in the DotWithData tool.
  4. DotWithData - Adds annotation dots to selected objects with text option of either part names, layer, real materials, weight, object volumes, object surface areas, object notes, volume centroid, area centroid, or bounding box dimensions. New in 2.1: Create a dot that shows the Cumulative Center of Gravity of a group of closed objects.
  5. SelUnnamed - Selects all unnamed objects.
  6. NameObjects - Lets you name a bunch of objects in serial fashion (brings up a box for each selected object one by one.)
  7. BatchNameModifier - Lets you add text to a batch of object names at once, either at the front or end of the name.

Geometry-creating or editing tools

  1. TrimAtLine - Prompts you to draw a line to use as a trim line, pick whatever you want to trim, then right-click to delete the line.
  2. TrimAtZero - Same, but starts line at 0,0
  3. SplitBoth - Splits two sets of surfaces with each other
  4. SplitWithEdgesAndCurves - Script that automates typing in 'crv' after picking the split command.
  5. JoinCurvesByClosestEnds - Joins two curves by closest ends by adding two straight lines.
  6. QuickCage - Click one of 15 numbers (2 through 16) on the command line or type in a number, and the tool creates a bounding-box cage around your object with that many points in each direction. Great for quick edits.
  7. SetX - Flattens an object in the world X direction.
  8. SetXTo0 - Flattens an object in the world X direction to 0.
  9. SetY - Flattens an object in the world Y direction.
  10. SetYTo0 - Flattens an object in the world Y direction to 0.
  11. SetZ - Flattens an object in the world Z direction.
  12. SetZTo0 - Flattens an object in the world Z direction to 0.
  13. MagicCap - Creates a planar surface from any selection of curves and/or surface edges.
  14. HideAllUnselectedCurves - Hides all unlocked visible unselected curves.
  15. HideAllUnselectedPoints - Hides all unlocked visible unselected points.


TimerTools - Simple tools for keeping track of time spent on a project. Nested options include StartTimer, StopTimer, TimerLog, CalculateTotalHours, and LegacyTimerLog. The TimerLog is a text file of the start and stop times and it is part of your current rhino document. It can be edited manually if you make a mistake by not stopping your timer. LegacyTimerLog is for users who used the old timer that saved data to a text file so that they can still find that old text file (but the new timer won't add to that text file or calculate totals from it. This will go away entirely in the next update.)


This group of tools manages an archive of bits of geometry you might need later. It does this simply by creating a layer called Archive that stays turned off, and it manages adding or retrieving items from that layer. I created this because I use Hide just to hide things for a few moments, and I needed something else for longer-term holding of things I wanted to keep around just in case they are needed later.

Archive Command - Has 3 nested options. ArchiveObjects moves objects to archive layer. ArchiveCopy moves a copy of objects to the archive layer. UnarchiveSelected lets you pick objects from the archive layer to move from that layer to the current layer.

Misc tools

  1. ZoomToUnlocked - Zooms to all unlocked objects ('normal' objects).
  2. ZoomToUnlockedAll - Same as zoom to unlocked, but all views.
  3. DetailsTools - Tools for modifying all details in a layout at once. Includes ability to change display mode in all, zoom extents in all, or make scale match in all details.
  4. AddPointAtBBoxCentroid - Adds a point at an object's bbox center.
  5. AboutPetersTools - Brings up a box showing you what version you are running and link to more info.