To solve this optimization problem, we first need to define the decision variables and the objective function. Let's denote the number of reams of lined paper as \(L\) and the number of reams of graph paper as \(G\). The objective is to maximize profit, which can be calculated as $11\(L\) + $13\(G\).

The constraints are based on the availability of the cutting machine and the line-printing machine. For the cutting machine, each ream of lined or graph paper requires 2 minutes, so we have \(2L + 2G \leq 3500\). For the line-printing machine, a ream of lined paper requires 6 minutes and a ream of graph paper requires 10 minutes, leading to the constraint \(6L + 10G \leq 3500\).

Additionally, we know that \(L \geq 0\) and \(G \geq 0\), as negative production does not make sense.

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

```python
from gurobipy import *

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

# Define decision variables
L = m.addVar(lb=0, vtype=GRB.CONTINUOUS, name="LinedPaper")
G = m.addVar(lb=0, vtype=GRB.CONTINUOUS, name="GraphPaper")

# Objective function: Maximize profit
m.setObjective(11*L + 13*G, GRB.MAXIMIZE)

# Constraint for cutting machine
m.addConstr(2*L + 2*G <= 3500, "CuttingMachine")

# Constraint for line-printing machine
m.addConstr(6*L + 10*G <= 3500, "LinePrintingMachine")

# Optimize the model
m.optimize()

# Print results
if m.status == GRB.OPTIMAL:
    print(f"Optimal solution found: Produce {L.x:.2f} reams of lined paper and {G.x:.2f} reams of graph paper.")
else:
    print("No optimal solution found.")
```