kicad-developers team mailing list archive
-
kicad-developers team
-
Mailing list archive
-
Message #35754
Re: Proposed Geographic PCB Re-Annotation for Kicad 6
Ahhh… that makes much more sense now.
So we have back-annotation for Cvpcb which matches on reference and updates the footprint field.
This would be similar only matching on timestamp and updating the reference field?
> On 10 May 2018, at 19:10, Wayne Stambaugh <stambaughw@xxxxxxxxx> wrote:
>
> Hey Jeff,
>
> I believe Brian has proposed annotating by the physical position on the
> board layout and back annotating the schematic accordingly. The problem
> I see is that we do not have back annotation support implemented yet.
> I'm guessing his implementation directly modifies the schematic file
> which I would be opposed to unless it uses the schematic file plugin for
> loading and saving the schematic to ensure file integrity. The ideal
> solution would be to wait until the back annotation feature is
> implemented and push the updated references back to the schematic from
> the board editor. It's not a trivial change.
>
> Cheers,
>
> Wayne
>
> On 5/10/2018 1:54 PM, Jeff Young wrote:
>> Hi Brian,
>>
>> Re-annotation is usually done in Kicad from Eeschema rather than Pcbnew.
>>
>> The current annotation dialog supports two ordering mechanisms: "by x
>> position" and "by y position". If I understand what you’ve done
>> correctly it could be added as a third option “rules based sorting” (or
>> something).
>>
>> We’d then have to add a dialog for editing the rules. How complicated
>> are they?
>>
>> Cheers,
>> Jeff.
>>
>>
>>> On 2 May 2018, at 22:43, Brian Piccioni <brian@xxxxxxxxxxxxxxxxxxxxx
>>> <mailto:brian@xxxxxxxxxxxxxxxxxxxxx <mailto:brian@xxxxxxxxxxxxxxxxxxxxx>>> wrote:
>>>
>>> Sorry if this is a duplicate: I originally sent if from my
>>> non-registered email address.
>>>
>>> * *
>>>
>>> *Proposed Geographic PCB Re-Annotation for Kicad 6*
>>>
>>> I wrote a standalone program called RenumKiCadPCB which does a
>>> rules-based geographical renumbering of PCB components and
>>> back-annotates the schematic hierarchy and netlist.
>>>
>>> As it stands, this is an external program written in c.
>>>
>>> Having looked at the Kicad codebase I believe it can be incorporated
>>> into Kicad as a standard function. Because this is common in
>>> commercial electronic CAD I believe it would be appreciated by the
>>> user base. Manual geographic re-annotation is time consuming and
>>> source of potential error.
>>>
>>> Currently the freestanding code works like this (summary):
>>>
>>> 1. *Drops into a primitive text based menu system for set up;*
>>> 2. Parses the schematic hierarchy to determine storage requirements
>>> and file paths;
>>> 3. Parses the PCB file to locate all components and their locations;
>>> 4. *Creates a sorted “change list” based upon the rules for sort
>>> direction and the results of step 2;*
>>> 5. Makes backups of the schematics, PCB, and netlist;
>>> 6. Updates all schematic symbol reference designations in accordance
>>> with the “Change List”;
>>> 7. Updates the PCB reference designations and nets in accordance with
>>> the “Change List”;
>>> 8. Updates the Netlist reference designations and nets in accordance
>>> with the “Change List”;
>>> 9. Writes out the updated files.
>>>
>>> There are various “traps”, etc., if errors are detected.
>>>
>>> Besides the issues of being a standalone program, the need to parse
>>> the various file formats (SCH, Kicad_PCB, netlist) means that if
>>> simply ported into Kicad the code would have to be constantly updated
>>> in order to accommodate even small changes to the file formats.
>>>
>>> Having spent some time looking at the Kicad code base, I am pretty
>>> sure all but step 1 (the menu) and step 4 (creation of a rules-based
>>> change list) can be replaced by calls to existing Kicad functions, in
>>> particular those used for search and replace, editing text, etc.. I
>>> assume it is possible to spawn eeSchema from PCBNew in order to do the
>>> search and replace on the schematic hierarchy and to regenerate the
>>> netlist.
>>>
>>> The Netlist Importer menu in PCB new would make a good prototype for
>>> the new menu.
>>>
>>> Use of existing Kicad functions would probably result in the code
>>> running slower than it currently runs ( << 1 second for a large board)
>>> but that should not be a problem since this is the sort of thing which
>>> is rarely run more than a couple of times during the life of the project.
>>>
>>> Nevertheless, use of existing functions ensure the geographical
>>> reannotation would be robust against any future changes to file
>>> formats, etc., since reference designations and coordinates are
>>> inherent characteristics in an ee CAD system.
>>>
>>>
>>>
>>> *_Risks_*
>>>
>>> I have to note that my participation has some risk:
>>>
>>> 1. I am old (60) and have never written code as part of a large,
>>> collaborative project: most of my programming experience is
>>> limited to embedded designs;
>>> 2. I have only a passing familiarity with c++;
>>> 3. I am not used to the sort of documentation associated with Kicad;
>>> 4. These imply a steep learning curve for an old guy;
>>> 5. As such, it will probably take me much longer than a skilled
>>> programmer to do this.
>>>
>>>
>>>
>>> Therefore, it would be helpful if there was a mentor I could turn to
>>> for some guidance, if the developers accept that this is a good idea.
>>>
>>> I would appreciate any feedback. If you think this would not be a good
>>> thing to pursue, please let me know.
>>>
>>>
>>>
>>> Regards
>>>
>>>
>>>
>>> Brian Piccioni
>>>
>>> Documented Designs
>>>
>>>
>>>
>>> _______________________________________________
>>> Mailing list: https://launchpad.net/~kicad-developers <https://launchpad.net/~kicad-developers>
>>> Post to : kicad-developers@xxxxxxxxxxxxxxxxxxx <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
>>> <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>>
>>> Unsubscribe : https://launchpad.net/~kicad-developers <https://launchpad.net/~kicad-developers>
>>> More help : https://help.launchpad.net/ListHelp <https://help.launchpad.net/ListHelp>
>>
>>
>>
>> _______________________________________________
>> Mailing list: https://launchpad.net/~kicad-developers <https://launchpad.net/~kicad-developers>
>> Post to : kicad-developers@xxxxxxxxxxxxxxxxxxx <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
>> Unsubscribe : https://launchpad.net/~kicad-developers <https://launchpad.net/~kicad-developers>
>> More help : https://help.launchpad.net/ListHelp <https://help.launchpad.net/ListHelp>
>>
>
> _______________________________________________
> Mailing list: https://launchpad.net/~kicad-developers <https://launchpad.net/~kicad-developers>
> Post to : kicad-developers@xxxxxxxxxxxxxxxxxxx <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
> Unsubscribe : https://launchpad.net/~kicad-developers <https://launchpad.net/~kicad-developers>
> More help : https://help.launchpad.net/ListHelp <https://help.launchpad.net/ListHelp>
Follow ups
References