← Back to team overview

kicad-developers team mailing list archive

Re: Group selection idea

 

Hi Kristoffer,

Please consider the following ideas, perhaps you will find it useful:

* Create a PCB_GROUP class inheriting from BOARD_ITEM_CONTAINER

  As BOARD_ITEM_CONTAINER is also a BOARD_ITEM, you get an easy way of
creating nested groups. This also enables selecting a group with the
selection tool, as the group is now a part of the board. Another benefit
is a possibility of graphic representation (a border/semitransparent
background) to indicate a group. You can also have a single item
belonging to several groups, if someone finds it useful.
  PCB_GROUPs would have to be stored in a BOARD object.
  The downside is dealing with the undo buffer and netlist updates. As a
result of certain operations BOARD_ITEMs are added & removed, and their
groups have to be updated too. Perhaps a set of shared_ptrs in
BOARD_ITEM to its parent GROUPs would fix the problem, but it may need
some further consideration.

* Room recipe (just to evaluate if it is feasible with the current approach)

  Rooms/channels are usually done by embedding a single schematic sheet
multiple times. This fact is reflected in the component sheet path, so
it is easy to determine corresponding components in different rooms.
  Example sheet paths for two components in two different subsheets:

   | sheet 1  | sheet 2
---+----------+---------
C1 | /12C/FA0 | /81A/FA0
R1 | /12C/41E | /81A/41E

  Rooms (groups) would be created upon request during netlist import,
basing on the schematic sheet path.
  Copying one room layout to another:
* Find a reference component in both rooms (e.g. C1)
* Computing relative position of other components in the source room
* Apply the relative position to components in the destination room

The tricky part is recreating the tracks/vias. To do so, one needs to
find all the room internal tracks and copy them to the destination room,
updating the nets. Perhaps that will be simpler with the new
connectivity algorithm, but a possible way is:
* Iterate through all components pads in the source room
* Find the attached tracks and see if they lead to another component in
the same room. If it is true, the track should be copied.
* Propagate nets from pads.

Regards,
Orson

