432 lines
39 KiB
HTML
432 lines
39 KiB
HTML
<!DOCTYPE html>
|
||
<html class="writer-html5" lang="en" >
|
||
<head>
|
||
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
|
||
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||
<title>Notes about the position file — KiBot 1.6.4 documentation</title>
|
||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
|
||
|
||
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
|
||
<script src="_static/jquery.js"></script>
|
||
<script src="_static/underscore.js"></script>
|
||
<script src="_static/_sphinx_javascript_frameworks_compat.js"></script>
|
||
<script src="_static/doctools.js"></script>
|
||
<script src="_static/sphinx_highlight.js"></script>
|
||
<script src="_static/js/theme.js"></script>
|
||
<link rel="index" title="Index" href="genindex.html" />
|
||
<link rel="search" title="Search" href="search.html" />
|
||
<link rel="next" title="Notes about 3D models" href="notes_3d.html" />
|
||
<link rel="prev" title="Notes about Gerber format" href="notes_gerber.html" />
|
||
</head>
|
||
|
||
<body class="wy-body-for-nav">
|
||
<div class="wy-grid-for-nav">
|
||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||
<div class="wy-side-scroll">
|
||
<div class="wy-side-nav-search" >
|
||
|
||
|
||
|
||
<a href="index.html" class="icon icon-home">
|
||
KiBot
|
||
<img src="_static/kibot_370x200.png" class="logo" alt="Logo"/>
|
||
</a>
|
||
<div role="search">
|
||
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
|
||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
|
||
<input type="hidden" name="check_keywords" value="yes" />
|
||
<input type="hidden" name="area" value="default" />
|
||
</form>
|
||
</div>
|
||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="introduction.html">Introduction</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="configuration.html">Configuration</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="usage.html">Usage</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="usage_with_ci_cd.html">Usage for CI/CD</a></li>
|
||
</ul>
|
||
<p class="caption" role="heading"><span class="caption-text">Notes and extra information:</span></p>
|
||
<ul class="current">
|
||
<li class="toctree-l1"><a class="reference internal" href="notes_gerber.html">Notes about Gerber format</a></li>
|
||
<li class="toctree-l1 current"><a class="current reference internal" href="#">Notes about the position file</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="#xyrs-files">XYRS files</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="notes_3d.html">Notes about 3D models</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="propose.html">Proposed advanced KiCad usage</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="KiPlotYAML.html">KiPlot YAML</a></li>
|
||
</ul>
|
||
<p class="caption" role="heading"><span class="caption-text">Final notes:</span></p>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="contributing.html">Contributing</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="credits.html">Credits</a></li>
|
||
</ul>
|
||
<p class="caption" role="heading"><span class="caption-text">Indices and tables:</span></p>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="genindex.html">Index</a></li>
|
||
</ul>
|
||
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
|
||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||
<a href="index.html">KiBot</a>
|
||
</nav>
|
||
|
||
<div class="wy-nav-content">
|
||
<div class="rst-content">
|
||
<div role="navigation" aria-label="Page navigation">
|
||
<ul class="wy-breadcrumbs">
|
||
<li><a href="index.html" class="icon icon-home" aria-label="Home"></a></li>
|
||
<li class="breadcrumb-item active">Notes about the position file</li>
|
||
<li class="wy-breadcrumbs-aside">
|
||
</li>
|
||
</ul>
|
||
<hr/>
|
||
</div>
|
||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||
<div itemprop="articleBody">
|
||
|
||
<section id="notes-about-the-position-file">
|
||
<span id="index-0"></span><h1>Notes about the position file<a class="headerlink" href="#notes-about-the-position-file" title="Permalink to this heading"></a></h1>
|
||
<p>Position files are quite simple. You can generate them as plain text
|
||
(ASCII) or as a spreadsheet (CSV).</p>
|
||
<p>But some conventions can make them tricky. Some manufacturers, like
|
||
<a class="reference external" href="https://jlcpcb.com/">JLCPCB</a>, uses conventions that are incompatible
|
||
with KiCad.</p>
|
||
<p>The <a class="reference external" href="https://dubiouscreations.com/2019/10/21/using-kicad-with-jlcpcb-assembly-service/">following
|
||
blog</a>
|
||
explains how to adapt the position files generated by KiCad to what
|
||
JLCPCB needs. To achieve it the author uses a script called
|
||
<a class="reference external" href="https://github.com/matthewlai/JLCKicadTools">JLCKicadTools</a>.</p>
|
||
<p>You can achieve the same using KiBot. Here is a configuration example
|
||
that generates the BoM and position files in the same way JLCKicadTools
|
||
does:</p>
|
||
<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="nt">kibot</span><span class="p">:</span>
|
||
<span class="w"> </span><span class="nt">version</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">1</span>
|
||
|
||
<span class="nt">filters</span><span class="p">:</span>
|
||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">only_jlc_parts</span>
|
||
<span class="w"> </span><span class="nt">comment</span><span class="p">:</span><span class="w"> </span><span class="s">'Only</span><span class="nv"> </span><span class="s">parts</span><span class="nv"> </span><span class="s">with</span><span class="nv"> </span><span class="s">JLC</span><span class="nv"> </span><span class="s">code'</span>
|
||
<span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">generic</span>
|
||
<span class="w"> </span><span class="nt">include_only</span><span class="p">:</span>
|
||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">column</span><span class="p">:</span><span class="w"> </span><span class="s">'LCSC#'</span>
|
||
<span class="w"> </span><span class="nt">regex</span><span class="p">:</span><span class="w"> </span><span class="s">'^C\d+'</span>
|
||
|
||
<span class="nt">variants</span><span class="p">:</span>
|
||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">rotated</span>
|
||
<span class="w"> </span><span class="nt">comment</span><span class="p">:</span><span class="w"> </span><span class="s">'Just</span><span class="nv"> </span><span class="s">a</span><span class="nv"> </span><span class="s">place</span><span class="nv"> </span><span class="s">holder</span><span class="nv"> </span><span class="s">for</span><span class="nv"> </span><span class="s">the</span><span class="nv"> </span><span class="s">rotation</span><span class="nv"> </span><span class="s">filter'</span>
|
||
<span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">kibom</span>
|
||
<span class="w"> </span><span class="nt">variant</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">rotated</span>
|
||
<span class="w"> </span><span class="nt">pre_transform</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">_rot_footprint</span>
|
||
|
||
<span class="nt">outputs</span><span class="p">:</span>
|
||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="s">'position'</span>
|
||
<span class="w"> </span><span class="nt">comment</span><span class="p">:</span><span class="w"> </span><span class="s">"Pick</span><span class="nv"> </span><span class="s">and</span><span class="nv"> </span><span class="s">place</span><span class="nv"> </span><span class="s">file,</span><span class="nv"> </span><span class="s">JLC</span><span class="nv"> </span><span class="s">style"</span>
|
||
<span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">position</span>
|
||
<span class="w"> </span><span class="nt">options</span><span class="p">:</span>
|
||
<span class="w"> </span><span class="nt">variant</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">rotated</span>
|
||
<span class="w"> </span><span class="nt">output</span><span class="p">:</span><span class="w"> </span><span class="s">'%f_cpl_jlc.%x'</span>
|
||
<span class="w"> </span><span class="nt">format</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">CSV</span>
|
||
<span class="w"> </span><span class="nt">units</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">millimeters</span>
|
||
<span class="w"> </span><span class="nt">separate_files_for_front_and_back</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">false</span>
|
||
<span class="w"> </span><span class="nt">only_smd</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span>
|
||
<span class="w"> </span><span class="nt">columns</span><span class="p">:</span>
|
||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Ref</span>
|
||
<span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Designator</span>
|
||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Val</span>
|
||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Package</span>
|
||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">PosX</span>
|
||
<span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="s">"Mid</span><span class="nv"> </span><span class="s">X"</span>
|
||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">PosY</span>
|
||
<span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="s">"Mid</span><span class="nv"> </span><span class="s">Y"</span>
|
||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Rot</span>
|
||
<span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Rotation</span>
|
||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Side</span>
|
||
<span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Layer</span>
|
||
|
||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="s">'bom'</span>
|
||
<span class="w"> </span><span class="nt">comment</span><span class="p">:</span><span class="w"> </span><span class="s">"BoM</span><span class="nv"> </span><span class="s">for</span><span class="nv"> </span><span class="s">JLC"</span>
|
||
<span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">bom</span>
|
||
<span class="w"> </span><span class="nt">options</span><span class="p">:</span>
|
||
<span class="w"> </span><span class="nt">output</span><span class="p">:</span><span class="w"> </span><span class="s">'%f_%i_jlc.%x'</span>
|
||
<span class="w"> </span><span class="nt">exclude_filter</span><span class="p">:</span><span class="w"> </span><span class="s">'only_jlc_parts'</span>
|
||
<span class="w"> </span><span class="nt">ref_separator</span><span class="p">:</span><span class="w"> </span><span class="s">','</span>
|
||
<span class="w"> </span><span class="nt">columns</span><span class="p">:</span>
|
||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">field</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Value</span>
|
||
<span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Comment</span>
|
||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">field</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">References</span>
|
||
<span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Designator</span>
|
||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Footprint</span>
|
||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">field</span><span class="p">:</span><span class="w"> </span><span class="s">'LCSC#'</span>
|
||
<span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="s">'LCSC</span><span class="nv"> </span><span class="s">Part</span><span class="nv"> </span><span class="s">#'</span>
|
||
<span class="w"> </span><span class="nt">csv</span><span class="p">:</span>
|
||
<span class="w"> </span><span class="nt">hide_pcb_info</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span>
|
||
<span class="w"> </span><span class="nt">hide_stats_info</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span>
|
||
<span class="w"> </span><span class="nt">quote_all</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>The <code class="docutils literal notranslate"><span class="pre">only_jlc_parts</span></code> filter is used to generate the BoM and assumes
|
||
you put the JLC component code in a field named <code class="docutils literal notranslate"><span class="pre">LCSC#</span></code> (JLC uses
|
||
<a class="reference external" href="https://lcsc.com/">LCSC</a> as supplier). Note that the author of the
|
||
blog simply used <code class="docutils literal notranslate"><span class="pre">Field4</span></code> for this and his script searches for any
|
||
field containing the <code class="docutils literal notranslate"><span class="pre">^C\d+</span></code> pattern. I think this isn’t a good idea
|
||
and I suggest using a defined name, like in this example.</p>
|
||
<p>The <code class="docutils literal notranslate"><span class="pre">rotated</span></code> variant is used only to apply the <code class="docutils literal notranslate"><span class="pre">_rot_footprint</span></code>
|
||
transformation filter. This filter is an internal filter of type
|
||
<code class="docutils literal notranslate"><span class="pre">rot_footprint</span></code>. Here is the same configuration file making explicit
|
||
use of the rotation filter:</p>
|
||
<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="nt">kibot</span><span class="p">:</span>
|
||
<span class="w"> </span><span class="nt">version</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">1</span>
|
||
|
||
<span class="nt">filters</span><span class="p">:</span>
|
||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">fix_rotation</span>
|
||
<span class="w"> </span><span class="nt">comment</span><span class="p">:</span><span class="w"> </span><span class="s">'Adjust</span><span class="nv"> </span><span class="s">rotation</span><span class="nv"> </span><span class="s">for</span><span class="nv"> </span><span class="s">JLC'</span>
|
||
<span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">rot_footprint</span>
|
||
|
||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">only_jlc_parts</span>
|
||
<span class="w"> </span><span class="nt">comment</span><span class="p">:</span><span class="w"> </span><span class="s">'Only</span><span class="nv"> </span><span class="s">parts</span><span class="nv"> </span><span class="s">with</span><span class="nv"> </span><span class="s">JLC</span><span class="nv"> </span><span class="s">code'</span>
|
||
<span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">generic</span>
|
||
<span class="w"> </span><span class="nt">include_only</span><span class="p">:</span>
|
||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">column</span><span class="p">:</span><span class="w"> </span><span class="s">'LCSC#'</span>
|
||
<span class="w"> </span><span class="nt">regex</span><span class="p">:</span><span class="w"> </span><span class="s">'^C\d+'</span>
|
||
|
||
<span class="nt">variants</span><span class="p">:</span>
|
||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">rotated</span>
|
||
<span class="w"> </span><span class="nt">comment</span><span class="p">:</span><span class="w"> </span><span class="s">'Just</span><span class="nv"> </span><span class="s">a</span><span class="nv"> </span><span class="s">place</span><span class="nv"> </span><span class="s">holder</span><span class="nv"> </span><span class="s">for</span><span class="nv"> </span><span class="s">the</span><span class="nv"> </span><span class="s">rotation</span><span class="nv"> </span><span class="s">filter'</span>
|
||
<span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">kibom</span>
|
||
<span class="w"> </span><span class="nt">variant</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">rotated</span>
|
||
<span class="w"> </span><span class="nt">pre_transform</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">fix_rotation</span>
|
||
|
||
<span class="nt">outputs</span><span class="p">:</span>
|
||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="s">'position'</span>
|
||
<span class="w"> </span><span class="nt">comment</span><span class="p">:</span><span class="w"> </span><span class="s">"Pick</span><span class="nv"> </span><span class="s">and</span><span class="nv"> </span><span class="s">place</span><span class="nv"> </span><span class="s">file,</span><span class="nv"> </span><span class="s">JLC</span><span class="nv"> </span><span class="s">style"</span>
|
||
<span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">position</span>
|
||
<span class="w"> </span><span class="nt">options</span><span class="p">:</span>
|
||
<span class="w"> </span><span class="nt">variant</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">rotated</span>
|
||
<span class="w"> </span><span class="nt">output</span><span class="p">:</span><span class="w"> </span><span class="s">'%f_cpl_jlc.%x'</span>
|
||
<span class="w"> </span><span class="nt">format</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">CSV</span>
|
||
<span class="w"> </span><span class="nt">units</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">millimeters</span>
|
||
<span class="w"> </span><span class="nt">separate_files_for_front_and_back</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">false</span>
|
||
<span class="w"> </span><span class="nt">only_smd</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span>
|
||
<span class="w"> </span><span class="nt">columns</span><span class="p">:</span>
|
||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Ref</span>
|
||
<span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Designator</span>
|
||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Val</span>
|
||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Package</span>
|
||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">PosX</span>
|
||
<span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="s">"Mid</span><span class="nv"> </span><span class="s">X"</span>
|
||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">PosY</span>
|
||
<span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="s">"Mid</span><span class="nv"> </span><span class="s">Y"</span>
|
||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Rot</span>
|
||
<span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Rotation</span>
|
||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">id</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Side</span>
|
||
<span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Layer</span>
|
||
|
||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="s">'bom'</span>
|
||
<span class="w"> </span><span class="nt">comment</span><span class="p">:</span><span class="w"> </span><span class="s">"BoM</span><span class="nv"> </span><span class="s">for</span><span class="nv"> </span><span class="s">JLC"</span>
|
||
<span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">bom</span>
|
||
<span class="w"> </span><span class="nt">options</span><span class="p">:</span>
|
||
<span class="w"> </span><span class="nt">output</span><span class="p">:</span><span class="w"> </span><span class="s">'%f_%i_jlc.%x'</span>
|
||
<span class="w"> </span><span class="nt">exclude_filter</span><span class="p">:</span><span class="w"> </span><span class="s">'only_jlc_parts'</span>
|
||
<span class="w"> </span><span class="nt">ref_separator</span><span class="p">:</span><span class="w"> </span><span class="s">','</span>
|
||
<span class="w"> </span><span class="nt">columns</span><span class="p">:</span>
|
||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">field</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Value</span>
|
||
<span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Comment</span>
|
||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">field</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">References</span>
|
||
<span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Designator</span>
|
||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Footprint</span>
|
||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">field</span><span class="p">:</span><span class="w"> </span><span class="s">'LCSC#'</span>
|
||
<span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="s">'LCSC</span><span class="nv"> </span><span class="s">Part</span><span class="nv"> </span><span class="s">#'</span>
|
||
<span class="w"> </span><span class="nt">csv</span><span class="p">:</span>
|
||
<span class="w"> </span><span class="nt">hide_pcb_info</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span>
|
||
<span class="w"> </span><span class="nt">hide_stats_info</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span>
|
||
<span class="w"> </span><span class="nt">quote_all</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>As you can see we now create a filter named <code class="docutils literal notranslate"><span class="pre">fix_rotation</span></code> of type
|
||
<code class="docutils literal notranslate"><span class="pre">rot_footprint</span></code>:</p>
|
||
<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">fix_rotation</span>
|
||
<span class="w"> </span><span class="nt">comment</span><span class="p">:</span><span class="w"> </span><span class="s">'Adjust</span><span class="nv"> </span><span class="s">rotation</span><span class="nv"> </span><span class="s">for</span><span class="nv"> </span><span class="s">JLC'</span>
|
||
<span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">rot_footprint</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>Using it, instead of the internal filter named <code class="docutils literal notranslate"><span class="pre">_rot_footprint</span></code>, is
|
||
the same here. But you can then customize the filter.</p>
|
||
<p>The filter supports the following options:</p>
|
||
<ul class="simple">
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">extend</span></code>: [boolean=true] Extends the internal list of rotations
|
||
with the one provided. Otherwise just use the provided list.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">negative_bottom</span></code>: [boolean=true] Rotation for bottom components is
|
||
computed via subtraction as <code class="docutils literal notranslate"><span class="pre">(component</span> <span class="pre">rot</span> <span class="pre">-</span> <span class="pre">angle)</span></code>. Note that
|
||
this should be coherent with the <code class="docutils literal notranslate"><span class="pre">bottom_negative_x</span></code> of the
|
||
position output.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">invert_bottom</span></code>: [boolean=false] Rotation for bottom components is
|
||
negated, resulting in either: <code class="docutils literal notranslate"><span class="pre">(-</span> <span class="pre">component</span> <span class="pre">rot</span> <span class="pre">-</span> <span class="pre">angle)</span></code> or when
|
||
combined with <code class="docutils literal notranslate"><span class="pre">negative_bottom</span></code>, <code class="docutils literal notranslate"><span class="pre">(angle</span> <span class="pre">-</span> <span class="pre">component</span> <span class="pre">rot)</span></code>.</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">rotations</span></code>: [list(list(string))] A list of pairs regular
|
||
expression/rotation. Components matching the regular expression will
|
||
be rotated the indicated angle. Special names <code class="docutils literal notranslate"><span class="pre">_top</span></code> and
|
||
<code class="docutils literal notranslate"><span class="pre">_bottom</span></code> will match all components on that side of the board.</p></li>
|
||
</ul>
|
||
<p>In order to add a new rotation or just change an existing one you just
|
||
need to use the <code class="docutils literal notranslate"><span class="pre">rotations</span></code> option. As an example: the internal list
|
||
of rotations rotates QFN packages by 270 degrees, no suppose you want to
|
||
rotate them just 90 degrees. The filter will look like this:</p>
|
||
<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">fix_rotation</span>
|
||
<span class="w"> </span><span class="nt">comment</span><span class="p">:</span><span class="w"> </span><span class="s">'Adjust</span><span class="nv"> </span><span class="s">rotation</span><span class="nv"> </span><span class="s">for</span><span class="nv"> </span><span class="s">JLC'</span>
|
||
<span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">rot_footprint</span>
|
||
<span class="w"> </span><span class="nt">rotations</span><span class="p">:</span>
|
||
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="p p-Indicator">[</span><span class="s">"^QFN-"</span><span class="p p-Indicator">,</span><span class="w"> </span><span class="nv">90.0</span><span class="p p-Indicator">]</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>This regular expression will match any footprint starting with <code class="docutils literal notranslate"><span class="pre">QFN-</span></code>
|
||
and rotate it 90 degrees.</p>
|
||
<p>The internal list of rotations is:</p>
|
||
<table class="docutils align-default">
|
||
<thead>
|
||
<tr class="row-odd"><th class="head"><p>Footprint</p></th>
|
||
<th class="head"><p>Rotation</p></th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">^Bosch_LGA-8_2x2.5mm_P0.65mm_ClockwisePinNumbering</span></code></p></td>
|
||
<td><p>90.0</p></td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">^R_Array_Convex_</span></code></p></td>
|
||
<td><p>90.0</p></td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">^R_Array_Concave_</span></code></p></td>
|
||
<td><p>90.0</p></td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">^SOT-223</span></code></p></td>
|
||
<td><p>180.0</p></td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">^SOT-23</span></code></p></td>
|
||
<td><p>180.0</p></td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">^TSOT-23</span></code></p></td>
|
||
<td><p>180.0</p></td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">^SOT-353</span></code></p></td>
|
||
<td><p>180.0</p></td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">^QFN-</span></code></p></td>
|
||
<td><p>270.0</p></td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">^LQFP-</span></code></p></td>
|
||
<td><p>270.0</p></td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">^TQFP-</span></code></p></td>
|
||
<td><p>270.0</p></td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">^SOP-(?!18_)</span></code></p></td>
|
||
<td><p>270.0</p></td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">^TSSOP-</span></code></p></td>
|
||
<td><p>270.0</p></td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">^DFN-</span></code></p></td>
|
||
<td><p>270.0</p></td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">^SOIC-</span></code></p></td>
|
||
<td><p>270.0</p></td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">^VSSOP-10_</span></code></p></td>
|
||
<td><p>270.0</p></td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">^CP_EIA-3216-18_</span></code></p></td>
|
||
<td><p>180.0</p></td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">^CP_EIA-3528-15_AVX-H</span></code></p></td>
|
||
<td><p>180.0</p></td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">^CP_EIA-3528-21_Kemet-B</span></code></p></td>
|
||
<td><p>180.0</p></td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">^CP_Elec_8x10.5</span></code></p></td>
|
||
<td><p>180.0</p></td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">^CP_Elec_6.3x7.7</span></code></p></td>
|
||
<td><p>180.0</p></td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">^CP_Elec_8x6.7</span></code></p></td>
|
||
<td><p>180.0</p></td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">^CP_Elec_8x10</span></code></p></td>
|
||
<td><p>180.0</p></td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">^(.*?_\|V)?QFN-(16\|20\|24\|28\|40)(-\|_\|$)</span></code></p></td>
|
||
<td><p>270.0</p></td>
|
||
</tr>
|
||
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">^PowerPAK_SO-8_Single</span></code></p></td>
|
||
<td><p>270.0</p></td>
|
||
</tr>
|
||
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">^HTSSOP-28-1EP_4.4x9.7mm*</span></code></p></td>
|
||
<td><p>270.0</p></td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<section id="xyrs-files">
|
||
<span id="index-1"></span><h2>XYRS files<a class="headerlink" href="#xyrs-files" title="Permalink to this heading"></a></h2>
|
||
<p>XYRS files are just BoM files in CSV format that includes pick and place
|
||
data (<strong>X</strong> position, <strong>Y</strong> position, <strong>R</strong>otation and <strong>S</strong>ide).
|
||
You can generate them using the internal BoM generator (<code class="docutils literal notranslate"><span class="pre">bom</span></code> output).
|
||
The following fields contains the needed information:</p>
|
||
<ul class="simple">
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">Footprint</span> <span class="pre">X</span></code></p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">Footprint</span> <span class="pre">Y</span></code></p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">Footprint</span> <span class="pre">Rot</span></code></p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">Footprint</span> <span class="pre">Side</span></code></p></li>
|
||
</ul>
|
||
<p>Additionally we support:</p>
|
||
<ul class="simple">
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">Footprint</span> <span class="pre">Type</span></code> (SMD, THT, VIRTUAL)</p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">Footprint</span> <span class="pre">X-Size</span></code></p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">Footprint</span> <span class="pre">Y-Size</span></code></p></li>
|
||
<li><p><code class="docutils literal notranslate"><span class="pre">Footprint</span> <span class="pre">Populate</span></code></p></li>
|
||
</ul>
|
||
<p>Important: These files doesn’t support manual panelization with repeated
|
||
reference names, you’ll get the coordinates for just one component
|
||
because this is a BoM.</p>
|
||
</section>
|
||
</section>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
|
||
<a href="notes_gerber.html" class="btn btn-neutral float-left" title="Notes about Gerber format" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||
<a href="notes_3d.html" class="btn btn-neutral float-right" title="Notes about 3D models" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
||
</div>
|
||
|
||
<hr/>
|
||
|
||
<div role="contentinfo">
|
||
<p>© Copyright 2018-2023, Salvador E. Tropea/INTI/John Beard.</p>
|
||
</div>
|
||
|
||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||
|
||
|
||
</footer>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
<script>
|
||
jQuery(function () {
|
||
SphinxRtdTheme.Navigation.enable(true);
|
||
});
|
||
</script>
|
||
|
||
</body>
|
||
</html> |