SweetHome3DJS model not saved in sh3d file

This topic has been viewed 3976 times and has 2 replies
Thread status: Active
Questions about Sweet Home 3D installation [img]http://www.sweethome3d.com/images/flags/en_small.gif[/img]
Post Reply New Topic
bernard_s
Posts: 5
Joined: Wed Feb 09, 2022 5:33 pm
Country: UK

SweetHome3DJS model not saved in sh3d file

Post by bernard_s »

Hi
I have a problem where the online version does not store models chosen correctly. If I add a desk from the furniture list to the plan, when I download and examine the unzipped sh3d file, the object file is not present. In addition, in Home.xml, the model attribute points to a url which contains the domain name of the server. eg

model=jar:http://18.135.111.130:8080/SweetHome3DJ ... !/desk.obj'

No ContentDigests file with SHA-1 key exists either. The problem is this sh3d file is no longer portable. If I try to open it in the desktop version, the desk cannot be referenced and shows as a red box instead.

I compiled (successfully) and deployed v7.0.2 on tomcat. I note that if I use the hosted version on https://www.sweethome3d.com/SweetHome3D ... anager.jsp I can add the desk, download the sh3d file and see the link is correct and a ContentDigests file with SHA-1 key correctly created.

Using Debian 10, and OpenJDK 11. I believe the same applies
to 6.6.4 which I was using and where I found this issue.

Any help gratefull received.
User avatar
Puybaret
Posts: 9440
Joined: Mon Nov 07, 2005 12:00 pm
Country: Paris, France
Contact:

Re: SweetHome3DJS model not saved in sh3d file

Post by Puybaret »

I have a problem where the online version does not store models chosen correctly.
The Online version stores models and textures differently and the sh3d file that it handles can be opened with the desktop version if your server 18.135.111.130:8080 can be reached.
If you want to include in the sh3d file all the models it uses, just override [font=courier new]createHomeOutputStream[/font] in a subclass of HomeServerRecorder to return a [font=courier new]DefaultHomeOutputStream[/font] instance which will write also models and textures, for example:

Code: Select all

new DefaultHomeOutputStream(new BufferedOutputStream(new FileOutputStream(homeFile)),
  compressionLevel, ContentRecording.INCLUDE_ALL_CONTENT, false, new HomeXMLExporter());
Then instantiate this new class in writeHomeEdits.jsp instead of [font=courier new]HomeServerRecorder[/font] class.

But keep in mind that this will create more traffic between the server and JS client, and the sh3d files stored on the server will take much more room. I would rather recommend to create an export function that will read a sh3d file stored on the server and return the content of a full sh3d file.
Emmanuel Puybaret, Sweet Home 3D creator
bernard_s
Posts: 5
Joined: Wed Feb 09, 2022 5:33 pm
Country: UK

Re: SweetHome3DJS model not saved in sh3d file

Post by bernard_s »

Thanks for the info. That makes sense, as does the extra server load issues it would create.
Post Reply New Topic

Who is online

Users browsing this forum: No registered users and 2 guests