One of the problems in 3D design is that 3D models do not — or to a limited extend — capture any design intent. The technical requirements for manufacturing a part or product are hard to extract from a design let alone the functional requirements.
This is already a very basic problem in the 3D printing industry with regard to material specifications. There are multiple material printers on the market but they are nearly impossible to use because 3D software does not capture how things are made.
But the requirements go beyond materials alone. Parts need to have particular properties to function as intended. The production process is in itself less important and should be determined by the available resources. These properties need to be captured in the design.
There is also something like design intent which is also not captured. If a designer gets a design from another designer the design intent is not captured in the 3D model. This makes it hard for another designer to make adaptations to that design. He needs to reverse-engineer the design intent to be able to do that. Imagine an adaption of design based on a particular functional requirement. For instance you have an USB stick and you want to change the design to micro-USB. Fundamentally the impact of that decision is low but without knowledge on the actual design it hard to make that adaption.
The current file formats are very poor at capturing design decisions. There is a need for a Design Meta Language on top of the existing file formats which allows designers to store intent, function and properties of parts and components.
So why is that important you ask yourself? Well for one to make it possible to let non-designers customize designs without the need to have a designer available. There are situations where that is not feasible like a war zone or in space or when it just too expensive like in most consumer applications. Consumers can improve designs and share them with others. They can improve or adapt it further and so on. It is called iterative design.