delorie.com/archives/browse.cgi   search  
Mail Archives: geda-user/2023/10/02/14:16:36

X-Authentication-Warning: delorie.com: mail set sender to geda-user-bounces using -f
X-Recipient: geda-user AT delorie DOT com
X-Virus-Scanned: Debian amavisd-new at mail.linetec.nl
Message-ID: <be4f5ba9-78e5-e09f-e68a-a5d789647b71@linetec.nl>
Date: Mon, 2 Oct 2023 20:15:18 +0200
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101
Thunderbird/102.15.1
Subject: Re: [geda-user] PCB silk layer image script
To: geda-user AT delorie DOT com
References: <6877754c-dcb7-db34-dd39-419de060ad7a AT linetec DOT nl>
<20231001223524 DOT 428ED8622949 AT turkos DOT aspodata DOT se>
<33e767e8-c820-9b9c-513f-dc757d53e395 AT linetec DOT nl>
<20231002154748 DOT BA848862295E AT turkos DOT aspodata DOT se>
From: "Richard Rasker (rasker AT linetec DOT nl) [via geda-user AT delorie DOT com]" <geda-user AT delorie DOT com>
In-Reply-To: <20231002154748.BA848862295E@turkos.aspodata.se>
Reply-To: geda-user AT delorie DOT com
Errors-To: nobody AT delorie DOT com
X-Mailing-List: geda-user AT delorie DOT com
X-Unsubscribes-To: listserv AT delorie DOT com

This is a multi-part message in MIME format.
--------------YM2Il2nUVFfgxs6PHEj09sVc
Content-Type: multipart/alternative;
 boundary="------------cLqUDeq4d3uuV8jYmnR3fx4R"

--------------cLqUDeq4d3uuV8jYmnR3fx4R
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hello Karl,

Op 02-10-2023 om 17:47 schreef karl AT aspodata DOT se [via geda-user AT delorie DOT com]:
> Richard Rasker:
>> Op 02-10-2023 om 00:35 schreefkarl AT aspodata DOT se  [viageda-user AT delorie DOT com]:
> ...
>   Well I did use a very large width and the result
>   grow past the board size:
> ./pcbsilk -W 1204mm TestLogo.jpg
OK, that'll be the problem then,
>> Anyway, I might give it
>> a shot using grep, cut, sed and sort to manipulate the X and Y values --
>> even though I think it's going to be pretty inefficient.
> You don't need to.

Well, I already came up with this oneliner for the minimum y value from 
the pcb logo file:

    ymin=`egrep "\[[0-9]+\ [0-9]+\]" $silkname.pcb | cut -d " " -f2 |
    cut -d "]" -f1 | sort -n | head -1`

> Below I made a 60mm wide logo, its minimum y extent was 220.4103mm.

Yup, that seems right:

    echo $ymin -> *867757*
    yshift= echo 'scale=2;-$ymin*25.4/100000' | bc
    echo $yshift -> *-220.41*

>   Then I rerun pstoedit but told it to move the result
> 220mm up:
>
> $ ./pcbsilk -W 60mm TestLogo.jpg
> $ Pcb_test.pl polygon  TestLogo.pcb
> Layer 1, name poly:
>          0.0000 220.4103mm 59.9996mm 279.0472mm
> Layer 10, name silk:
> $ pstoedit -q -f "pcb:-mm -tshifty -220"  TestLogo.eps TestLogo.pcb

And unfortunately, this is where things go wrong. It works just fine 
with the numerical value:

    $ pstoedit -q -f "pcb:-mm -tshifty -220.41" -ssp TestLogo.eps TestLogo.pcb

But when I replace -220.41 with the variable $yshift calculated above, 
it no longer works; also see line 88 of the attached script version. It 
appears that $yshift is not expanded, even though double quote marks 
were used.

> $ Pcb_test.pl polygon  TestLogo.pcb
> Layer 1, name poly:
>          0.0000 0.4102mm 59.9996mm 59.0471mm
> Layer 10, name silk:
> $
>
> The only thing remaining is to edit the file, removing the empty
> layer and rename layer 1 to something like: Layer(5 "top silk" "silk").

