3D Pin Headers Exceeds 1GIG: If KiCad Includes, Will Be Over 2 Gig


I knew I had some quirky settings in some of my footprints to make the pin-headers work out properly in the 3D viewer.

Continuing the discussion from 3D view of pin headers is skewed:

I used the Wizard to download the updates for the Pin_Headers.3dshapes library. The download seemed a little slow, but Github can be that way some times.

After the download I get an email from my data provider that I’m being charged for an extra Gig of data.

I take a look at the new folder properties.The size on disk for this single folder is 1.17GB and contains 2,081 files.

At some point in time, KiCad should take more effort to respect the users that have data-bandwidth limitations.


I don’t think anyone is going to disagree with you. Also the libs do need to be separated from the nightly builds.

The wizard does not use git so you don’t gain any advantage of only downloading bits that have changed. I’d suggest using git to keep your libraries up to date. Much much lower bandwidth usage.

There was a cool suggestion yesterday on the GitHub page to allow arraying of 3D models, so e.g. all pin headers in a single series only need one model file! A different approach to the problem.


(ON EDIT: I still don’t fully understand Git, but it appeared to me that KiCad used Git; per the screenshot. Thanks for the clarification.)

I really made an effort in my OP to not come across as negative in any way towards KiCad, the Developers, the Librarians; and just present the facts as events occurred.

The Windoze build server has been down for a while. My OP was meant as a “Heads-Up” sorta thing if it manages to come back online after the next week.


I don’t think your post was negative at all :slight_smile:

You’re correct that the situation needs to change.

The mechanics behind the 3d model download “wizard” are the stuff of nightmares. They “look” like they use Git but they do not, they only download models directly from GitHub.

Instead of hooking into Git functionality, the 3D downloader actually used wget or curl to download raw file data (from raw.github.com). If you go to GitHub and look at the actual file content of each model, that’s what is being downloaded.

All the bells and whistles of git are thrown away.


Git doesn’t provide a way to individually download single files. Users who don’t clone the entire repo cannot pull down the file changes. So this dirty hack was instigated to allow download of individual files.

This is not a good solution and you’re right to be confused and annoyed.

I have a few ideas on how to improve this, but they are about 7 down on my KiCad stack, which isn’t my only stack :stuck_out_tongue:


^^^Is what I have been trying to figure out how to do.^^^

… for maybe over a year now…

I’ve been using the browser to cut and paste the text of the files.

Thanks for the feedback.


Are there any plans to replace static files with dynamic (generated on the fly) parameterized templates for symbols, footprints and 3D models?

Pin headers in particular, and SIP/DIP/rectangular connectors in general, would greatly benefit from being able to derive a specific symbol, footprint, or 3D model from a generic template, and a specific set of parameters such as pin count, angled vs straight, pin spacing, etc.


It’s a great idea and has been discussed. But it would be a lot of work. If you are willing to work out how to implement this in KiCad, this would be a headline feature! You’d be rich! Well, not rich. But, we would all be very thankful.

For a somewhat less facetious answer:

  1. I believe that Altium has this feature?
  2. @maui has done a lot of fantastic work with PythonOCC to generate models on the fly
    a. This requires FreeCAD to work
    b. Perhaps there is a way to remove the FreeCAD dependency?
  3. It would be awesome to implement Python 3D model wizards similar to the footprint wizards
    a. A LOT more complicated than the footprints
    b. Generating STEP data is complex. @maui would have some interesting thoughts here I would imagine

TL;DR - Cool? Yes! Difficult? Probably.


Still not sure if the array thing is gonna be a great choice but let’s see down the road :slight_smile:
If the individual files could be downloaded, tje models could probably be downloaded automatically when the 3Dviewer was ran (or similar) this way people would only get the files they need.
Perhaps even decide if they only want WRL models or also step files

BTW I seriously hope somebody finds those connectors useful, still haven’t heard of any. On the other hand I learned how many people doesn’t have enough internet or a decent sized harddrive. (I consider these my money saved on an Altium/Eagle license)



The two that “I” needed were perfect, looked great, totally AWESOME!

I just did not have the need for the other 2,079 at the moment.

It has always been my position that the libraries be as complete as possible, but not be a thing that users are FORCED to download EVERY thing EVERY time.

@Shack, and a few others, I don’t think you get the feedback here that you deserve for the impact that effort has made to the current quality of KiCad.

