/*
Copyright (c) 2019 PTC Inc. and/or Its Subsidiary Companies. All Rights Reserved.
*/
/*-------------------------- Pro/Toolkit includes ---------------------------*/
#include <ProToolkit.h>
#include <ProMdl.h>
#include <ProUtil.h>
#include <ProMessage.h>
#include <UtilFiles.h>
/*-------------------------- Application includes ---------------------------*/
#include <TestError.h>
/*--------------------------- Global Definitions ----------------------------*/
#define MSGFIL "msg.txt"
/*================================================================*\
FUNCTION : UserUtilNameTypeGet()
PURPOSE : Get the handle to a model by prompting the user for
a name and a type
\*================================================================*/
ProError UserUtilNameTypeGet(
ProFileName wmsgfil,
ProFamilyMdlName name,
ProMdlType *type )
{
int status;
ProCharLine astr;
ProMdlExtension type_wname;
char type_name[PRO_MDLEXTENSION_SIZE];
status = ProMessageDisplay(wmsgfil,"USER %0s", "Enter a model name : ");
ERROR_CHECK("UserUtilNameTypeGet","ProMessageDisplay",status);
if (status != PRO_TK_NO_ERROR) return(status);
status = ProMessageStringRead(PRO_FAMILY_MDLNAME_SIZE, name);
ERROR_CHECK("UserUtilNameTypeGet","ProMessageStringRead",status);
if (status != PRO_TK_NO_ERROR) return(status);
status = ProMessageDisplay(wmsgfil,"USER %0s", "Enter a model type : ");
ERROR_CHECK("UserUtilNameTypeGet","ProMessageDisplay",status);
if (status != PRO_TK_NO_ERROR) return(status);
status = ProMessageStringRead(PRO_MDLEXTENSION_SIZE, type_wname);
ERROR_CHECK("UserUtilNameTypeGet","ProMessageStringRead",status);
if (status != PRO_TK_NO_ERROR) return(status);
ProWstringToString(type_name,type_wname);
(*type) = ProUtilGetProType(type_name);
return (PRO_TK_NO_ERROR);
}
/*=====================================================================*\
Function: user_string_to_lower()
Purpose: Convert a string to lower case
\*=====================================================================*/
void UserUtilStringToLower(char *input_string, char *output_string)
{
int i = 0;
while ( input_string[i] != '\0')
{
output_string[i] = tolower(input_string[i]);
i++;
}
output_string[i] = '\0';
}
/*===========================================================================*\
Function: UserUtilModelNameType()
Purpose: Convert an object name to lower case
\*===========================================================================*/
char *UserUtilModelNameType(ProMdl p_obj, char *lname, char *ltype)
{
ProError status = PRO_TK_NO_ERROR;
ProMdldata modeldata;
char astr1[PRO_MDLNAME_SIZE], astr2[PRO_MDLEXTENSION_SIZE];
ProMdlName modelName;
ProMdlExtension modelExtension;
if(p_obj == NULL)
status = ProMdlCurrentGet(&p_obj);
status = ProMdlMdlnameGet(p_obj, modelName);
if (status != PRO_TK_NO_ERROR) return (NULL);
status = ProMdlExtensionGet(p_obj, modelExtension);
if (status != PRO_TK_NO_ERROR) return (NULL);
if( lname != NULL )
UserUtilStringToLower(ProWstringToString(astr1, modelName),
lname);
if( ltype != NULL )
UserUtilStringToLower(ProWstringToString(astr2, modelExtension),
ltype);
return(lname);
}
/*===========================================================================*\
Function: UserUtilGenFilename()
Purpose: Generate a name for an output file
\*===========================================================================*/
char *UserUtilGenFilename(ProMdl p_obj, char *filext, char *filename)
{
ProError status = PRO_TK_NO_ERROR;
char model_name[PRO_MDLNAME_SIZE], model_type[PRO_MDLEXTENSION_SIZE];
if(p_obj == NULL)
status = ProMdlCurrentGet(&p_obj);
if(p_obj != NULL)
{
UserUtilModelNameType(p_obj, model_name, model_type);
strcpy(filename,model_name);
}
else
strcpy(filename,"nomodel");
strcat(filename,filext);
return(filename);
}