/*
	Copyright (c) 2024 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>


/*-------------------------- Application includes ---------------------------*/
#include <TestError.h>


#define MSGFIL L##"msg_ugdrawing.txt"
/*================================================================*\
FUNCTION  : UgDwgPublishContext()
PURPOSE   : Publishes a drawing In given context
\*================================================================*/

	

ProError UgDwgPublishContext_step()
{
    ProError status;
    ProPath export_filename;
	ProMdl drawing_to_export = NULL;
    ProMdlType mdl_type;

	status = ProMdlCurrentGet ((ProMdl*)&drawing_to_export);
    ERROR_CHECK("UgDwgPublishContext_step","ProMdlCurrentGet",status);
       
    if (status == PRO_TK_NO_ERROR)
    { 
      status = ProMdlTypeGet(drawing_to_export, &mdl_type);
      ERROR_CHECK("UgDwgPublishContext_step","ProMdlTypeGet",status);
      
      if(mdl_type == PRO_MDL_DRAWING)
      {
	    ProStringToWstring( export_filename , "./exported_drawing_step.stp" );

 	    status = Pro2dExport ( PRO_STEP_FILE, export_filename, drawing_to_export, NULL ); 
        ERROR_CHECK("UgDwgPublishContext_step","Pro2dExport",status);

        if(status == PRO_TK_NO_ERROR)
          ProMessageDisplay(MSGFIL, "USER %0s has been created",
                   "STEP file exported_drawing_step.stp"); 
      }
      else
        status = ProMessageDisplay(MSGFIL, "USER %0s",
                    "Please open the drawing to publish");       
    }
    
    else
     status = ProMessageDisplay(MSGFIL, "USER %0s",
                  "Please open the drawing to publish");
  
    return(status);
}

ProError UgDwgPublishContext_iges()
{
    ProError status;
    ProPath export_filename;
	ProMdl drawing_to_export = NULL;
    ProMdlType mdl_type;
        
	status = ProMdlCurrentGet ((ProMdl*)&drawing_to_export);
    ERROR_CHECK("UgDwgPublishContext_iges","ProMdlCurrentGet",status);
       
    if (status == PRO_TK_NO_ERROR)
    { 
      status = ProMdlTypeGet(drawing_to_export, &mdl_type);
      ERROR_CHECK("UgDwgPublishContext_step","ProMdlTypeGet",status);
      
      if(mdl_type == PRO_MDL_DRAWING)
      {
	    ProStringToWstring( export_filename , "./exported_drawing_iges.igs" );

 	    status = Pro2dExport ( PRO_IGES_FILE, export_filename, drawing_to_export, NULL ); 
        ERROR_CHECK("UgDwgPublishContext_iges","Pro2dExport",status);

        if(status == PRO_TK_NO_ERROR)
          status = ProMessageDisplay(MSGFIL, "USER %0s has been created",
                        "IGES file exported_drawing_iges.igs");
      }
      else
        status = ProMessageDisplay(MSGFIL, "USER %0s",
                    "Please open the drawing to publish");       
    }
    else
     status = ProMessageDisplay(MSGFIL, "USER %0s",
                  "Please open the drawing to publish");       
    return(status);
}

ProError UgDwgPublishContext_dxf()
{
    ProError status;
    ProPath export_filename;
	ProMdl drawing_to_export = NULL;
    ProMdlType mdl_type;
          
	status = ProMdlCurrentGet ((ProMdl*)&drawing_to_export);
    ERROR_CHECK("UgDwgPublishContext_dxf","ProMdlCurrentGet",status);
       
    if (status == PRO_TK_NO_ERROR)
    { 
      status = ProMdlTypeGet(drawing_to_export, &mdl_type);
      ERROR_CHECK("UgDwgPublishContext_step","ProMdlTypeGet",status);
      
      if(mdl_type == PRO_MDL_DRAWING)
      {
	    ProStringToWstring( export_filename , "./exported_drawing_dxf.dxf" );

 	    status = Pro2dExport ( PRO_DXF_FILE, export_filename, drawing_to_export, NULL ); 
        ERROR_CHECK("UgDwgPublishContext_dxf","Pro2dExport",status);

        if(status == PRO_TK_NO_ERROR)
          status = ProMessageDisplay(MSGFIL, "USER %0s has been created",
                        "DXF file exported_drawing_dxf.dxf");
      }
      else
        status = ProMessageDisplay(MSGFIL, "USER %0s",
                    "Please open the drawing to publish");       
    }
    else
     status = ProMessageDisplay(MSGFIL, "USER %0s",
                  "Please open the drawing to publish");
                         
    return(status);
}

