/*
Copyright (c) 2019 PTC Inc. and/or Its Subsidiary Companies. All Rights Reserved.
*/
#include <ProToolkit.h>
#include <ProSimprep.h>
#include <ProSimprepdata.h>
#include <ProSelection.h>
#include <ProUtil.h>
#include <ProSolid.h>
#include <ProAsmcomp.h>
#include <ProAsmcomppath.h>
#include <ProModelitem.h>
#include <TestError.h>
#include <PTApplsUnicodeUtils.h>
/*===========================================================*\
FUNCTION : UserSimpRepInfo
PURPOSE : Prints out the simplified representation
information.
\*===========================================================*/
int UserSimpRepInfo ()
{
ProMdl owner;
ProSimprep simp_rep;
ProSimprepdata *data;
ProSimprepActionType def_act;
wchar_t w_sr_name[PRO_LINE_SIZE];
char temp[PRO_LINE_SIZE] = "";
ProBoolean tmp_rep = PRO_B_FALSE;
ProError status;
int num = 0;
ProError UserSimpRepVisAct();
status = ProMdlCurrentGet(&owner);
ERROR_CHECK("UserSimpRepInfo","ProMdlCurrentGet",status);
if (status != PRO_TK_NO_ERROR) return (status);
status = ProSimprepSelect ((ProSolid)owner, &simp_rep);
ERROR_CHECK("UserSimpRepInfo","ProSimprepSelect",status);
if (status == PRO_TK_NO_ERROR && simp_rep.id != -1)
{
status = ProSimprepdataGet (&simp_rep, &data);
ERROR_CHECK("UserSimpRepInfo","ProSimprepdataGet",status);
if (status == PRO_TK_NO_ERROR)
{
status = ProSimprepdataNameGet (data, w_sr_name);
ERROR_CHECK("UserSimpRepInfo","ProSimprepdataNameGet",status);
if (status == PRO_TK_NO_ERROR)
{
pro_wstr_to_str (temp, w_sr_name);
ProTKPrintf ("Simp rep name : %s\n", temp);
}
status = ProSimprepdataDefltGet (data, &def_act);
ERROR_CHECK("UserSimpRepInfo","ProSimprepdataDefltGet",status);
if (status == PRO_TK_NO_ERROR)
{
switch (def_act)
{
case PRO_SIMPREP_NONE:
strcpy (temp, "None");
break;
case PRO_SIMPREP_REVERSE:
strcpy (temp, "Reverse");
break;
case PRO_SIMPREP_SUBSTITUTE:
strcpy (temp, "Substitute");
break;
case PRO_SIMPREP_INCLUDE:
strcpy (temp, "Include");
break;
case PRO_SIMPREP_EXCLUDE:
strcpy (temp, "Exclude");
break;
default:
strcpy (temp, "Unknown");
}
ProTKPrintf ("Default action : %s\n",
temp);
}
status = ProSimprepdataTmpvalGet (data, &tmp_rep);
ERROR_CHECK("UserSimpRepInfo","ProSimprepdataTmpvalGet",status);
if (status == PRO_TK_NO_ERROR)
{
ProTKPrintf ("Temporary simp rep : %s\n",
tmp_rep == PRO_B_TRUE ? "Yes" : "No");
}
ProSimprepdataitemsVisit (data, NULL,
UserSimpRepVisAct, (ProAppData) owner);
ERROR_CHECK("UserSimpRepInfo","ProSimprepdataitemsVisit",status);
status = ProSimprepdataFree (&data);
}
}
return status;
}
/*===========================================================*\
FUNCTION : UserSimpRepVisAct
PURPOSE : Highlights the members of the simplified
representation.
\*===========================================================*/
ProError UserSimpRepVisAct (
ProSimprepitem *item,
ProError err,
ProSolid owner)
{
ProError status;
ProSelection selection;
ProAsmcomppath comp_path;
ProModelitem mdl_item;
ProFeature feature;
ProMdl model;
ProMdlType mdl_type;
int id;
if (item->item_path.path_size != -1)
{
/*-----------------------------------------------------------*\
Part
\*-----------------------------------------------------------*/
status = ProAsmcomppathInit (owner, item->item_path.comp_path,
item->item_path.path_size, &comp_path);
ERROR_CHECK("UserSimpRepVisAct","ProAsmcomppathInit",status);
if (status == PRO_TK_NO_ERROR)
{
status = ProAsmcomppathMdlGet (&comp_path, &model);
ERROR_CHECK("UserSimpRepVisAct","ProAsmcompMdlGet",status);
}
if (status == PRO_TK_NO_ERROR)
{
status = ProMdlIdGet(model, &id);
ERROR_CHECK("UserSimpRepVisAct","ProMdlIdGet",status);
status = ProMdlTypeGet(model, &mdl_type);
ERROR_CHECK("UserSimpRepVisAct","ProMdlIdGet",status);
if (status == PRO_TK_NO_ERROR)
{
status = ProModelitemInit (model, id, (ProType)mdl_type, &mdl_item);
ERROR_CHECK("UserSimpRepVisAct","ProModelitemInit",status);
}
if (status == PRO_TK_NO_ERROR)
{
status = ProSelectionAlloc(&comp_path, &mdl_item, &selection);
ERROR_CHECK("UserSimpRepVisAct","ProSelectionAlloc",status);
}
}
}
else
{
/*-----------------------------------------------------------*\
Feature
\*-----------------------------------------------------------*/
status = ProFeatureInit (owner, item->item_path.feat_id, &feature);
ERROR_CHECK("UserSimpRepVisAct","ProFeatureInit",status);
if (status == PRO_TK_NO_ERROR)
{
status = ProFeatureSelectionGet (&feature, &selection);
ERROR_CHECK("UserSimpRepVisAct","ProFeatureSelectionGet",status);
}
}
if (status == PRO_TK_NO_ERROR)
{
ProSelectionHighlight (selection, PRO_COLOR_WARNING);
ERROR_CHECK("UserSimpRepVisAct","ProSelectionHighlight",status);
}
return PRO_TK_NO_ERROR;
}