DATAKIT SDK  V2026.4
OpenDocumentToParasolidWithExistingSession.cpp File Reference

Functions

Dtk_ErrorStatus ProcessCADFileToParasolidWithExistingSession (const Dtk_string &inInputFile, const Dtk_string &inOutputFolder)
 

Function Documentation

◆ ProcessCADFileToParasolidWithExistingSession()

Dtk_ErrorStatus ProcessCADFileToParasolidWithExistingSession ( const Dtk_string &  inInputFile,
const Dtk_string &  inOutputFolder 
)
30 {
31  // Activate the PK session mode directly via the header API.
32  // This removes the need for any command-line flag.
33  ActivatePsSession( true );
34  // Activate in-memory mode if desired (no .x_t file on disk).
35  ActivatePsMemory( true );
36 
37  Dtk_API* myAPI = Dtk_API::GetAPI();
38 
39  std::cout << "Processing file: " << inInputFile.c_str() << std::endl;
40 
41  // Optionally retrieve and display the source file version.
42  Dtk_string fileVersion;
43  Dtk_ErrorStatus stError = myAPI->GetFileVersion( inInputFile, fileVersion );
44  if( fileVersion.is_not_NULL() )
45  std::cout << "File version: " << fileVersion.c_str() << std::endl;
46  if( stError != dtkNoError )
47  {
48  std::cout << "Error retrieving file version: " << dtkTypeError( stError ).c_str() << std::endl;
49  return stError;
50  }
51 
52  // Optional: activate a log file to capture reader diagnostics.
53  myAPI->SetLogFile( "DtkLogFile.txt" );
54 
55  // Initialise the Parasolid writer:
56  // IsPsMemoryActivated() -> write to in-memory buffer (no file on disk)
57  // default -> write to a .x_t file
58  Dtk_ErrorStatus stErrorPsw;
59  if( IsPsMemoryActivated() )
60  stErrorPsw = PswWriteInitMemory();
61  else
62  stErrorPsw = PswWriteInit( inInputFile, inOutputFolder );
63 
64  // Open the source document.
65  Dtk_MainDocPtr tmpDoc;
66  Dtk_ErrorStatus err = myAPI->OpenDocument( inInputFile, tmpDoc );
67 
68  if( err == dtkNoError && tmpDoc.IsNotNULL() )
69  {
70  // Traverse the document and write Parasolid output.
71  if( stErrorPsw == dtkNoError )
72  PswWriteDocument( tmpDoc );
73  }
74  else
75  {
76  std::cout << "Error OpenDocument: " << dtkTypeError( err ).c_str() << std::endl;
77  }
78 
79  // Close the source document and release its resources.
80  myAPI->EndDocument( tmpDoc );
81 
82  // Finalise and close the psw output.
83  // After this call the psw-internal PK session is fully closed.
84  PswWriteEnd();
85 
86  // Receive the written bodies into the caller-owned PK session.
87  if( IsPsMemoryActivated() )
89  else
91 
92  return err;
93 }
Dtk_API::EndDocument
Dtk_ErrorStatus EndDocument(Dtk_MainDocPtr &inoutDocument)
Close a Document.
IsPsMemoryActivated
bool IsPsMemoryActivated()
Definition: LoadBodiesIntoSession.cpp:48
Dtk_SmartPtr::IsNotNULL
Dtk_bool IsNotNULL() const
Definition: util_ptr_dtk.hpp:119
Dtk_string
This is a high level string class.
Definition: dtk_string.hpp:53
Dtk_API::OpenDocument
Dtk_ErrorStatus OpenDocument(const Dtk_string &inInputFile, Dtk_MainDocPtr &outDocument)
Open a Document (call EndDocument to close it)
PswGetLastOutputFile
Dtk_string PswGetLastOutputFile()
Definition: WriteParasolid.cpp:25
ReceiveBodiesIntoCurrentPsSessionFromStream
void ReceiveBodiesIntoCurrentPsSessionFromStream(const Dtk_tab< char > &inStream)
Definition: LoadBodiesIntoSession.cpp:319
PswWriteEnd
Dtk_ErrorStatus PswWriteEnd()
Definition: WriteParasolid.cpp:442
Dtk_string::is_not_NULL
Dtk_bool is_not_NULL() const
PswGetLastStream
const Dtk_tab< char > & PswGetLastStream()
Definition: WriteParasolid.cpp:32
Dtk_API::GetAPI
static Dtk_API * GetAPI()
Get DATAKIT API.
PswWriteInitMemory
Dtk_ErrorStatus PswWriteInitMemory()
Definition: WriteParasolid.cpp:419
ReceiveBodiesIntoCurrentPsSession
void ReceiveBodiesIntoCurrentPsSession(const Dtk_string &inXtFile)
Definition: LoadBodiesIntoSession.cpp:290
Dtk_ErrorStatus
Dtk_ErrorStatus
Definition: error_dtk.hpp:6
Dtk_SmartPtr
Definition: util_ptr_dtk.hpp:37
dtkTypeError
Dtk_string dtkTypeError(Dtk_Int32 errNumero)
Dtk_string::c_str
const char * c_str() const
Retrieve the ASCII conversion string.
PswWriteDocument
void PswWriteDocument(Dtk_MainDocPtr inDocument)
Definition: WriteParasolid.cpp:349
ActivatePsSession
void ActivatePsSession(bool inActivate)
Definition: LoadBodiesIntoSession.cpp:43
PswWriteInit
Dtk_ErrorStatus PswWriteInit(const Dtk_string &inInputFile, const Dtk_string &inOutputFolder)
Definition: WriteParasolid.cpp:388
Dtk_API::GetFileVersion
Dtk_ErrorStatus GetFileVersion(const Dtk_string &inInputFile, Dtk_string &outVersion)
Independant method to get version of inInputFile.
dtkNoError
@ dtkNoError
Definition: error_dtk.hpp:151
ActivatePsMemory
void ActivatePsMemory(bool inActivate)
Definition: LoadBodiesIntoSession.cpp:44
Dtk_API::SetLogFile
Dtk_ErrorStatus SetLogFile(const Dtk_string &inLogFile)
Set Log File.
Dtk_API
Definition: dtk_api.hpp:75