Search in sources :

Example 61 with Rack

use of org.concord.energy3d.model.Rack in project energy3d by concord-consortium.

the class Scene method setLengthForAllRacks.

public void setLengthForAllRacks(final double length) {
    for (final HousePart p : parts) {
        if (p instanceof Rack) {
            final Rack rack = (Rack) p;
            rack.setRackWidth(length);
            rack.ensureFullSolarPanels(false);
            rack.draw();
        }
    }
    SceneManager.getInstance().refresh();
}
Also used : Rack(org.concord.energy3d.model.Rack) HousePart(org.concord.energy3d.model.HousePart)

Example 62 with Rack

use of org.concord.energy3d.model.Rack in project energy3d by concord-consortium.

the class Scene method pasteToPickedLocationOnFloor.

public void pasteToPickedLocationOnFloor() {
    EnergyPanel.getInstance().updateRadiationHeatMap();
    if (copyBuffer == null) {
        return;
    }
    if (copyBuffer instanceof Foundation) {
        return;
    }
    final HousePart selectedPart = SceneManager.getInstance().getSelectedPart();
    if (!(selectedPart instanceof Floor)) {
        return;
    }
    final HousePart c = copyBuffer.copy(false);
    if (c == null) {
        return;
    }
    Vector3 position = SceneManager.getInstance().getPickedLocationOnFloor();
    if (position == null) {
        return;
    }
    if (selectedPart != c.getContainer()) {
        // solar panels and racks can be pasted to a different parent
        if (c instanceof SolarPanel) {
            ((SolarPanel) c).moveTo(selectedPart);
        } else if (c instanceof Rack) {
            ((Rack) c).moveTo(selectedPart);
        }
    }
    position = c.toRelative(position.subtractLocal(c.getContainer().getAbsPoint(0)));
    final Vector3 center = c.toRelative(c.getAbsCenter().subtractLocal(c.getContainer().getAbsPoint(0)));
    position = position.subtractLocal(center);
    final int n = c.getPoints().size();
    for (int i = 0; i < n; i++) {
        final Vector3 v = c.getPoints().get(i);
        v.addLocal(position);
    }
    if (c instanceof Rack) {
        ((Rack) c).moveSolarPanels(position);
        setIdOfChildren(c);
    }
    add(c, true);
    copyBuffer = c;
    SceneManager.getInstance().setSelectedPart(c);
    SceneManager.getInstance().getUndoManager().addEdit(new PastePartCommand(c));
}
Also used : Floor(org.concord.energy3d.model.Floor) Rack(org.concord.energy3d.model.Rack) SolarPanel(org.concord.energy3d.model.SolarPanel) Foundation(org.concord.energy3d.model.Foundation) ReadOnlyVector3(com.ardor3d.math.type.ReadOnlyVector3) Vector3(com.ardor3d.math.Vector3) HousePart(org.concord.energy3d.model.HousePart) PastePartCommand(org.concord.energy3d.undo.PastePartCommand)

Example 63 with Rack

use of org.concord.energy3d.model.Rack in project energy3d by concord-consortium.

the class Scene method setSolarPanelModelForAllRacks.

public void setSolarPanelModelForAllRacks(final PvModuleSpecs specs) {
    for (final HousePart p : parts) {
        if (p instanceof Rack) {
            final Rack r = (Rack) p;
            final SolarPanel s = r.getSolarPanel();
            s.setPvModuleSpecs(specs);
            r.ensureFullSolarPanels(false);
            r.draw();
        }
    }
    SceneManager.getInstance().refresh();
}
Also used : Rack(org.concord.energy3d.model.Rack) SolarPanel(org.concord.energy3d.model.SolarPanel) HousePart(org.concord.energy3d.model.HousePart)

Example 64 with Rack

use of org.concord.energy3d.model.Rack in project energy3d by concord-consortium.

the class Scene method rotateSolarPanelsOnAllRacks.

public void rotateSolarPanelsOnAllRacks(final boolean rotated) {
    for (final HousePart p : parts) {
        if (p instanceof Rack) {
            final Rack r = (Rack) p;
            r.getSolarPanel().setRotated(rotated);
            r.ensureFullSolarPanels(false);
            r.draw();
        }
    }
    SceneManager.getInstance().refresh();
}
Also used : Rack(org.concord.energy3d.model.Rack) HousePart(org.concord.energy3d.model.HousePart)

