Mail Archives: geda-user/2023/10/01/09:13:25
This is a multi-part message in MIME format.
--------------JaY2ReLp3DkuyskBqhftRlRF
Content-Type: multipart/alternative;
boundary="------------4X9plFyBWMV0zFbIvbPm7b06"
--------------4X9plFyBWMV0zFbIvbPm7b06
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Hi all,
Every now and then, questions pop up about converting a logo or other
image into a silk screen element, and many answers involve a more or
less manual process using Inkscape combined with pstoedit. Also see the
thread 'PCB jpg to silkscreen' here, starting 7 November 2019.
As I found I had to look up the details again every time, I decided to
create a script by the name of pcbsilk that automates most of the
process -- see attached file. It requires imagemagick, potrace and
pstoedit to work, and accepts several common image formats (JPG, PNM as
well as EPS).
How it works:
It first checks whether a width is specified for the resulting silk
layer element. If no width is specified, it defaults to 40 mm.
Then it checks if the input file is an EPS file already; if not, it uses
imagemagick's convert to convert the image to PBM format, which is then
fed to potrace to create an EPS file. The resulting EPS file is then
converted into a PCB silkscreen element using pstoedit.
But even though it works sort of OK, there are a few annoying things
that I haven't been able to fix (apart from several smaller refinements):
- When specifying width in millimeters, things work up to 73
millimeters but throw a sort of overflow error above that value:
$ pcbsilk -W 74mm testlogo.jpg
double free or corruption (!prev)
/home/richard/scripts/pcbsilk: line 36: 15520 Aborted            Â
(memory dumped) pstoedit -q -f "pcbfill" -ssp $silkname.eps
$silkname.pcb
The actual size itself does not seem to cause the problem, as inch sizes
(e.g. -W 74in) work just fine. So it seems that it is the millimeter
units that somehow have a limited range -- not in potrace (where the
width is specified), but in pstoedit. I could of course work around the
problem by converting millimeter sizes into inches before calling
pstoedit, so I think that's what I'll do.
- Specifying a width of course also does not work for EPS files, as any
scaling is done before conversion to EPS. Is there a way to specify
width in pstoedit? Or is there an easy tool to scale an EPS element
without having to parse the file myself?
- The pstoedit command produces a PCB file with default workspace
dimensions (6000 x 5000 mil here), with the silk image at the bottom
left. Is it possible to (temporarily) adjust this default to fit the
image size?
Thanks for comments, corrections and of course solutions!
Best regards,
Richard Rasker
--------------4X9plFyBWMV0zFbIvbPm7b06
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 8bit
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<p>Hi all,</p>
<p>Every now and then, questions pop up about converting a logo or
other image into a silk screen element, and many answers involve a
more or less manual process using Inkscape combined with pstoedit.
Also see the thread 'PCB jpg to silkscreen' here, starting 7
November 2019.<br>
</p>
<p>As I found I had to look up the details again every time, I
decided to create a script by the name of pcbsilk that automates
most of the process -- see attached file. It requires imagemagick,
potrace and pstoedit to work, and accepts several common image
formats (JPG, PNM as well as EPS).<br>
</p>
<p>How it works:<br>
</p>
<p>It first checks whether a width is specified for the resulting
silk layer element. If no width is specified, it defaults to 40
mm.</p>
<p>Then it checks if the input file is an EPS file already; if not,
it uses imagemagick's convert to convert the image to PBM format,
which is then fed to potrace to create an EPS file. The resulting
EPS file is then converted into a PCB silkscreen element using
pstoedit.<br>
</p>
<p>But even though it works sort of OK, there are a few annoying
things that I haven't been able to fix (apart from several smaller
refinements):</p>
<p>- When specifying width in millimeters, things work up to 73
millimeters but throw a sort of overflow error above that value:</p>
<blockquote>
<p><span style="font-family:monospace"><span
style="color:#000000;background-color:#ffffff;">$ pcbsilk -W
74mm testlogo.jpg  </span><br>
double free or corruption (!prev)
<br>
/home/richard/scripts/pcbsilk: line 36: 15520 Aborted
            (memory dumped) pstoedit -q -f "pcbfill" -ssp
