diff --git a/SweetHome3D/classes/com/eteks/sweethome3d/j3d/OBJLoader.class b/SweetHome3D/classes/com/eteks/sweethome3d/j3d/OBJLoader.class index 89c2dc8..900b3a9 100644 Binary files a/SweetHome3D/classes/com/eteks/sweethome3d/j3d/OBJLoader.class and b/SweetHome3D/classes/com/eteks/sweethome3d/j3d/OBJLoader.class differ diff --git a/SweetHome3D/classes/com/eteks/sweethome3d/swing/HomePrintableComponent$1.class b/SweetHome3D/classes/com/eteks/sweethome3d/swing/HomePrintableComponent$1.class index 3322e35..1d19d71 100644 Binary files a/SweetHome3D/classes/com/eteks/sweethome3d/swing/HomePrintableComponent$1.class and b/SweetHome3D/classes/com/eteks/sweethome3d/swing/HomePrintableComponent$1.class differ diff --git a/SweetHome3D/classes/com/eteks/sweethome3d/swing/HomePrintableComponent$Variable.class b/SweetHome3D/classes/com/eteks/sweethome3d/swing/HomePrintableComponent$Variable.class index d2a42fb..3faec0b 100644 Binary files a/SweetHome3D/classes/com/eteks/sweethome3d/swing/HomePrintableComponent$Variable.class and b/SweetHome3D/classes/com/eteks/sweethome3d/swing/HomePrintableComponent$Variable.class differ diff --git a/SweetHome3D/classes/com/eteks/sweethome3d/swing/HomePrintableComponent.class b/SweetHome3D/classes/com/eteks/sweethome3d/swing/HomePrintableComponent.class index 9649db6..3a03c24 100644 Binary files a/SweetHome3D/classes/com/eteks/sweethome3d/swing/HomePrintableComponent.class and b/SweetHome3D/classes/com/eteks/sweethome3d/swing/HomePrintableComponent.class differ diff --git a/SweetHome3D/src/com/eteks/sweethome3d/swing/HomePrintableComponent.java b/SweetHome3D/src/com/eteks/sweethome3d/swing/HomePrintableComponent.java index dcaf0bc..b4a1c97 100644 --- a/SweetHome3D/src/com/eteks/sweethome3d/swing/HomePrintableComponent.java +++ b/SweetHome3D/src/com/eteks/sweethome3d/swing/HomePrintableComponent.java @@ -37,8 +37,10 @@ import java.awt.print.PrinterException; import java.awt.print.PrinterJob; import java.security.AccessControlException; import java.text.MessageFormat; +import java.util.ArrayList; import java.util.Date; import java.util.HashSet; +import java.util.List; import java.util.MissingResourceException; import java.util.ResourceBundle; import java.util.Set; @@ -333,21 +335,24 @@ public class HomePrintableComponent extends JComponent implements Printable { && (homePrint == null || homePrint.isFurniturePrinted())) { FurnitureTable furnitureTable = null; final FurnitureTable.FurnitureFilter furnitureFilter; - if (furnitureView instanceof FurnitureTable - && (homePrint == null - || homePrint.isPlanPrinted() - || homePrint.isView3DPrinted())) { + if (furnitureView instanceof FurnitureTable) { final Level selectedLevel = home.getSelectedLevel(); furnitureTable = (FurnitureTable)furnitureView; furnitureFilter = furnitureTable.getFurnitureFilter(); furnitureTable.setFurnitureFilter(new FurnitureTable.FurnitureFilter() { public boolean include(Home home, HomePieceOfFurniture piece) { - // Print only furniture at selected level when the plan or the 3D view is printed + // Print furniture at selected levels + List furnitureLevels = home.getPrint().getFurnitureList(); + Boolean includePiece = false; + for (int i = 0; i < furnitureLevels.size(); i++) { + if (furnitureLevels.get(i) && piece.isAtLevel(home.getLevels().get(i))) + includePiece = true; + } return (furnitureFilter == null || furnitureFilter.include(home, piece)) - && piece.isAtLevel(selectedLevel) + && includePiece && (piece.getLevel() == null || piece.getLevel().isViewable()); } - }); + }); } else { furnitureFilter = null; } @@ -363,17 +368,30 @@ public class HomePrintableComponent extends JComponent implements Printable { this.furniturePageCount++; } } - if (pageExists == NO_SUCH_PAGE - && planView != null - && (homePrint == null || homePrint.isPlanPrinted())) { - // Try to print next plan view page - pageExists = ((Printable)planView).print(g2D, pageFormat, page - this.furniturePageCount); - if (pageExists == PAGE_EXISTS - && !this.printablePages.contains(page)) { - this.printablePages.add(page); - this.planPageCount++; + + Level tempLevel = home.getSelectedLevel(); + List planLevels = homePrint.getPlanViewList(); + PlanView planToPrint; + // Loop through levels to be printed + for (int i = 0; i < planLevels.size(); i++) { + if (planLevels.get(i)) { + home.setSelectedLevel(home.getLevels().get(i)); + planToPrint = this.controller.getPlanController().getView(); + if (pageExists == NO_SUCH_PAGE ) { + // Try to print next plan view page + pageExists = ((Printable)planToPrint).print(g2D, pageFormat, page - this.furniturePageCount); + if (pageExists == PAGE_EXISTS + && !this.printablePages.contains(page)) { + this.printablePages.add(page); + this.planPageCount++; + } + } } } + home.setSelectedLevel(tempLevel); + + + View view3D = this.controller.getHomeController3D().getView(); if (pageExists == NO_SUCH_PAGE && view3D != null