X-Authentication-Warning: delorie.com: mail set sender to geda-user-bounces using -f X-Recipient: geda-user AT delorie DOT com X-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=date:from:to:subject:message-id:in-reply-to:references:mime-version :content-type:content-transfer-encoding; bh=HGuWNROfPEUS1+b2pCbnwyDX0UC88Rv28RqkzrloeNU=; b=r1va/UB2j3mGHUa33QKJLABpCdsqB9+JblcKotx3+eTV4pEBcGvNaCqnp/Vfm0wKcW DOz2CHx4k4g/PUgkJ1Zh0c+LVC6guZ2TUc4kFH9bbmcMTC1HOmzZvJBArgwFayXnKdYF aj8Gxzec4Eyxm8wggmT0EGY6OszCXGUG4c2PVu5FKb8nWUidsRSK3qBHoeKdTO73wQzJ SMlMCFnQFBSw9I5QRiA/mblhoS24xjvGFbdHkYv/veEO09c1P6VadzlN6bmUII0fnPI9 xf/jAJsQ5S60e2E3ltaaGAtybn8+V6xHsIRnWbaZgFv7+dR6NZb7I8MDJdBwWG2onBR9 gefg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:date:from:to:subject:message-id:in-reply-to :references:mime-version:content-type:content-transfer-encoding; bh=HGuWNROfPEUS1+b2pCbnwyDX0UC88Rv28RqkzrloeNU=; b=PueH5F79sZe2cPhr+IjJbQU38Klm4ogTJFzK6eUHmy8xjAQ1KFBQUuIgiEN7hzvnh5 i9i4CH5G+rYU4OTqyThwE/6AJ+McpvrnZSQJvBxsHtVQ7f3wDeThnrw+fRJaiWfTPq1c HlcFZ2DQAJTYBRfeAQuM0VzuMhCQvP2Bi5BetnSCvhPHDIEh4WzImfceER3IGMeuwdf1 StNd2QWNL/EIo9evbb3IMVNOzqCRCi/xjUF1OrlYilOut6Lpghrurou15aBEOabwG+5n vmyXa3sHBk0GtA2AZPYRShEa7Qj2vj/DOBM93m/RmcKAFVM2FtHgQYRYsnB2NXLLEe6S kP2Q== X-Gm-Message-State: AG10YOTO/iK082+Lrgfmb5iMWm+hENGqP/M9MTYzOxR9+0wp6gntUj4wrxMxBz7xLsR8qw== X-Received: by 10.25.27.76 with SMTP id b73mr1840074lfb.43.1453504357182; Fri, 22 Jan 2016 15:12:37 -0800 (PST) Date: Sat, 23 Jan 2016 00:12:31 +0100 From: "Nicklas Karlsson (nicklas DOT karlsson17 AT gmail DOT com) [via geda-user AT delorie DOT com]" To: geda-user AT delorie DOT com Subject: Re: [geda-user] PCB data structures Message-Id: <20160123001231.5b832fb59d995731f91e2b6f@gmail.com> In-Reply-To: References: <1512221837 DOT AA25291 AT ivan DOT Harhan DOT ORG> <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> X-Mailer: Sylpheed 3.5.0beta1 (GTK+ 2.24.25; x86_64-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit 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 > >> > 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. Sometimes it is useful with drawing primitives on layers for example then drawing lines on copper layer for connections. It is also useful to place footprint/elements on different layers, as is now top and up side down on bottom. For embedded components there would be a need to place footprints/elements on other copper layers facing up or down. With a container I assume you mean something to collect objects. A footprint may for example have both drawing primitives on differenet layers and padstack containers for the pins/pads. As is now footprint/element container have lines and pads/pins but no padstack container. > > > 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 A plated hole is a connection between layers but sometimes there is a need for other shapes than round and a cutout make sense for other kind of holes. As is today only possible cut out is a hole thru all layers with or without plating. Nicklas Karlsson