ickby wrote:1. On import only the scene graph is imported. This could be stored in the document like DeepSoics idea with the tip list as basis
2. The xml file, which contains the document structure, is hold in a special type for later processing, lets call it JustInTimeDocument
I see your idea.. One would have a file that contains only the openinventor nodes of another file. Then, for example, you would double-click one of these "ghost" objects, and under the hood, that object would be fully loaded from the file, allowing you to edit it. That seems spendid! Indeed it is a much heavier thing, and you are right, certainly not doable in python. There are complications like, when you edit such an embedded object, then "close" it, the iv node of the whole file would need to be updated, without opening the file...
But we can still make a python prototype to experiment with I think, see how the imported iv behaves, etc. That would be useful anyway when doing the real thing
ickby wrote:3. If a user access a geometry shape the JustInTimeDocument loads that special object by reading in the xml file data and everything that is need additionaly and provides that temporary object. One step further is to load only what is required. Some properties can be derived from the xml alone, some may need the extra files that come with FcStd.
I think the mergeDocument code in src/Gui can already do a good part of what you described, load only one object from a file, etc.
Actually the PartDesign Part object could be used here, it doesn't do any shape computation, so it would fit well for arch stuff. I remember @DeepSoic commenting on something like that already...
One thing is a turning point here I think: Everything we described so far relies on the scenegraph. So it would be a pure GUI functionality, not available in non-GUI mode. The App part would just contain a link to the embedded file and that's it. But I think that makes sense, a program wouldn't need the visual representation anyway, the file link would be sufficient for it to reconstruct the whole file if needed.