$silkname.eps $silkname.pcb<br>
</span></p>
</blockquote>
<p>The actual size itself does not seem to cause the problem, as
inch sizes (e.g. -W 74in) work just fine. So it seems that it is
the millimeter units that somehow have a limited range -- not in
potrace (where the width is specified), but in pstoedit. I could
of course work around the problem by converting millimeter sizes
into inches before calling pstoedit, so I think that's what I'll
do.<br>
</p>
<p>- Specifying a width of course also does not work for EPS files,
as any scaling is done before conversion to EPS. Is there a way to
specify width in pstoedit? Or is there an easy tool to scale an
EPS element without having to parse the file myself?</p>
<p>- The pstoedit command produces a PCB file with default workspace
dimensions (6000 x 5000 mil here), with the silk image at the
bottom left. Is it possible to (temporarily) adjust this default
to fit the image size?<br>
</p>
<p>Thanks for comments, corrections and of course solutions!</p>
<p>Best regards,</p>
<p>Richard Rasker<br>
</p>
</body>
</html>
--------------4X9plFyBWMV0zFbIvbPm7b06--
--------------JaY2ReLp3DkuyskBqhftRlRF
Content-Type: text/plain; charset=UTF-8; name="pcbsilk"
Content-Disposition: attachment; filename="pcbsilk"
Content-Transfer-Encoding: base64
IyEvYmluL2Jhc2gKCmlmIFsgIiQxIiA9ICItPyIgXSB8fCBbICIkMSIgPSAiLWgiIF0gfHwg
WyAiJDEiID0gIi0taGVscCIgXQp0aGVuCiAgIGVjaG8gIlVzYWdlOiAgJDAgWy1XIHdpZHRo
XSBpbWFnZSIKICAgZWNobyAtZSAiXHRJbWFnZSBpcyBhbnkgaW1hZ2UgZmlsZSBvciBFUFMg
ZmlsZSIKICAgZWNobyAtZSAiXHRVc2UgLVcgc3dpdGNoIHRvIHNwZWNpZnkgd2lkdGgiCiAg
IGVjaG8gLWUgIlx0V2lkdGggaXMgc3BlY2lmaWVkIGluIGluY2hlcyAoc3VmZml4Om5vbmUg
b3IgaW4pIG9yIG1pbGxpbWV0ZXJzIChzdWZmaXg6IG1tKSIKICAgZWNobyAtZSAiXHREZWZh
dWx0IHdpZHRoIGlzIDQwIG1tIgogICBleGl0IDEKZmkKCiMgQ2hlY2sgaWYgd2lkdGggaXMg
c3BlY2lmaWVkCmlmIFsgIiQxIiA9ICItVyIgXQp0aGVuCiAgICB3aWR0aD0kMgogICAgaW1h
Z2VmaWxlPSQzCmVsc2UKICAgIGltYWdlZmlsZT0kMQogICAgd2lkdGg9NDBtbQpmaQoKZXh0
ZW5zaW9uPSIke2ltYWdlZmlsZSMjKi59IgoKIyBDaGVjayBpZiBpbnB1dCBpcyBFUFMgZmls
ZQplcHN0ZXN0PWBmaWxlICRpbWFnZWZpbGUgfCBncmVwIEVQU2AKaWYgWyAiJGVwc3Rlc3Qi
ID0gIiIgXQojIEltYWdlIGZpbGUgaXMgbm90IGFuIEVQUyBmaWxlPwojIFRoZW4gY29udmVy
dCBpdCBmaXJzdAp0aGVuCiAgICBzaWxrbmFtZT1gYmFzZW5hbWUgJGltYWdlZmlsZSAuJGV4
dGVuc2lvbmAKICAgIGNvbnZlcnQgJGltYWdlZmlsZSAkc2lsa25hbWUucGJtCiAgICBwb3Ry
YWNlIC1vICRzaWxrbmFtZS5lcHMgLVcgJHdpZHRoICRzaWxrbmFtZS5wYm0KZmkKCiMgcHN0
b2VkaXQgLXEgLWYgInBjYmZpbGwiIC1zc3AgJHNpbGtuYW1lLmVwcyAkc2lsa25hbWUucGNi
Cg==
--------------JaY2ReLp3DkuyskBqhftRlRF--
- Raw text -