megamacrosupro_kicad.png

Про макросы kiCAD я слышал давно, на конференции(которую мы кстати организовывали и проводили) пример использования макросов оттуда же(советую посмотреть презентацию kicad), но нигде не мог найти описания работы и внятного руководства. Ну и вообще интересно знать зачем используют макросы в EDA программах. Итак макрос это последовательность точек и соответственно клавиш нажатых в этих точках, судя по наблюдениям клавиши эти должны быть функциональными, т.е. после них должно происходить некое действие(смотрите список горячих клавиш). Т.к. гугл не выдал мне сведенья о готовых и полезных в хозяйстве примерах макросов и сохраненных .mcr файлов, пришлось доходить самому.

Пример .mcr файла kicad , с одним макросом.

<\?xml version="1.0" encoding="UTF-8"?>
<macrosroot node>
   <macros number="0"/>
   <macros number="1">
      <hot key hkcode="80" x="-22000000" y="-7000000"/>
      <hot key hkcode="88" x="-7000000" y="-2000000"/>
      <hot key hkcode="88" x="33000000" y="-22000000"/>
      <hot key hkcode="88" x="23000000" y="-42000000"/>
      <hot key hkcode="88" x="-20000000" y="-34000000"/>
      <hot key hkcode="88" x="16000000" y="-24000000"/>
      <hot key hkcode="312" x="31000000" y="-24000000"/>
   </macros>
   <macros number="2"/>
   <macros number="3"/>
   <macros number="4"/>
   <macros number="5"/>
   <macros number="6"/>
   <macros number="7"/>
   <macros number="8"/>
   <macros number="9"/>
</macrosroot node>

Не забудьте выключить проверку DRC в общих настройках ,чтобы спокойно экспериментировать в pcbnew

Для начала у нас 10 макросов повешенных на цифру от нуля до девяти, эти макросы можно спокойно сохранять в файл .mcr и загружать из него их. Сам макрос представляет из себя набор последовательность, координаты и нажатая клавиша(указанная номером). Положительное направление координат указано на картинке, сами координаты указаны относительно первой точки макроса, первая точка макроса это то место где находился курсор когда вы нажали значащую клавишу. Значения координат указаны в нанометрах. Запись макроса начинается и заканчивается комбинацией Ctrl+N, где N число 0..9 , вызов макроса соответствующей цифрой.

<macros number="3">
  <hotkey hkcode="80" x="0" y="0"/>
  <hotkey hkcode="88" x="8000000" y="-6000000"/>
  <hotkey hkcode="88" x="4000000" y="-6000000"/>
  <hotkey hkcode="88" x="1000000" y="-3000000"/>
  <hotkey hkcode="312" x="1000000" y="1000000"/>
</macros>

Указанный макрос рисует скошенный уголок а в конце курсор остается на смещенной точке. Макрос будет вести себя странно если инструмент прокладки дорожек уже будет активирован.

kicad_macros.png

Или вот пример макроса который смещает элементы в право на 5 мм

<macros number="1">
  <hotkey hkcode="77" x="0" y="0"/>
  <hotkey hkcode="80" x="5000000" y="0"/>
</macros>

Клавиша 77=M и знакомая клавиша 80=P. Чт о интересно после выполнения этого макроса скрипт вернется в начало. Выбор элементов в графическом подменю выбора не влияет на работу макроса.

Также стоит заметить отличие поведения M — перемещение от G — перетягивание. Если мы поднесем к линии курсор и нажмем скрипт по перемещению то компьютер найдет ближайшую точку(конец от резка) сегмента и перенесет её в точку смещенную от носительно курсора на 5 мм. А если мы будем использовать G,

<macros number="5">
   <hotkey hkcode="71" x="0" y="0"/>
   <hotkey hkcode="80" x="4000000" y="0"/>
</macros>

то весь сегмент переместится параллельно, а в случае компонента ещё и сохранит свои связи. Вот проще увидеть

MG_difference_macro.png

Штука довольно занятная, но непонятно как на практике её применяют и в каких местах это важно, примеров бы побольше из практики.

Жду замечаний и предложений!)