kicad-developers team mailing list archive
Mailing list archive
Re: Proposal for the courtyard/assembly layer issue
On Fri, 10 Sep 2010, Brian F. G. Bidulock wrote:
On Fri, 10 Sep 2010, Lorenzo Marcantonio wrote:
Here's what I have done (am in the process of doing):
Components on the "Component" layer also have a mounted height and and
vertical extrusion attributes for mechanical conflicts: primarily
heatsinks. What would be nice is a way of creating the component
outline (including vertical extrusion and placement height)
automagically from the 3D image information for a module. This would
permit existing 3D models to be used to create component outlines for
With my scripted approach (perl code), there's also the posibility of
creating the part 3D view on-the-fly, based on "static" info like
the component dimensions (from the perl code) and dynamic attributes
(like mounting height) supplied for each component by pcbnew.
We could even embed the ref (R42, C2, IC17) and/or the value
of each component on the component body (my libs embeds
the package name), now wouldn't _that_ look cool :-)
... and (maybe going over the top ?-), we could color-code
the resistors as well (although that would require a
standardized way of specifying the value and tolerance :-)
This scripted approach would require adding an embedded perl
interpreter to pcbnew (which is easy enough to do :-),
so it _would_ of course add perl and the perl lib as
dependencies to pcbnew (dunno if that would be acceptable ?;-)
Unscripted 3D views (.wrl files) could still be handled -
the simplest approach is to simply raise the entire part by
"mounted height" w/o any other modifications (could make the pins
hover above the board, of course, but it's dead easy to implement :-).
Another easy approach is to only raise the points that are above the board.
This will simply stretch the pins (assuming the bottom part is
perfectly vertical), and it will work just fine for many packages.
Of course, some components also has mounting clips,
etc., and they will look "a bit" strange (and wrong).
Python seems to be the chosen scripting language for kicad :-(,
but as I know virtually nothing about python, I don't
know if a similar feature can be achieved with python
(and I certainly wouldn't be the one writing it :-).
The upcomming (still immature :-() perl6 and it's parrot VM is
designed to also handle other languages like python and tcl.
When it matures, with parrot, we _should_ thus be able
to have both perl and python with one VM/interpreter :-)
Wrt. heatsinks etc., I think I would choose to handle them as
separate components (w/o pads/pins, except for mounting holes)
- often, a heatsink is shared by several components, and
they can have all sorts of weird shapes (both 2D and 3D).
I don't know how the board checks would handle such
"overlapping" components, though - heatsinks should probably
be (mostly) ignored, except maybe for pad clearances.
Brian F. G. Bidulock ¦ The reasonable man adapts himself to the ¦
bidulock@xxxxxxxxxxx ¦ world; the unreasonable one persists in ¦
http://www.openss7.org/ ¦ trying to adapt the world to himself. ¦
¦ Therefore all progress depends on the ¦
¦ unreasonable man. -- George Bernard Shaw ¦