Me tomó un par de días digerir toda esta información, pero terminé con 2 soluciones a este problema. Describiré ambas soluciones aquí.
Quisiera agradecer a Lorenzo y Rob Gilliom del foro de usuarios de kicad, que me han brindado todas las ideas e información que necesitaba para reunir las soluciones a continuación ( http://tech.groups.yahoo.com/ group / kicad-users / message / 15220 ).
= Opción 1 =
Si desea importar un solo segmento elíptico y diseñar el resto del tablero en KiCAD, entonces este script Ruby es probablemente la forma más fácil de hacerlo:
#
# Generates an ellipse for Kicad. You have to copy the
# generated lines into an existing template inside a .kicad_pcb file
#
Xo = 200.0
Yo = 150.0
MAJOR = 60.0
MINOR = 40.0
N = 256 # Number of points on the ellipse
TEMPLATE = "(gr_line (start %.2f %.2f) (end %.2f %.2f) (layer Edge.Cuts) (width 0.15))\n"
step = Math::PI * 2 / N
points = Array.new
# Calculate coordinates for all N points
(0..N).each {|s|
x = Xo + MAJOR * Math::cos(step * s)
y = Yo - MINOR * Math::sin(step * s)
points << [x, y]
}
# For each pair of points, print a gr_line
points.each_cons(2) { |line|
printf(TEMPLATE, line[0][0], line[0][1], line[1][0], line[1][1])
}
Para usar este script, simplemente guarde un .kicad_pcb
archivo en blanco en Kicad y luego inserte las líneas generadas por este script después de la última sección antes de la llave de cierre.
Abra el nuevo archivo de tablero en KiCAD y disfrute de su elipse interpolada por segmentos de línea :). El uso de 256 puntos hace que la elipse sea tan suave que no se puede ver que consiste en líneas en KiCAD.
Si solo desea una parte de la elipse (un borde de su PCB, por ejemplo), es trivial agregar un cuadro delimitador al script anterior y descartar todos los puntos que se encuentran fuera del cuadro.
= Opción 2 =
Otro enfoque sería diseñar su placa por completo en Inkscape (o cualquier otra cosa que pueda exportar gráficos vectoriales), y encontrar una manera de importar eso en KiCAD.
Lorenzo ha proporcionado una solución que puede ir de Inkscape a Gerber aquí: http://tech.groups.yahoo.com/group/kicad-users/message/15229
Luego pude construir sobre la solución de Lorenzo para hacer un script Ruby que omita la etapa de Gerber y genere líneas de archivo de tablero KiCAD directamente.
El proceso es así:
- Diseña tu tablero en Inkscape
- Exportar a HPGL
- Convierta HPGL a GnuPlot Ascii:
hp2xx -t -m gpt file.hpgl
- Generar líneas de archivo de placa:
gpt2pcbnew file.hpgl.gpt
Aquí está la fuente del gpt2pcbnew
script:
#
# Convert a GPT file created by hp2xx to Pcbnew gr_lines
#
# That's the line we'll write into the board file
TEMPLATE = "(gr_line (start %.5f %.5f) (end %.5f %.5f) (layer Edge.Cuts) (width 0.15))\n"
gpt_file = ARGV.shift
segments = Array.new
File.open(gpt_file, "r") do |file|
# Start a new segment
segment = Array.new
while (line = file.gets)
unless ( line.strip! =~ /^#/ ) # Skip comments
if ( line =~ /([0-9.]+) *([0-9.]+)/ )
# Found coordinates. Save this point in the current segment
#
segment << line.split
else
# No numbers on a line means that we are done drawing the segment,
# so we need to "lift up the pen" and move to the next segment
#
# Add current segment to the list of segments
segments << segment unless segment.empty?
# Start a new segment
segment = Array.new
end
end
end
# Add the last segment we read
segments << segment unless segment.empty?
end
# Print out gr_lines for all the segments
segments.each { |segment|
# For each pair of points print a line
segment.each_cons(2) { |line|
printf(TEMPLATE, line[0][0], "-#{line[0][1]}", line[1][0], "-#{line[1][1]}")
}
}
Al igual que en la Opción 1, las líneas generadas van a un archivo de tablero en blanco guardado en KiCAD.
Esta solución aprovecha el hecho de que el formato HPGL es muy similar en su construcción a los archivos de Gerber, en el sentido de que es una serie de coordenadas con "pluma hacia arriba" o "pluma hacia abajo", que corresponde a los códigos D01 y D02 en Gerber.
En este caso, Inkscape hace todo el trabajo duro de la conversión de splines bezier a segmentos de línea.
= Opción 2 Limitaciones =
Hay un par de limitaciones con este enfoque:
- Parece que Inkscape no puede exportar rectángulos a HPGL. Obviamente, puede solucionar esto construyendo sus propios rectángulos.
- Actualmente no puedo obtener el tamaño correcto de los objetos exportados. Los objetos terminan aproximadamente dos veces más grandes en KiCAD. Estaré trabajando en una solución a esto pronto.