[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 07:24:57PM -0700, Steven Michalske wrote:
> 
> On Sep 13, 2010, at 6:45 PM, Andrew Poelstra wrote:
> 
> > 
> > /*** 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 */
> 
> Suggest
> OVERLAY_CONDUCTOR,
> OVERLAY_INSULATOR,
>

I like this.
 
> >  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 */
> 
> Shouldn't we make the drawn shapes specify if it adds or subtracts material not the layer????
>

We will; that boolean is purely a UI flag. Now that I think about
it, "hole mode" is a property of the whole PCB, not individual layers.
 
> This would make the layer either positive or negative, negative layers default to subtraction objects, but can have objects that add.
> 
> Where solder mask is a negative layer, but copper is a positive layer.
> Note: I am not referring to how assembly houses prefer gerbers in positive or negative, but wether the material application either added by shapes or removed by shapes.
> 
> >  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 */ 
> 
> linked list of children?  no need for b_leaf?
>

That makes sense, if Layer inherits from Composite.
 
> >  Layer **layer;	/*! Array of layers */
> > 
> >  void *geometry;	/*! The shape of the composite (?) */
> 
> Is this like the outline for this composite???
> 

Yeah, I wasn't sure how to do that, so I just threw a void pointer in
to indicate association.

> > }
> > Composite;
> > 
> > /*** END ***/ 
> > 
> > Andrew
> > 
> 
> 
> I don't know if the thickness of the composite works well for the conductor layers....
> 
> If I have two metals on a pcb it may be that one is etched and is 1Oz thick and another is stamped foil and is 50um thick.  how would composites handle this case?
> 
> I guess that this is a subtlety on the thickness of PCBs  as is the thickness of a prepreg defined by the distance between opposing conductors or the distance between the cores backing the conductors????
> 
> Cu
> === Core                 <--------------|
> Cu                  <----|                       |
> ----- prepreg         | Here  or       |  Here
> Cu                  <----|                       |
> === Core                 <--------------
> Cu
> 
> Normally the prepreg layer is variable to make the overall thickness meet the specification.
>

The short answer is, I don't know :) but if Layers inherit from Composites,
then conductor layers will have a thickness associated with them.


Andrew

 


_______________________________________________
geda-user mailing list
geda-user@xxxxxxxxxxxxxx
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user