LINUX.ORG.RU
ФорумTalks

Выравниваем kicad_mod

 , , ,


0

0

Попалась в руки интересная библиотека компонентов для KiCAD эдак под 500 файлов. 3D-модели делал другой человек, причем, по всей видимости, не обремененный пряморукостью, в следствие чего центры моделей и футпринтов сильно в разных местах, так еще и под прямым углом. Ну не беда, поправим kicad_mod фалы, подумал я. Угол-то поменять фигня вопрос, всемогущий sed прожевал полтонны файлов за долю секунды и угол поправил. А вот как переякорить центр футпринта возник вопрос. Дело в том, что это делается путем задания координат падов относительно условно принятого центра. В файлах библиотеки условный ноль приходится на первый пад, а надо чтобы пады были симметрично расположены относительно X и Y. Для простоты примера можно взять футпринт под стандартную двухрядную PLD-полоску например. Нужно переместить условный ноль с первого пада в центр симметрии футпринта. Ясно что perl и sed мне в помощь, но как пересчитать координаты падов для произвольного числа падов и количества рядов? Для понимания вопроса, возьмем в качестве примера этот файлик,

(module Pin_Socket_Straight_2x02_Pitch2.00mm (layer F.Cu) (tedit 59E18A98)
  (descr "Through hole pin stricke, 2x02, 2.00mm pitch, double row")
  (tags "pin stricke double row")
  (fp_text reference REF** (at -0.9906 -6.016) (layer F.SilkS)
    (effects (font (size 1 1) (thickness 0.15)))
  )
  (fp_text value Pin_Socket_Straight_2x02_Pitch2.00mm (at -0.9906 -4.016) (layer F.Fab)
    (effects (font (size 1 1) (thickness 0.15)))
  )
  (fp_line (start -1.9906 -0.016) (end 0.0094 -0.016) (layer F.SilkS) (width 0.15))
  (fp_line (start 0.0094 -0.016) (end 0.0094 -2.016) (layer F.SilkS) (width 0.15))
  (fp_line (start 0.0094 -2.016) (end 2.0094 -2.016) (layer F.SilkS) (width 0.15))
  (fp_line (start 2.0094 -2.016) (end 2.0094 -0.016) (layer F.SilkS) (width 0.15))
  (fp_line (start 2.0094 -0.016) (end 2.0094 1.984) (layer F.SilkS) (width 0.15))
  (fp_line (start 2.0094 1.984) (end -1.9906 1.984) (layer F.SilkS) (width 0.15))
  (fp_line (start -1.9906 1.984) (end -1.9906 -0.016) (layer F.SilkS) (width 0.15))
  (fp_line (start -2.5906 -2.616) (end 2.6094 -2.616) (layer F.CrtYd) (width 0.05))
  (fp_line (start 2.6094 -2.616) (end 2.6094 2.584) (layer F.CrtYd) (width 0.05))
  (fp_line (start 2.6094 2.584) (end -2.5906 2.584) (layer F.CrtYd) (width 0.05))
  (fp_line (start -2.5906 2.584) (end -2.5906 -2.616) (layer F.CrtYd) (width 0.05))
  (fp_line (start -2.4906 -1.016) (end -2.4906 -2.516) (layer F.SilkS) (width 0.15))
  (fp_line (start -2.4906 -2.516) (end -0.9906 -2.516) (layer F.SilkS) (width 0.15))
  (pad 1 thru_hole rect (at -0.9906 -1.016) (size 1.4 1.4) (drill 0.7) (layers *.Cu *.Mask))
  (pad 3 thru_hole circle (at -0.9906 0.984) (size 1.4 1.4) (drill 0.7) (layers *.Cu *.Mask))
  (pad 2 thru_hole circle (at 1.0094 -1.016) (size 1.4 1.4) (drill 0.7) (layers *.Cu *.Mask))
  (pad 4 thru_hole circle (at 1.0094 0.984) (size 1.4 1.4) (drill 0.7) (layers *.Cu *.Mask))
  (model Pin_Sockets.3dshapes/Pin_Socket_Straight_2x02_Pitch2.00mm.wrl
    (at (xyz 0 0 0))
    (scale (xyz 1 1 1))
    (rotate (xyz 0 0 90))
  )
)
чтоб перед глазами был, там все понятно.

Ответ на: комментарий от CYB3R

Творчество коллеги, как раз пытаюсь привести в порядок прежде чем выложить. Вопрос не столько по кикаду, сколько по sed. Сформулирую короче: имеем рандомно разбросанные пады с известными координатами. Нужно найти координату центра симметрии и пересчитать относительно него новые координаты падов (и всего остального).

Oberstserj ★★
() автор топика
Ответ на: комментарий от Oberstserj

Я в своё время написал набор скриптов для генерации любых (ну, почти любых, до QFN и BGA так руки и не дошли) футпринтов, хотел ещё к нему добавить генератор 3D-моделей, но это оказалось слишком сложной задачей.
С тех пор у кикада сменился основной формат, потому я забил.
Думаю, с новым форматом, задача генерации футпринтов сильно упрощается.

CYB3R ★★★★★
()
Ответ на: комментарий от CYB3R

Эти ваши скрипты вызывают острый приступ эстетического перфекционизма, ибо кровь из глаз течь начинает :) А вообще фишка как раз в том, что библиотеку начали делать имея на руках кучу моделей, причем от разных людей. Компонента еще в производстве нет. Мы его готовимся запустить сейчас, хотим параллельно библиотеку выкинуть к этому делу. Ну не суть. Тут вопрос уже у меня лично. Просто поправить-пересчитать координаты падов в 500 файлах. Сижу туплю...

Oberstserj ★★
() автор топика
Ответ на: комментарий от Oberstserj

Эти ваши скрипты вызывают острый приступ эстетического перфекционизма, ибо кровь из глаз течь начинает :)

А что не так? Как по мне, довольно красиво получается.

CYB3R ★★★★★
()
Ответ на: комментарий от CYB3R

Ты не обижайся, я не про твои конкретно скрипты, я в целом. Говорю ж перфекционизм, я почти все библиотеки, которые ко мне попадают правлю, ибо что-то не устраивает. В первое время особо бесило то, что в 90% случаев пады перекрывались слоем шелкографии, например.

Oberstserj ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.