Example 65 with Rack

use of org.concord.energy3d.model.Rack in project energy3d by concord-consortium.

the class Scene method pasteToPickedLocationOnMesh.

public void pasteToPickedLocationOnMesh(final Mesh mesh) {
    EnergyPanel.getInstance().updateRadiationHeatMap();
    if (copyBuffer == null) {
        return;
    }
    if (copyBuffer instanceof Foundation) {
        return;
    }
    final HousePart selectedPart = SceneManager.getInstance().getSelectedPart();
    if (!(selectedPart instanceof Foundation)) {
        return;
    }
    final HousePart c = copyBuffer.copy(false);
    if (c == null) {
        return;
    }
    Vector3 position = SceneManager.getInstance().getPickedLocationOnMesh(mesh);
    if (position == null) {
        return;
    }
    position = c.toRelative(position.subtractLocal(c.getContainer().getAbsPoint(0)));
    final Vector3 center = c.toRelative(c.getAbsCenter().subtractLocal(c.getContainer().getAbsPoint(0)));
    position = position.subtractLocal(center);
    final int n = c.getPoints().size();
    for (int i = 0; i < n; i++) {
        final Vector3 v = c.getPoints().get(i);
        v.addLocal(position);
    }
    if (copyBuffer instanceof Rack) {
        final Rack rack = (Rack) c;
        rack.moveSolarPanels(position);
        setIdOfChildren(c);
        final MeshLocator originalMeshLocator = ((Rack) copyBuffer).getMeshLocator();
        if (originalMeshLocator != null) {
            final UserData ud = (UserData) mesh.getUserData();
            rack.setMeshLocator(new MeshLocator((Foundation) ud.getHousePart(), ud.getNodeIndex(), ud.getMeshIndex()));
        }
    } else if (copyBuffer instanceof SolarPanel) {
        final SolarPanel panel = (SolarPanel) c;
        final MeshLocator originalMeshLocator = ((SolarPanel) copyBuffer).getMeshLocator();
        if (originalMeshLocator != null) {
            final UserData ud = (UserData) mesh.getUserData();
            panel.setMeshLocator(new MeshLocator((Foundation) ud.getHousePart(), ud.getNodeIndex(), ud.getMeshIndex()));
        }
    }
    add(c, true);
    copyBuffer = c;
    SceneManager.getInstance().setSelectedPart(c);
    SceneManager.getInstance().getUndoManager().addEdit(new PastePartCommand(c));
}
Also used : Rack(org.concord.energy3d.model.Rack) UserData(org.concord.energy3d.model.UserData) MeshLocator(org.concord.energy3d.model.MeshLocator) SolarPanel(org.concord.energy3d.model.SolarPanel) Foundation(org.concord.energy3d.model.Foundation) ReadOnlyVector3(com.ardor3d.math.type.ReadOnlyVector3) Vector3(com.ardor3d.math.Vector3) HousePart(org.concord.energy3d.model.HousePart) PastePartCommand(org.concord.energy3d.undo.PastePartCommand)

Aggregations

Rack (org.concord.energy3d.model.Rack)126 HousePart (org.concord.energy3d.model.HousePart)67 SolarPanel (org.concord.energy3d.model.SolarPanel)66 Foundation (org.concord.energy3d.model.Foundation)45 Window (org.concord.energy3d.model.Window)27 Roof (org.concord.energy3d.model.Roof)25 Wall (org.concord.energy3d.model.Wall)23 Mirror (org.concord.energy3d.model.Mirror)22 Door (org.concord.energy3d.model.Door)20 FresnelReflector (org.concord.energy3d.model.FresnelReflector)16 ParabolicTrough (org.concord.energy3d.model.ParabolicTrough)16 ParabolicDish (org.concord.energy3d.model.ParabolicDish)15 ActionEvent (java.awt.event.ActionEvent)12 ActionListener (java.awt.event.ActionListener)12 Vector3 (com.ardor3d.math.Vector3)10 ReadOnlyVector3 (com.ardor3d.math.type.ReadOnlyVector3)10 JMenuItem (javax.swing.JMenuItem)10 Tree (org.concord.energy3d.model.Tree)10 Floor (org.concord.energy3d.model.Floor)9 ArrayList (java.util.ArrayList)8