Ejemplo n.º 1
0
def add_roll_off(curve, roll_off_curve, direction, roll_radius, offset_extra,
                 roll_off):
    if direction == "on":
        return
    if roll_off is None:
        return
    if curve.getNumVertices() <= 1:
        return

    last_span = curve.GetLastSpan()

    if roll_off == 'auto':
        if roll_radius < 0.0000000001:
            return
        v = last_span.GetVector(1.0)  # get end direction
        if direction == 'right':
            off_v = area.Point(v.y, -v.x)
        else:
            off_v = area.Point(-v.y, v.x)

        rollend = last_span.v.p + off_v * roll_radius
    else:
        rollend = roll_off

    # add the end of the original kurve
    roll_off_curve.append(last_span.v.p)
    if rollend == last_span.v.p:
        return
    rvertex = area.Vertex(rollend)
    v = last_span.GetVector(1.0)  # get end direction
    rvertex.c, rvertex.type = area.TangentialArc(last_span.v.p, rollend, v)

    # add the roll off arc
    roll_off_curve.append(rvertex)
Ejemplo n.º 2
0
def add_roll_on(curve, roll_on_curve, direction, roll_radius, offset_extra, roll_on):
    if direction == "on":
        roll_on = None
    if curve.getNumVertices() <= 1:
        return
    first_span = curve.GetFirstSpan()

    if roll_on is None:
        rollstart = first_span.p
    elif roll_on == 'auto':
        if roll_radius < 0.0000000001:
            rollstart = first_span.p
        v = first_span.GetVector(0.0)
        if direction == 'right':
            off_v = area.Point(v.y, -v.x)
        else:
            off_v = area.Point(-v.y, v.x)
        rollstart = first_span.p + off_v * roll_radius
    else:
        rollstart = roll_on

    rvertex = area.Vertex(first_span.p)

    if first_span.p == rollstart:
        rvertex.type = 0
    else:
        v = first_span.GetVector(0.0)  # get start direction
        rvertex.c, rvertex.type = area.TangentialArc(
            first_span.p, rollstart, -v)
        rvertex.type = -rvertex.type  # because TangentialArc was used in reverse
    # add a start roll on point
    roll_on_curve.append(rollstart)

    # add the roll on arc
    roll_on_curve.append(rvertex)