Question: I am new to mechanical engineering, although I have a scientific background (postgrad in Mathematics), and I (mostly) code for a living.

I have an idea about creating a mechanical device; I envisage it will entail gears, linkages and actuators.

I have a rough idea where things will fit but I would like to be able to test and tweak the design in software before building the actual device. As a point of clarification, when I say "test," I mean view via animation, for example, whether two items will collide when in motion, or if there is sufficient leeway between them as they move past each other.

This allows me to do the design and simulation testing of the parts, before finalising the design and then building the physical system from the design.

The stages are:

1. Build the 3D design in software
2. Run simulation to see if it "works," if not fix design and iterate
3. Build physical system from design that "works"

I have figured out that the system consists of three subsystems working together.

So, I would like to design and test each sub-component before integrating them into the complete system.

### My question then is this:

* Is this how design is done in the real world?
* What are the pros and cons of the scheme I have planned?

I am intending to use FreeCAD to do the design and testing.

Answer: 
CAD is essential for determining Geometrical interference and special design. If Finite Elements are used in the CAD package, the data can be used for stress and strain calculations (determining if the system will withstand the loads). This can get complicated since if a system is going to be dynamic, there are static loads and dynamic loads. Dynamic loads need to be calculated when the model is subjected to varying loads.

In addition to mechanical strength, there are other parameters that need to be determined by using a simulation. Suppose you are designing a suspension system. The spring constant of the spring and the damping constant of the damper need to be selected using a simulation. A mathematical simulation can be developed using either Simulink or coding it up in a computer language. Using expected force profiles and test conditions the parameters can be determined using the simulation.
> 
> I am new to mechanical engineering, although I have a scientific
>  background (postgrad in Mathematics), and I (mostly) code for a
>  living.
> 
> 
> 

My observation is that there are plenty of analogues between how software is designed, tested for, coded (heh, in that order), and distributed - and how mechanical models are described in CAD. Maybe this is because most of what I do is parametric modeling, e.g. describing the computer a recipe on how to produce a model from parameters, that can then be tested.

You certainly sound to be on the right tracks.

As with software tools, you need to pick and know your tools well, to work with them and not against them.

---

Meta note: this question is going against the StackOverflow [tour](https://engineering.stackexchange.com/tour). It advices e.g. against opinionated answers and those ".. with too many possible answers or that would require an extremely long answer". What this might mean is someone closes the entry eventually.