Yes, I already fixed the layers, and I also created an extra command 
line switch to select the number of layers, with a default of 2, which 
causes top silk to end up on layer 6. The X size is now also correct, so 
all that still needs to be done is shift the logo to the top. Once 
everything works, the extra echo commands for $ymin and $yshift can be 
commented out, and removing the intermediate files can be restored.

Best regards,

Richard Rasker

--------------cLqUDeq4d3uuV8jYmnR3fx4R
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 7bit

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Hello Karl,<br>
    </p>
    <div class="moz-cite-prefix">Op 02-10-2023 om 17:47 schreef
      <a class="moz-txt-link-abbreviated" href="mailto:karl AT aspodata DOT se">karl AT aspodata DOT se</a> [via <a class="moz-txt-link-abbreviated" href="mailto:geda-user AT delorie DOT com">geda-user AT delorie DOT com</a>]:<br>
    </div>
    <blockquote type="cite"
      cite="mid:20231002154748 DOT BA848862295E AT turkos DOT aspodata DOT se">
      <pre class="moz-quote-pre" wrap="">Richard Rasker:
</pre>
      <blockquote type="cite">
        <pre class="moz-quote-pre" wrap="">Op 02-10-2023 om 00:35 schreef <a class="moz-txt-link-abbreviated" href="mailto:karl AT aspodata DOT se">karl AT aspodata DOT se</a> [via <a class="moz-txt-link-abbreviated" href="mailto:geda-user AT delorie DOT com">geda-user AT delorie DOT com</a>]:
</pre>
      </blockquote>
      <pre class="moz-quote-pre" wrap="">...
 Well I did use a very large width and the result
 grow past the board size:
./pcbsilk -W 1204mm TestLogo.jpg </pre>
    </blockquote>
    OK, that'll be the problem then,
    <blockquote type="cite"
      cite="mid:20231002154748 DOT BA848862295E AT turkos DOT aspodata DOT se">
      <blockquote type="cite">
        <pre class="moz-quote-pre" wrap="">Anyway, I might give it 
a shot using grep, cut, sed and sort to manipulate the X and Y values -- 
even though I think it's going to be pretty inefficient.
</pre>
      </blockquote>
      <pre class="moz-quote-pre" wrap="">
You don't need to. </pre>
    </blockquote>
    <p>Well, I already came up with this oneliner for the minimum y
      value from the pcb logo file:</p>
    <blockquote>
      <p><font face="monospace">ymin=`egrep "\[[0-9]+\ [0-9]+\]"
          $silkname.pcb | cut -d " " -f2 | cut -d "]" -f1 | sort -n |
          head -1`</font><br>
      </p>
    </blockquote>
    <blockquote type="cite"
      cite="mid:20231002154748 DOT BA848862295E AT turkos DOT aspodata DOT se">
      <pre class="moz-quote-pre" wrap="">Below I made a 60mm wide logo, its minimum y extent was 220.4103mm.</pre>
    </blockquote>
    <p>Yup, that seems right:<br>
    </p>
    <blockquote>
      <p><font face="monospace">echo $ymin -&gt; </font><font
          face="monospace"><span style="font-family:monospace"><b><span
                style="color:#000000;background-color:#ffffff;">867757</span></b><br>
          </span>yshift= echo 'scale=2;-$ymin*25.4/100000' | bc<br>
          echo $yshift -&gt; <b>-220.41</b> </font></p>
    </blockquote>
    <blockquote type="cite"
      cite="mid:20231002154748 DOT BA848862295E AT turkos DOT aspodata DOT se">
      <pre class="moz-quote-pre" wrap=""> Then I rerun pstoedit but told it to move the result
220mm up:

$ ./pcbsilk -W 60mm TestLogo.jpg 
$ Pcb_test.pl polygon  TestLogo.pcb 
Layer 1, name poly:
        0.0000 220.4103mm 59.9996mm 279.0472mm
