To solve this problem, we first need to define the decision variables and the objective function. Let's denote the number of standing tables as \(S\) and the number of dining tables as \(D\). The objective is to maximize the total profit, which can be calculated as \(45S + 95D\).

The constraints are based on the time available for each process:
1. Producing parts: \(2S + 4D \leq 6000\)
2. Assembling: \(2.5S + 1D \leq 3000\)
3. Polishing: \(2S + 1.5D \leq 4500\)

Additionally, we have non-negativity constraints since the number of tables cannot be negative:
- \(S \geq 0\)
- \(D \geq 0\)

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

```python
from gurobipy import *

# Create a model
m = Model("Furniture_Maker_Profit")

# Define decision variables
S = m.addVar(vtype=GRB.CONTINUOUS, name="Standing_Tables")
D = m.addVar(vtype=GRB.CONTINUOUS, name="Dining_Tables")

# Objective function: Maximize profit
m.setObjective(45*S + 95*D, GRB.MAXIMIZE)

# Constraints
m.addConstr(2*S + 4*D <= 6000, "Parts_Production")
m.addConstr(2.5*S + D <= 3000, "Assembly")
m.addConstr(2*S + 1.5*D <= 4500, "Polishing")

# Optimize model
m.optimize()

# Print solution
if m.status == GRB.OPTIMAL:
    print("Optimal solution found:")
    print(f"Standing Tables: {S.x}")
    print(f"Dining Tables: {D.x}")
    print(f"Total Profit: ${45*S.x + 95*D.x:.2f}")
else:
    print("No optimal solution found")
```