Seeed/ShenZhen Open Parts List

The SMD pads are on copper1 and the through-holes are nested on copper0 but the through-holes don’t have bottom layer copper:

what did I do wrong? Sincere thanks!

From your description, without even looking at the part.

The through hole connectors need to be on BOTH copper1 and copper0 layers. If I understand what you are doing, the way to get there is to have the copper0 layer (group) inside of the copper1 group. The SMD pads go on copper1, outside of the copper0 group. The through hole connectors go in the copper0 group, which also puts them on copper1. From where your description puts things, the fix should be as simple as moving the copper0 group (and all of its content) into (inside) the copper1 group.

I noticed mistakes with my copper0 tags which I fixed but then when I imported the image into the part again there was no change. The copper0 is indeed in the copper1. I am trying to upload just the svg and I am getting “Sorry, but we couldn’t determine the size of the image. Maybe your image is corrupted?” I will open and re-save with inkscape.

Resaving it didn’t work, then tried to upload from fritzing.0.9.4.64.pc\fritzing-parts\svg\core\pcb
and the following sampling got the same message:
5mm_LED.svg
SMD_0603.svg
sparkfun-led_led5mm_pcb.svg
sparkfun-discretesemi_0603-res_pcb.svg

The “can not determine size” happens a lot on the forum with svg images of parts. Especially small parts. The actual part (and svg unit) dimensions tend to be down around (and less than) 1 in, which the forum software does not think is big enough to be a “real” image.

I have gotten around that a couple of different ways. Change the height and width values on the svg header element to something bigger. Like 10 times bigger has always worked. As long as someone does not try to use the image as is to create a part. Another way is to add something to the image (bottom right) to make the dimensions bigger. I think you can also put the svg in a zip file, renamed to .fzpz, and upload that. Whatever method you use, be sure to include the details so we know how to get back to the actual svg file.

EDIT:

I ran the originally posted part through FritzingCheckPart. It said that was an smd part, because only copper1 view is present. That is in the fzp (part definition) file. Examining the fzp file finds only copper1 references, no copper0. For a part with both smd and tht connectors, the pcbView needs to include both copper0 and copper1 layerIDs, then the individual connectors need to have one or both depending on the individual connector. With no reference to copper0 in the fzp file, the copper0 group in the svg is going to be ignored. When the copper0 is inside copper1, the content is going to be seen as ONLY on the copper1 layer.

FCP also shows that you have silkscreen content that is color #f0f0f0. That should be either white or black. The current style uses black. That is actually a mask for where the silkscreen exists, not the color it is supposed to be.

There are also a couple of warnings about schematic view terminals with zero width, that can cause problems if svg is (later) modified with Inkscape. Connector numbers (id in the fzp) should start at zero, and be in ascending sequence. The pcb silkscreen layer should be before the copper layers, to make selection in Fritzing easier.

It sounds like you are trying to do both through hole and smd in the parts editor which won’t work. You have to manually edit the underlying files. A description how is available here:

Peter

@vanepp Your instructions use duplicate connector pin ids on separate copper0 and copper1 layers. Did you try putting one layer in the other, but only including the THT subset in inner layer? Conceptually that should work. Real world, maybe not.

That of course will not work when mixed with edge ‘fingers’ that have smd pads on top and bottom for different connectors. For that, the copper0 and copper1 groups need to be separate. Or duplicate the inner group to make it also distinct. Which would again break Inkscape, but if Fritzing allows it, changing a “copper0a” id to “copper0” would be a one line (one character) change after finished with Inkscape.

<g id="copper1">
  «smd connectors that are only on the top»
  <g id="copper0">
    «through hole connectors»
  </g>
</g>
<g id="copper0">
  «smd connectors that are only on the bottom»
</g>

If I got the top and bottom layers right

