Thanks for the suggestion, which I have just tried. The editied OIR loads OK, but when I make a new WTPart if gives this error :
In the Method Server log, there are many lines with similar error messages about NoClassDefFoundError and wrong name: wt/rule/algorithm/SubString.
...and after reading that message carefully again, it does tell us the answer - we should not be using a capital S in the middle of the name Substring !!
In the Windchill Help Centre, on the page about Default Value Algorithms, there are 15 listed and this is the only one that is not set in "CamelCase" !
So just to explain what we have done is to edit a copy of the OOTB Site level OIR for WTParts as shown below. We are testing it in a Product based on the General Product template (not the OOTB Product Design template, which has additional rules), and we loaded the new OIR at the Org level so that it applies to all Products under the Org domain. All of the changes we made are coloured green below... and this now works :
<!-- set the number to a generated number WITH OUR PREFIX -->
<AttrValue id="number" algorithm="com.ptc.windchill.enterprise.revisionControlled.server.impl.NumberGenerator">
<!-- add a V prefix for variant parts -->
<Value algorithm="wt.rule.algorithm.BooleanBranch">
<Value algorithm="wt.rule.algorithm.EqualsTest">
<Attr id="genericType"/>
<Arg>variant</Arg>
</Value>
<Arg>V</Arg>
<Arg></Arg>
</Value>
<!-- now add OUR PREFIX followed by a DASH -->
<Value algorithm="wt.rule.algorithm.Substring">
<Attr id="containerName"/>
<Arg>0</Arg>
<Arg>5</Arg>
</Value>
<Arg>-</Arg>
<!-- the sequence WITH REDUCED NUMBER OF DIGITS TO 6 -->
<Arg>{GEN:wt.enterprise.SequenceGenerator:WTPARTID_seq:6:0}</Arg>
</AttrValue>
Hopefully others will find this useful too.