France
Joined: Nov 7, 2005
Post Count: 9430
Status:
Offline
Re: Furniture Library Editor released
From version 1.12, you can merge a library with another one with the 3rd button in the toolbar of the editor.
----------------------------------------
Emmanuel Puybaret, Sweet Home 3D creator
US
Joined: Jun 28, 2017
Post Count: 1
Status:
Offline
Re: Furniture Library Editor Beta released
I should deliver the default catalog as a SH3F file too.
At the moment, you can quite easily get rid of the default furniture catalog of Sweet Home 3D, by following these steps: - Ensure you installed Sweet Home 3D from its installer (not with Java Web Start). - Remove the file named Furniture.jar from Sweet Home 3D installed files. Under Windows and Linux, this file can be found in the lib subdirectory of Sweet Home 3D installation directory
I'm running xubuntu 16.04, with Java 8. I can't get the downloaded file to run by double clicking or with the command line, so I installed it through the software manager, and it's running great. However, I have searched everywhere and can't find the Furniture.jre file to delete.
(I can find it easily in the downloaded files - but not in the version that installs and runs.)
To the post about crashing, from XroM ... I had the exact same problem. As Puybaret mentioned, I also suspected that it was the same graphics issue as launching the SH3D, which is solved using the 2nd script (which pulls different Java graphic libraries, I think).
So, I created a similar script for the furniture editor. Sorry if this was obvious (I'm newbie ). Copy this script in the application directory where the other 2 SweetHome3D scripts are. And copy the FurnitureLibraryEditor-1.20.jar in the lib directory (of the same application directory).
#!/bin/sh # Retrieve Sweet Home 3D directory PROGRAM=`readlink "$0"` if [ "$PROGRAM" = "" ];then PROGRAM=$0 fi PROGRAM_DIR=`dirname "$PROGRAM"`
# Run Sweet Home 3D exec exec "$PROGRAM_DIR"/jre8/bin/java -Xmx1024m -classpath "$PROGRAM_DIR"/lib/FurnitureLibraryEditor-1.20.jar:"$PROGRAM_DIR"/lib/Furniture.jar:"$PROGRAM_DIR"/lib/Textures.jar:"$PROGRAM_DIR"/lib/Help.jar:"$PROGRAM_DIR"/lib/iText-2.1.7.jar:"$PROGRAM_DIR"/lib/freehep-vectorgraphics-svg-2.1.1b.jar:"$PROGRAM_DIR"/lib/sunflow-0.07.3i.jar:"$PROGRAM_DIR"/lib/jmf.jar:"$PROGRAM_DIR"/lib/batik-svgpathparser-1.7.jar:"$PROGRAM_DIR"/lib/j3dcore.jar:"$PROGRAM_DIR"/lib/j3dutils.jar:"$PROGRAM_DIR"/lib/vecmath.jar:"$PROGRAM_DIR"/jre8/lib/javaws.jar -Djava.library.path="$PROGRAM_DIR"/lib com.eteks.furniturelibraryeditor.FurnitureLibraryEditor -open "$1"
Now it doesn't crash. Things seem to work fine except that I get an error:
com.eteks.sweethome3d.model.RecorderException: Invalid furniture library file at com.eteks.furniturelibraryeditor.io.FurnitureLibraryFileRecorder.readFurnitureLibrary(Unknown Source) at com.eteks.furniturelibraryeditor.io.FurnitureLibraryFileRecorder.readFurnitureLibrary(Unknown Source) at com.eteks.furniturelibraryeditor.viewcontroller.EditorController$3.call(Unknown Source) at com.eteks.furniturelibraryeditor.viewcontroller.EditorController$3.call(Unknown Source) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at com.eteks.sweethome3d.viewcontroller.ThreadedTaskController$1.run(Unknown Source) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: java.io.IOException: Can't copy file to /tmp/furniture3331676379223917287.sh3f at com.eteks.furniturelibraryeditor.io.FurnitureLibraryFileRecorder.copyFile(Unknown Source) ... 11 more
It does create the sh3f file in /tmp (I am in Linux) but get the error... If I ignore and keep going everything seems fine but not sure I'll see other errors down the road. I just started using it...
Regardless, thanks a lot for SH3D and the furniture editor. Should invite you one day to the place I am remodeling with it
help. I have downloaded the furniture library editor and the software simply doesn't run. i tried opening it with JAVA. there is a very quick blink on the screen but then nothing. i have windows 7 installed. please help. I have tried all methods listed here: The easiest way to launch it is to double-click on the file. If this method fails, choose open or launch with Java in its contextual menu, or open a Terminal window and run the command:
Italia
Joined: May 12, 2017
Post Count: 65
Status:
Offline
Re: Furniture Library Editor released
Hello, i have used version 1.20 of the library a bit on a Mac Osx system (Sierra) with both java 1.6 and 1.8 installed (1.8 as default) and i continue to see in console issue of null pointer exception when clicking. I can use the library for a single operation (add a new 3d model, or rename, or delete). At each operation I have to save, close, reopen and go on, which is very tedious... is there a fix or there will be a fix for this? Do you need further logs/info?
France
Joined: Nov 7, 2005
Post Count: 9430
Status:
Offline
Re: Furniture Library Editor released
Please post the stack trace that appears in the console, that could be useful.
----------------------------------------
Emmanuel Puybaret, Sweet Home 3D creator
Italia
Joined: May 12, 2017
Post Count: 65
Status:
Offline
Re: Furniture Library Editor released
Hello, this is what happens with 1.21 when: Open the editor, import a 3ds model I already use in my house (and in another library), double click on it in the list of items.
From what i can see, is a problem of the table render, shame on you old swing!
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at com.eteks.furniturelibraryeditor.swing.FurnitureLibraryTable$FurnitureLibraryTableColumnModel$6.getTableCellRendererComponent(Unknown Source) at javax.swing.JTable$AccessibleJTable.getAccessibleChild(JTable.java:7031) at javax.swing.JTable$AccessibleJTable.getAccessibleAt(JTable.java:7418) at javax.swing.JTable$AccessibleJTable.valueChanged(JTable.java:6933) at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:184) at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:164) at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:211) at javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionModel.java:405) at javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionModel.java:415) at javax.swing.DefaultListSelectionModel.setSelectionInterval(DefaultListSelectionModel.java:459) at javax.swing.JTable.changeSelectionModel(JTable.java:2389) at javax.swing.JTable.changeSelection(JTable.java:2456) at javax.swing.plaf.basic.BasicTableUI$Handler.adjustSelection(BasicTableUI.java:1115) at javax.swing.plaf.basic.BasicTableUI$Handler.mousePressed(BasicTableUI.java:1038) at javax.swing.plaf.basic.BasicTableUI$MouseInputHandler.mousePressed(BasicTableUI.java:798) at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:280) at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:279) at java.awt.Component.processMouseEvent(Component.java:6532) at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) at java.awt.Component.processEvent(Component.java:6300) at java.awt.Container.processEvent(Container.java:2236) at java.awt.Component.dispatchEventImpl(Component.java:4891) at java.awt.Container.dispatchEventImpl(Container.java:2294) at java.awt.Component.dispatchEvent(Component.java:4713) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4522) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466) at java.awt.Container.dispatchEventImpl(Container.java:2280) at java.awt.Window.dispatchEventImpl(Window.java:2750) at java.awt.Component.dispatchEvent(Component.java:4713) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.awt.EventQueue$4.run(EventQueue.java:731) at java.awt.EventQueue$4.run(EventQueue.java:729) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at com.eteks.furniturelibraryeditor.swing.FurnitureLibraryTable$FurnitureLibraryTableColumnModel$6.getTableCellRendererComponent(Unknown Source) at javax.swing.JTable$AccessibleJTable.getAccessibleChild(JTable.java:7031) at javax.swing.JTable$AccessibleJTable.getAccessibleAt(JTable.java:7418) at javax.swing.JTable$AccessibleJTable.valueChanged(JTable.java:6933) at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:184) at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:154) at javax.swing.DefaultListSelectionModel.setValueIsAdjusting(DefaultListSelectionModel.java:685) at javax.swing.plaf.basic.BasicTableUI$Handler.setValueIsAdjusting(BasicTableUI.java:955) at javax.swing.plaf.basic.BasicTableUI$Handler.mouseReleased(BasicTableUI.java:1166) at javax.swing.plaf.basic.BasicTableUI$MouseInputHandler.mouseReleased(BasicTableUI.java:802) at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:290) at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289) at java.awt.Component.processMouseEvent(Component.java:6535) at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) at java.awt.Component.processEvent(Component.java:6300) at java.awt.Container.processEvent(Container.java:2236) at java.awt.Component.dispatchEventImpl(Component.java:4891) at java.awt.Container.dispatchEventImpl(Container.java:2294) at java.awt.Component.dispatchEvent(Component.java:4713) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466) at java.awt.Container.dispatchEventImpl(Container.java:2280) at java.awt.Window.dispatchEventImpl(Window.java:2750) at java.awt.Component.dispatchEvent(Component.java:4713) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.awt.EventQueue$4.run(EventQueue.java:731) at java.awt.EventQueue$4.run(EventQueue.java:729) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) java.lang.NullPointerException at com.eteks.furniturelibraryeditor.swing.FurnitureLibraryTable$FurnitureLibraryTableColumnModel$6.getTableCellRendererComponent(Unknown Source) at javax.swing.JTable$AccessibleJTable.getAccessibleAt(JTable.java:6990) at sun.lwawt.macosx.CAccessibility$23.call(CAccessibility.java:414) at sun.lwawt.macosx.CAccessibility$23.call(CAccessibility.java:393) at sun.lwawt.macosx.LWCToolkit$CallableWrapper.run(LWCToolkit.java:597) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:301) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.awt.EventQueue$4.run(EventQueue.java:731) at java.awt.EventQueue$4.run(EventQueue.java:729) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) java.lang.NullPointerException at com.eteks.furniturelibraryeditor.swing.FurnitureLibraryTable$FurnitureLibraryTableColumnModel$6.getTableCellRendererComponent(Unknown Source) at javax.swing.JTable$AccessibleJTable.getAccessibleAt(JTable.java:6990) at sun.lwawt.macosx.CAccessibility$23.call(CAccessibility.java:414) at sun.lwawt.macosx.CAccessibility$23.call(CAccessibility.java:393) at sun.lwawt.macosx.LWCToolkit$CallableWrapper.run(LWCToolkit.java:597) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:301) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.awt.EventQueue$4.run(EventQueue.java:731) at java.awt.EventQueue$4.run(EventQueue.java:729) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) java.lang.NullPointerException at com.eteks.furniturelibraryeditor.swing.FurnitureLibraryTable$FurnitureLibraryTableColumnModel$6.getTableCellRendererComponent(Unknown Source) at javax.swing.JTable$AccessibleJTable.getAccessibleAt(JTable.java:6990) at sun.lwawt.macosx.CAccessibility$23.call(CAccessibility.java:414) at sun.lwawt.macosx.CAccessibility$23.call(CAccessibility.java:393) at sun.lwawt.macosx.LWCToolkit$CallableWrapper.run(LWCToolkit.java:597) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:301) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.awt.EventQueue$4.run(EventQueue.java:731) at java.awt.EventQueue$4.run(EventQueue.java:729) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) java.lang.NullPointerException at com.eteks.furniturelibraryeditor.swing.FurnitureLibraryTable$FurnitureLibraryTableColumnModel$6.getTableCellRendererComponent(Unknown Source) at javax.swing.JTable$AccessibleJTable.getAccessibleAt(JTable.java:6990) at sun.lwawt.macosx.CAccessibility$23.call(CAccessibility.java:414) at sun.lwawt.macosx.CAccessibility$23.call(CAccessibility.java:393) at sun.lwawt.macosx.LWCToolkit$CallableWrapper.run(LWCToolkit.java:597) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:301) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.awt.EventQueue$4.run(EventQueue.java:731) at java.awt.EventQueue$4.run(EventQueue.java:729) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
France
Joined: Nov 7, 2005
Post Count: 9430
Status:
Offline
Re: Furniture Library Editor released
I couldn't reproduce this issue on my side, but maybe I didn't test correctly your "import a 3ds model I already use in my house (and in another library)" suggestion. There should be no difference in how the Furniture Library Editor manages completely unknown 3DS models or the ones you used once in a Sweet Home 3D project. What detail could I have missed?
----------------------------------------
Emmanuel Puybaret, Sweet Home 3D creator
Italia
Joined: May 12, 2017
Post Count: 65
Status:
Offline
Re: Furniture Library Editor released
Hi, I think I did not explain correctly what the issue is! The error is not related to what model I use (it was just a specification). This is an issue with Java, AWT/SWING and OSX Sierra. The problem is completely UI related, clicks do not work correctly, events duplicated.... I did the same the other day on a Windows 7 machine and it works perfectly. Currently I'm running java build 1.8.0_91-b14 on OSX 10.12.6 I tryed to force running with the legacy java 1.6 but it did not change anything. I'm quite sure it is something related to OSX, but can't understand what...
France
Joined: Nov 7, 2005
Post Count: 9430
Status:
Offline
Re: Furniture Library Editor released
My attempt was made under macOS 10.12.6 with Java 8u144. Maybe it could worth that you try with a more recent Java version?
----------------------------------------
Emmanuel Puybaret, Sweet Home 3D creator