I based the footprint hack (moving pads and trying to add through holes) on sparkfun-connectors_usb-ab-micro-smd_pcb.svg (SparkFun-Connectors->USB_AB) and it seems I may actually have to change something more than just the svg to get through hole attributes (two plated through holes that will only be mechanical) and loading the image in the PCB tab of the Parts Editor. When I do that, View->Copper Bottom Layer only, the nested group0 doesn’t appear on the bottom. I went to the Connectors tab of the Parts Editor and selected Through-hole. It seems to do what I needed and may be workable, it also creates a joined terminal on the bottom layer of the through holes to D+. I moved the silkscreen group above the copper1 group to make it easier to select copper, I hadn’t been selecting anything (I kept the same ids). Reassigning D+ the bottom layer disappears again. When trying to Ctrl click to re-assign the through-hole to D+ it doesn’t end up back to where we were. Clicking SMD then Through-hole again also adds the pads to the bottom layer which I don’t want. My changes in the Parts Editor seemed to have propagated to the file I saved earlier that had a workable set up. I have been trying to click on the tick-boxes in the Connectors Tab of the Parts Editor to get the behaviour that I want and thinking about making the through-holes unused connectors but I think it is time to look at the corresponding xml. I still wonder about my svg. Since uploading an actual working svg may not work on this forum, I will try the xml as code (inMarkDown tags: ‘’‘xml code ‘’’ where the 's are actually back ticks):

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns:svg='http://www.w3.org/2000/svg' xmlns='http://www.w3.org/2000/svg' version='1.2' baseProfile='tiny' x='0in' y='0in' width='0.219567in' height='0.401575in' viewBox='0 0 5.577 10.2' >
  <g id="silkscreen">
    <line class="other" x1="3.227" y1="1" x2="5.027" y2="1" stroke="#f0f0f0" stroke-width="0.254" stroke-linecap="round" id="line211" />
    <line class="other" x1="5.027" y1="1" x2="5.027" y2="3.3" stroke="#f0f0f0" stroke-width="0.254" stroke-linecap="round" id="line213" />
    <line class="other" x1="5.027" y1="6.9" x2="5.027" y2="9.2" stroke="#f0f0f0" stroke-width="0.254" stroke-linecap="round" id="line215" />
    <line class="other" x1="5.027" y1="9.2" x2="3.227" y2="9.2" stroke="#f0f0f0" stroke-width="0.254" stroke-linecap="round" id="line217" />
    <line class="other" x1="0.827" y1="9.2" x2="0.127" y2="9.2" stroke="#f0f0f0" stroke-width="0.254" stroke-linecap="round" id="line219" />
    <line class="other" x1="0.827" y1="1" x2="0.127" y2="1" stroke="#f0f0f0" stroke-width="0.254" stroke-linecap="round" id="line221" />
    <line style="stroke:#f0f0f0;stroke-width:0.1;stroke-linecap:round" class="other" x1="0.050000001" y1="3.0372431" x2="0.050000001" y2="6.7428699" id="line213-9" />
  </g>
  <g id="copper1">
    <rect id="connector4pad" connectorname="D+" x="3.45" y="4.9000001" width="1.4" height="0.40000001" style="fill:#f7bd13;stroke:none;stroke-width:0;stroke-linecap:round" />
    <rect id="connector5pad" connectorname="D-" x="3.45" y="4.25" width="1.4" height="0.40000001" style="fill:#f7bd13;stroke:none;stroke-width:0;stroke-linecap:round" />
    <rect id="connector8pad" connectorname="VBUS" x="3.45" y="3.5999999" width="1.4" height="0.40000001" style="fill:#f7bd13;stroke:none;stroke-width:0;stroke-linecap:round" />
    <rect id="connector7pad" connectorname="ID" x="3.45" y="5.5500002" width="1.4" height="0.40000001" style="fill:#f7bd13;stroke:none;stroke-width:0;stroke-linecap:round" />
    <rect id="connector6pad" connectorname="GND" x="3.45" y="6.1999998" width="1.4" height="0.40000001" style="fill:#f7bd13;stroke:none;stroke-width:0;stroke-linecap:round" />
    <rect id="connector0pad" connectorname="P$6" x="0.5" y="2.95" width="1.9" height="1.9" style="fill:#f7bd13;stroke:none;stroke-width:0;stroke-linecap:round" />
    <rect id="connector1pad" connectorname="P$7" x="0.5" y="5.3499999" width="1.9" height="1.9" style="fill:#f7bd13;stroke:none;stroke-width:0;stroke-linecap:round" />
    <rect id="connector2pad" connectorname="P$8" x="3.25" y="1.1" width="1.4" height="1.6" style="fill:#f7bd13;stroke:none;stroke-width:0;stroke-linecap:round" />
    <rect id="connector3pad" connectorname="P$9" x="3.25" y="7.5" width="1.4" height="1.6" style="fill:#f7bd13;stroke:none;stroke-width:0;stroke-linecap:round" />
    <g id="copper0">
     <circle style="fill:none;stroke:#f7bd13;stroke-width:0.2;stroke-opacity:1" id="path254" cx="1.45" cy="1.8" r="0.64999998" />
     <circle style="fill:none;stroke:#f7bd13;stroke-width:0.19999999;stroke-opacity:1" id="path254-7" cx="1.45" cy="8.3999996" r="0.64999998" />
    </g>
  </g>
</svg>

I think so. I had not realized that the through holes were mechanical, not actual connectors. But I expect that the fzp file needs changing, to tell it that both top and bottom are to be used.

  <pcbView>
   <layers image="pcb/«image file name».svg">
    <layer layerId="copper1"/>
    <layer layerId="silkscreen"/>
    <layer layerId="copper0"/>
   </layers>
  </pcbView>

I do not know if parts editor will let you do that without also changing the connector pads to through hole. You might need to adjust the fzp after saving it from parts editor. The fzpz file is just a zip, so can be unpacked, edit the .fzp, zip again.

The silkscreen graphics should use black, not F0F0F0.

Here’s the part that I hope will be usable: opl-connectors_usb-b-micro-socket-101118193-0001LF.fzpz (7.2 KB)

I did note that when a design has the part, upon opening the design, the copper bottom is randomly assigned to one of the five USB pins. It doesn’t matter to me since I am not making any electrical connections to it but perhaps it should be tied to ground. I suspect it is because every connector in the fzp is specified as:

    <pcbView>
     <p svgId="connector4pad" layer="copper1"/>
     <p svgId="connector4pad" layer="copper0"/>
    </pcbView>

and I think perhaps only the ground connector should be copper0.

Silkscreen should be a lower level than copper, and should be black so people can see what the footprint looks like in the Insp icon.

Not sure what you mean by saying that the silkscreen should be on a lower layer than copper. I believe I did change the silkscreen lines to stroke="#ffffff".

The order of the layers in the fzp file should not matter, but the silkscreen should be “behind/below” the copper graphics. Which actually means it needs to be “before” the copper in the svg file. That is do to the way svg (and Fritzing) implement search and selection from the mouse coordinates. That selection starts from the “top” layer, which means “later” in the svg file.

Since the connectors are smd, not tht, the fzp file should show only copper1 for them (in the individual connectors). Putting them on both, as I initially indicated, tells Fritzing that they are THT connectors. The copper0 is (I believe) needed for (only) the main view definition, so that Fritzing will generate holes for the circles on the (combined) copper1 and copper0 layers in the svg file.

The issue with copper bottom, is probably the copper1 and copper0 combination on what is intended to be smd connectors. Whatever connector(s) have a “GND” name will be used as seeds for copper fili / ground fill, which is separate.

We decided years ago that everything should be below connectors(higher in the XML), because it was hard to select pins when assigning them in FZ when there was an object blocking it.

If copper0 is in copper1, you put THT in copper0, and SMD in copper1. If you are doing a SMD, which doesn’t need copper0, you still put an empty copper0 in copper1 or FZ will give an error when you try to load the part.

I though the “GND” was a thing too, but it actually seeds whatever Net you select to GND seed.

I though the initial ground seed would be one that is marked as “GND”, or connected to a schematic view ground connector. That can be changed by explicitly setting a ground seed.

Yeah that’s what I thought, but in the vid I select a row of random header pins connected together, and they all seeded. GND seed is obvious, but I guess it’s so you can do a PWR plane.

I plan on getting started on the BME280 footprint but wanted to ask about another part in the pipeline, the QG-2864KSWEG02. https://statics3.seeedstudio.com/images/opl/datasheet/308020028.pdf The OLED’s PCB connector footprint is surface mount ribbon/zif cable like and 27 “pins”. Any recommendations as to what should I use as the starting point?

Make sure you do a Goo image search for the Fritzing part, or might might be wasting your time.

I assume the ribbon is for the BB view, so I would do an image search for - ribbon Fritzing. If there is one I would get that svg, mod it, and add it to my drawing. I’ve got vid tutorial here that shows you how to get other people’s svg to add to your svg.

The different top and bottom connectors were the main issue here. The edge connector case as you note needs them to be separate and this is the only way I know of to achieve that. I did realize that I could do the copper1 only smd pads but that doesn’t work for edge connectors.

Peter

Here’s my first run at the BME280lga, I have yet to install the parts checker so I’ve yet to determine what I did wrong so far: BME280lga.fzpz (4.5 KB)

P.S. #ffffff is white, #000000 is black sorry about my mistake earlier.