Layer 10, name silk:
$ pstoedit -q -f "pcb:-mm -tshifty -220"  TestLogo.eps TestLogo.pcb </pre>
    </blockquote>
    <p>And unfortunately, this is where things go wrong. It works just
      fine with the numerical value:<br>
    </p>
    <blockquote>
      <pre class="moz-quote-pre" wrap="">$ pstoedit -q -f "pcb:-mm -tshifty -220.41" -ssp TestLogo.eps TestLogo.pcb </pre>
    </blockquote>
    <p></p>
    <p>But when I replace -220.41 with the variable $yshift calculated
      above, it no longer works; also see line 88 of the attached script
      version. It appears that $yshift is not expanded, even though
      double quote marks were used.<br>
    </p>
    <blockquote type="cite"
      cite="mid:20231002154748 DOT BA848862295E AT turkos DOT aspodata DOT se">
      <pre class="moz-quote-pre" wrap="">$ Pcb_test.pl polygon  TestLogo.pcb 
Layer 1, name poly:
        0.0000 0.4102mm 59.9996mm 59.0471mm
Layer 10, name silk:
$

The only thing remaining is to edit the file, removing the empty
layer and rename layer 1 to something like: Layer(5 "top silk" "silk").</pre>
    </blockquote>
    <p>Yes, I already fixed the layers, and I also created an extra
      command line switch to select the number of layers, with a default
      of 2, which causes top silk to end up on layer 6. The X size is
      now also correct, so all that still needs to be done is shift the
      logo to the top. Once everything works, the extra echo commands
      for $ymin and $yshift can be commented out, and removing the
      intermediate files can be restored.<br>
    </p>
    <p>Best regards,</p>
    <p>Richard Rasker<br>
    </p>
  </body>
</html>

--------------cLqUDeq4d3uuV8jYmnR3fx4R--
--------------YM2Il2nUVFfgxs6PHEj09sVc
Content-Type: text/plain; charset=UTF-8; name="pcbsilk"
Content-Disposition: attachment; filename="pcbsilk"
Content-Transfer-Encoding: base64

