Hi @shushenrui1996,

The file you uploaded contains `398`

instance definitions. My guess is the tool you wrote to read 3dm files, using openNURBS, is treating instance definition geometry the same as model geometry.

Instance definition geometry can be identified by those objects whose attribute’s `IsInstanceDefinitionObject`

returns `true`

.

```
ONX_Model model ...
ONX_ModelComponentIterator it(model, ON_ModelComponent::Type::ModelGeometry);
const ON_ModelComponent* model_component = nullptr;
for (model_component = it.FirstComponent(); nullptr != model_component; model_component = it.NextComponent())
{
const ON_ModelGeometryComponent* model_geometry = ON_ModelGeometryComponent::Cast(model_component);
if (model_geometry)
{
const ON_3dmObjectAttributes* model_geometry_attributes = model_geometry->Attributes(nullptr);
if (model_geometry_attributes)
{
bool bIsInstanceDefinitionObject = model_geometry_attributes->IsInstanceDefinitionObject();
if (bIsInstanceDefinitionObject)
{
// todo...
}
}
}
}
```

Hope this helps.

– Dale