public static void Create() { KiCad.PCB pcb = new KiCad.PCB(); var VCC = pcb.Nets.AddNet(1, "VCC"); var GND = pcb.Nets.AddNet(2, "GND"); var ic = pcb.Components.AddComponent("Package_DIP", "DIP-8_W7.62mm", "IC555"); var r1 = pcb.Components.AddComponent("Resistor_THT", "R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal", "R1"); var r2 = pcb.Components.AddComponent("Resistor_THT", "R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal", "R2"); var r3 = pcb.Components.AddComponent("Resistor_THT", "R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal", "R3"); var c1 = pcb.Components.AddComponent("Capacitor_THT", "CP_Radial_D5.0mm_P2.50mm", "C1"); var c2 = pcb.Components.AddComponent("Capacitor_THT", "C_Disc_D3.0mm_W1.6mm_P2.50mm", "C2"); var led = pcb.Components.AddComponent("LED_THT", "LED_D5.0mm", "LED1"); var power = pcb.Components.AddComponent("Connector_PinHeader_2.54mm", "PinHeader_1x02_P2.54mm_Horizontal", "PWR"); PointF start = new PointF(corner_r, 0); pcb.Edge.AddLine(start, new PointF(size.Width - corner_r, 0)); pcb.Edge.ContinueArc(3, -90); pcb.Edge.ContinueLine(new PointF(size.Width, size.Height - corner_r)); pcb.Edge.ContinueArc(3, -90); pcb.Edge.ContinueLine(new PointF(corner_r, size.Height)); pcb.Edge.ContinueArc(3, -90); pcb.Edge.ContinueLine(new PointF(0, corner_r)); pcb.Edge.ContinueArc(3, -90); pcb.Edge.ContinueLine(start); ic.Location = new PointF(6, 12); r1.Location = new PointF(16.8f, 14.5f); r1.Angle = 90; r2.Location = new PointF(16.8f, 24.5f); r2.Angle = 90; c1.Angle = 180; c1.Location = new PointF(13.5f, 24.5f); c2.Location = new PointF(5.5f, 22.86f); r3.Angle = 90; r3.Location = new PointF(2, 16.86f); led.Angle = 180; led.Location = new PointF(8.3f, 5.5f); power.Angle = 270; power.Location = new PointF(8, 26); ic.Pads[4].Net = ic.Pads[8].Net = r1.Pads[2].Net = power.Pads[1].Net = VCC; ic.Pads[1].Net = led.Pads[1].Net = c1.Pads[2].Net = c2.Pads[1].Net = power.Pads[2].Net = GND; pcb.Traces.SetTraceStart(ic.Pads[3]); pcb.Traces.ContinueTrace(r3.Pads[1]); pcb.Traces.SetTraceStart(r3.Pads[2]); pcb.Traces.ContinueTrace(led.Pads[2]); pcb.Traces.SetTraceStart(ic.Pads[7]); pcb.Traces.ContinueTrace(r1.Pads[1]); pcb.Traces.ContinueTrace(r2.Pads[2]); pcb.Traces.SetTraceStart(c1.Pads[1]); pcb.Traces.ContinueTrace(r2.Pads[1]); pcb.Traces.ContinueTrace(0, -4); pcb.Traces.ContinueTrace(ic.Pads[6]); pcb.Traces.ContinueTrace(ic.Pads[2]); pcb.Traces.SetTraceStart(ic.Pads[5]); pcb.Traces.ContinueTrace(c2.Pads[2]); var zone_vcc = pcb.Zones.AddZone(VCC, true, pcb.Bounds); var zone_gnd = pcb.Zones.AddZone(GND, false, pcb.Bounds); pcb.FSilk.AddText("+", power.Pads[1].Location + new SizeF(3, 2.5f)); pcb.FSilk.AddText("-", power.Pads[2].Location + new SizeF(-3, 2.5f)); pcb.MoveAll(new SizeF(100, 100)); File.WriteAllText("Blinky555.kicad_pcb", pcb.ToString()); }
public static void Create() { KiCad.PCB pcb = new KiCad.PCB(); var GND = pcb.Nets.AddNet(1, "GND"); var GCC = pcb.Nets.AddNet(2, "VCC"); var center = new PointF(0, 0); pcb.Edge.AddArc(center, new PointF(-out_r, 0), 180); pcb.Edge.AddArc(center, new PointF(-in_r, 0), 180); pcb.Edge.AddLine(in_r, 0, out_r, 0); pcb.Edge.AddLine(-in_r, 0, -out_r, 0); int slices = (int)Math.Floor((out_r - in_r - 2) / 5); float interval = (out_r - in_r - 2) / slices; for (float distance = in_r + 1; distance < out_r; distance += interval) { pcb.FSilk.AddArc(center, center + new SizeF(-distance, 0), 180); } int led_counter = 0; List <KiCad.Components.Component> firsts = new List <KiCad.Components.Component>(); for (float distance = in_r + 1 + interval / 2; distance < out_r; distance += interval) { bool first = true; for (float angle = 12; angle < 170; angle += (const_angle ? d_angle : (d_distance * 360f) / (2f * (float)Math.PI * distance))) { var led = pcb.Components.AddComponent("LED_THT", "LED_D5.0mm", "LED" + (++led_counter).ToString(), KiCad.Utils.PointOnCircle(center, angle, distance - 1.27), angle); led.Pads[2].Net = GND; if (first) { pcb.Traces.SetTraceStart(led.Pads[1], 0.3); firsts.Add(led); first = false; } else { pcb.Traces.ContinueTraceWithArcToAngle(center, KiCad.Utils.AngleOf(center, led.Pads[1].Location)); } } } var power = pcb.Components.AddComponent("Connector_PinHeader_2.54mm", "PinHeader_1x" + (firsts.Count + 1).ToString().PadLeft(2, '0') + "_P2.54mm_Horizontal", "PWR"); power.Location = new PointF((float)((out_r + in_r) / 2 + firsts.Count * 2.54 / 2), -2); power.Angle = 270; for (int i = 0; i < firsts.Count; i++) { pcb.Traces.DrawTrace(firsts[i].Pads[1], power.Pads[firsts.Count + 1 - i], 0.3); } var zone = pcb.Zones.AddZone(GND, false); zone.Points.Add(new PointF(-out_r, 0)); zone.Points.Add(new PointF(-out_r, -out_r)); zone.Points.Add(new PointF(out_r, -out_r)); zone.Points.Add(new PointF(out_r, 0)); pcb.MoveAll(new SizeF(100 + out_r, 100 + out_r)); File.WriteAllText("rainbow.kicad_pcb", pcb.ToString()); }