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

Community Tip - Your Friends List is a way to easily have access to the community members that you interact with the most! X

Translate the entire conversation x

Trying to create drawing using ProDrawingFromTemplateCreate - exit with status PRO_TK_GENERAL_ERROR

BK_8649137
10-Marble

Trying to create drawing using ProDrawingFromTemplateCreate - exit with status PRO_TK_GENERAL_ERROR

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?

ACCEPTED SOLUTION

Accepted Solutions
BK_8649137
10-Marble
(To:RPN)

Thank you! I have changed from format to drawing.

View solution in original post

4 REPLIES 4
msteffke
14-Alexandrite
(To:BK_8649137)

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. 

RPN
17-Peridot
17-Peridot
(To:msteffke)

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_8649137
10-Marble
(To:RPN)

Thank you! I have changed from format to drawing.

RPN
17-Peridot
17-Peridot
(To:BK_8649137)

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😉

Announcements

Top Tags