To solve this optimization problem, we need to define the decision variables, objective function, and constraints. Let's denote:

- $x$ as the number of regular tables produced by Team A.
- $y$ as the number of standing tables produced by Team B.

The objective is to maximize profit. Each regular table generates a profit of $150, and each standing table generates a profit of $180. Therefore, the objective function can be written as:

Maximize: $150x + 180y$

Constraints are as follows:
1. Team A can produce at most 25 regular tables per day: $x \leq 25$
2. Team B can produce at most 50 standing tables per day: $y \leq 50$
3. The woodworking machine can make at most 60 total tables: $x + y \leq 60$

Non-negativity constraints are also implied since the number of tables cannot be negative:
- $x \geq 0$
- $y \geq 0$

This problem is a linear programming problem, which can be solved using Gurobi in Python.

```python
from gurobipy import *

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

# Define decision variables
x = m.addVar(lb=0, vtype=GRB.CONTINUOUS, name="regular_tables")
y = m.addVar(lb=0, vtype=GRB.CONTINUOUS, name="standing_tables")

# Objective function: Maximize profit
m.setObjective(150*x + 180*y, GRB.MAXIMIZE)

# Constraints
m.addConstr(x <= 25, "Team_A_Capacity")
m.addConstr(y <= 50, "Team_B_Capacity")
m.addConstr(x + y <= 60, "Woodworking_Machine_Capacity")

# Solve the model
m.optimize()

# Print solution
if m.status == GRB.OPTIMAL:
    print("Optimal solution found:")
    print(f"Regular tables: {x.x}")
    print(f"Standing tables: {y.x}")
    print(f"Maximum profit: ${150*x.x + 180*y.x:.2f}")
else:
    print("No optimal solution found.")
```