function [obj, f] = plotWireframe(obj, ind, f)
    arguments (Input)
        obj (1, 1) {mustBeA(obj, "rectangularPrism")};
        ind (1, :) double = NaN;
        f (1, 1) {mustBeA(f, "matlab.ui.Figure")} = figure;
    end
    arguments (Output)
        obj (1, 1) {mustBeA(obj, "rectangularPrism")};
        f (1, 1) {mustBeA(f, "matlab.ui.Figure")};
    end

    % Create axes if they don't already exist
    f = firstPlotSetup(f);

    % Create plotting inputs from vertices and edges
    X = [obj.vertices(obj.edges(:,1),1), obj.vertices(obj.edges(:,2),1)]';
    Y = [obj.vertices(obj.edges(:,1),2), obj.vertices(obj.edges(:,2),2)]';
    Z = [obj.vertices(obj.edges(:,1),3), obj.vertices(obj.edges(:,2),3)]';

    % Plot the boundaries of the geometry into 3D view
    if isnan(ind)
        o = plot3(f.CurrentAxes, X, Y, Z, "-", "Color", regionTypeColor(obj.tag), "LineWidth", 2);
    else
        hold(f.Children(1).Children(ind(1)), "on");
        o = plot3(f.Children(1).Children(ind(1)), X, Y, Z, "-", "Color", regionTypeColor(obj.tag), "LineWidth", 2);
        hold(f.Children(1).Children(ind(1)), "off");
    end

    % Copy to other requested tiles
    if numel(ind) > 1
        for ii = 2:size(ind, 2)
            o = [o, copyobj(o(:, 1), f.Children(1).Children(ind(ii)))];
        end
    end

    obj.lines = o;
end