Community Tip - Your Friends List is a way to easily have access to the community members that you interact with the most! X
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?
Solved! Go to Solution.
Thank you! I have changed from format to drawing.
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.
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:
Thank you! I have changed from format to drawing.
status = ProDrawingFromTemplateCreate(name, predefined_template, &solid, PRODWGCREATE_DISPLAY_DRAWING, &drawing, &errors);
solid should be ProMdlnameShortdata solid_model_data;
No idea how this can be compiled at all😉