Skip to main content
10-Marble
August 6, 2025
Solved

Trying to create drawing using ProDrawingFromTemplateCreate - exit with status PRO_TK_GENERAL_ERROR

  • August 6, 2025
  • 1 reply
  • 1118 views

int CreateDrawingFromTemplate()
{
ProError status;
ProMdl currMdl;
ProMdlType mdl_type;
ProMdlName mdlName;
ProDrawing drawing;
ProDwgcreateErrs errors;
ProMdlnameShortdata solid_model_data;
ProName predefined_template;
ProName name;

// Replace path with dummy placeholder
FILE* mf_logfile = fopen("C:\\dummy_path\\dummy_project\\dummy_log.txt", "w");

// Get current model
status = ProMdlCurrentGet(&currMdl);
fprintf(mf_logfile, "ProMdlCurrentGet returned status: %d\n", status);
if (status != PRO_TK_NO_ERROR) return status;

// Get model type
status = ProMdlTypeGet(currMdl, &mdl_type);
fprintf(mf_logfile, "ProMdlTypeGet returned status: %d\n", status);
if (status != PRO_TK_NO_ERROR) return status;

// Get model name
status = ProMdlMdlnameGet(currMdl, mdlName);
fprintf(mf_logfile, "ProMdlMdlnameGet returned status: %d\n", status);
if (status != PRO_TK_NO_ERROR) return status;

// Fill solid model data
ProUtilWstrcpy(solid_model_data.name, mdlName);
switch (mdl_type) {
case PRO_MDL_PART:
ProStringToWstring(solid_model_data.type, "PART");
break;
case PRO_MDL_ASSEMBLY:
ProStringToWstring(solid_model_data.type, "ASM");
break;
default:
ProStringToWstring(solid_model_data.type, "UNKNOWN");
break;
}

// Use dummy template and drawing names
ProStringToWstring(predefined_template, "dummy_template.frm");
ProStringToWstring(name, "dummy_drawing_name");

ProSolid solid;
status = ProSolidMdlnameInit(mdlName, (ProMdlfileType)mdl_type, &solid);

// Create drawing from template
status = ProDrawingFromTemplateCreate(name, predefined_template, &solid, PRODWGCREATE_DISPLAY_DRAWING, &drawing, &errors);
fprintf(mf_logfile, "ProDrawingFromTemplateCreate returned status: %d\n", status);
if (status != PRO_TK_NO_ERROR) return status;

fclose(mf_logfile);
return status;
}

Where am I going wrong?

Best answer by BK_8649137

Thank you! I have changed from format to drawing.

1 reply

15-Moonstone
August 6, 2025

I will take a stab.   Your switch statement that sets the model.type could be a problem.  In my version I am passing an extension, which would be something like "PRT" or "ASM".    Your code is using "PART".        Also my template is a drawing, where your template is a .frm.    That may or may not be a problem, I'm just looking at things that are different than my code. 

18-Opal
August 7, 2025

I would say the same, the function is named ProDrawingFromTemplateCreate and not ProFormatFromTemplateCreate 😉

 

Input Arguments:

new_name - The name for the new drawing
dwg_template - The name of the drawing template, and not the format
new_model - The name and type of the solid model
to be used in the new drawing.
options - Flags for drawing creation. Options include:

BK_864913710-MarbleAuthorAnswer
10-Marble
August 14, 2025

Thank you! I have changed from format to drawing.