To solve the optimization problem described, we first need to convert the natural language description into a symbolic representation. This involves defining variables, an objective function, and constraints.

Let's denote:
- $x_1$ as the number of model trains produced,
- $x_2$ as the number of model planes produced.

The objective is to maximize profit. Given that each model train makes a profit of $7 and each model plane makes a profit of $9, the objective function can be represented as:
\[ \text{Maximize: } 7x_1 + 9x_2 \]

The constraints are based on the time available for building and painting:
- Each model train takes 30 minutes to build and 40 minutes to paint.
- Each model plane takes 40 minutes to build and 50 minutes to paint.
- The company has at most 5000 minutes available for building and 6000 minutes available for painting.

Thus, the constraints can be represented as:
1. Building time constraint: $30x_1 + 40x_2 \leq 5000$
2. Painting time constraint: $40x_1 + 50x_2 \leq 6000$
3. Non-negativity constraints: $x_1 \geq 0, x_2 \geq 0$ (since the company cannot produce a negative number of trains or planes)

The symbolic representation in JSON format is:
```json
{
    'sym_variables': [('x1', 'number of model trains'), ('x2', 'number of model planes')],
    'objective_function': '7*x1 + 9*x2',
    'constraints': ['30*x1 + 40*x2 <= 5000', '40*x1 + 50*x2 <= 6000', 'x1 >= 0', 'x2 >= 0']
}
```

Now, let's translate this into Gurobi code in Python:

```python
from gurobipy import *

# Create a new model
m = Model("Toy_Company_Profit")

# Define the variables
x1 = m.addVar(vtype=GRB.INTEGER, name="model_trains")
x2 = m.addVar(vtype=GRB.INTEGER, name="model_planes")

# Set the objective function
m.setObjective(7*x1 + 9*x2, GRB.MAXIMIZE)

# Add constraints
m.addConstr(30*x1 + 40*x2 <= 5000, "building_time")
m.addConstr(40*x1 + 50*x2 <= 6000, "painting_time")

# Optimize the model
m.optimize()

# Print the results
if m.status == GRB.OPTIMAL:
    print("Optimal solution found:")
    print(f"Model Trains: {x1.x}")
    print(f"Model Planes: {x2.x}")
    print(f"Maximum Profit: ${7*x1.x + 9*x2.x}")
else:
    print("No optimal solution found")
```