With BarModelMaker you can "draw" Bar Models by writing BarModel script. You can add a bar, a box to a model; cut a box, shift a box to another bar; add a ratio constraint, or an additive constraint. As you specify enough constraints, the tool can automatically adjust the sizes of the boxes, and thus, giving you a model with precise box sizes. The tool can also "play" a BarModel step by step. You can "pause" and step forwards or backwards to examine how a model was drawn. The BarModel script not only specifies a bar model, but also explains how a bar model is drawn step by step. A BarModel script can be shared among teachers and students, as long as they have BarModelMaker.