← Back to team overview

kicad-developers team mailing list archive

Re: [Branch ~kicad-product-committers/kicad/product] Rev 5123: Implemented special rules for plotting assembly layers


On 9/9/2014 10:42 AM, Brian Sidebotham wrote:
> On 9 September 2014 04:56, Lorenzo Marcantonio
> <l.marcantonio@xxxxxxxxxxxx> wrote:
>> On Mon, Sep 08, 2014 at 10:27:45PM +0100, Brian Sidebotham wrote:
>>> Sorry, but I don't like this patch because I want control of where the
>>> reference text goes on both assembly and silk layers. It doesn't
>>> necessary want to go in the centre of an electrolytic cap for example.
>>> Only for the very basic components is the centre an okay choice.
>>> I would rather just allow to have a reference object on the assembly
>>> layer as well as the silk layer.
>> I implemented the IPC rule which tell that's the reference on assembly
>> goes to the insertion point (for pick and place cross-check). I think
>> it's OK if someone doesn't like it :D In fact it's silly for THT
>> component were the insertion point often is on pin 1.

I'm going to side with Brian on this one.  I don't want the position of
my reference designators changed from where *I* put them irregardless of
the plot type.  I really don't care what the IPC rule is.  If I didn't
want the there, I would have put them somewhere else.  If you saw how
small the boards I lay out are, you would understand how silly this rule is.

>> However at the moment the reference simply *doesn't* appear on assembly
>> so it doesn't actually breaks the plot IMHO; at least at the moment is
>> useful.
> Hi Lorenzo,
> Sorry for the late reply.
> I understand what you're saying about there currently being nothing of
> the reference on the assembly layer. However, essentially bodging
> something on now just creates an obstacle for someone later on down
> the line who wants to implement this more thoroughly.
> I think as with the silk screen version of the reference, we should
> add the same to the assembly layer. However, I'd much rather see us
> use text substitution for things like this. I realise that's a more
> involved task - but it's even more involved if first we have to try
> and support old behaviour that's essentially been hard-coded into the
> plotter.
> If I don't see it on screen, I don't want it suddenly appearing in a
> plot silently. If you want IPC compatible modules, then I guess you
> need to add the reference designator text to the module at the
> insertion point.
>> I agree with you that a separate designator would be useful. The whole
>> story is here
>> http://blogs.mentor.com/tom-hausherr/blog/tag/reference-designator/
>> In short, silk refdes must be always outside the part, assembly refdes
>> needs to be always inside the part; quite a conflicting requirement...
>> since on silk you need to always hand place it (if it fits on the board,
>> i.e. never in my case:D) and many CAD have no separate assembly origin
>> it get placed on the insertion point (if you can't move it as you
>> reasonably asked).

This this the problem with most standards.  There are always use cases
which the implementer could not foresee that make the standard
impossible follow thereby rendering it useless or even worse an
impediment from getting something useful accomplished.

>> The big problem is that reference and value are two slots in the module
>> class, not entities in the module and are treated in a special way (in
>> eeschema instead they are simply the 'first' in the attribute list). And
>> that text (other than in the file format) isn't really handled in layers
>> other than silk (could work but probably something would glitch). In
>> fact, if you noticed it, they are not even controlled by layer but from
>> the 'visibles' palette (and have their own colors).
>> How to handle that? The obvious thing would to have a separate AssemblyRef
>> member. And duplicate the whole shebang for handling the current
>> reference field *all over* pcbnew, adding a keyword in the file format
>> and so on. Well, it smells to me:P what if you also want value on
>> assembly? :D
> Obvious I don't think is generally good. Just making another
> special-case item is like replaying the old broken record. There's
> nothing really special about some text on a layer, and just because
> it's a reference designator shouldn't mean it's special either.
>> Also how to handle it in the UI? do we allocate another visible index?
>> Even the picking code would need to be duplicated...
> I don't think we want yet another tickbox, or another "special" item
> to worry about - it's just dynamic text.
>> Suggestion on how to handle it are well accepted. I was thinking maybe
>> in some kind of printf-like expansion in user text where you could place
>> %R or %V or something and put it on whatever layer you wanted to achieve
>> the effect. The %-thing would be easy, checking that text works on
>> different layers is not :D for assembly we could just put a rule that
>> use a default if no other text is specified on the layer...
> Variable substitution in text on any layer would be my preferred way
> of achieving this.
>> So a first step (useful in any case) would be changing text-in-module entity
>> specifications from:
>> - Reference lives on SilkTop (and it's controlled by a own 'visible')
>> - Value lives on SilkTop (and it's controlled by it's own 'visible')
>> - User text lives on SilkTop (and it's controlled by the master 'show
>>   text' visible)
>> ...to:
>> - Reference and Value *no change* (seems fine to me)
>> - User text on any layer allowed in the module (i.e. the usual
>>   restrictions which change from one day to another); I think it could
>>   be controlled by the same master visible but taking the layer color.
>> That would be useful for having comment text in the module (I've missed
>> the feature in the past, actually...). Probably the new module editor
>> can handle the layer change, I didn't check. Otherwise I think that
>> simply adding the usual layer chooser would do the trick.
>> In the meantime I have no problem in backing out (maybe partially, only
>> the 'pull to origin' piece) the patch. Maybe Yet Another Option on the
>> plot dialog for enabling the movement? An assembly plot with the refdes
>> placed like on silk would be better than without refdes at all.
>> Tell me how do you like it
> Yes, two things we really need -
> 1) Text on any layer in the module editor (with perhaps the exception
> of copper layers if this introduces issues with DRC)

I think Orson was (is?) working on the module editor which addressed
some of these issues.


I'm not sure what if this is nearly ready to go or not.  I noticed
Orson's module editor repo is no longer on launchpad.

The library developers would have to agree on a layer to add the
assembly text and update the footprints accordingly.

> 2) Variable substitution so that the value and/or reference designator
> could be included on any other layer including an assembly layer.
> That sounds like a good way forward. The library team will have a job
> in front of them adding in assembly features, but at least they'll be
> able to decide what happens on a per-library basis.
> This is the most open solution I think, but maybe few more ideas
> bounced around may provide something better still.
> All just my opinion, but I'd be willing to add the work to my list if
> you don't have the time and we agree on a more thorough route for
> handling this type of entity. I think we already agree actually!
> Best Regards,
> Brian.

Follow ups