Fluid Power Calculator

I’ve been playing around with learning javascript recently.  I’ve thrown together a fluid power calculator as a “hello world”.  You can find it here: Fluid Power Calculator It’s not pretty, but it works pretty well.  (See what I did there?)  You can download the page and run it locally if you want.

My ultimate goal is to transfer all of my theatre-related excel calculators to javascript powered web pages, so I can access them wherever I happen to be.

Scratch! v. 1.2 released

Scratch – the scratchpad layer utility for AutoCAD – has been updated to version 1.2!

Download Scratch 1.2 here.

Hard to believe its been over a year since I released an update to Scratch.  This update is kind of a sea change for the program, see the notes below.  On another note, this is the last release I am going to issue; I use it every day, and it hasn’t been an active development project for a while.  I might post a short screencast describing how to use it.  I hope you get as much use out of it as I have.  And be forewarned, I’ve got some really cool stuff I’ve been working on.


Note: the ` symbol is a backtick (next to the 1 key)

  • command: ` – toggle between scratchpad layer and the current layer
  • command: e` – erase scratchpad (menu)
    • option: a – erase everything in scratchpad layer
    • option: p – preview all objects in scratchpad layer
    • option: s – erase only selected objects in scratchpad layer
  • command: m` – move selected objects to the scratchpad layer
  • command: 1` – jumps to previous layer

Release notes:

  • consolidated scratch into one file
  • changed CST command to `
  • changed EST command to e`
  • added options to the erase constructions (e`) command
  • added move object(s) to scratch layer command (x`)
  • general bugfixes
  • general performance refinements and code slimming

Twist Lisp

Did you know you can precisely rotate the current view of modelspace?  This is a killer way to simplify drafting and dimensioning objects on an angle, especially if you have a way to align the current view to an object.  (And we do, keep reading.)

The longhand command is Dview > Dviewblock > Twist.  Enter the angle you want to twist the current view to, and you’re set.  Why type that out every time?  This lisp will do that and more – just type “TW” to invoke.

Download it here.

Command : TW

  • Enter the twist angle explicitly (e.g. 45 or -134.25) or…
  • Align: set twist angle by picking two points (Point 1 is 0,0 and Point 2 is positive x-axis vector)
  • Relative: set twist angle relative to current twist angle
  • After twisting the view, the list will prompt yes(default)/no to realign the UCS to the current angle.

Right now the script only does the twist in modelspace, I’m planning on expanding it to work in paperspace & viewports as well.  When I get some free time that is.

Until next time – keep it lazy.

Layer State Switcher

This AutoCAD lisp command transparently saves the current layerstate.  Subsequent invocations switch between the saved state and the current state.  You can go back and forth until your eyes pop out.

Download and enjoy!

command: LSS
– on first run, it will save a layerstate and exit the command
– option: Previous – (default option), saves the current layerstate and switches you to the original saved layerstate.
– option: Update   – saves the current layerstate for future retrieval.
– option: Clear    – delete the auto-generated layerstates that this script creates.
– option: eXit     – duh.

kick it on CadKicks.com

Improved Layer Isolate

This Autocad lisp combines the layeriso & layeruniso commands into a single command.  Use once to invoke, use again to turn off.  You can use fade mode or off mode.

Download and enjoy!

command: LI – layer isolate with Fade Mode @ 60% (default)
command: LI` – (that’s a backtick, next to the 1 key) layer isolate in Off Mode

aCAD: Text Override Tool Update

Download Text Override Tool v2.7 – while in AutoCAD type “TO” to run this routine.

I’ve recently updated my text override tool for AutoCAD.  In case you didn’t know, you can make the text field in a dimension read anything you want.  Ask some hardcore cad users about it, and your castle might be set upon by an angry mob.  Why do some drafters revile the text override?  Reason: lies, lies, and more damned lies.  If you can’t trust the dimensions in a drawing, what can you trust?  After years of misuse by impatient and/or lazy cad users the text overrides have developed a bad rap.  Here’s the truth, with great power comes great responsibility.  Take a gander at the screen shot below, and you’ll see what I mean.

Text Override in action!

Cool huh?  Note that none of the actual measurements were harmed in the picture above.  In the text overrides, “1 1/2″ O.C.” is actually “<> O.C.”  Autocad swaps out the <> with the measurement.  That’s some sweet stuff.

Normally to access the text override you have to plow through the properties palette and change it manually.  Pain in the ass.  I wrote this utility to simplify the process, & now you too can access the text overrides through a friendlier interface.  I built in my own frequently used text overrides (shortcuts, if you will).  I also included a few new features from the last go around.  If you open the file in a text editor, you can change the shortcuts to your liking.  Its as easy as changing a list.

Go forth and have fun!  And remember, if you use this for evil the CAD gnomes will sneak into your bedroom and smother you in your sleep.


  • Code completely re-written from version 1.  Functions more like a lisp application and less like a script.  (Its also much prettier.)
  • Much more efficient and bomb proof.
  • Added options: literal and match.


  • L: Literal – not using a shortcut?  Use the L option & type spaces.  Requires a return/enter key to finish.
  • M: Match -make any dimension’s text override match (does groups too!)
  • blank line: Reset = Erase the dimension override.

Existing shortcuts: (<> = autocad’s measurement)

  • e.g. shortcut key = replacement text
  • C  =  <> O.C.
  • CT = <> O.C. TYP.
  • G = <> GAP
  • GT = <> GAP TYP.
  • T = <> TYP.
  • TH = <> THRU
  • NCT = <> [newline] O.C. TYP.
  • S = <> (SKIN)
  • P = (<>) [Parenthesis]

kick it on CadKicks.com

Scratch! v0.8 Released.

Scratch! has been updated to version 0.8.

Download Scratch! v.8

This version adds a couple of features and bug-fixes:

  • The AutoCAD text window no longer pops up when running the EST command.  Thank goodness, that was annoying.
  • A new confirmation (with a cool view of all items on the temporary layer) has been added to the EST command.  This allows you to see what you are deleting before you do.  If you want to empty the temporary layer without the confirmation, you can use the EST` command.
  • If the temporary layer is off or frozen when invoked, it is automatically thawed and turned on.

For those of you who don’t know what I’m talking about, Scratch! is an Autolisp utility for AutoCAD that provides a quick & simple way to utilize a temporary scratchpad layer. Scratch allows you to quickly switch in & out of the scratchpad layer, and empty it away whenever you want.  You can read more about it at the original article, Scratch! (an AutoCAD Scratchpad Utility)

kick it on CadKicks.com

Scratch! (An AutoCAD Scratchpad Utility)

Scratch provides a quick & simple way to utilize a temporary scratchpad layer in AutoCAD. Scratch allows you to quickly switch in & out of the scratchpad layer, and throw it away whenever you want, leaving the rest of your AutoCAD drawing untouched.

I’ve been using it for

  • transferring geometry
  • building complex shapes (I use the boundary command later to create objects)
  • throwaway dimensions (when estimating & sketching ideas)


UPDATE: Scratch v0.8 is now available.

Download Scratch v0.7 now!


Scratch is super simple, there are only two commands (+1 bonus command).

  1. cst – will toggle you between the magenta scratchpad layer and the original layer.
  2. est – deletes the scratchpad layer and everything in it.
  3. 1` – changes your current layer to your prior layer.

Crosshair Colors

Loading the second file scratchColor.lsp enables the crosshair color switcher.  Whenever you make the scratchpad layer current, the crosshair color will change to magenta.  This provides a constant, unobtrusive reminder when the scratchpad layer is current.


  • Scratch runs on AutoCAD v2000 – 2010 (v2006 and earlier require the Express Tools.)
  • Scratch stores your original crosshair colors; if you have them customized, it will not clobber your original settings.
  • You can change the name, lineweight, color, and linetype of the scratchpad layer in the top of the scratch.lsp file.

kick it on CadKicks.com

Ruby Shapes


What is RubyShapes?

RubyShapes is a Ruby library that defines Shape objects analogous to geometric cross-sections. These Shape objects “have” the same geometric properties that their real world counterparts do. The long term goal is to use RubyShape objects as building blocks for a larger structural and mechanical calculation software library.

Geometric cross sections?

These are cross sections of 3D objects (square rods, circular rods, rectangular tubing, etc.) Each shapes’ cross section has properties that are that are used in structural and mechanical calculations.

Current version?

The current version of RubyShapes is v0.2.9.1. It has been tested on Ruby 1.8 & later.


RubyShapes is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or (at your option) any later version. RubyShapes is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. For license specifics, see

Where is the source code?

The source can be found at the github RubyShapes repository.

Properties for each shape class

x = x dimension (in.) (equiv. to outer diameter for round shapes)
y = y dimension (in.) (equiv. to outer diameter for round shapes)
a = square area (in^2)
ix = second moment of area for xx (in^4)
iy = second moment of area for yy (in^4)
sx = section modulus for xx (in^3)
sy = section modulus for yy (in^3)
rx = radius of gyration for xx (in)
ry = radius of gyration for yy (in)
w = weight of shape per linear foot (lbs/ft) – right now assumes all shapes are steel

RubyShapes Structure:

RubyShapes.rb – the main file, contains the definitions & calculations for each shape class. There is a testing area at the bottom of the file.
Most of the shared code for RubyShapes is divided into several modules, each module lives as a file in the /lib/ folder:
DiagUtils Module – Diagnostic messages.
OutputUtils Module – Defines the methods that return values from the shape values.
ShapeUtils Module – Defines property calculations that are common to multiple.

List of Classes

Bar(x/y dimension) – Square bar shapes
Plate(x dimension, y dimension) – Rectangular bar shapes
Square_tube(x/y dimension, gauge/thickness) – Mild Steel As-Welded Mechanical Tubing
Rec_tube(x dimension, y dimension, gauge/thickness) – Mild Steel As-Welded Mechanical Tubing
Round_tube(outside diameter, thickness)
Rod(outside diameter) – Round rod shapes

Output Methods

These methods are used to retrieve the calculated properties from the shape objects.
Returns a human-readable list of the shape object’s properties (as floats, rounded to 4 places). Optional: include a (“variable”) parameter to the method to return that specific parameter’s value.
Returns a human-readable list of the shape object’s properties (as BigDecimals). Optional: include a (“variable”) parameter to the method to return that specific parameter’s value.
Returns the hash of Object properties (as floats, rounded to 4 places).
Returns the hash of Object properties (as BigDecimals).
Prints a pretty, human-readable header for the columns method. Spacing is not currently ideal.
Returns the Object properties in a column format (as floats, rounded to 4 places).

ShapeUtilites Methods

These methods are invoked by the shape classes during object initialization. They are not very useful to the end user.
Calculates corner radius for calculations. This method is not implemented yet.
Converts from steel gauge thicknesses to decimal thickness.
Calculates weight values – currently assumes all shapes are mild steel.
Builds a hash of the shape object’s properties. Result is stored in the shape object’s hash variable.

Diagnostics Methods

These methods mostly only run when DIAGNOSTICS = on.
Outputs a diagnostic section(header) line to the screen.
— message —
Outputs a diagnostic line to the screen
Outputs which class is currently initializing. Prints the following:
==== Now initiating a Rec_tube class ====
Prints Output Module Methods all at once for the receiver object. Good for batch testing the Output Module methods
Prints the classes for a predefined list of instance variables in the receiver object. DIAGNOSTIC flag independent.
Prints the values for a predefined list of instance variable in the receiver object. DIAGNOSTIC flag independent.
Not implemented yet. It will be a comprehensive diagnostic inspection for any object. DIAGNOSTIC flag independent.