On 01/13/2017 03:23 PM, Kristoffer Ödmark wrote:
> Okay, got it.
> 
> For the group selection thing, I did some quick tests today, and only
> letting board items belong to one group at a time seems like a good way,
> letting them belong to multiple groups gave me a headache in how to
> implement any way of handling the groups.
> 
> This would then change the format for the pcb file with one value under
> every saved board item in the kicad_pcb file. suggesting (group <name>)
> to be used for this. ( tracks, vias, texts, etc etc )
> 
> This does not hinder the development for hierarchy of the groups later
> on. That could be fixed with having another field later which keeps
> track of the hierarchy and parents/childs groups.
> 
> I looked over my implementation and changed everything to use wxStrings
> and wxArrayStrings, to be more like current things in Kicad, I do not
> know if this was an issue or not.
> 
> Is the file format upgrade for the current implementation okay? If it is
> I will start implementing it this weekend.
> 
> - Kristoffer
> 
> On 01/13/2017 02:07 PM, Wayne Stambaugh wrote:
>> Kristoffer,
>>
>> I was merely talking about getting your initial implementation correct
>> in Pcbnew to prevent issues with the full implementation down the road.
>> While I'm OK with opening up a full design specification, I think it's a
>> bit premature and will distract us from the immediate work at hand.
>> None of the schematic group linking work can happen until the new
>> schematic and symbol library file formats are complete.  I want to keep
>> the focus on grouping in Pcbnew for the time being and not get bogged
>> down in a full implementation specification.
>>
>> Cheers,
>>
>> Wayne
>>
>> On 1/12/2017 3:38 PM, Kristoffer Ödmark wrote:
>>> I think Physical design reuse (PDR) is far out of scope of the group
>>> selection idea. However it Might be used. I actually put some thinking
>>> on howto implement some kind of PDR into Kicad without having to
>>> redesign everything existing already. Its in a google doc with comments
>>> enabled.
>>>
>>> [Google docs link]
>>> https://docs.google.com/document/d/1ivRRu7F2g6_WU9bgHlaUTaXZw02oluMh4NA41BqEM-8/edit?usp=sharing
>>>
>>>
>>>
>>> PDR discussions I think should be in a separate thread, since the amount
>>> of work to get there is quite a bit more, involves both eeschema and
>>> pcbnew, new file formatting, specifying workflows etc etc.
>>>
>>> Its called snippets in A****m, PDR in PADS.
>>>
>>> - Kristoffer
>>>
>>> On 2017-01-12 18:47, Clemens Koller wrote:
>>>> Hello!
>>>>
>>>> This feature looks really useful in production if it's implemented
>>>> properly.
>>>> Some comments from my side how things could be extended in the future:
>>>>
>>>> Group selection (also read: table-based/parametric-based selection!)
>>>> seems like a great feature and the step towards physical design reuse
>>>> (PDR).
>>>> With some intelligent grouping of routed components and
>>>> automatic/assisted selection of components based on netlist-topology
>>>> (or manual or table based selection) it is possible to create a
>>>> physical design reuse (or channels) by duplicating groups with the
>>>> same layout but different component references + different net names /
>>>> instances of net names.
>>>> An additional approach is intelligent "group editing" (table based - a
>>>> must have for complex designs!) where there is an automatic / assisted
>>>> rename of components and netnames to create reuses. This also applies
>>>> to the schematic entry, obviously.
>>>>
>>>> The word "intelligent" above means obviously, that there is some
>>>> infrastructure and coding work to consider.
>>>>
>>>> An example screenshot of one of my designs using a buggy commercial
>>>> product is attached. There are 60 similar channels.
>>>> Layouting these manually would be a hell of work, obviously.
>>>>
>>>> Regards,
>>>>
>>>> Clemens
>>>>
>>>>
>>>> On 2017-01-12 17:37, Wayne Stambaugh wrote:
>>>>> I think this feature would be useful but we should proceed with
>>>>> caution
>>>>> if we are going to include persistence.  I'm guessing making groups
>>>>> persistent will require a change to the pcb file format.  We should
>>>>> think this through thoroughly before moving forward.  Is it possible
>>>>> that this grouping could be used for an a****m like room feature?  If
>>>>> so, than we need to plan this out accordingly rather than just
>>>>> commit a
>>>>> new feature for the sake of convenience.
>>>>>
>>>>> On 1/12/2017 6:55 AM, Tomasz Wlostowski wrote:
>>>>>> I like it. Give me a few days to review it and I hope it will get
>>>>>> merged. You'll also have to make the groups persistent (save to
>>>>>> file).
>>>>>> Recursive grouping (group of groups) would be also an advantage.
>>>>>>
>>>>>>
>>>>>> Cheers,
>>>>>> Tom
>>>>>>
>>>>>> Sent from my Samsung Galaxy smartphone.
>>>>>>
>>>>>>
>>>>>> -------- Original message --------
>>>>>> From: Kristoffer Ödmark <kristofferodmark90@xxxxxxxxx>
>>>>>> Date: 12/01/2017 12:41 (GMT+01:00)
>>>>>> To: kicad-developers@xxxxxxxxxxxxxxxxxxx
>>>>>> Subject: Re: [Kicad-developers] Group selection idea
>>>>>>
>>>>>> Hey again, What would be the chances of seing this getting into the
>>>>>> master branches on launchpad, what would I have to add/change to
>>>>>> get it
>>>>>> there?
>>>>>>
>>>>>> - Kristoffer
>>>>>>
>>>>>> On 2017-01-11 21:59, Kristoffer Ödmark wrote:
>>>>>>> Attaching Patch!
>>>>>>>
>>>>>>> ( Thanks Chris! )
>>>>>>>
>>>>>>> On 2017-01-11 20:51, Kristoffer Ödmark wrote:
>>>>>>>> Hello!
>>>>>>>>
>>>>>>>> I hacked together a group selection concept looking like this:
>>>>>>>> https://youtu.be/eJp-aJ8i0H4
>>>>>>>>
>>>>>>>> It can assign BOARD_ITEM to a specific group for easier
>>>>>>>> selection and
>>>>>>>> group manipulation. I am open to suggestions on changes, this is
>>>>>>>> surely
>>>>>>>> not an optimal implementation.
>>>>>>>>
>>>>>>>> Useful when you may want to keep the relative position of
>>>>>>>> something on
>>>>>>>> the board like maybe a RF layout etc.
>>>>>>>>
>>>>>>>> It cannot currently save the group assignments between sessions,
>>>>>>>> since
>>>>>>>> that would require some changes to the file format. That would
>>>>>>>> need some
>>>>>>>> agreement that this is indeed wanted.
>>>>>>>>
>>>>>>>> it also doesnt work on zones right now.
>>>>>>>>
>>>>>>>> ps: I do not now the best way to attach a patch file.
>>>>>>>> I added my feature
>>>>>>>> commit
>>>>>>>> git pull
>>>>>>>> fix conflict
>>>>>>>> commit
>>>>>>>>
>>>>>>>> Anyone have any steps on how to get one patch file for this, now I
>>>>>>>> got
>>>>>>>> one patch file, and a merge.
>>>>>>>>
>>>>>>>> - Kristoffer
>>>>>>
>>>>>> _______________________________________________
>>>>>> Mailing list: https://launchpad.net/~kicad-developers
>>>>>> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>>>>>> Unsubscribe : https://launchpad.net/~kicad-developers
>>>>>> More help   : https://help.launchpad.net/ListHelp
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Mailing list: https://launchpad.net/~kicad-developers
>>>>>> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>>>>>> Unsubscribe : https://launchpad.net/~kicad-developers
>>>>>> More help   : https://help.launchpad.net/ListHelp
>>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Mailing list: https://launchpad.net/~kicad-developers
>>>>> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>>>>> Unsubscribe : https://launchpad.net/~kicad-developers
>>>>> More help   : https://help.launchpad.net/ListHelp
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Mailing list: https://launchpad.net/~kicad-developers
>>>>> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>>>>> Unsubscribe : https://launchpad.net/~kicad-developers
>>>>> More help   : https://help.launchpad.net/ListHelp
>>>
>>> _______________________________________________
>>> Mailing list: https://launchpad.net/~kicad-developers
>>> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>>> Unsubscribe : https://launchpad.net/~kicad-developers
>>> More help   : https://help.launchpad.net/ListHelp
>>
>>
>> _______________________________________________
>> Mailing list: https://launchpad.net/~kicad-developers
>> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>> Unsubscribe : https://launchpad.net/~kicad-developers
>> More help   : https://help.launchpad.net/ListHelp
>>
> 


Attachment: signature.asc
Description: OpenPGP digital signature


Follow ups

References