ProError UgDwgPublishContext_medusa()
{
    ProError status;
    ProPath export_filename;
	ProMdl drawing_to_export = NULL;
    ProMdlType mdl_type;
          
	status = ProMdlCurrentGet ((ProMdl*)&drawing_to_export);
    ERROR_CHECK("UgDwgPublishContext_medusa","ProMdlCurrentGet",status);
       
    if (status == PRO_TK_NO_ERROR)
    { 
      status = ProMdlTypeGet(drawing_to_export, &mdl_type);
      ERROR_CHECK("UgDwgPublishContext_step","ProMdlTypeGet",status);
      
      if(mdl_type == PRO_MDL_DRAWING)
      {    
	    ProStringToWstring( export_filename , "./exported_drawing_medusa" );

 	    status = Pro2dExport ( PRO_MEDUSA_FILE, export_filename, drawing_to_export, NULL ); 
        ERROR_CHECK("UgDwgPublishContext_medusa","Pro2dExport",status);

        if(status == PRO_TK_NO_ERROR)
        status = ProMessageDisplay(MSGFIL, "USER %0s has been created",
                        "medusa file s.exported_drawing_medusa");
      }
      else
        status = ProMessageDisplay(MSGFIL, "USER %0s",
                    "Please open the drawing to publish");  
    }
    else
     status = ProMessageDisplay(MSGFIL, "USER %0s",
                  "Please open the drawing to publish");
                         
    return(status);
}

ProError UgDwgPublishContext_cgm()
{
    ProError status;
    ProPath export_filename;
	ProMdl drawing_to_export = NULL;
    ProMdlType mdl_type;
          
	status = ProMdlCurrentGet ((ProMdl*)&drawing_to_export);
    ERROR_CHECK("UgDwgPublishContext_cgm","ProMdlCurrentGet",status);
       
    if (status == PRO_TK_NO_ERROR)
    {
      status = ProMdlTypeGet(drawing_to_export, &mdl_type);
      ERROR_CHECK("UgDwgPublishContext_step","ProMdlTypeGet",status);
      
      if(mdl_type == PRO_MDL_DRAWING)
      {     
	    ProStringToWstring( export_filename , "./exported_drawing_cgm.cgm" );

 	    status = Pro2dExport ( PRO_CGM_FILE, export_filename, drawing_to_export, NULL ); 
        ERROR_CHECK("UgDwgPublishContext_cgm","Pro2dExport",status);

        if(status == PRO_TK_NO_ERROR)
        status = ProMessageDisplay(MSGFIL, "USER %0s has been created",
                        "CGM file exported_drawing_cgm.cgm");
     }
      else
        status = ProMessageDisplay(MSGFIL, "USER %0s",
                    "Please open the drawing to publish");  
    }
    else
     status = ProMessageDisplay(MSGFIL, "USER %0s",
                  "Please open the drawing to publish");
                         
    return(status);
}

ProError UgDwgPublishContext_tiff()
{
    ProError status;
    ProPath export_filename;
	ProMdl drawing_to_export = NULL;
    ProMdlType mdl_type;
          
	status = ProMdlCurrentGet ((ProMdl*)&drawing_to_export);
    ERROR_CHECK("UgDwgPublishContext_tiff","ProMdlCurrentGet",status);
       
    if (status == PRO_TK_NO_ERROR)
    { 
      status = ProMdlTypeGet(drawing_to_export, &mdl_type);
      ERROR_CHECK("UgDwgPublishContext_step","ProMdlTypeGet",status);
      
      if(mdl_type == PRO_MDL_DRAWING)
      {    
	    ProStringToWstring( export_filename , "./exported_drawing_tiff.tif" );

 	    status = Pro2dExport ( PRO_SNAP_TIFF_FILE, export_filename, drawing_to_export, NULL ); 
        ERROR_CHECK("UgDwgPublishContext_tiff","Pro2dExport",status);

        if(status == PRO_TK_NO_ERROR)
        status = ProMessageDisplay(MSGFIL, "USER %0s has been created",
                        "TIFF file exported_drawing_tiff.tif");
      }
      else
        status = ProMessageDisplay(MSGFIL, "USER %0s",
                    "Please open the drawing to publish");        
    }
    else
     status = ProMessageDisplay(MSGFIL, "USER %0s",
                  "Please open the drawing to publish");
                         
    return(status);
}