/*
Copyright (c) 2019 PTC Inc. and/or Its Subsidiary Companies. All Rights Reserved.
*/
/*--------------------------------------------------------------------*\
Pro/Toolkit includes
\*--------------------------------------------------------------------*/
#include <ProToolkit.h>
#include <ProGraphic.h>
#include <ProLayer.h>
#include <ProObjects.h>
#include <ProSelection.h>
#include <ProMenu.h>
#include <TestError.h>
/*==========================================================================*\
FUNCTION : UserLayerItemAction()
PURPOSE : Closes menu, reports selected menu action.
\*==========================================================================*/
int UserLayerItemAction (ProAppData dummy, int action)
{
ProMenuDeleteWithStatus(action);
}
/*==========================================================================*\
FUNCTION : UserLayerItemTypeChoose()
PURPOSE : Prompts the user to select an element type for adding to layer.
\*==========================================================================*/
int UserLayerItemTypeChoose()
{
int menu_id;
int action;
ProError err;
err=ProMenuFileRegister("ublank6","ublank6.mnu",&menu_id);
ERROR_CHECK("UserLayerItemTypeChoose","ProMenuFileRegister",err);
err=ProMenubuttonActionSet("ublank6","Part",
UserLayerItemAction,NULL,PRO_PART);
ERROR_CHECK("UserLayerItemTypeChoose","ProMenubuttonActionSet(Part)",err);
err=ProMenubuttonActionSet("ublank6","Feature",
UserLayerItemAction,NULL,PRO_FEATURE);
ERROR_CHECK("UserLayerItemTypeChoose","ProMenubuttonActionSet(Feature)"
,err);
err=ProMenubuttonActionSet("ublank6","Curve",
UserLayerItemAction,NULL,PRO_CURVE);
ERROR_CHECK("UserLayerItemTypeChoose","ProMenubuttonActionSet(Curve)",err);
err=ProMenubuttonActionSet("ublank6","Quilt",
UserLayerItemAction,NULL,PRO_QUILT);
ERROR_CHECK("UserLayerItemTypeChoose","ProMenubuttonActionSet(Quilt)",err);
err=ProMenubuttonActionSet("ublank6","Point",
UserLayerItemAction,NULL,PRO_POINT);
ERROR_CHECK("UserLayerItemTypeChoose","ProMenubuttonActionSet(Point)",err);
err=ProMenubuttonActionSet("ublank6","ublank6",
UserLayerItemAction,NULL,-1);
ERROR_CHECK("UserLayerItemTypeChoose","ProMenubuttonActionSet(ublank)",err);
ProMenuCreate(PROMENUTYPE_MAIN,"ublank6",&menu_id);
ProMenuProcess("",&action);
return(action);
}
/*=========================================================================*\
FUNCTION : UserLayerCreate()
PURPOSE : Function to create a layer and add items to it.
\*==========================================================================*/
int UserLayerCreate()
{
#define MAX_BUFFER_LENGTH 20
ProLayer layer;
ProLayerItem layer_item;
ProMdl object, member;
ProSelection *sel;
ProModelitem model_item;
int type;
int nsel;
int m;
char *option;
ProFileName msg_file ;
ProCharName str1 ;
ProCharLine str2 ;
ProError err;
/* PHILIPPE : The Layer examples have to be changed for rev 20
Until then, I make it unavailable */
return (PRO_TK_NO_ERROR);
#if 0
ProStringToWstring(msg_file, "msg_ugfund.txt");
/*-------------------------------------------------------------------------*\
Get handle for the active model.
\*-------------------------------------------------------------------------*/
err=ProMdlCurrentGet(&object);
ERROR_CHECK("UserLayerCreate","ProMdlCurrentGet",err);
if (err != PRO_TK_NO_ERROR)
{
ProMessageDisplay(msg_file, "USER %0s F", "Error getting current model.");
return(err) ;
}
/*-------------------------------------------------------------------------*\
Get layer name from user.
\*-------------------------------------------------------------------------*/
ProMessageDisplay(msg_file, "USER %0s F", "Enter name of new layer: ") ;
ProMessageStringRead(MAX_BUFFER_LENGTH, layer.layer_name) ;
/*-------------------------------------------------------------------------*\
Load model information into layer struct.
\*-------------------------------------------------------------------------*/
layer.owner=object;
/*-------------------------------------------------------------------------*\
Create the new layer
\*-------------------------------------------------------------------------*/
err=ProLayerCreate(&layer);
ERROR_CHECK("UserLayerCreate","ProLayerCreate",err);
sprintf(str2, "New layer %s created.",
ProWstringToString(str1, layer.layer_name) ) ;
if (err == PRO_TK_NO_ERROR)
{
ProMessageDisplay(msg_file, "USER %0s F", str2) ;
}
else
{
ProMessageDisplay(msg_file, "USER %0s F", "Error creating new layer.") ;
return(err) ;
}
/*--------------------------------------------------------------------------*\
Choose the type of element to be selected.
\*--------------------------------------------------------------------------*/
ProMessageDisplay(msg_file, "USER %0s F", "Select type of items to add.") ;
type = UserLayerItemTypeChoose();
if (type < 0)
return(0);
layer_item.type=type;
/*-------------------------------------------------------------------------*\
Set the ProSelect() option accordingly.
\*-------------------------------------------------------------------------*/
switch (type)
{
case PRO_PART : option = "part" ; break;
case PRO_FEATURE : option = "feature" ; break;
case PRO_CURVE : option = "curve" ; break;
case PRO_QUILT : option = "dtmqlt" ; break;
case PRO_POINT : option = "point" ; break;
}
while ( ProSelect(option,1,NULL,NULL,NULL,NULL,&sel,&nsel)==PRO_TK_NO_ERROR
&& nsel>0 )
{
err=ProSelectionModelitemGet(sel[0],&model_item);
ERROR_CHECK("UserLayerCreate","ProSelectionModelitemGet",err);
layer_item.id = model_item.id;
err=ProLayerItemAdd(&layer,&layer_item);
ERROR_CHECK("UserLayerCreate","ProLayerItemAdd",err);
ProWindowRepaint(-1);
}
return(0);
#endif
}