We value your input! Please participate in Archicad 28 Home Screen and Tooltips/Quick Tutorials survey
2024-09-27 06:20 PM
Hi all,
I've got a .txt file located within my Embedded Library, and I'm looking to write to it using an addon to allow some custom GDL objects to read it and update their parameters when they're placed. My question is whether this is possible at all? Current code is below:
API_LibPart settingsText = {};
GS::ucscpy(settingsText.file_UName, L("test.txt"));
ACAPI_LibraryPart_Search(&settingsText, false);
GS::UniString loc = "";
settingsText.location->ToPath(&loc);
/* GS::UniString out defined here */
std::ofstream file(loc.ToCStr().Get());
file << out.ToCStr().Get();
file.close();
I'm aware that this could be done using an addon with an event handler, though we've already got the objects currently reading this text file and we're concerned with the added processing time that might be required when placing a new object (though we're open to ideas to the contrary!).
Thanks,
Rob
Solved! Go to Solution.
2024-10-08 03:09 PM
Hi Rob,
Yes it's possible, but I found it super tricky. Especially with Teamwork projects.
My main approach right now is (without TW):
1. Write the file to a temporary folder
2. Delete the file in the embedded library if it already exists
3. Then use APIEnv_CopyFilesIntoLibraryID to copy the temporary file into the embedded library
Hope that helps
2024-10-08 03:09 PM
Hi Rob,
Yes it's possible, but I found it super tricky. Especially with Teamwork projects.
My main approach right now is (without TW):
1. Write the file to a temporary folder
2. Delete the file in the embedded library if it already exists
3. Then use APIEnv_CopyFilesIntoLibraryID to copy the temporary file into the embedded library
Hope that helps
2024-10-08 05:59 PM
Hi Bernd,
Thanks! That works perfectly - although admittedly I have skipped the Deletion step as ACAPI_LibraryManagement_CopyFilesIntoLibrary has the ability to overwrite files that match. Teamworking seems to work fine as well, as my addon already makes sure to reserve/release the file at the appropriate times.
Thanks again!
Rob
2024-10-08 09:07 PM
Hi Rob,
Yes the deletion step seems silly when you can just overwrite the file. Just a heads up that it was necessary for me at times 😉
Maybe the issues are fixed now, but there were situations when the file seemed to be updated, but when restarting Archicad and checking the file in the embedded lib, it wasn't updated! Deleting it first resolved those issues. But I can't remember now if that was only an issue in TW projects or in general.