Let’s say you are working in a team on a building project, where you are working in file “A”, which is concerned with a part of the project. You Import the contents of file “B” that someone else is working on (a different part of the project) to use as a cross reference, using File / Import. You want to make sure your model aligns with theirs, so that when you put them all together, you have a complete master model.
As normal, file B’s content is created as a component, and a component definition is added to the Components segment of the tray.
You decide you no longer need the contents of file B, so you delete it from your model space.
The person working on file B keeps working and makes some modifications and file B is saved.
Now, you decide you weren’t finished with the cross reference after all and need it again, so you use File /Import to bring it back into file A. You do this by navigating in the explorer dialog, locating file B and Importing it.
Naturally, you think you have located and imported the latest version. Why else would you have to navigate into your OS folder structure and find it?
But no. It will be the previous version you were working with.
Somehow, Sketchup has kept the old version in your file and used it instead of the updated version you navigated to find and import.
This is dangerous, as you now will be working with an old version and not know it.
Surely this is a bug?
This really sounds like a bug. If you know about it (and remember it) you can right click and reload the component as a workaround but that shouldn’t really be necessary.
Yeah, reload is what you would be doing, until you decided you were done and deleted it. The problem is that if you simply do what you did the first time you used the contents - that is, you used Import - you would get a possibly outdated version and you wouldn’t know it.
Even if you do know it, you would have to delete the component definition, which would leave the nested component definitions, so you then delete those, until you get to the bottom.
Then when you import it will import the new version - but what a pain in the butt IF you knew and remembered.
When you delete the B component from your model, it only removes the instance. There is still a component definition in the model’s definition collection. You must purge the definition list of unused definitions.
Thanks Dan, yes, that’s right. It’s what I acknowledged in my previous statement.
The point is that I am not restoring the model from the Components tray segment, as per inserting any other component available in the model as another instance. If I was doing that, then I would expect the original contents, and that’s a functionality that makes sense.
It does not make sense to insert the outdated model if I am navigating ! external ! to the model, into the OS file system, using File / Import.
See what I mean?
It seems SU relies on the component definition name and does not register that the new import is quite possibly different to the original. This is not satisfactory and positively dangerous to timeline and budget in a production team environment. It is probably easily fixed by automatically appending the component name to make it unique on Import, in the same way windows renames a repeated download into the same folder by appending the name with a “(1)”.
I absolutely agree that this is a bug. I f I’ve understood this correctly it’s not that SU relies on component names though but on the associated file path.
Even the API call for loading a component from an external file also first tries to return an in model component definition associated with that path. I had problems with this myself when creating a plugin that needed to load components from zip archives. Since the file couldn’t be loaded directly from the archive my aproach was to unzip it into a temporary location. However I noticed SketchUp refused to load more than one model from the same path.
In my view it would be much more logical and straight forward if SU just loaded the external file as a separate component without at all caring about the old one. The current behavior was maybe designed to be “smart” but instead ended up being complex and non-intuitive.
So, how do we get the attention of the relevant people in Trimble?
OK so in future if I find a bug, do I bother reporting it?
Is this forum read by people connected to the development team, or am i just pissing in the wind?
Currently there isn’t a public system to submit bug reports. I’d like to write one myself and pass on to the developers but I’m away from home and can’t check if this behavior differs between SketchUp versions, and when I get back home I won’t have the time because of work.
@thomthom, could you lock into this?
Yorg, please continue to post your findings! Unfortunately there’s a risk posts get buried in the forum but there’s also a chance they are noticed and looked into.
SketchUp Support would be the place to ensure the attention of support staff: https://help.sketchup.com/en/contact/technical-support
FTR, yes I understand the issue and your frustration. And I agree the behavior is unexpected.
Yes it is. But it is a weekend, and also a holiday weekend, so the staff will be out longer than normal this weekend.
I added a “bug” tag to the thread so perhaps the devs will see it later in the upcoming week.
All that said, this seems to be familiar. I know we have previously discussed issues involving updating components from disk. There is even a “XRef-like” 3rd party extension that attempts to help automate this kind of workflow. (Check over at the SketchUcation PluginStore.)
So, would I be safer going there and referencing this discussion, or is Dan’s tagging it as a bug enough?
Hi Dan, thanks again - I didn’t expect they worked on weekends, I was just wondering about the general process and if any efforts had a point.
Regarding the XREF.
Keep an eye out for Cross Reference Manager, which is a plugin I have a developer working on at the moment and which should be ready in a week or two.
Use that support page to establish contact with Support in order to ensure you are followed up.