Overview
Object inheritance lets one model object specialize another object of the same type. The original object is the base, and the object that extends it is the specialization. A specialization begins by inheriting the base’s fields and supported model structure. Changes to the base continue to flow into the specialization unless a value has been overridden locally.Inheritance is useful for product variants, reusable system patterns, specialized requirements, regional configurations, and other cases where models share a common definition but need controlled differences.
How to Use Inheritance
Start with a base object that contains the information shared by every variant. Create a specialization from that base, then edit only the details that should be different. For example, a base Part might define the ports, attributes, and requirements common to a product family. Each product variant can extend that Part and override its own dimensions, performance values, or documentation. As you work:- Make shared changes on the base so every specialization receives them.
- Make variant-specific changes on the specialization.
- Add content to a specialization only when it does not belong on every variant.
- Resync an override when the specialization should follow the base again.
Inherited Fields
An inherited field stays synchronized with the base. If the base’s name, documentation, value, scheduling, or other supported field changes, the specialization receives the new value automatically.Overridden Fields
Editing an inherited field creates a local override. The specialization keeps that value when the corresponding base field changes. In the Properties view:- Inherited means the value currently comes from the base.
- Overridden means the specialization owns a local value.
- Extended means a collection contains the inherited entries plus locally added entries.
Additive Collections
Collections are extended rather than replaced. A specialization keeps the base entries and may add its own:- Child objects
- Tags
- References
- Relationships
- Task prerequisites
Creating a Specialization
There are two creation workflows in the model Index.Extend Object
Use Extend Object when the specialization should be created beside the base.- Right-click the object that will be the base.
- Select Extend Object.
- Davinci creates a specialization under the same parent and opens it.
- Rename the specialization and edit only the fields that should differ.
New Object from Extension
Use New Object from Extension when the specialization should be created under a different parent.- Right-click the intended parent in the Index.
- Open Add Object.
- Select New Object from Extension.
- Search for the object to use as the base.
- Select the base to create and open the specialization.
A base and its specialization must have the same object type. For example, a Part can extend another Part, but it cannot extend a Requirement.
Inherited Structure
When an inheritable object contains inheritable children, Davinci creates corresponding specialized children. These are structural counterparts: they mirror the base hierarchy while allowing local field overrides. For example, extending a Part that owns Ports and Attributes creates a specialized Part with corresponding specialized Ports and Attributes.Base Structure Changes
Structure remains synchronized:- Adding an inheritable child to the base adds a counterpart to existing specializations.
- Removing a child from the base removes its inherited counterparts.
- Internal relationships and supported object references resolve to counterparts within the same specialization when available.
Moving and Deleting Inherited Objects
Inherited structural counterparts cannot be moved to a different parent or deleted independently. Their placement is defined by the base structure. To change inherited structure:- Make the structural change on the base object.
- Allow Davinci to propagate it to the specializations.
Resynchronizing with the Base
Resync a Field
Use field-level resync when only one override should be discarded:- Open the specialization’s Properties view.
- Find a field marked Overridden.
- Select the indicator.
- Review the inherited value and confirm Resync.
Revert the Whole Specialization
Use Revert to Base to discard changes throughout an extension:- Right-click the specialization root in the Index.
- Select Revert to Base.
- Review the confirmation carefully.
- Confirm Revert.
Indicators in the Interface
Davinci displays inheritance status in the Index, object anchors, and Properties view:- A link icon identifies an object that extends a base.
- A branch icon identifies a base that is extended by one or more specializations.
- Inherited, Overridden, and Extended indicators describe individual fields and collections.
- Disabled removal controls identify inherited entries that must be changed on the base.
Supported Object Types
Inheritance is available for model object types whose content can be specialized safely.Structure
Values
Behavior
Interface
Artifacts, References, Code, Toolboxes, and CAD objects do not currently support object inheritance. Each object-type page lists its inheritance support in Properties Fields.Multi-Level Inheritance
A specialization can itself be used as a base, creating multiple levels of specialization. Values resolve through the chain, with the nearest local override taking precedence. Keep inheritance chains focused and easy to understand. When variants no longer share a stable definition, separate objects and explicit relationships may be clearer than adding more inheritance levels.Best Practices
- Put stable, shared definitions on the base.
- Override only fields that intentionally differ.
- Add shared children and relationships to the base, not separately to every specialization.
- Use the Properties indicators to distinguish inherited and local content.
- Prefer field-level Resync over Revert to Base for small corrections.
- Review specializations before restructuring or deleting a base.
- Use Relationships when objects are connected but one is not a specialized form of the other.