Butuh beberapa hari untuk mencerna semua info ini, tetapi saya mengakhiri dengan 2 solusi untuk masalah ini. Saya akan menjelaskan kedua solusi di sini.
Saya ingin mengucapkan terima kasih kepada Lorenzo dan Rob Gilliom dari forum pengguna kicad, yang telah memberi saya semua ide dan informasi yang saya perlukan untuk menyatukan solusi di bawah ini ( http://tech.groups.yahoo.com/ grup / kicad-pengguna / pesan / 15220 ).
= Opsi 1 =
Jika Anda ingin mengimpor segmen elips tunggal dan mendesain seluruh papan di KiCAD, maka skrip Ruby ini mungkin cara termudah untuk dilakukan:
#
# 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])
}
Untuk menggunakan skrip ini, cukup simpan .kicad_pcb
file kosong di Kicad dan kemudian masukkan baris yang dihasilkan oleh skrip ini setelah bagian terakhir sebelum kurung tutup.
Buka file papan baru di KiCAD dan nikmati elips Anda diinterpolasi oleh segmen garis :). Menggunakan 256 poin membuat elips begitu halus sehingga Anda tidak bisa mengatakan itu terdiri dari garis-garis di KiCAD.
Jika Anda hanya menginginkan sebagian dari elips (satu sisi PCB Anda, misalnya), mudah untuk menambahkan kotak pembatas ke skrip di atas dan membuang semua titik yang terletak di luar kotak.
= Opsi 2 =
Pendekatan lain adalah mendesain papan Anda sepenuhnya di Inkscape (atau apa pun yang dapat mengekspor grafis vektor), dan menemukan cara untuk mengimpornya ke KiCAD.
Lorenzo telah memberikan solusi yang dapat beralih dari Inkscape ke Gerber di sini: http://tech.groups.yahoo.com/group/kicad-users/message/15229
Saya kemudian dapat membangun di atas solusi Lorenzo untuk membuat skrip Ruby yang melewati tahap Gerber dan menghasilkan baris file papan KiCAD secara langsung.
Prosesnya seperti ini:
- Desain papan Anda di Inkscape
- Ekspor ke HPGL
- Ubah HPGL ke GnuPlot Ascii:
hp2xx -t -m gpt file.hpgl
- Hasilkan garis file papan:
gpt2pcbnew file.hpgl.gpt
Berikut adalah sumber untuk gpt2pcbnew
skrip:
#
# 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]}")
}
}
Sama seperti di Opsi 1, baris yang dihasilkan masuk ke file papan kosong yang disimpan di KiCAD.
Solusi ini memanfaatkan fakta bahwa format HPGL sangat mirip dalam konstruksinya dengan file Gerber, dalam arti bahwa itu adalah serangkaian koordinat dengan "pen up" atau "pen down", yang sesuai dengan kode D01 dan D02 di Gerber.
Jadi semua kerja keras untuk mengubah dari splines bezier ke segmen garis dilakukan oleh Inkscape dalam kasus ini.
= Opsi 2 Batasan =
Ada beberapa batasan dengan pendekatan ini:
- Tampaknya Inkscape tidak dapat mengekspor persegi panjang ke HPGL. Anda jelas dapat mengatasinya dengan membangun persegi panjang Anda sendiri.
- Saat ini saya tidak bisa mendapatkan ukuran objek yang diekspor dengan benar. Objek berakhir kira-kira dua kali lebih besar di KiCAD. Saya akan mengerjakan solusi untuk ini segera.