www.delorie.com/archives/browse.cgi   search  
Mail Archives: geda-user/2015/12/27/12:10:26

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=0xzNuBOnTDLrxQApg2WLq2o1eSTWzpppXRmp/COZGnw=;
b=VdisK/wfesnBJvKhau5dNQglw0/KGVE3aBfsT4D34uYZDU3WGnkd5OjeT5WRSdPHkv
zMhOvUTyV++4vdGB+Kc60lPwKk5mrEyKQ+zvL1/KtvUXc9PmUdWkBATJt6hv0+bY633Q
tk61s4IqJre8bI8erzyP5OaLYTScwoNtxlaVMNaosL5V+Mq4lpnagqwTE3EtS0xINOLw
qKTw7IP7lzuQu9+jy13IJpi0BqsouKWkHJm/ejrEtdGu2ShpNQBr81y5Ea3dcDwu2l/b
iVBcRG/1Wfw/2OolsD2ZQ2Mi3O9oO4A8QfuUuJbAAcggpV6sd2NmxjIkAbwT6x6fU9X2
OKmw==
X-Received: by 10.194.156.199 with SMTP id wg7mr41314380wjb.114.1451236210645;
Sun, 27 Dec 2015 09:10:10 -0800 (PST)
Date: Sun, 27 Dec 2015 18:10:05 +0100
From: "Nicklas Karlsson (nicklas DOT karlsson17 AT gmail DOT com) [via geda-user AT delorie DOT com]" <geda-user AT delorie DOT com>
To: geda-user AT delorie DOT com
Subject: Re: [geda-user] Re: DRC clearance work in progress
Message-Id: <20151227181005.e8481d671102c3bf0867f594@gmail.com>
In-Reply-To: <s6nio3jq19z.fsf@blaulicht.dmz.brux>
References: <CAJXU7q-STU6GSxZSoes5DozwVVZunXCzWt8QVhU8iAXWwSt=dA AT mail DOT gmail DOT com>
<001a1134f920c49e910527d3a068 AT google DOT com>
<CAJXU7q-N=dNaK=3pV8t14pxDNFROqW4u4MjAc8EEWODmOYVYbA AT mail DOT gmail DOT com>
<s6n8u4frkhi DOT fsf AT blaulicht DOT dmz DOT brux>
<20151227173145 DOT 4f52bd9239ac5e14b8966e07 AT gmail DOT com>
<s6nio3jq19z DOT fsf AT blaulicht DOT dmz DOT brux>
X-Mailer: Sylpheed 3.5.0beta1 (GTK+ 2.24.25; x86_64-pc-linux-gnu)
Mime-Version: 1.0
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

> "Nicklas Karlsson (nicklas DOT karlsson17 AT gmail DOT com) [via
> geda-user AT delorie DOT com]" <geda-user AT delorie DOT com> writes:
> 
> >> "Peter Clifton (petercjclifton AT googlemail DOT com) [via
> >> geda-user AT delorie DOT com]" <geda-user AT delorie DOT com> writes:
> >> 
> >> > Focus on within-layer clearances for now.
> >> >
> >> > Any more complex design rules (such as dielectric breakdown through
> >> > the layer stack) requires more data than we have in PCB's data-model,
> >> > and may actually belong in a separate calculation utility that would
> >> > calculate out a geometric design rule that can be applied in PCB.
> >> 
> >> I am playing with the idea to build a DRC tool that works on the gerber
> >> output, using libgerbv and the clipper library (C++)
> >> 
> >>  http://angusj.com/delphi/clipper.php
> >> 
> >> I have made Python bindings for importing gerbers into clipper polygon
> >> data structures, perform bloating/shrinking and clipping operations.
> >> 
> >> Design rules would be specified as boolean operations on suitably bloated
> >> layer data, and anything left in the end is a violation.
> >> 
> >> An example that I have working now:
> >> 
> >>  from pyclipper import Clipper, gerbv, OffsetPolygons
> >>  proj = gerbv.project()
> >>  proj.load("v01.front.gbr")
> >>  proj.load("v01.plated-drill.cnc")
> >>  scale=10000
> >>  raw     = proj[0].polygons(scale)
> >>  drill   = proj[1].polygons(scale)
> >>  clip = Clipper()
> >>  clip.clear() 
> >>  clip.addsubject(raw)
> >>  # clean up, and remove keyholes
> >>  routing = OffsetPolygons(clip.union(),1)
> >>  # require 12 mil annuklar rings
> >>  annular = OffsetPolygons(drill, 120)
> >>  clip.clear()
> >>  clip.addsubject(annular)
> >>  clip.addclip(routing)
> >>  annular = clip.difference()
> >> 
> >> Any polygon left in annular is a violation.
> >> 
> >> For net specific rules I'd need to add some input that gives for each
> >> net at least one coordinate (per relevant layer).  And some code to find
> >> the polygon at the given coordinate.  Some rules, like clearance checks,
> >> require iterations over the individual ploygons in a layer.  At that
> >> point they could be tagged with a netname by the given coordinates.  And
> >> then there could be overrides of bloat values for specifiv nets.
> >> 
> >> I plot the ploygons with gnuplot right now.  A gerber export may be
> >> usefull to visualize the violations in gerbv.  Or some gui.
> >
> > Great!
> >
> > I think your work will would be useful within pcb to.
> >
> > Simple scale will give a little bit to large distance value in outer
> > corner, attached picture, there need to be a circle segment but it
> > could be fixed later at any point and to large distance is usually
> > less of a problem than to small distance.
> 
> Currently my Python bindings only support circle segments, but the
> Clipper library can do other corner handling as well :-)

Actually a full circle with clearance distance radius should work fine for all corners.

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019