Mail Archives: geda-user/2023/10/01/16:55:37
This is a multi-part message in MIME format.
--------------1F0P0AxgbKJSTr6dKReK8J1H
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Op 01-10-2023 om 21:13 schreef karl AT aspodata DOT se [via geda-user AT delorie DOT com]:
> Richard Rasker:
> ...
>> Where is this default size stored anyway? Or is it hard-coded into pcb?
> pstoedit-3.74.tar.gz is available at sourceforge.
> In its src dir there are:
> [snip]
>
> And as you can see, the board size is hardcoded in that pstoedit
> plugin:
>
>
> Perhaps the pcb plugin handles the board size better.
Thanks for tracking this down!
When I use pcb instead of pcbfill, two things are different:
- The result now ends up at the bottom left of Layer 1 named 'poly'
instead of Layer 10 named 'silk' -- which usually means it is on the top
copper layer.
- Polygons now have one co-ordinate per line. This would make it a bit
easier to move the logo to the top left using bash, but it would
probably still take me a lot of time to get it right. Also, I don't
think that bash is very suitable for the job, and I'm no good at other
programming languages/tools (Perl, awk) either.
>>> I can help with a program doing that if you wish.
>> That would be nice, although I should of course try and figure it out
>> for myself first. I see that the resulting PCB file features large
>> polygons, so if changing the size beforehand is not possible, I'd say
>> the logical approach would be to find the lowest Y value (the topmost
>> polygon point), and subtract this value from all Y values - although
>> this is not something that I like to do in a bash script.
> ...
>
> In https://aspodata.se/git/openhw/bin/, I have Common.pm, Pcb.pm and
> Pcb_test.pl. I'm currently testing how to get min/max x and y for
> different pcb things:
>
> $ Pcb_test.pl bb styrkort.pcb
> via: 8.5000mm 10.0000mm 151.0000mm 222.5000mm
> line: 5.8700mm 3.0000mm 154.1300mm 237.0000mm
> $ Pcb_test.pl polygon styrkort.pcb
> Layer 1, name top:
> 5.7500mm 3.0000mm 154.0000mm 237.0000mm
> Layer 2, name bottom:
> 5.7500mm 3.0000mm 154.0000mm 237.0000mm
> Layer 3, name outline:
> Layer 4, name bottom silk:
> Layer 5, name top silk:
> $
I'm not sure I understand the above. From what I see, Y co-ordinates can
be located using the " [0-9]+" regex (so including a leading space),
starting from line 6 in the pcb logo file; the lowest value found should
then be subtracted from all Y values, effectively moving the logo to the
top left. Then the highest X and Y values should be determined, which
then define the overall pcb size.
Even though this sounds like an interesting and no doubt instructive
challenge for a not-too-experienced bash programmer like me, I think
I'll stick with manually adjusting the pcb logo file for now; it only
takes a couple of seconds, and the layers need adjusting anyway,
depending on the number of layers in the target board. After all, I only
need to create logos etc. very occasionally.
Thanks again for the help; attached is the latest script with an extra
check if the supplied filename actually exists, plus some cleanup of
intermediate files. No doubt, things can be further improved, but as
mentioned before, I'm not a very proficient programmer.
Regards,
Richard
--------------1F0P0AxgbKJSTr6dKReK8J1H
Content-Type: text/plain; charset=UTF-8; name="pcbsilk"
Content-Disposition: attachment; filename="pcbsilk"
Content-Transfer-Encoding: base64
IyEvYmluL2Jhc2gKCmlmIFsgIiQxIiA9ICItPyIgXSB8fCBbICIkMSIgPSAiLWgiIF0gfHwg
WyAiJDEiID0gIi0taGVscCIgXQp0aGVuCiAgIGVjaG8gIlVzYWdlOiAgJDAgWy1XIHdpZHRo
XSBpbWFnZSIKICAgZWNobyAtZSAiXHRJbWFnZSBpcyBhbnkgaW1hZ2UgZmlsZSBvciBFUFMg
ZmlsZSIKICAgZWNobyAtZSAiXHRVc2UgLVcgc3dpdGNoIHRvIHNwZWNpZnkgd2lkdGgiCiAg
IGVjaG8gLWUgIlx0V2lkdGggaXMgc3BlY2lmaWVkIGluIGluY2hlcyAoc3VmZml4Om5vbmUg
b3IgaW4pIG9yIG1pbGxpbWV0ZXJzIChzdWZmaXg6IG1tKSIKICAgZWNobyAtZSAiXHREZWZh
dWx0IHdpZHRoIGlzIDQwIG1tIgogICBleGl0IDAKZmkKCiMgQ2hlY2sgaWYgd2lkdGggaXMg
c3BlY2lmaWVkCmlmIFsgIiQxIiA9ICItVyIgXQp0aGVuCiAgICB3aWR0aD0kMgogICAgaW1h
Z2VmaWxlPSQzCmVsc2UKICAgIGltYWdlZmlsZT0kMQogICAgd2lkdGg9NDBtbQpmaQoKIyBT
dGlsbCBUbyBEbzogY2hlY2sgaWYgdW5pdHMgYXJlIG1tLCBjb252ZXJ0IHRvIGluY2hlcywg
dG8gcHJldmVudCBwc3RvZWRpdCBmcm9tIGNyYXNoaW5nIHdpdGggJHdpZHRoID4gNzNtbQoK
CiMgQ2hlY2sgaWYgaW5wdXQgZmlsZSBleGlzdHMsIGV4aXQgaWYgaXQgZG9lc24ndAppZiAh
IFsgLWYgJGltYWdlZmlsZSBdCnRoZW4KICAgIGVjaG8gIkZpbGUgbm90IGZvdW5kLCBleGl0
aW5nIgogICAgZXhpdCAxCmZpCgpleHRlbnNpb249IiR7aW1hZ2VmaWxlIyMqLn0iCgojIENo
ZWNrIGlmIGlucHV0IGlzIEVQUyBmaWxlCmVwc3Rlc3Q9YGZpbGUgJGltYWdlZmlsZSB8IGdy
ZXAgRVBTYAppZiBbICIkZXBzdGVzdCIgPSAiIiBdCiMgSW1hZ2UgZmlsZSBpcyBub3QgYW4g
RVBTIGZpbGU/CiMgVGhlbiBjb252ZXJ0IGl0IHRvIEVQUyBmaXJzdAp0aGVuCiAgICBzaWxr
bmFtZT1gYmFzZW5hbWUgJGltYWdlZmlsZSAuJGV4dGVuc2lvbmAKICAgIGNvbnZlcnQgJGlt
YWdlZmlsZSAkc2lsa25hbWUucGJtCiAgICBwb3RyYWNlIC1vICRzaWxrbmFtZS5lcHMgLVcg
JHdpZHRoICRzaWxrbmFtZS5wYm0KICAgICMgcmVtb3ZlIGludGVybmVkaWF0ZSBmaWxlCiAg
ICBybSAkc2lsa25hbWUucGJtCmVsc2UKICAgICMgQW5kIGlmIHdlIGhhdmUgYW4gRVBTIGZp
bGUgdG8gYmVnaW4gd2l0aCwgbWFrZSBzdXJlIHRoYXQgdGhlIHBzdG9lZGl0IGNvbW1hbmQg
ZmluZHMgaXQKICAgIHNpbGtuYW1lPWBiYXNlbmFtZSAkaW1hZ2VmaWxlIC5lcHNgCmZpCgpw
c3RvZWRpdCAtcSAtZiAicGNiIiAtc3NwICRzaWxrbmFtZS5lcHMgJHNpbGtuYW1lLnBjYgoK
IyBJZiBpbnB1dCBmaWxlIGlzIG5vdCBhbiBFUFMgZmlsZSwgcmVtb3ZlIGludGVybWVkaWF0
ZSAuZXBzIGZpbGUgdG9vCmlmIFsgIiRlcHN0ZXN0IiA9ICIiIF0KdGhlbgogICAgcm0gJHNp
bGtuYW1lLmVwcwpmaQo=
--------------1F0P0AxgbKJSTr6dKReK8J1H--
- Raw text -