Again I wish to state, this thread was created as a “heads-up” since the nightlies have been down for so long. There is zero intent to convey anything negative in any way shape or form about KiCad or towards anyone involved in the development, the libraries, or those that participate in the forums. My intent is such that I hope new users will find the future KiCad to be awesome out of the box.


Glad to know :slight_smile:

I agree the library size is building up (and it’s only getting “worse”)
Perhaps the 3D models shouldn’t be shipped with KiCad but rather have a popup in the installation process if you would like to download it and perhaps selectable between steps and WRL (only downloading WRL would cut down 2/3 size).
Regarding the on-the-fly generator I don’t think it’s gonna be fast enough since my pretty heavy computer spend a lot of hours generating the connectors


I’m not certain, but it does appear to me that the contributors to the libraries are outpacing the developers at the current moment.

The situation is only “worse” if the developers can’t keep up. Otherwise, KiCad ends up having a very large set of qualified libraries that new users will find to be of great help starting out.


I don’t think so… from what I can see from video tutorials, they have a sort of generating the 3D model with an user aided process mainly getting info from footprint layers, but with a simplified result. The primary way to integrate MCAD is to load pre-built 3D models.

the best in having FC to build the models is that you have a MCAD environment that can/must be used to check model geometry errors/problems.
The quality of the STEP models may vary a lot depending on the way it get build (sequence/primitives) and on the OCC release.

Mechanical environment requires more deep analysis compared to what is needed for a simple rendering.
The quality of the actual KiCAD MCAD library is a result of a script process to generate models, and a user post process to inspect the result issues of the generated models, including geometry check.
A part of a great developing effort from a great MCAD squad! :smiley:

The nice thing is that FreeCAD could be used inside KiCAD as a python module … this is a lot of work because you need to have FC built with the same python resources used inside KiCAD.

A lot of dependencies and moreover a lot of work to use the FC powerful resources inside KiCad.
Anyway normally other EDA sw just are implementing the basis of MCAD inside EDA and are working more on MCAD / ECAD interaction and collaboration, leaving the ‘dirt’ MCAD work in MCAD native environment.
That is what I would suggest too: do your EDA work in EDA tool and check your mechanical requirements (enclosures, mechanical connections etc.) in a MCAD tool.


  1. An option IMO would be to give the user the ability to have some basic 3D full library and the option to load other 3D parts as an user option.
  2. An other interesting option IMO would be to have a function to be called inside Kicad or pcbnew to create a full list of needed 3D parts for the user kicad project, then check automatically if those models are already in the users local 3D library and give an option to retrieve with a ‘wget’ process the missing models from kicad on-line library; finally the downloaded missing models would be placed automatically in the right local folder by the function itself.
    For example if you need:
    your wget could point to:
    and download it directly, placing it to local configured
    This would require a very little work to be implemented, compared to create a reliable building MCAD chain in KiCAD, and it would give the user a very little manual work to do and very little internet loading band.

[quote=“Shack, post:10, topic:8243”][quote=“Shack, post:8, topic:8243”]
BTW I seriously hope somebody finds those connectors useful
an other happy user here :wink:



@maui Thanks for your contributions to make KiCad as great as it is!


The other option is integration of Freecad into Kicad or vice versa. I prefer interaction, as smooth as possible.


If git is used for the pin headers… …could it be made use the git command-line program instead of the git library used for the footprints that doesn’t support proxies and therefore is a no-go in many a corporate environment?


Yes. Download the libraries from the command line or with your browser in a zip file.
Then, add the libraries to your projects with the footprint library wizard.

Many of us keep our libraries locally.


It is possible already to use footprint 3D Shapes to add multiple (eg: arrays) of 3D models.
So for instance itt can be used for pin headers, just one 3D model that will be added for each pin position.

Also, it is possible for WRL (on the latest kicad development version) to include other external WRL files.

This could also be used for DIP and QFP packages. however it will be harder for library maintainers to create and mantain this files.


I totally agree with the suggested work flow on simply downloading the needed models when needed. Perhaps together with a function called “download all”


Though at 3000 connectors, even 12 hours is about 15 seconds per connector. Unless I’m missing something, this seems a small penalty per connector for first use, if the generated file is stored locally.


This is exactly how I was thinking we could implement downloading footprints and symbols. What is fundamentally wrong with this approach assuming that each KiCad user downloads 5% of the library?

It seems like a threshold could be defines as equivalent percentage of library such that greater than X% download means just download the entire thing.

What are the potential workarounds of Git not supporting per-file download?