Knowledge-Based Engineering software can (and often does) deliver, but as the previous post mentions, you should not realistically aim to cover every case with this type of software.
There are many web sites covering techniques used for knowledge capture and maintenance to ensure that you get at the right information and store it in a useful, maintainable way. (Knowledge Management in Google)
Off the shelf packages can be used to represent simple rules and components with no programming, but for complex processes you will need to resort to some programming - but specific knowledge based applications can simplify the programming task.
KBE modules are available for many of the major CAD systems, but these don't always provide the flexibility that you are after. Some are nothing more than parametric models driven by formulae where as it sounds like you require something which will allow you to alter topology and size based on the user inputs.
This type of software requires a different approach to conventional software development methodologies - the software tends to evolve rather than being fully specified at the start of development, so the language used should support this (I'd rule out C/C++ for KBE). VB is a reasonable starting place if you've got experience of that, else I'd look to Python or Lisp.
Even if the rules aren't specific enough to perform on 100% of the cases, they usually give a good starting point for those that fall outside of the software scope.
Hope that helps.