DATAKIT SDK  V2026.4
CatiaV5 Write Sample
//start_of_maincatiav5write
std::wstring resolvePath( const std::wstring& inRelativePath )
{
#ifdef _MSC_VER
wchar_t buffer[ MAX_PATH ];
DWORD len = GetFullPathNameW( inRelativePath.c_str(), MAX_PATH, buffer, nullptr );
return std::wstring( buffer, len );
#else
// --- Linux/macOS : std::string ---
// Simply convert the wstring to a plain string
// (assumes UTF-8 if the source file is encoded in UTF-8)
std::string utf8( inRelativePath.begin(), inRelativePath.end() );
char buffer[ PATH_MAX ];
if( realpath( utf8.c_str(), buffer ) != nullptr )
{
// Convert back to a simple wstring
return std::wstring( buffer, buffer + strlen( buffer ) );
}
else
{
return inRelativePath; // path does not exist
}
#endif
}
//This sample show you how to write layer data - Layers Names and Layer Filters -
//See sampleWriter::layer::CreateSetWithFilters().
{
//Keep in mind that layer data can only be set into CATPart context.
//We send layer data to the writer
return catiav5w::SetLayerData( layerInfoSet );
}
//This sample show you how to create a material and assign it to a node.
//See catiav5w::Material / catiav5w::AddMaterial() and Dtk_Info::SetRenderInfosId().
{
//CATIA requires at least the Lighting data to be set for the material to be considered valid; otherwise the material will render as gray
catiav5w::Material material( L"BlueMaterial" );
material.m_Lighting.SetAmbientData( Dtk_RGB( 40, 40, 255 ), 0.6 );
material.m_Lighting.SetDiffuseData( Dtk_RGB( 80, 80, 255 ), 1.0 );
material.m_Lighting.SetSpecularData( Dtk_RGB( 255, 255, 255 ), 0.9 );
material.m_Lighting.SetTransparencyData( Dtk_RGB( 0, 0, 0 ), 0. );
material.m_Lighting.SetReflectivityCoefficient( 0.4 );
//...and its physical aspect - used for mass properties computation -
material.m_Analysis.SetDensity( 7850. ); //kg/m3 - Steel -
//We add the material to the CATPart context...
Dtk_ErrorStatus errorStatus = catiav5w::AddMaterial( material, materialId );
if( errorStatus != dtkNoError )
{
return errorStatus;
}
//...and we assign it to the node through its Info
return inNodeInfo->SetRenderInfosId( materialId );
}
//This sample show you how to write a body with an unbounded surface and wireframe entity.
{
Dtk_ErrorStatus errorStatus;
// We construct a body with a solid
// We construct a body with an Open Shell
// We construct a body with Wireframe
// We construct a body with a Point
// We construct a body with an Infinite Plane
// We construct a body with an Infinite Line / Axis
// We construct a mesh
Dtk_UUID PartUUID;
//You init the Part writer
errorStatus = catiav5w::InitPart( inOutputFile, inReferenceName, PartUUID );
if( errorStatus != dtkNoError )
{
std::cout << "error : " << dtkTypeError( errorStatus ).c_str() << std::endl;
return errorStatus;
}
// We create a new group of entities with a name (you must create at least one group)
// This sample make a surfacic group use to construct a solid
Dtk_InfoPtr MyCurveSetInfo = Dtk_Info::Create();
MyCurveSetInfo->SetName( L"MyCurveSet" );
errorStatus = catiav5w::CreateNode( catiav5w::NodeTypeGeometricSet, MyCurveSetInfo );
if( errorStatus != dtkNoError )
{
std::cout << "error : " << dtkTypeError( errorStatus ).c_str() << std::endl;
return errorStatus;
}
////Writing Wire entities
errorStatus = catiav5w::WriteEntity( Dtk_EntityPtr::DtkDynamicCast( body_wireframe ) );
if( errorStatus != dtkNoError )
{
std::cout << "error : " << dtkTypeError( errorStatus ).c_str() << std::endl;
return errorStatus;
}
errorStatus = catiav5w::WriteEntity( Dtk_EntityPtr::DtkDynamicCast( body_point ) );
if( errorStatus != dtkNoError )
{
std::cout << "error : " << dtkTypeError( errorStatus ).c_str() << std::endl;
return errorStatus;
}
// Close the group of entities
errorStatus = catiav5w::CloseCurrentNode();
if( errorStatus != dtkNoError )
{
std::cout << "error : " << dtkTypeError( errorStatus ).c_str() << std::endl;
return errorStatus;
}
Dtk_InfoPtr MyOpenShellInfo = Dtk_Info::Create();
MyOpenShellInfo->SetName( L"MyOpenShell" );
MyOpenShellInfo->SetLayer( 123 );
MyOpenShellInfo->SetColor( Dtk_RGB( 255, 255, 0 ) );
MyOpenShellInfo->SetBlankedStatus( DTK_TRUE );
errorStatus = catiav5w::CreateNode( catiav5w::NodeTypeGeometricSet, MyOpenShellInfo );
if( errorStatus != dtkNoError )
{
std::cout << "error : " << dtkTypeError( errorStatus ).c_str() << std::endl;
return errorStatus;
}
////Writing OpenShell entity
Dtk_InfoPtr& body_openshellInfo = body_openshell->info();
if( body_openshellInfo.IsNULL() )
{
body_openshellInfo = Dtk_Info::Create();
}
body_openshellInfo->SetColor( Dtk_RGB( 0, 255, 0 ) );
errorStatus = catiav5w::WriteEntity( Dtk_EntityPtr::DtkDynamicCast( body_openshell ) );
if( errorStatus != dtkNoError )
{
std::cout << "error : " << dtkTypeError( errorStatus ).c_str() << std::endl;
return errorStatus;
}
// Close the group of entities
errorStatus = catiav5w::CloseCurrentNode();
if( errorStatus != dtkNoError )
{
std::cout << "error : " << dtkTypeError( errorStatus ).c_str() << std::endl;
return errorStatus;
}
// We create a solid group with a name
Dtk_InfoPtr MySolidInfo = Dtk_Info::Create();
MySolidInfo->SetName( L"My Solid" );
MySolidInfo->SetLayer( 12 );
MySolidInfo->SetColor( Dtk_RGB( 255, 0, 255 ) );
//The material is assigned on the node info so it applies to the whole PartBody
errorStatus = WriteBodyMaterial( MySolidInfo );
if( errorStatus != dtkNoError )
{
std::cout << "error : " << dtkTypeError( errorStatus ).c_str() << std::endl;
return errorStatus;
}
errorStatus = catiav5w::CreateNode( catiav5w::NodeTypePartBody, MySolidInfo );
if( errorStatus != dtkNoError )
{
std::cout << "error : " << dtkTypeError( errorStatus ).c_str() << std::endl;
return errorStatus;
}
// And we write body in the catiav5 file
Dtk_InfoPtr& body_solidInfo = body_solid->info();
if( body_solidInfo.IsNULL() )
{
body_solidInfo = Dtk_Info::Create();
}
body_solidInfo->SetColor( Dtk_RGB( 255, 0, 0 ) );
errorStatus = catiav5w::WriteEntity( Dtk_EntityPtr::DtkDynamicCast( body_solid ) );
if( errorStatus != dtkNoError )
{
std::cout << "error : " << dtkTypeError( errorStatus ).c_str() << std::endl;
return errorStatus;
}
// Close the group of entities
errorStatus = catiav5w::CloseCurrentNode();
if( errorStatus != dtkNoError )
{
std::cout << "error : " << dtkTypeError( errorStatus ).c_str() << std::endl;
return errorStatus;
}
Dtk_InfoPtr MyOpenShellForMeshInfo = Dtk_Info::Create();
MyOpenShellForMeshInfo->SetName( L"MyOpenShellForMesh" );
errorStatus = catiav5w::CreateNode( catiav5w::NodeTypeGeometricSet, MyOpenShellForMeshInfo );
if( errorStatus != dtkNoError )
{
std::cout << "error : " << dtkTypeError( errorStatus ).c_str() << std::endl;
return errorStatus;
}
////Writing Mesh entity
if( errorStatus != dtkNoError )
{
std::cout << "error : " << dtkTypeError( errorStatus ).c_str() << std::endl;
return errorStatus;
}
// Close the group of entities
errorStatus = catiav5w::CloseCurrentNode();
if( errorStatus != dtkNoError )
{
std::cout << "error : " << dtkTypeError( errorStatus ).c_str() << std::endl;
return errorStatus;
}
Dtk_InfoPtr MyOpenShellForPlaneInfo = Dtk_Info::Create();
MyOpenShellForPlaneInfo->SetName( L"MyOpenShellForPlane" );
errorStatus = catiav5w::CreateNode( catiav5w::NodeTypeGeometricSet, MyOpenShellForPlaneInfo );
if( errorStatus != dtkNoError )
{
std::cout << "error : " << dtkTypeError( errorStatus ).c_str() << std::endl;
return errorStatus;
}
////Writing Plane entity
errorStatus = catiav5w::WriteEntity( Dtk_EntityPtr::DtkDynamicCast( body_plane ) );
if( errorStatus != dtkNoError )
{
std::cout << "error : " << dtkTypeError( errorStatus ).c_str() << std::endl;
return errorStatus;
}
// Close the group of entities
errorStatus = catiav5w::CloseCurrentNode();
if( errorStatus != dtkNoError )
{
std::cout << "error : " << dtkTypeError( errorStatus ).c_str() << std::endl;
return errorStatus;
}
Dtk_InfoPtr MyOpenShellForInifiniteLineInfo = Dtk_Info::Create();
MyOpenShellForInifiniteLineInfo->SetName( L"MyOpenShellForInifiniteLine" );
errorStatus = catiav5w::CreateNode( catiav5w::NodeTypeGeometricSet, MyOpenShellForInifiniteLineInfo );
if( errorStatus != dtkNoError )
{
std::cout << "error : " << dtkTypeError( errorStatus ).c_str() << std::endl;
return errorStatus;
}
////Writing Plane entity
if( errorStatus != dtkNoError )
{
std::cout << "error : " << dtkTypeError( errorStatus ).c_str() << std::endl;
return errorStatus;
}
// Close the group of entities
errorStatus = catiav5w::CloseCurrentNode();
if( errorStatus != dtkNoError )
{
std::cout << "error : " << dtkTypeError( errorStatus ).c_str() << std::endl;
return errorStatus;
}
//Now we will create an AxisSystem
if( errorStatus != dtkNoError )
{
std::cout << "error : " << dtkTypeError( errorStatus ).c_str() << std::endl;
return errorStatus;
}
//we write it now
if( errorStatus != dtkNoError )
{
std::cout << "error : " << dtkTypeError( errorStatus ).c_str() << std::endl;
return errorStatus;
}
//We create a default Named View - Camera -
//For that we firstly create a camera
Dtk_pnt( 200, 100, 100 ), //Origin Point
Dtk_pnt( 0, 100, 100 ), //Target Point
100., 100., //SemiWidth / SemiHeight
Dtk_dir( 0, 1, 0 ) ); //Up Vector - can be reprocessed by CatiaV5 if needed -
//We create the model display from the camera
//We don't put any clipping entity - not used by V5 write -
//The 3rd parameter set the Named View as the default one - used at the V5 file opening -
//We don't need any name because the default Named View name is hardcoded
//Finally we write the NamedView
errorStatus = catiav5w::WriteNamedView( NamedView );
if( errorStatus != dtkNoError )
{
std::cout << "error : " << dtkTypeError( errorStatus ).c_str() << std::endl;
return errorStatus;
}
//Now we create another named view
Cam = Dtk_Camera::Create( Dtk_pnt( 100, 100, 100 ), Dtk_pnt( 0, 0, 0 ), 100., 100., Dtk_dir( 0, 1, 0 ) );
//Not set as default => will appear in the 'Named Views' Dialog Box into Catia V5
NamedView = Dtk_ModelDisplay::Create( Cam, NULL, DTK_FALSE );
NamedView->info() = Dtk_Info::Create();
//We put the Named view name
NamedView->info()->SetName( L"MyNamedView" );
//Finally we write the NamedView
errorStatus = catiav5w::WriteNamedView( NamedView );
if( errorStatus != dtkNoError )
{
std::cout << "error : " << dtkTypeError( errorStatus ).c_str() << std::endl;
return errorStatus;
}
//Now we write layer data - Layers Names and Layer Filters -
errorStatus = WriteLayerData();
if( errorStatus != dtkNoError )
{
std::cout << "error : " << dtkTypeError( errorStatus ).c_str() << std::endl;
return errorStatus;
}
// Close the current part
errorStatus = catiav5w::EndPart();
return errorStatus;
}
//! \brief Writes a CATProduct assembly: one sub-product referencing a CATPart and one instanced directly from an existing V5 file.
Dtk_ErrorStatus ProcessAsm( const Dtk_string &inResultDirectory, const Dtk_string &inInputFilesDirectory )
{
Dtk_string outputDirectory;
outputDirectory = inResultDirectory + "CatiaV5/";
outputDirectory.FixPathSeparator();
Dtk_string CATPartFileName = outputDirectory + L"V5_sample.CATPart";
Dtk_string SubProductFileName = outputDirectory + L"SubProduct.CATProduct";
Dtk_string RootProductFileName = outputDirectory + L"RootProduct.CATProduct";
Dtk_string V5FileName = inInputFilesDirectory + L"CatiaV5/9.CATPart";
//
//Catia V5 does not support the paths L"../Input Files/Models/"
std::wstring tempDirectoryFixed = resolvePath( inInputFilesDirectory.w_str() );
Dtk_string outputDirectoryFixed = tempDirectoryFixed.c_str();
outputDirectoryFixed.replace( L'\\', L'/' );
Dtk_string CGRFileName = outputDirectoryFixed + L"CGR/Engine.cgr";
Dtk_string V4ModelFileName = outputDirectoryFixed + L"CatiaV4/EngineComponent.model";
CATPartFileName.FixPathSeparator();
V5FileName.FixPathSeparator();
CGRFileName.FixPathSeparator();
V4ModelFileName.FixPathSeparator();
SubProductFileName.FixPathSeparator();
RootProductFileName.FixPathSeparator();
Dtk_transfo TransformationMatrix;
Dtk_ErrorStatus errorStatus;
//The ProcessPart is an user implemented function to create a part
errorStatus = ProcessPart( CATPartFileName, L"testPart" );
//Reference creation to external files - V4 / CGR / existing v5 file -
Dtk_ID PartID, V5ID, V4ID, CgrID;
{
//We create Document References to the CATPart file we create
errorStatus = catiav5w::CreatePartDocId( CATPartFileName, L"PartFile", PartID );
// to an existing CATPart file
errorStatus = catiav5w::CreatePartDocId( V5FileName, L"V5File", V5ID );
//...and to a CGR file
errorStatus = catiav5w::CreateCGRDocId( CGRFileName, "CGRFile", CgrID );
//...and finally to a CATIA V4 '.model' file
errorStatus = catiav5w::CreateV4ModelDocId( V4ModelFileName, "V4File", V4ID );
}
//We create the SubProduct
Dtk_ID SubProductID, VirtualSubComponent1ID, VirtualSubComponent2ID, PartInstanceID, VirtualSubComponent1_Instance1ID;
Dtk_ID PartInstanceID2, CGRInstanceID, V4InstanceID, V5InstanceID, VirtualComponent1_Instance1ID;
{
//we init a CATProduct context...
errorStatus = catiav5w::InitProduct( SubProductFileName, "SubProduct" );
//we start a virtual component prototype
errorStatus = catiav5w::InitVirtualComponent( "VirtualSubComponent1" );
TransformationMatrix.setOrigin( 0, 0, 150 );
errorStatus = catiav5w::AddInstance( PartID, L"PartInstance", TransformationMatrix, PartInstanceID );
//we end the virtual component prototype
errorStatus = catiav5w::EndVirtualComponent( VirtualSubComponent1ID );
//we start another virtual component prototype
errorStatus = catiav5w::InitVirtualComponent( "VirtualComponent1" );
//we add the sub component instance...
TransformationMatrix.setOrigin( 0.0, 0.0, 0.0 );
errorStatus = catiav5w::AddVirtualComponentInstance( VirtualSubComponent1ID, L"VirtualSubComponent1_Instance1", TransformationMatrix, VirtualSubComponent1_Instance1ID );
//we close the virtual component prototype
errorStatus = catiav5w::EndVirtualComponent( VirtualSubComponent2ID );
//we insert the created Part instance...
TransformationMatrix.setOrigin( 0.0, 0.0, 0.0 );
errorStatus = catiav5w::AddInstance( PartID, L"PartInstance", TransformationMatrix, PartInstanceID2 );
//...a CGR instance
TransformationMatrix.setOrigin( 0.0, 500.0, 0.0 );
errorStatus = catiav5w::AddInstance( CgrID, L"CGRInstance", TransformationMatrix, CGRInstanceID );
//...and a V4 instance
TransformationMatrix.setOrigin( 0.0, -500.0, 0.0 );
errorStatus = catiav5w::AddInstance( V4ID, L"V4Instance", TransformationMatrix, V4InstanceID );
//...and an existing V5 instance
TransformationMatrix.setOrigin( 0.0, -1000.0, 0.0 );
errorStatus = catiav5w::AddInstance( V5ID, L"V5Instance", TransformationMatrix, V5InstanceID );
//...and the main component instance
TransformationMatrix.setOrigin( 0.0, 1000.0, 0.0 );
errorStatus = catiav5w::AddVirtualComponentInstance( VirtualSubComponent2ID, L"VirtualComponent1_Instance1", TransformationMatrix, VirtualComponent1_Instance1ID );
//we close the CATProduct context and retrieve the resulting DocID
errorStatus = catiav5w::EndProduct( SubProductID );
}
//Now we create the RootProduct
Dtk_ID RootProductID, PartInstance2ID, SubProductInstance1ID, SubProductInstance2ID;
{
//we create another CATProduct context
errorStatus = catiav5w::InitProduct( RootProductFileName, "RootProduct" );
//and we insert another time the a part instance - multinstancing management -
TransformationMatrix.setOrigin( 0.0, 0.0, 50.0 );
errorStatus = catiav5w::AddInstance( PartID, L"PartInstance2", TransformationMatrix, PartInstance2ID );
//and two instances to the first CATProduct file
TransformationMatrix.setOrigin( 1000.0, 0.0, 0.0 );
errorStatus = catiav5w::AddInstance( SubProductID, L"SubProductInstance1", TransformationMatrix, SubProductInstance1ID );
TransformationMatrix.setOrigin( -1000.0, 0.0, 0.0 );
errorStatus = catiav5w::AddInstance( SubProductID, L"SubProductInstance2", TransformationMatrix, SubProductInstance2ID );
//Now we create an instance PathID to handle override
//We want to override SubProductInstance2/VirtualComponent1_Instance1/VirtualSubComponent1_Instance1/PartInstance
{
Path1.push_back( SubProductInstance2ID );
Path1.push_back( VirtualComponent1_Instance1ID );
Path1.push_back( VirtualSubComponent1_Instance1ID );
Path1.push_back( PartInstanceID );
//We override Blanked status and color
}
////No we want to override SubProductInstance1/CGRInstance
{
Path2.push_back( SubProductInstance1ID );
Path2.push_back( CGRInstanceID );
//We override Color and Alpha
}
//finally we close the second CATProduct...
errorStatus = catiav5w::EndProduct( RootProductID );
}
std::cout << "=> " << RootProductFileName.c_str() << std::endl << "CatiaV5 Write end" << std::endl;
return errorStatus;
}
Dtk_ErrorStatus CatiaV5WriteSample( const Dtk_string &inResultDirectory, const Dtk_string &inInputFilesDirectory )
{
// First we initialize writing with name of files and protection fonction
//First you have to initialize the CATIA V5 writer
Dtk_string outputDirectory;
std::cout << std::endl << "----------------------------------------------" << std::endl;
std::cout << "CatiaV5 Write start" << std::endl;
// Choosing output directory and file name
outputDirectory = inResultDirectory + L"CatiaV5/";
outputDirectory.FixPathSeparator();
outputDirectory.mkdir();
Dtk_ErrorStatus errorStatus = options.SetFileRelease( 20 );
if( errorStatus != dtkNoError )
{
std::cout << "error : " << dtkTypeError( errorStatus ).c_str() << std::endl;
return errorStatus;
}
errorStatus = catiav5w::InitWrite( outputDirectory + L"V5W_LogFile.log", NULL, options );
if( errorStatus != dtkNoError )
{
std::cout << "error : " << dtkTypeError( errorStatus ).c_str() << std::endl;
return errorStatus;
}
ProcessAsm( inResultDirectory, inInputFilesDirectory );
//...and the Main writter
return dtkNoError;
}
//end_of_maincatiav5write
sampleWriter::CreateAxis
Dtk_BodyPtr CreateAxis()
Creates a reference body (infinite + reference flags) containing a single named axis line with metada...
Definition: testcreatecube.cpp:1568
Dtk_Info::Create
static Dtk_SmartPtr< Dtk_Info > Create()
Calls default constructor to allocate a new object.
Dtk_ModelDisplay::Create
static Dtk_ModelDisplayPtr Create(const Dtk_CameraPtr &inCamera, const Dtk_EntityPtr &inClippingEntity, const Dtk_bool inIsActivated)
Calls full featured constructor to allocate a new object.
Dtk_ID
uint32_t Dtk_ID
Definition: define.h:688
Dtk_transfo
This is the Transformation dedicated class.
Definition: dtk_transfo.hpp:19
catiav5w::InitVirtualComponent
Dtk_ErrorStatus InitVirtualComponent(const Dtk_string &inReferenceName, const catiav5w::FileDescription &inFileDescription=catiav5w::FileDescription())
Initialize a virtual component during CATProduct process.
catiav5w::OverrideInstanceAlphaWithPathID
Dtk_ErrorStatus OverrideInstanceAlphaWithPathID(const PathID &inInstancePathId, const Dtk_UChar8 inInstanceAlpha)
Override the Alpha of an instance in a Sub Product.
catiav5w::AddMaterial
Dtk_ErrorStatus AddMaterial(const Material &inMaterial, MaterialId &outMaterialId)
Add a Material in a CATPart context.
catiav5w::AddVirtualComponentInstance
Dtk_ErrorStatus AddVirtualComponentInstance(const Dtk_ID &inDocId, const Dtk_string &inInstanceName, const Dtk_transfo &inTransfo, Dtk_ID &outInstanceId)
Add an instance to a DocID into the Current (Sub/Root) CATProduct.
Dtk_Info::SetName
Dtk_ErrorStatus SetName(Dtk_string inName)
ProcessAsm
Dtk_ErrorStatus ProcessAsm(const Dtk_string &inResultDirectory, const Dtk_string &inInputFilesDirectory)
Writes a CATProduct assembly: one sub-product referencing a CATPart and one instanced directly from a...
Definition: testlibcatiav5write.cpp:380
catiav5w::WriteOptions
This class provides several options to tunes CatiaV5 Writter. It must be provided to catiav5w::InitWr...
Definition: catiav5w.hpp:41
Dtk_transfo::setOrigin
void setOrigin(const Dtk_pnt &O)
Set a new O center point.
catiav5w::NodeTypeGeometricSet
@ NodeTypeGeometricSet
Definition: catiav5w.hpp:411
catiav5w::Material
This is the wrapper class handling V5 write material data.
Definition: catiav5w.hpp:99
DTK_TRUE
#define DTK_TRUE
Definition: define.h:726
ProcessPart
Dtk_ErrorStatus ProcessPart(const Dtk_string &inOutputFile, const Dtk_string &inReferenceName)
Definition: testlibcatiav5write.cpp:90
Dtk_Info::SetRenderInfosId
Dtk_ErrorStatus SetRenderInfosId(const Dtk_ID &inRenderId)
sampleWriter::CreateInfinitePlane
Dtk_BodyPtr CreateInfinitePlane()
Creates a reference body flagged as an infinite plane (InfiniteGeometryFlag + RefEntityFlag),...
Definition: testcreatecube.cpp:1511
Dtk_string
This is a high level string class.
Definition: dtk_string.hpp:53
catiav5w::WriteEntity
Dtk_ErrorStatus WriteEntity(const Dtk_EntityPtr &inEntity)
Write the entity provided in parameter.
Dtk_UUID
Definition: dtk_uuid.hpp:8
sampleWriter::CreateAxisSystem
Dtk_AxisSystemPtr CreateAxisSystem()
Creates a named axis system with a custom orientation matrix, red color, layer 123,...
Definition: testcreatecube.cpp:1541
DTK_FALSE
#define DTK_FALSE
Definition: define.h:727
catiav5w::OverrideInstanceColorWithPathID
Dtk_ErrorStatus OverrideInstanceColorWithPathID(const PathID &inInstancePathId, const Dtk_RGB &inInstanceColor)
Override the Color of an instance in a Sub Product.
catiav5w::CreateNode
Dtk_ErrorStatus CreateNode(const NodeType &inNodeType, const Dtk_string &inNodeName=Dtk_string())
Create a node in the Specification Tree.
catiav5w::InitProduct
Dtk_ErrorStatus InitProduct(const Dtk_string &inFileName, const Dtk_string &inReferenceName, const catiav5w::FileDescription &inFileDescription=catiav5w::FileDescription())
Initialize a sub Product during CATProduct process.
Dtk_Info::SetBlankedStatus
Dtk_ErrorStatus SetBlankedStatus(const Dtk_Int32 &inBlankedStatus)
catiav5w::CreateCGRDocId
Dtk_ErrorStatus CreateCGRDocId(const Dtk_string &inCGRFileName, const Dtk_string &inCGRName, Dtk_ID &outDocId)
Create a CGR Reference and DocID related to a given CGR File.
catiav5w::inReferenceName
const Dtk_string & inReferenceName
Definition: catiav5w.hpp:432
catiav5w::InitPart
Dtk_ErrorStatus InitPart(const Dtk_string &inOutputFile, const Dtk_string &inReferenceName, Dtk_UUID &outPartUUID, const catiav5w::FileDescription &inFileDescription=catiav5w::FileDescription())
Initialize the part
Dtk_string::replace
int replace(const int &old_char, const int &new_char)
Replaces all occurrences of a character in a string with a new character.
sampleWriter::CreatePoint
Dtk_BodyPtr CreatePoint()
Creates a wireframe body containing a single named red point with metadata.
Definition: testcreatecube.cpp:1483
catiav5w::NodeTypePartBody
@ NodeTypePartBody
Definition: catiav5w.hpp:412
catiav5w::EndVirtualComponent
Dtk_ErrorStatus EndVirtualComponent(Dtk_ID &outDocId)
End - and write - the virtual component initialized by catiav5w::InitVirtualComponent.
Dtk_SmartPtr< Dtk_Entity >::DtkDynamicCast
static Dtk_SmartPtr< Dtk_Entity > DtkDynamicCast(const Dtk_SmartPtr< T2 > &p)
Definition: util_ptr_dtk.hpp:101
catiav5w::AddInstance
Dtk_ErrorStatus AddInstance(const Dtk_ID &inDocId, const Dtk_string &inInstanceName, const Dtk_transfo &inTransfo, Dtk_ID &outInstanceId)
Add an instance to a DocID into the Current (Sub/Root) CATProduct.
Dtk_ErrorStatus
Dtk_ErrorStatus
Definition: error_dtk.hpp:6
Dtk_SmartPtr::IsNULL
Dtk_bool IsNULL() const
Definition: util_ptr_dtk.hpp:118
catiav5w::CreateV4ModelDocId
Dtk_ErrorStatus CreateV4ModelDocId(const Dtk_string &inV4ModelFileName, const Dtk_string &inV4ModelName, Dtk_ID &outDocId)
Create a V4 Model Reference and DocID related to a given V4 Model File.
Dtk_SmartPtr< Dtk_Info >
dtkTypeError
Dtk_string dtkTypeError(Dtk_Int32 errNumero)
catiav5w::EndWrite
Dtk_ErrorStatus EndWrite()
Free the Catia V5 Writer
catiav5w::WriteOptions::SetFileRelease
Dtk_ErrorStatus SetFileRelease(const Dtk_UInt32 inRelease)
Sets the release for the written files.
Dtk_string::c_str
const char * c_str() const
Retrieve the ASCII conversion string.
catiav5w::CreatePartDocId
Dtk_ErrorStatus CreatePartDocId(const Dtk_string &inPartFileName, const Dtk_string &inPartName, Dtk_ID &outDocId)
Create a Part Reference and DocID related to a given CATPart.
sampleWriter::layer::CreateSetWithFilters
Dtk_LayerInfosSetPtr CreateSetWithFilters()
Creates a layer info set with 9 layers and 2 named layer filters grouping subsets of those layers.
Definition: testcreatelayerinfoset.cpp:27
catiav5w::MaterialId
Dtk_ID MaterialId
Definition: catiav5w.hpp:27
sampleWriter::CreateMeshCylinder
Dtk_MeshPtr CreateMeshCylinder(int nbpoints)
Mesh Cylinder sample.
Definition: testcreatemesh.cpp:338
Dtk_string::mkdir
int mkdir() const
File Utility : Create a Directory.
Dtk_Info::SetLayer
Dtk_ErrorStatus SetLayer(const Dtk_Int32 &inLayer)
Dtk_pnt
This is a mathematical point class.
Definition: dtk_pnt.hpp:20
Dtk_string::FixPathSeparator
void FixPathSeparator()
File Utility : Fixes path separator consistency. It lets you replace the '\' or '/' by the OS needed ...
Dtk_Camera::Create
static Dtk_CameraPtr Create()
Calls default constructor to allocate a new object.
Dtk_tab
This is a high level array class.
Definition: util_stl_dtk.hpp:84
CatiaV5WriteSample
Dtk_ErrorStatus CatiaV5WriteSample(const Dtk_string &inResultDirectory, const Dtk_string &inInputFilesDirectory)
Definition: testlibcatiav5write.cpp:521
sampleWriter::CreateCube
Dtk_BodyPtr CreateCube()
Creates a 100x100x100 mm closed BRep cube body. Builds the full BRep hierarchy (Vertex,...
Definition: testcreatecube.cpp:1325
catiav5w::EndProduct
Dtk_ErrorStatus EndProduct(Dtk_ID &outDocId)
Write effectively the Sub Product initialized by catiav5w::InitProduct.
resolvePath
std::wstring resolvePath(const std::wstring &inRelativePath)
Definition: testlibcatiav5write.cpp:26
catiav5w::CloseCurrentNode
Dtk_ErrorStatus CloseCurrentNode()
close the current node previously created by catiav5w::CreateNode.
catiav5w::SetLayerData
Dtk_ErrorStatus SetLayerData(const Dtk_LayerInfosSetPtr &inLayerDataSet)
Set Layer and LayerFilter Data in a CATPart context.
sampleWriter::CreateCurves
Dtk_BodyPtr CreateCurves()
Creates a wireframe body containing a circle, ellipse, line, and NURBS curve, each with a distinct co...
Definition: testcreatecube.cpp:1368
catiav5w::WriteNamedView
Dtk_ErrorStatus WriteNamedView(const Dtk_ModelDisplayPtr &inNamedView)
Write the given ModelDisplay as NamedView - V5 camera -.
catiav5w::EndPart
Dtk_ErrorStatus EndPart()
Free data allocated by catiav5w::InitPart
dtkNoError
@ dtkNoError
Definition: error_dtk.hpp:151
Dtk_tab::push_back
void push_back(const T &x)
Inserts an element at the end of the array.
Definition: util_stl_dtk.hpp:416
catiav5w::InitWrite
Dtk_ErrorStatus InitWrite(const Dtk_string &inLogFile, Licence_dtk inLicFct, const WriteOptions &inOptions=WriteOptions())
Initialize the Catia V5 Writer
Dtk_RGB
Definition: dtk_rgb.hpp:8
Dtk_Info::SetColor
Dtk_ErrorStatus SetColor(const int &R, const int &G, const int &B)
WriteLayerData
Dtk_ErrorStatus WriteLayerData()
Definition: testlibcatiav5write.cpp:53
Dtk_dir
This is a mathematical direction class.
Definition: dtk_dir.hpp:14
catiav5w::OverrideBlankedStatusWithPathID
Dtk_ErrorStatus OverrideBlankedStatusWithPathID(const PathID &inInstancePathId, const Dtk_bool inBlankedStatus)
Override the Blanked Status of an instance in a Sub Product.
WriteBodyMaterial
Dtk_ErrorStatus WriteBodyMaterial(const Dtk_InfoPtr &inNodeInfo)
Definition: testlibcatiav5write.cpp:64
sampleWriter::CreateOpenShell
Dtk_BodyPtr CreateOpenShell()
Creates an open shell body containing a single trimmed cylindrical surface (half cylinder,...
Definition: testcreatecube.cpp:1353