Is Kicad able to place component values instead of references directly on silk by default? Is there something in Eeschema which can do this?
Currently it just places references on the silk which I don’t find useful.
Is Kicad able to place component values instead of references directly on silk by default? Is there something in Eeschema which can do this?
Currently it just places references on the silk which I don’t find useful.
The value field layers are set in the footprint.
And the standard library places them on the Silkscreen, just hides them I think (but not sure, I don’t use the standard libs).
Have you played with the layer/element visibility settings on the right of the pcbnew window?
If that doesn’t help you’ll have to modify the footprint files… probably best then to use a batch script that goes through the field entries and changes the layer.
You can check all this manually first via this
Select a footprint > [E] > Value Field [Edit] and see what it says there… mine look like this:
In the footprint editor it’s a bit easier, as you can directly go for the field, but changing them all will be a pita and I don’t think needed (would be surprising).
PS: be aware that you can force hidden fields during gerber check-out in the plot window. Just make sure they sit where they make sense and you can see them later on and don’t interfere with pads, as then they will just be removed.
I already knew the things you mentioned, only issue is its cumbersome to assign each value to the silk layer manually. This should be a feature request.
On which layer are they usually? - again, I’m not using the public libs, I make my own.
As for feature request - head for github and talk with the official lib maintainers, but I’m pretty sure they will have their reasons for why they did how they did it.
And again, if you show hidden text - which includes the values - and move it where you want it, you can force it during plotting of the Gerbers, which is the feature you want, just not HOW you want it.
PS: I’m just a mod here and have no skin in the game, so please take what I write with grain of salt
I assume that you mean pcbnew.
It was decided in the official libs to put values on the Fab layer. I think the reason is that with closely packed SMDs that are assembled by machine, the value is a bit useless. On boards we make, neither value nor reference is on the silk, for rework we refer to a fab drawing.
Inevitably, the official libs designed for one use case don’t meet all users needs. I don’t believe there is any way in pcbnew to select a group and then do a “group edit”, or any more specific option.
It is easy to do with a script though (assuming you have got script :)).
Sure, you can add it to the list of 420 other feature requests… I wouldn’t wait for it to be implemented though!
Yes; but I may not remember exactly how it is done.
Edit the Footprint to add another text field, to be displayed on the Silk layer. In the value field enter “VAL**” or “%V”. This will import the value of the part that is listed in Escheema.
Then, in PcbNew, existing Footprints will need to be updated to see the changes.
Then manual hiding of references will be required, I made bug for this feature.
No we have them on the fab layer. The silk layer only holds the reference.
This is because most boards have a density where it is already quite hard to find place for all references when you consider minimum text sizes for silk printing. The fab layer is intended to be either printed on paper or only used on a computer. This means it does not really have that many restrictions regarding text sizes. It also can put information where the parts are located in the final board.
I don’t think so.
When I want to “hide” something from KiCad I use the tilde symbol (~). In the Footprint, instead of “REF**” just change that text to “~”.
This is not a common documented long past feature that may break in the future (or may already be partially broken).
Some on the forum have the opinion that just leaving the field blank may work equally as well; it will all depend on how the developers proceed.
ON EDIT: When one starts tinkering around with how they can “fool the system” it may come back to bite them later when a nice new feature-rich upgrade happens.
Not sure what use that would be. Simply move it to a different layer or set it to invisible.
You are already changing the footprint so why not do it properly.
@Rene_Poschl As you follow the KiCad development, you know 1000X more than I do.
When I was dealing with the issue, I don’t think those options were available at the time. KiCad has had some significant changes over time; and what worked when I did it the first time may very well not work today (or tomorrow).
Can you be more specific about how you recommend going about to achieve the OP’s request?
They should make their own lib with the footprints prepared in the manner they want.
There are better options available to hide the reference then to set its text to “~”:
In the end they asked if there is a way to avoid making their own footprint. Sadly there is no such option available.
I have a rule of thumb for myself is that - If the footprint is a connector, I would make Value in Silk Layer and Visible. And in schematic, I use the value as the name of what I like to show on silk instead of the connector manufacture number!.
I have Two difference text for Reference, one on Silk, another on Fab.
Here is an ActionPlugin script to move values to the Silk layers and also make them visible.
import sys
import pcbnew
"""
execfile ("c:/.../pplugin_move_values.py")
"""
def pcbfunc(Filename = None):
if Filename:
my_board = pcbnew.LoadBoard (Filename)
else:
my_board = pcbnew.GetBoard()
for module in my_board.GetModules():
print ("module ref %s %s" % ( module.GetReference(), my_board.GetLayerName(module.Reference().GetLayer())))
print ("module val %s %s %s" % ( module.GetValue(), my_board.GetLayerName(module.Value().GetLayer()), "Visible" if module.Value().IsVisible() else "Hidden" ) )
if module.Value().GetLayer() == pcbnew.F_Fab:
module.Value().SetLayer (pcbnew.F_SilkS)
elif module.Value().GetLayer() == pcbnew.B_Fab:
module.Value().SetLayer (pcbnew.B_SilkS)
module.Value().SetVisible (True)
class RMCPcbPlugin(pcbnew.ActionPlugin):
def defaults(self):
self.name = "RMC_Move_Values"
self.category = "RMC"
self.description = "Move values to silkscreen"
def Run(self):
# The entry function of the plugin that is executed on user action
pcbfunc()
pcbnew.Refresh()
if __name__ == "__main__":
# pcbfunc("C:\\git_bobc\\bobc_hardware_live\\Smart_RGB_LED_AT85\\rgb_led.kicad_pcb")
pcbfunc()
else:
RMCPcbPlugin().register() # Instantiate and register to Pcbnew
This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.