Example #1
0
func main() {

	var Centres float64 // Distance between Centres
	var Ratio float64   // Required Ratio
	var DriveTeeth int  // Number of teeth on drive gear
	var DrivenTeeth int // Number of teeth on drive gear
	var PressureAngle float64
	var Backlash float64
	var Rotation int    // Percent of rotation
	var FileName string // File name for output.

	var pCentres = flag.Int("c", 100, "Distance between centres. (Whole mm only)")
	var pDriveTeeth = flag.Int("n1", 7, "Number of teeth on the first gear")
	var pDrivenTeeth = flag.Int("n2", 23, "Number of teeth on the second gear")
	var pPressureAngle = flag.Int("p", 25, "Pressure angle")
	var pBacklash = flag.String("b", "0.5", "Backlash angle (degrees)")
	var pFileName = flag.String("o", "", "Output file name, .svg will be appended. stdout if not given")
	var pRotation = flag.Int("r", 0, "Rotation as percentage of one tooth")
	flag.Parse()
	Centres = float64(*pCentres)
	DriveTeeth = *pDriveTeeth
	DrivenTeeth = *pDrivenTeeth
	PressureAngle = float64(*pPressureAngle)
	var err error
	Backlash, err = strconv.ParseFloat(*pBacklash, 64)
	if err != nil {
		Backlash = 0.0
	}
	Rotation = *pRotation
	FileName = *pFileName

	Ratio = float64(DrivenTeeth) / float64(DriveTeeth)

	var Gear1 gear.Gear
	Gear1.Pd = (1 / (Ratio + 1)) * Centres * 2
	Gear1.N = DriveTeeth
	Gear1.A = PressureAngle
	Gear1.B = Backlash

	var Gear2 gear.Gear
	Gear2.Pd = (Ratio / (Ratio + 1)) * Centres * 2
	Gear2.N = DrivenTeeth
	Gear2.A = PressureAngle
	Gear2.B = Backlash

	plot.Plot(Gear1, Gear2, Rotation, FileName)
}