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

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 Roth'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?

Adriana Costas's picture


Is there any solution already for this?