IyEvYmluL2Jhc2gKCmlmIFsgIiQxIiA9ICItPyIgXSB8fCBbICIkMSIgPSAiLWgiIF0gfHwg
WyAiJDEiID0gIi0taGVscCIgXQp0aGVuCiAgIGVjaG8gIlVzYWdlOiAgJDAgWy1XIHdpZHRo
XSBbLUwgbGF5ZXJzXSBpbWFnZSIKICAgZWNobyAtZSAiXHRJbWFnZSBpcyBhbnkgaW1hZ2Ug
ZmlsZSBvciBFUFMgZmlsZSIKICAgZWNobyAtZSAiXHRVc2UgLVcgc3dpdGNoIHRvIHNwZWNp
Znkgd2lkdGgiCiAgIGVjaG8gLWUgIlx0V2lkdGggaXMgc3BlY2lmaWVkIGluIGluY2hlcyAo
c3VmZml4Om5vbmUgb3IgaW4pIG9yIG1pbGxpbWV0ZXJzIChzdWZmaXg6IG1tKSIKICAgZWNo
byAtZSAiXHREZWZhdWx0IHdpZHRoIGlzIDQwIG1tIgogICBlY2hvIC1lICJcdE51bWJlciBv
ZiBsYXllcnMgc2hvdWxkIG1hdGNoIHRhcmdldCBwY2IiCiAgIGVjaG8gLWUgIlx0RGVmYXVs
dCBudW1iZXIgb2YgbGF5ZXJzIGlzIDIiCiAgIGV4aXQgMApmaQoKIyBIYW5kbGUgY29tbWFu
ZCBsaW5lIHN3aXRjaGVzCgpjYXNlICIkMSIgaW4KICAgICItTCIpCiAgICAgICAgbGF5ZXJz
PSQyCiAgICAgICAgaWYgWyAiJDMiID0gIi1XIiBdCiAgICAgICAgdGhlbgogICAgICAgICAg
ICB3aWR0aD0kNAogICAgICAgICAgICBpbWFnZWZpbGU9JDUKICAgICAgICBlbHNlCiAgICAg
ICAgICAgIGltYWdlZmlsZT0kMwogICAgICAgICAgICB3aWR0aD00MG1tCiAgICAgICAgZmkK
ICAgICAgICA7OwogICAgIi1XIikKICAgICAgICB3aWR0aD0kMgogICAgICAgIGlmIFsgIiQz
IiA9ICItTCIgXQogICAgICAgIHRoZW4KICAgICAgICAgICAgbGF5ZXJzPSQ0CiAgICAgICAg
ICAgIGltYWdlZmlsZT0kNQogICAgICAgIGVsc2UKICAgICAgICAgICAgaW1hZ2VmaWxlPSQz
CiAgICAgICAgICAgIGxheWVycz0yCiAgICAgICAgZmkKICAgICAgICA7OwogICAgKikKICAg
ICAgICBpbWFnZWZpbGU9JDEKICAgICAgICBsYXllcnM9MgogICAgICAgIHdpZHRoPTQwbW0K
ICAgICAgICA7Owplc2FjCgojIFRvcCBzaWxrc2NyZWVuIGxheWVyIGlzIGZvdW5kIGF0IE4r
NApzaWxrbGF5ZXI9JCgobGF5ZXJzICsgNCkpCgojIGVjaG8gIldpZHRoOiAgJHdpZHRoIgoj
IGVjaG8gIkxheWVyczogJGxheWVycyIKIyBlY2hvICJTaWxrOiAgIExheWVyICRzaWxrbGF5
ZXIiCiMgZWNobyAiSW1hZ2U6ICAkaW1hZ2VmaWxlIgoKIyBDaGVjayBpZiBpbnB1dCBmaWxl
IGV4aXN0cywgZXhpdCBpZiBpdCBkb2Vzbid0CmlmICEgWyAtZiAkaW1hZ2VmaWxlIF0KdGhl
bgogICAgZWNobyAiRmlsZSBub3QgZm91bmQsIGV4aXRpbmciCiAgICBleGl0IDEKZmkKCmV4
dGVuc2lvbj0iJHtpbWFnZWZpbGUjIyoufSIKCiMgQ2hlY2sgaWYgaW5wdXQgaXMgRVBTIGZp
bGUKZXBzdGVzdD1gZmlsZSAkaW1hZ2VmaWxlIHwgZ3JlcCBFUFNgCmlmIFsgIiRlcHN0ZXN0
IiA9ICIiIF0KIyBJbWFnZSBmaWxlIGlzIG5vdCBhbiBFUFMgZmlsZT8KIyBUaGVuIGNvbnZl
cnQgaXQgdG8gRVBTIGZpcnN0CnRoZW4KICAgIHNpbGtuYW1lPWBiYXNlbmFtZSAkaW1hZ2Vm
aWxlIC4kZXh0ZW5zaW9uYAogICAgY29udmVydCAkaW1hZ2VmaWxlIC10aHJlc2hvbGQgODUl
ICRzaWxrbmFtZS5wYm0KICAgIHBvdHJhY2UgLW8gJHNpbGtuYW1lLmVwcyAtVyAkd2lkdGgg
JHNpbGtuYW1lLnBibQogICAgIyByZW1vdmUgaW50ZXJuZWRpYXRlIGZpbGUKIyAgICBybSAk
c2lsa25hbWUucGJtCmVsc2UKICAgICMgQW5kIGlmIHdlIGhhdmUgYW4gRVBTIGZpbGUgdG8g
YmVnaW4gd2l0aCwgbWFrZSBzdXJlIHRoYXQgdGhlIHBzdG9lZGl0IGNvbW1hbmQgZmluZHMg
aXQKICAgIHNpbGtuYW1lPWBiYXNlbmFtZSAkaW1hZ2VmaWxlIC5lcHNgCmZpCgpwc3RvZWRp
dCAtcSAtZiAicGNiIiAtc3NwICRzaWxrbmFtZS5lcHMgJHNpbGtuYW1lLnBjYgoKIyBHZXQg
bG93ZXN0IFkgY28tb3JkaW5hdGUgdmFsdWUKeW1pbj1gZWdyZXAgIlxbWzAtOV0rXCBbMC05
XStcXSIgJHNpbGtuYW1lLnBjYiB8IGN1dCAtZCAiICIgLWYyIHwgY3V0IC1kICJdIiAtZjEg
fCBzb3J0IC1uIHwgaGVhZCAtMWAKZWNobyAkeW1pbgp5c2hpZnQ9IGVjaG8gInNjYWxlPTI7
LSR5bWluKjI1LjQvMTAwMDAwIiB8IGJjCmVjaG8gJHlzaGlmdAojIFJlcGVhdCBwc3RvZWRp
dCwgbm93IHdpdGggc2hpZnQKcHN0b2VkaXQgLXEgLWYgInBjYjotbW0gLXRzaGlmdHkgJHlz
aGlmdCIgLXNzcCAkc2lsa25hbWUuZXBzICRzaWxrbmFtZS5wY2IKCiMgSWYgaW5wdXQgZmls
ZSBpcyBub3QgYW4gRVBTIGZpbGUsIHJlbW92ZSBpbnRlcm1lZGlhdGUgLmVwcyBmaWxlIHRv
bwojIGlmIFsgIiRlcHN0ZXN0IiA9ICIiIF0KIyB0aGVuCiMgICAgIHJtICRzaWxrbmFtZS5l
cHMKIyBmaQoKIyBNb3ZlIHRoZSBzaWxrIHNjcmVlbiBlbGVtZW50IHRvIHRoZSBjb3JyZWN0
IGxheWVyCnNlZCAtaSAicy9MYXllcigxIFwicG9seVwiKS9MYXllcigkc2lsa2xheWVyIFwi
dG9wIHNpbGtcIikvZyIgJHNpbGtuYW1lLnBjYgoKIyBGaXggdGhlIGJvYXJkIGRpbWVuc2lv
bnMKIyBGaXJzdCBnZXQgdGhlIGhpZ2hlc3QgWCBjby1vcmRpbmF0ZSB2YWx1ZQp4bWF4PWBl
Z3JlcCAiXFtbMC05XStcIFswLTldK1xdIiAkc2lsa25hbWUucGNiIHwgY3V0IC1kICIgIiAt
ZjEgfCBjdXQgLWQgIlsiIC1mMiB8IHNvcnQgLXJuIHwgaGVhZCAtMWAKCiMgVGhlbiBnZXQg
dGhlIGhpZ2hlc3QgWSBjby1vcmRpbmF0ZSB2YWx1ZQp5bWF4PWBlZ3JlcCAiXFtbMC05XStc
IFswLTldK1xdIiAkc2lsa25hbWUucGNiIHwgY3V0IC1kICIgIiAtZjIgfCBjdXQgLWQgIl0i
IC1mMSB8IHNvcnQgLXJuIHwgaGVhZCAtMWAKCnltYXg9MTEwMDAwMAoKIyBDcmVhdGUgYSBu
ZXcgZmlyc3QgbGluZSB3aXRoIHNpemUgZGVmaW5pdGlvbgpuZXdmaXJzdGxpbmU9IlBDQltc
IlwiICR4bWF4ICR5bWF4XSIKCnNlZCAtaSAiMXMvLiovJG5ld2ZpcnN0bGluZS8iICRzaWxr
bmFtZS5wY2IKCiMgUmVtb3ZlIHRoZSBsYXN0IDMgbGluZXMgd2hpY2ggZGVmaW5lIExheWVy
IDEwCmhlYWQgLW4gLTMgJHNpbGtuYW1lLnBjYiA+IHRlbXBzaWxrLnBjYiAmJiBtdiB0ZW1w
c2lsay5wY2IgJHNpbGtuYW1lLnBjYgoKCg==

--------------YM2Il2nUVFfgxs6PHEj09sVc--

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019