Description of Parts
In traditional data formats the diverse types of parts (e.g. connector housing, terminal, wire) are differentiated with individual subclasses for each type inheriting from the type corresponding to PartVersion. These subclasses define all specific information of the component type (e.g. the cavities of a connector). Due to the great diversity of components used in wiring harnesses a different approach is implemented in the VEC.
The general technical / physical properties of a component are described by PartOrUsageRelatedSpecifications (and its subclasses). For each aspect of a component an independent subclass of PartOrUsageRelatedSpecification is defined (e.g. a ConnectorHousingSpecification, a TerminalSpecification). This approach allows to describe a PartVersion by more than one PartOrUsageRelatedSpecifications (Association PartOrUsageRelatedSpecification.describedPart). It offers the possibility to extract information, which is shared between component types, into separate specifications so that the structural definition can be reused without having to modify the inheritance tree (e.g. GeneralTechnicalPartSpecification). Furthermore, some components cannot be mapped onto such a strict type hierarchy (e.g. a connector housing used as an inliner might have a fixing bolt for vehicle body in order to keep it in place). Representing this by an inheritance tree would result in a huge variety of different classes. With the concept of PartOrUsageRelatedSpecifications a component like the mentioned connector housing can be easily described by using a ConnectorHousingSpecification for the connector housing aspects and a FixingSpecification for the fixing aspects. However, most parts have a primary characteristic. For example, the mentioned connector housing will most probably only be used if a connector is necessary. This primary characteristic is defined by the PartVersion.primaryPartType. The PrimaryPartType always refers by a naming convention to a corresponding PartOrUsageRelatedSpecification. If the PrimaryPartType is ABC, the corresponding Specification is named ABCSpecification (e.g. ConnectorHousing and ConnectorHousingSpecification). The PrimaryPartType serves the purpose of defining the primary characteristic of a part. It is not required to describe every PartVersion in a specific VEC file with a corresponding PartOrUsageRelatedSpecification, if the information is not required in the context of the VEC file. For example, in the context of geometry data exchange it might be perfectly valid to have PartVersions with PrimaryPartType=ConnectorHousing that are only associated with a PlaceableElementSpecification (and/or a GeneralTechnicalPartSpecification) while the ConnectorHousingSpecification is not provided.
In some cases, there might be a need to specify attributes of a part that is not related to any of the existing subtypes of PartOrUsageRelatedSpecification. (e.g. it might be relevant to describe a screw nut used as an accessory for a connector housing). In this case the class PartOrUsageRelatedSpecification is instanced and the relevant attributes are added as CustomProperties.
Since the PartOrUsageRelatedSpecification is a subclass of Specification, which is a sub element of a dedicated DocumentVersion, all information defined by it can be related to a precise development state.
The relationship PartOrUsageRelatedSpecification.describedPart might be seen as redundant to the relationship DocumentVersion.referencedPart but considers the fact that there are use cases, where only information on the level of PartVersions and DocumentVersions is exchanged, but not on the very detailed level of PartOrUsageRelatedSpecifications. In addition, it is possible, that several PartVersions are described by a single DocumentVersion containing a couple of specifications, each of them describing a single PartVersion (e.g. a drawing with a major part and its accessory parts).