X-Authentication-Warning: delorie.com: mail set sender to geda-user-bounces using -f X-Recipient: geda-user AT delorie DOT com X-Virus-Scanned: by amavisd-new (Uni-Kiel/l3ms-sc) From: geda AT psjt DOT org (Stephan =?utf-8?Q?B=C3=B6ttcher?=) To: Subject: Re: [geda-user] PCB data structures References: <1512221837 DOT AA25291 AT ivan DOT Harhan DOT ORG> <20160106143629 DOT 4D39D809D79B AT turkos DOT aspodata DOT se> <20160106164022 DOT D0D4E809D79B AT turkos DOT aspodata DOT se> <20160106180912 DOT 42ddf4079d91384f206b7c35 AT gmail DOT com> <20160106191433 DOT 5dc5cb59 AT jive DOT levalinux DOT org> <20160106202817 DOT 56197b2c539d426a1b724c9e AT gmail DOT com> <568E09ED DOT 1080508 AT m0n5t3r DOT info> <568E6354 DOT 80302 AT m0n5t3r DOT info> <20160108002640 DOT 03233b24 AT jive DOT levalinux DOT org> <20160108175259 DOT 127a3f073616758434f7edff AT gmail DOT com> <20160109020345 DOT 1e07cb84 AT jive> <20160109112851 DOT 1129dc38 AT wind DOT levalinux DOT org> <20160122094909 DOT 08704cd6e4dfc8a35e1ac734 AT gmail DOT com> Date: Fri, 22 Jan 2016 13:10:24 +0100 In-Reply-To: <20160122094909.08704cd6e4dfc8a35e1ac734@gmail.com> (Nicklas Karlsson's message of "Fri, 22 Jan 2016 09:49:09 +0100") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain Reply-To: geda-user AT delorie DOT com Errors-To: nobody AT delorie DOT com X-Mailing-List: geda-user AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk "Nicklas Karlsson (nicklas DOT karlsson17 AT gmail DOT com) [via geda-user AT delorie DOT com]" writes: >> > The PCB layout has an object of type pcb_layout as the root object, which can contain an arbitrary number of pcb_layer objects--which in turn contain the geometric primitives--and pcb_element objects which aren't associated with a layer. Objects of type pcb_polygon can have child objects of type pcb_polygon_hole: >> > >> > pcb_layout >> > +- pcb_layer >> > +- pcb_arc >> > +- pcb_line >> > +- pcb_pad >> > +- pcb_pin >> > +- pcb_polygon >> > +- pcb_polygon_hole >> > +- pcb_rat >> > +- pcb_text >> > +- pcb_via >> > +- pcb_element >> >> Sounds reasonable, and similar to what we have now but with much cleaned up >> naming and hierarchy. > > I would say then looking at data layer by layer there are: arc, line, > circle, polygon and cutout of these drawing primitives. > > Pad/pin/via is a composite of these drawing primitives on different > layer, this is the case no matter how they are represented. I believe it is a mistake to have pcb_layer contain the drawing primitives. A pcb_via or pcb_element shall contain the same drawing primitives, for any layers. There may be a (hierarchy of) container(s) for drawing elements not contained in a pcb_via or pcb_element. pcb_via and pcb_element shall be subclasses of such containers. > A hole is equal to a round cut out usually thru all board layers with > or without plating. Text is probably also a composite of other drawing > primitives. A hole is a connection between layers. No further assumptions about holes is needed before an export HID or a DRC ruleset is called. -- Stephan