[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
Re: gEDA-user: next PCB release - 1.99za vs 4.0
On Mon, Sep 13, 2010 at 08:58:54PM -0400, DJ Delorie wrote:
>
> > What's the physical meaning of an eight-layered composite?
>
> A board with eight copper layers, assuming the eight drawing layers
> each map to a different physical layer. Making the structure "flat"
> just means that all your drills and outlines apply to all layers
> equally.
>
Okay, how does this look (I don't think this compiles, it's just
an example)?:
/*** BEGIN ***/
/*
* The layer structuring works as follows:
* 1. At the physical level, PCBs are composed of composites. These
* composites have an outline and thickness, and drills pass through
* them. They may contain sub-composites -or- PCB layers.
*
* 2. Overlays, or drawing layers, are tagged with their respective
* physical layer(s) to obtain a stacking order. Some overlays, such
* as the ratsnest one, have no physical layer, and are considered
* to be "on top" of everything else for drawing purposes.
*
* 3. Keepouts are just another form of overlay.
*
* 4. In footprint mode, there is a single composite. When importing
* footprints, the top and bottom layer of this composite will (by
* default) map to the top-most and bottom-most layer of the PCB.
*/
/*! The type of overlay */
typedef enum
{
OVERLAY_COPPER, /*! conductive */
OVERLAY_SILK, /*! non-conductive */
OVERLAY_KEEPOUT, /*! keepout */
OVERLAY_VIRTUAL /*! non-PCB (ratsnest, documentation, etc) */
}
OverlayStyle;
/*! Overlay ("drawing layer") structure */
typedef struct _overlay
{
const char *name; /*! Layer name */
const char *color; /*! Layer color */
OverlayStyle style; /*! Layer material */
Layer **layer; /*! Associated physical layers */
unsigned n_layers; /*! Number of physical layers */
int b_visible; /*! Visible in GUI */
int b_active; /*! Active layer in GUI */
int b_vacuum; /*! "Hole mode" in GUI */
int b_locked; /*! Un-editable in GUI */
}
Overlay;
/*! Physical layer structure */
typedef struct _layer
{
const char *name; /*! Layer name */
const char *color; /*! Layer color */
unsigned z_index; /*! Stacking order within its composite */
}
Layer;
/*! Composite structure */
typedef struct _comp;
{
const char *name; /*! Composite name */
int thickness; /*! The physical thickness of the composite */
int b_leaf; /*! If true, composite has layers, otherwise it has sub-composites */
unsigned n_children; /*! Number of sub-comps or layers */
struct _comp **child; /*! Array of sub-comps */
Layer **layer; /*! Array of layers */
void *geometry; /*! The shape of the composite (?) */
}
Composite;
/*** END ***/
Andrew
_______________________________________________
geda-user mailing list
geda-user@xxxxxxxxxxxxxx
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user