Creo Routed Systems

Standardizing Spec-Driven Fittings

Posted on

Spec-Driven Piping in Creo Parametric allows users to model piping installations at a much faster rate and more accurately than using the conventional Piping module (for further details, see our earlier blog post Why Spec-Driven Piping?). The main obstacle behind many companies using this free addition to the Piping module is the time and effort required in its setup. One of the pillars of the setup is the configuration of all the needed fittings to be used in a company’s fitting library.

In standard Piping, the only things you need to add to a fitting model are an entry and exit coordinate system (in-line with each other) and an entry point that will be where the fitting is inserted into the pipeline, an example of which is shown below (see PORT0, PORT1, and PNT0).

The needed requirements for inserting a fitting in a non-spec-driven pipeline

For Spec-Driven Piping, however, the requirements for a fitting model are more complex and can vary heavily depending on the type of fitting. The standard documentation on this is very extensive, but there is a lot of material to review, making it very difficult for “first-time users” of Spec-Driven Piping to really grasp the requirements. This article will walk through these requirements, explain what they are, and explain how they differ for the different types of fittings.


Using Spec-Driven Piping, there are certain parameters that need to be added to a fitting model before it can be inserted into a pipeline. Most important of those parameters is the part parameter “FITTING_CODE”, which defines the fitting and dictates what and how the other parameters are used (shown in the below table). PTC provides two critical documents to help understand their parameter requirements: Fitting Parameters Based on Fitting Code and Mandatory Port Requirements. A table illustrating the parameters used by each Fitting Code

As shown in the table above, PTC specifies several other possible parameters after FITTING_CODE: SIZE, NEW_SIZE, BRANCH_SIZE, END_TYPE, Y_ECCENTRICITY, FLOW_CONSTRAINED, and OFFSET. Depending on the parameter itself, these may be added as either a “model” (or “part”) parameter and a “port” (or “feature”) parameter.

Model Parameter Definitions

So what do all these fitting parameters represent? Let’s start with the Model Parameters.

The model parameters “FITTING_CODE, Y_ECCENTRICITY and FLOW_CONSTRAINED” are defined in the overall model (see picture below).

Example of a part parameter

As shown in the table earlier in the article, PTC has defined 13 possible “FITTING_CODES”. These are grouped by “function”:


One interesting thing to note – although the documentation explicitly spells out “CORNER_LET” as a possible option, this value is not actually a valid option, as the piping module currently doesn’t actually have a way to actually add them (more info here).

For the two other model parameters, Y_ECCENTRICITY and FLOW_CONSTRAINED:

  • Y_ECCENTRICITY is a flag that denotes a different position along the vertical “Y” axis for the outlet port (PORT1) as the inlet port (PORT0).
    • It tells Creo that the two coordinate systems are not inline and to offset the pipeline by the measured distance between the two.
  • FLOW_CONSTRAINED is a flag that indicates a fitting has a certain flow direction and can only be inserted into a pipeline in that direction.
  • Both of these generally use an integer value of 1 but the actual value of the parameter is irrelevant
    • e.g. -3453 and 5 will yield the same results. Creo simply looks to see if the model parameters exist by name, and if they do exist, Creo knows how they behave.

Feature Parameter Definitions

Aside from those, the other required parameters SIZE, NEW_SIZE, BRANCH_SIZE, END_TYPE, and OFFSET are added as port parameters. The port parameter is a feature parameter that is defined on the coordinate system of the model itself (see picture below).

Example of a feature parameter

  • As you might suspect SIZE, NEW_SIZE, and BRANCH_SIZE act as the size of the inlet (PORT0), outlet (PORT1), or branch (PORT2) ports respectively. In reality, the behavior of these three parameters can be a bit complex:
    • Creo searches the model tree for the first feature with the “SIZE” parameter and uses that to uniquely identify the inlet coordinate system
    • Because of this, it is best to not have “SIZE” parameters on any other coordinate system features, as this will be used as the default placement for the fitting.
  • END_TYPE indicates the end type that connects the ends of pipes together. The best practice is to apply this parameter at each relevant port.
  • OFFSET is an optional parameter that is the distance between a port coordinate system and the corresponding face on the pipe; this is used when the port is not aligned on the pipe face.

As the table earlier in the article showed, these feature parameters vary as to when they’re needed and what their values should be. This post will cover the rules for INLINE, INLINE_JOINT, CORNER, ELBOW, and NOBREAK only, the other fitting codes will be covered in later posts.

INLINE Fittings

The Fitting Codes of INLINE and INLINE_JOINT are very similar but with two minor differences.

  • The documentation states that the typical fitting for an INLINE is a valve and an INLINE_JOINT is a coupling or sleeve.
  • INLINE fittings allow the option for a “Y_ECCENTRICITY” and “FLOW_CONSTRAINED” parameter, while an INLINE_JOINT does not.

What this means essentially, is that an INLINE fitting can be an INLINE_JOINT, but that an INLINE_JOINT cannot be an INLINE. This special INLINE_JOINT code also enables Creo to display only these fittings when a user selects the “Joint Fitting” option in the “Cut Pipe” GUI, shown below.

Creo screenshot of Joint Fitting option in Cut Pipe GUI

ELBOW and CORNER Fittings

PTC decided to split up the fitting codes of ELBOW and CORNER due to a similar reason as INLINE_JOINT and INLINE. In this case, ELBOW and CORNER have the exact same parameter requirements – however, they vary when it comes to insertion behavior.

Put simply:

  • A CORNER fitting should really only be used for Angle Valves – stand-alone models that may bend the pipe at an angle.
  • An ELBOW, on the other hand, offers a lot more functionality.
    • It allows for what the documentation refers to as “Trimmed Elbows”. A Trimmed elbow is essentially a family table of a part that represents all the possible angles that a model/corner could take. Creo will automatically match the angle of the corner with the appropriate instance in the family table.
    • Because of this added functionality, Creo also then added the “At All Corners” flag. This offers significant time savings when modeling pipes, as you can simply model all the bends as needed, and then place all the “elbow” fittings with one click!

The “Insert Fitting” GUI shows what some of these options look like:

Creo screenshot of Elbow Insertion option in Insert Fitting GUI

NOBREAK Fittings

As its name suggests, NOBREAK fittings do not break a pipeline. Generally, these fittings are ones that support the pipe or wrap around the pipe, such as clamps, tie-downs, U-Bolts, or supports.

This is important because it significantly changes the way Creo handles these fittings, especially when solidifying your pipeline. In a normal straight section of pipe, adding a normal fitting (such as a flange, or a reducer) would essentially create two separate pipe solids – one on either side of the fitting. NOBREAK fittings, on the other hand, are meant to be completely outside of the pipe geometry itself.

Because these fittings only “wrap” around a continuous section of pipe, NOBREAK is only required to have a SIZE parameter, as it does not affect the pipeline geometry, and therefore cannot possibly have a NEW_SIZE or END_TYPE parameter.


The above examples are just a small number of the unique quirks and exceptions defined in Creo’s Spec-Driven Piping. In the next post, we will explore FLANGE, GASKET, and BRANCH fittings, and will cover some of the other nuances of the “END_TYPE” parameter and “end type compatibility”. We then plan to cover the last few codes, (INLINE_REDUCING,  CORNER_REDUCING, BRANCH_REDUCING, and BRANCH_LET) in another future post, so stay tuned for more!