To solve this problem, we first need to define the decision variables and the objective function. Let's denote the amount of oil paintings, acrylic paintings, and watercolor paintings produced each week as $x_1$, $x_2$, and $x_3$ respectively, in kilograms.

The profit per kg for selling the paint is given as $150, $180, and $220 for the oil painting, acrylic painting, and watercolor painting respectively. Thus, the total profit can be represented by the objective function:

Maximize: $150x_1 + 180x_2 + 220x_3$

We also have constraints based on the availability of dye and filler:
- Producing 1 kg of oil paintings requires 6.5 kg of dye.
- Producing 1 kg of acrylic paintings requires 8 kg of dye.
- Producing 1 kg of watercolor paintings requires 16 kg of dye.
Given that the manufacturer produces 350 kg of dye each week, we have the constraint:
$6.5x_1 + 8x_2 + 16x_3 \leq 350$

For filler:
- Producing 1 kg of oil paintings requires 15 kg of filler.
- Producing 1 kg of acrylic paintings requires 12 kg of filler.
- Producing 1 kg of watercolor paintings requires 5 kg of filler.
Given that the manufacturer produces 250 kg of filler each week, we have the constraint:
$15x_1 + 12x_2 + 5x_3 \leq 250$

Additionally, we know that $x_1$, $x_2$, and $x_3$ must be non-negative since they represent quantities of paint produced.

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

```python
from gurobipy import *

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

# Define the decision variables
x1 = m.addVar(name="Oil_Paintings", lb=0)
x2 = m.addVar(name="Acrylic_Paintings", lb=0)
x3 = m.addVar(name="Watercolor_Paintings", lb=0)

# Set the objective function
m.setObjective(150*x1 + 180*x2 + 220*x3, GRB.MAXIMIZE)

# Add constraints
m.addConstr(6.5*x1 + 8*x2 + 16*x3 <= 350, name="Dye_Constraint")
m.addConstr(15*x1 + 12*x2 + 5*x3 <= 250, name="Filler_Constraint")

# Optimize the model
m.optimize()

# Print the results
for v in m.getVars():
    print(f"{v.varName}: {v.x}")

print(f"Objective Value: {m.objVal}")
```