Tôi mất vài ngày để tiêu hóa tất cả thông tin này, nhưng tôi đã kết thúc với 2 giải pháp cho vấn đề này. Tôi sẽ mô tả cả hai giải pháp ở đây.
Tôi muốn cảm ơn Lorenzo và Rob Gilliom từ diễn đàn người dùng kicad, những người đã cung cấp cho tôi tất cả các ý tưởng và thông tin mà tôi cần để đưa ra các giải pháp bên dưới ( http://tech.groups.yahoo.com/ nhóm / kicad-users / message / 15220 ).
= Tùy chọn 1 =
Nếu bạn muốn nhập một phân đoạn hình elip duy nhất và thiết kế phần còn lại của bảng trong KiCAD, thì tập lệnh Ruby này có lẽ là cách dễ nhất để đi:
#
# 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])
}
Để sử dụng tập lệnh này, chỉ cần lưu một .kicad_pcb
tệp trống trong Kicad và sau đó chèn các dòng được tạo bởi tập lệnh này sau phần cuối cùng trước dấu ngoặc kép.
Mở tệp bảng mới trong KiCAD và tận hưởng hình elip của bạn được nội suy bởi các phân đoạn dòng :). Sử dụng 256 điểm làm cho hình elip mượt mà đến mức bạn không thể biết nó bao gồm các dòng trong KiCAD.
Nếu bạn chỉ muốn một phần của hình elip (ví dụ một cạnh của PCB), việc thêm một hộp giới hạn vào tập lệnh ở trên và loại bỏ tất cả các điểm nằm ngoài hộp.
= Tùy chọn 2 =
Một cách tiếp cận khác là thiết kế bảng của bạn hoàn toàn trong Inkscape (hoặc bất cứ thứ gì khác có thể xuất đồ họa vector) và tìm cách nhập bảng đó vào KiCAD.
Lorenzo đã cung cấp một giải pháp có thể đi từ Inkscape đến Gerber tại đây: http://tech.groups.yahoo.com/group/kicad-users/message/15229
Sau đó, tôi đã có thể xây dựng dựa trên giải pháp của Lorenzo để tạo tập lệnh Ruby bỏ qua giai đoạn Gerber và tạo trực tiếp các dòng tệp bảng KiCAD.
Quá trình diễn ra như sau:
- Thiết kế bảng của bạn trong Inkscape
- Xuất sang HPGL
- Chuyển đổi HPGL sang GnuPlot Ascii:
hp2xx -t -m gpt file.hpgl
- Tạo dòng tập tin bảng:
gpt2pcbnew file.hpgl.gpt
Đây là nguồn cho gpt2pcbnew
kịch bản:
#
# 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]}")
}
}
Giống như trong Tùy chọn 1, các dòng được tạo đi vào một tệp bảng trống được lưu trong KiCAD.
Giải pháp này thúc đẩy thực tế là định dạng HPGL rất giống với cấu trúc của nó với các tệp Gerber, theo nghĩa là nó là một chuỗi tọa độ với "pen up" hoặc "pen down", tương ứng với mã D01 và D02 trong Gerber.
Vì vậy, tất cả công việc khó khăn của việc chuyển đổi từ các spline bezier sang các phân đoạn dòng được Inkscape thực hiện trong trường hợp này.
= Hạn chế 2 tùy chọn =
Có một vài hạn chế với phương pháp này:
- Có vẻ như Inkscape không thể xuất hình chữ nhật thành HPGL. Bạn rõ ràng có thể giải quyết điều này bằng cách xây dựng các hình chữ nhật của riêng bạn.
- Tôi hiện không thể có được kích thước của các đối tượng xuất khẩu ngay. Các đối tượng kết thúc lớn gấp đôi trong KiCAD. Tôi sẽ sớm nghiên cứu giải pháp cho vấn đề này.