Print at Dec 15, 2025, 7:19:11 PM View all posts in this thread on one page
Posted by buzzz at Apr 16, 2023, 1:40:06 AM
Build full JS version
Hi All,

So my objective is to create a full JS version of Sweethome.
Basically, my need corresponds to the demo version here :
https://www.sweethome3d.com/SweetHome3DJSOnline.jsp

plus 2 options to save and load project from my local disk.

From what I read, this option has not been considered at present time.
So, from what I see:
- first option is to start from the demo and try to add save/load fonctionalities
- second option : start from the war version and remove the call to the server.

Both sounds difficult, I really do not know what is the less risky option.

Thx for help

Posted by Puybaret at Apr 17, 2023, 6:48:16 PM
Re: Build full JS version
Doesn't these options already exist as the import and export features in the page https://www.sweethome3d.com/fr/SweetHome3DOnlineManager.jsp for identified users?

If you want to remove the use of a server, reading a file from the local disk can be done with HomeRecorder.readHome method with a BlobURLContent built from a file chosen by the user with an <input type="file"> HTML element (you'll find examples in JSViewFactory.js).
But saving is another story! Even if I recently added the DirectHomeRecorder class to generate a Home.xml entry in a ZIP file, there's still no method to generate a SH3X file containing all the resources it needs (images and 3D models), like DefaultHomeOutputStream Java class (a SH3X file is like a SH3D file bu without the old Home serialized entry).
By the way, as far as I know, there's no function in JavaScript to write in a local file from a browser. You can write only in local storage or indexedDB.
----------------------------------------
Emmanuel Puybaret, Sweet Home 3D creator

Posted by buzzz at Apr 17, 2023, 10:15:25 PM
Re: Build full JS version
I see the 9 example files on the demo. They contain http links to zipped .obj files on the server. Why not. It limits the size of the sh3x files !

There is no function in javascript to save to a specific folder on disk. But it is easy to save a file in the download directory. Just remain to move the saved file after that.