/*
Copyright (c) 2024 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 <PTApplsUnicodeUtils.h>
/*------------------------------------------------------------------*\
Application includes
\*------------------------------------------------------------------*/
#include <TestError.h>
/*==================================================================*\
FUNCTION : UserDimensionChange()
PURPOSE : Change a selected model dimension.
\*==================================================================*/
int UserDimensionChange()
{
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 ; /* no. of selected features */
int n_sel_dim ; /* 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 */
ProStringToWstring(msg_file, "msg_ugfund.txt") ;
/*------------------------------------------------------------------*\
Check for a model.
\*------------------------------------------------------------------*/
err = ProMdlCurrentGet(&model);
ERROR_CHECK("UserDimensionChange()", "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("UserDimensionChange()", "ProSelect()", err);
if ( err != PRO_TK_NO_ERROR )
{
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 ("UserDimensionChange()", "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("UserDimensionChange()", "ProSelect()", err);
if ( err != PRO_TK_NO_ERROR )
{
ProMessageDisplay(msg_file, "USER %0s F",
"Error or abort during selection.") ;
return(err) ;
}
err = ProSelectionModelitemGet(p_sel_dim[0], &dim_mdlitem);
ERROR_CHECK("UserDimensionChange()", "ProSelectionModelitemGet()",
err);
err = ProDimensionValueGet(&dim_mdlitem,
&value );
ERROR_CHECK("UserDimensionChange()", "prodim_get_dimension()", err);
/*------------------------------------------------------------------*\
Change the dimension.
\*------------------------------------------------------------------*/
ProTKSprintf(str1, "Dimension value: %lf ... Enter new value: ",
value) ;
ProMessageDisplay(msg_file, "USER %0s F", str1) ;
ProMessageDoubleRead(NULL, &newdimval) ;
err = ProDimensionValueSet ( &dim_mdlitem, newdimval);
ERROR_CHECK("UserDimensionChange()", "ProDimensionValueSet()", err);
err = ProDimensionDisplayUpdate ( &dim_mdlitem );
ProMessageDisplay(msg_file, "USER %0s F",
"Dimension changed. Regenerate model to see changes.");
return(PRO_TK_NO_ERROR) ;
}