/*
Copyright (c) 2019 PTC Inc. and/or Its Subsidiary Companies. All Rights Reserved.
*/
/*------------------------------------------------------------------*\
Pro/Toolkit includes
\*------------------------------------------------------------------*/
#include <ProToolkit.h>
#include <ProObjects.h>
#include <ProFeature.h>
#include <ProDimension.h>
#include <ProSolid.h>
#include <ProUtil.h>
#include <ProMessage.h>
#include <PTApplsUnicodeUtils.h>
/*------------------------------------------------------------------*\
Application includes
\*------------------------------------------------------------------*/
#include <TestError.h>
/*==================================================================*\
FUNCTION : UserDimDisplayRounded()
PURPOSE : Change the displayed value of a selected model dimension to
rounded/non-rounded.
\*==================================================================*/
ProError UserDimDisplayRounded()
{
ProMdl model ; /* current model */
ProSelection *p_sel_feat ; /* selected feature */
ProSelection *p_sel_dim ; /* selected dimension */
ProModelitem dim_mdlitem ; /* dimension Modelitem */
int n_sel_feat = -1 ; /* no. of selected features */
int n_sel_dim = -1; /* no. of selected dims */
ProFileName msg_file ; /* message file */
int err ; /* return status */
double value; /* dimension value */
double newdimval ; /* user-entered dim value */
ProCharLine str1 ; /* message string */
ProBoolean display_rounded; /* rounded display status */
ProStringToWstring(msg_file, "msg_ugfund.txt") ;
/*------------------------------------------------------------------*\
Check for a model.
\*------------------------------------------------------------------*/
err = ProMdlCurrentGet(&model);
ERROR_CHECK("UserDimDisplayRounded()", "ProMdlCurrentGet()", err);
if (err != PRO_TK_NO_ERROR)
{
ProMessageDisplay(msg_file, "USER %0s F",
"Error getting current model.");
return(err) ;
}
/*------------------------------------------------------------------*\
Get a feature to modify.
\*------------------------------------------------------------------*/
ProMessageDisplay(msg_file, "USER %0s F", "Select a feature.");
err = ProSelect("feature", 1, NULL, NULL, NULL, NULL,
&p_sel_feat, &n_sel_feat) ;
ERROR_CHECK("UserDimDisplayRounded()", "ProSelect()", err);
if ( err != PRO_TK_NO_ERROR || n_sel_feat < 1)
{
ProMessageDisplay(msg_file, "USER %0s F",
"Error or abort during selection.") ;
return(err) ;
}
ProSelectionUnhighlight (p_sel_feat [0]);
/*------------------------------------------------------------------*\
Show the dimensions on the feature.
\*------------------------------------------------------------------*/
err = ProFeatureParamsDisplay (p_sel_feat [0], PRO_DIM_PARAM);
ERROR_CHECK ("UserDimDisplayRounded()", "ProFeatureParamsDisplay()", err);
/*------------------------------------------------------------------*\
Get the dimension to be changed.
\*------------------------------------------------------------------*/
ProMessageDisplay(msg_file, "USER %0s F", "Select a dimension.");
err = ProSelect("dimension", 1, NULL, NULL, NULL, NULL,
&p_sel_dim, &n_sel_dim) ;
ERROR_CHECK("UserDimDisplayRounded()", "ProSelect()", err);
if ( err != PRO_TK_NO_ERROR || n_sel_dim < 1)
{
ProMessageDisplay(msg_file, "USER %0s F",
"Error or abort during selection.") ;
return(err) ;
}
err = ProSelectionModelitemGet(p_sel_dim[0], &dim_mdlitem);
ERROR_CHECK("UserDimDisplayRounded()", "ProSelectionModelitemGet()",
err);
err = ProDimensionIsDisplayRoundedValue(&dim_mdlitem,
&display_rounded );
ERROR_CHECK("UserDimDisplayRounded()", "prodim_get_dimension()", err);
/*------------------------------------------------------------------*\
Change the dimension.
\*------------------------------------------------------------------*/
ProTKSprintf(str1, "Toggling the Display Rounded property.") ;
ProMessageDisplay(msg_file, "USER %0s F", str1) ;
err = ProDimensionDisplayRoundedValueSet ( &dim_mdlitem, !display_rounded);
ERROR_CHECK("UserDimDisplayRounded()", "ProDimensionValueSet()", err);
err = ProDimensionDisplayUpdate ( &dim_mdlitem );
ProMessageDisplay(msg_file, "USER %0s F",
"Display Rounded property toggled.");
return(PRO_TK_NO_ERROR) ;
}