cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
Showing results for 
Search instead for 
Did you mean: 

The 2025 Technology Preview Program is now live. Join today!

Archicad C++ API
About Archicad add-on development using the C++ API.

Code to do SAVE AS operation

Anonymous
Not applicable
Hi

Is there a function to do a SAVE AS operation?

I have found the Save function but I need to save the opened Archicad to be a different name.
3 REPLIES 3
Anonymous
Not applicable
Bianca wrote:
Hi

Is there a function to do a SAVE AS operation?

I have found the Save function but I need to save the opened Archicad to be a different name.
Yes there is.
static void		Do_Save_Plan (void)
{
	GSErrCode	err;

	err = ACAPI_Automate (APIDo_SaveID, NULL, NULL);
	if (err != NoError) {
		char msgStr[256];
		sprintf (msgStr, "Error in APIDo_SaveID: %d", (int) err);
		ACAPI_WriteReport (msgStr, true);
	}

	return;
}		// Do_Save_Plan


// -----------------------------------------------------------------------------
// Save the current plan into a picture
// -----------------------------------------------------------------------------

static void		Do_Save_TiffFile (void)
{
	API_FileSavePars		fsp;
	API_SavePars_Picture	pars_pict;
	GSErrCode				err;

	BNZeroMemory (&fsp, sizeof (API_FileSavePars));
	fsp.fileTypeID = APIFType_TIFFFile;

	IO::Location folderLoc;
	API_SpecFolderID specID = API_UserDocumentsFolderID;
	ACAPI_Environment (APIEnv_GetSpecFolderID, &specID, &folderLoc);
	fsp.file = new IO::Location (folderLoc, IO::Name ("PictTest.tif"));

	BNZeroMemory (&pars_pict, sizeof (API_SavePars_Picture));
	pars_pict.colorDepth = APIColorDepth_256C;
	pars_pict.dithered   = false;
	pars_pict.view2D     = true;
	pars_pict.crop       = true;

	err = ACAPI_Automate (APIDo_SaveID, &fsp, &pars_pict);
	if (err != NoError) {
		char msgStr[256];
		sprintf (msgStr, "Error in APIDo_SaveID (pict): %d", (int) err);
		ACAPI_WriteReport (msgStr, true);
	}

	delete fsp.file;

	return;
}		// Do_Save_TiffFile


// -----------------------------------------------------------------------------
// Save the current plan to an IFC file
// -----------------------------------------------------------------------------

static void		Do_Save_IfcFile (void)
{
	API_FileSavePars	fsp;
	API_SavePars_Ifc	pars_ifc;
	GSErrCode			err;

	BNZeroMemory (&fsp, sizeof (API_FileSavePars));
	fsp.fileTypeID = APIFType_IfcFile;

	IO::Location folderLoc;
	API_SpecFolderID specID = API_UserDocumentsFolderID;
	ACAPI_Environment (APIEnv_GetSpecFolderID, &specID, &folderLoc);
	fsp.file = new IO::Location (folderLoc, IO::Name ("IfcTest.ifc"));

	BNZeroMemory (&pars_ifc, sizeof (pars_ifc));
	pars_ifc.subType = APIIfc_2x3;

	err = ACAPI_Automate (APIDo_SaveID, &fsp, &pars_ifc);
	if (err != NoError) {
		char msgStr[256];
		sprintf (msgStr, "Error in APIDo_SaveID (Ifc): %s", ErrID_To_Name (err));
		ACAPI_WriteReport (msgStr, true);
	}

	delete fsp.file;

	return;
}		// Do_Save_IfcFile


// -----------------------------------------------------------------------------
// Save the current plan to an Pdf file
// -----------------------------------------------------------------------------

static void		Do_Save_PdfFile (void)
{
	API_FileSavePars	fsp;
	GSErrCode			err;

	BNZeroMemory (&fsp, sizeof (API_FileSavePars));
	fsp.fileTypeID = APIFType_PdfFile;

	IO::Location folderLoc;
	API_SpecFolderID specID = API_UserDocumentsFolderID;
	ACAPI_Environment (APIEnv_GetSpecFolderID, &specID, &folderLoc);
	fsp.file = new IO::Location (folderLoc, IO::Name ("PdfTest.pdf"));

	err = ACAPI_Automate (APIDo_SaveID, &fsp, NULL);
	if (err != NoError) {
		char msgStr[256];
		sprintf (msgStr, "Error in APIDo_SaveID (Pdf): %s", ErrID_To_Name (err));
		ACAPI_WriteReport (msgStr, true);
	}

	delete fsp.file;

	return;
}		// Do_Save_PdfFile
By the way you can look at Automate_Functions example
Anonymous
Not applicable
Thank you for your response.

However I am looking for a 'SAVE AS' function, I believe this one from the examples is just a 'SAVE' function
ReignBough
Enthusiast
Not sure about this, but have you tried changing the API_FileSavePars.file to your desired "different" file name?
~ReignBough~
ARCHICAD 27 INT (since AC18)
Windows 11 Pro, AMD Ryzen 7, 3.20GHz, 32.0GB RAM, 64-bit OS