Pro/TOOLKIT can not fully realize all the functions of Pro/E.
For Pro/TOOLKIT, there is no API function, so it needs to be implemented with Mapkey.
You can record a Mapkey first and then call ProMacroLoad to execute Mapkey.
To record Mapkey under wildfire 5:
Tools - > map key
After recording, you can click Save to view the pseudo code of the Mapkey.
Example: to change the arrow style of all dimensions of a drawing to double arrow
In Pro/TOOLKIT, there is no API to modify arrow style of drawing size. If you want to modify arrow style of drawing size with code, you can only use Mapkey.
First, record a Mapkey that modifies the arrow style of the drawing size. Check the pseudo code of the Mapkey as follows:
~ Command
ProCmdDwgModArrowStyle
;#DOUBLE ARROW;#DONE/RETURN;
Then call ProMacroLoad to execute.
The effect before and after implementation is shown in the following figure:
The following code implementation changes the arrow style of all dimensions in the current drawing to double arrow.
// Drawing dimension access function
ProError DrwDimensionVisitAction(ProDimension *dimension,
ProError status,
ProAppData data)
{
vector<ProDimension>* pDimVec = (vector<ProDimension>*)data;
pDimVec->push_back(*dimension);
return PRO_TK_NO_ERROR;
}
// Change the arrow style for all dimensions in the current drawing
int ChangeDrwDimsArrowStyle(uiCmdCmdId command,
uiCmdValue *p_value,
void *p_push_command_data)
{
// Get current drawing
ProError err;
ProMdl mdlCurr;
err = ProMdlCurrentGet(&mdlCurr);
ProMdlType mdlType;
err = ProMdlTypeGet(mdlCurr, &mdlType);
if (mdlType != PRO_MDL_DRAWING)
{
return -1;
}
// Traverse all dimensions in the drawing
vector<ProDimension> allDims;
err = ProDrawingDimensionVisit((ProDrawing)mdlCurr, PRO_DIMENSION,
DrwDimensionVisitAction, NULL, &allDims);
// Execute Mapkey
wstring wstrMapkey = L"~ Command `ProCmdDwgModArrowStyle` ;#DOUBLE ARROW;#DONE/RETURN;";
vector<ProDimension>::iterator iterDim = allDims.begin();
for (; iterDim != allDims.end(); ++iterDim)
{
err = ProSelbufferClear();
ProSelection dimSel;
err = ProSelectionAlloc(NULL, &(*iterDim), &dimSel);
err = ProSelbufferSelectionAdd(dimSel);
// Load and execute Mapkey
err = ProMacroLoad((wchar_t*)wstrMapkey.c_str());
err = ProMacroExecute();
}
err = ProWindowRepaint(-1);
return 0;
}