For all issues regarding the Forums use, please, refer to the Forum Rules.

Our Solutions

Need professional assistance?
Consider our:

Support Offerings


Need to speed up your development?
Have a look at our:

Samples & Tools


Need some functionality extending standard OCCT capabilities?
Check out our:

Adv. Components

Mapping TopoDS_Shape to the name of its Product when reading STEP files

Warren Couvillion's picture

I've read the forum posts about extracting entity names from STEP files, and the code posted works. I've got a slightly different problem. When I find an entity that describes a STEP file, I need to know the name of the product that contains it.

Is there a way, given an entity, to find the product that contains it?

Timo's picture

As mentioned by Roman ( you could have a look at STEPCAFControl_Reader::ReadNames to see how it reads the names of products.

Personally, I don't read product names from STEP files, i only write them. I'm using the follwing code. Maybe it helps. But beware, it is written in C#:

// Create STEP writer
aWriter = new STEPControl_Writer();
FP = aWriter.WS().TransferWriter().FinderProcess();

// Transfer shape to STEP
status = aWriter.Transfer(shape, type);
if (status != IFSelect_ReturnStatus.IFSelect_RetDone)

// Get ShapeDefinitionRepresentation of transfered shape
StepShape_ShapeDefinitionRepresentation SDR = new StepShape_ShapeDefinitionRepresentation();
TransferBRep_ShapeMapper mapper = TransferBRep.TransferBRep.CreateShapeMapper(FP, shape);
if (!FP.FindTypedTransient(mapper, StepShape_ShapeDefinitionRepresentation.TypeOf(), SDR))

// Set the name to the PRODUCT
StepRepr_PropertyDefinition PropD = SDR.Definition().PropertyDefinition();
if (PropD.IsNull())
StepBasic_ProductDefinition PD = PropD.Definition().ProductDefinition();
if (PD.IsNull())
StepBasic_Product Prod = PD.Formation().OfProduct();
Prod.Name ...


Warren Couvillion's picture

I should really proofread. What I meant to say is that when I find an entity describing a *shape*, can I find the name of the Product containing it?