To solve this problem, we first need to define the decision variables and the constraints based on the given information. Let's denote:

- \(A\) as the number of apple smoothies made.
- \(O\) as the number of orange smoothies made.

The profit per apple smoothie is $3.5, and the profit per orange smoothie is $4.5. Thus, the total profit can be represented as \(3.5A + 4.5O\).

The constraints are based on the time availability of the machines:
- The cutting machine is available for at most 500 minutes per day. It takes 6 minutes to make an apple smoothie and 5 minutes to make an orange smoothie. Therefore, the constraint can be represented as \(6A + 5O \leq 500\).
- The blending machine is also available for at most 500 minutes per day. It takes 3 minutes to make an apple smoothie and 2 minutes to make an orange smoothie. Thus, the constraint can be represented as \(3A + 2O \leq 500\).

Since we cannot make a negative number of smoothies, both \(A\) and \(O\) must be non-negative.

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

```python
from gurobipy import *

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

# Define the decision variables
A = m.addVar(vtype=GRB.CONTINUOUS, name="Apple_Smoothies", lb=0)
O = m.addVar(vtype=GRB.CONTINUOUS, name="Orange_Smoothies", lb=0)

# Set the objective function
m.setObjective(3.5*A + 4.5*O, GRB.MAXIMIZE)

# Add constraints
m.addConstr(6*A + 5*O <= 500, "Cutting_Machine_Constraint")
m.addConstr(3*A + 2*O <= 500, "Blending_Machine_Constraint")

# Optimize the model
m.optimize()

# Print the results
if m.status == GRB.OPTIMAL:
    print("Optimal solution found:")
    print(f"Apple Smoothies: {A.x}")
    print(f"Orange Smoothies: {O.x}")
    print(f"Total Profit: ${3.5*A.x + 4.5*O.x:.2f}")
else:
    print("No optimal solution found")
```