Piping Check Manufacturability - Intergraph Smart 3D - Reference Data - Hexagon PPM

Intergraph Smart 3D Piping Reference Data

PPMProduct
Intergraph Smart 3D
aSubProduct
Piping
PPMCategory_custom
Reference Data
Version_SThreeD_Custom
13

The piping manufacturability checker analyzes piping in the current workspace and reports pieces that will be difficult or impossible to manufacture. The checker has software simulators for cutting, bending, and coating operations, which it uses to test individual pipe pieces and pipe spool assemblies. An XML data file named PipeBenders.xml controls the shop workstation simulators. This file should be edited to reflect the requirements, standards, and equipment of your company.

The PipeBenders.xml data file is fetched from either: the directory given by the "ParameterFile" attribute on the Production Equipment object named "DefaultBendingMachine" that is assigned to the Workcenter named
"DefaultWorkcenter", in the catalog, or, if that is not found, (2) the [Product Directory]\3D\CheckMfcty\Data.

You can double-click PipeBenders.xml to view the file in Microsoft Internet Explorer. You may edit the file with Notepad.exe or any other text editor. However, editing with an XML-aware editor, such as Microsoft XMLNotepad.exe is recommended, as this type of editor enforces valid XML syntax. If an ordinary text editor, such as Notepad.exe, is used, be sure to view the file afterwards in Internet Explorer to check the syntax. Internet Explorer reports any entries that violate XML syntax rules. Remember to always put quotes around all attributes.

Valid: nominal_diameter=”100”
Not valid: nominal_diameter=100

Note, if editing the PipeBenders.xml file with a non-xml editor, such as Notepad, do NOT put carriage returns in the middle of entity definitions, for example:

Valid: < Thing id=”t5” attr_a=”1” attr_b=”abc”>
Not Valid:
<Thing id=”t5”
attr_a=”1”
attr_b=”abc”>

After editing the PipeBenders.xml file, three checks should be performed before putting it into production use:

  • View the file in Internet Explorer and verify that all entities are as expected.

  • Start Smart 3D and use the Tools > Check Manufacturability on some piping. Verify that the results are as expected.

  • After exiting Smart 3D, use Microsoft Internet Explorer to view the file PipeBendersEcho.xml in [Product Directory]\3D\CheckMfcty\Data. Verify that the entities in this file match those in PipeBenders.xml.

Factory

The file always begins with <Factory> and ends with </Factory>. If the units attribute is given (see below), then all length dimensions within the file are treated as being in the named units. The factory contains one or more work center and pipe spec entities. Optionally, a pipe bending elongation table can be defined. The factory has five attributes that should be declared:

units
angle_units
max_pipe_spool_planes
max_pipe_spool_length
max_pipe_spool_width

Work Centers

Pipe bending machines and treatment tanks must be located within a named work center. The example data file just defines a work center called "pipe shop". If there are objects in the shop, such as building columns, that need to be avoided when bending pipe, declare <Block …> objects within the work center, as defined below.

Default Units

Default units can be declared for the factory, for work centers, for individual pipe bending machines, or for each individual pipe bend die or shape block. In each case the attribute name is units. Allowed values are: METER, MM, FOOT, and INCH. The default value is METER, for example: units="METER"

Similarly, default angle units may also be declared for the factory, for work centers, for individual machines, or for each individual pipe bend die or shape block. In each case the attribute name is angle_units. Allowed values are: DEGREE and RADIAN.

Pipe Bending Machines

Each pipe bending machine is defined with an entry of the form:

<RotaryPipeBender id=”name” other attributes…>
<Block …>
<PipeBendDie …>
</RotaryPipeBender>

The required and optional attributes are listed in the table below:

Attribute

Value

Required?

Description

Id

String

required

Unique name

Units

String

optional

METER, MM, INCH, or FOOT (the default is whatever units were declared or defaulted for the WorkCenter)

angle_units

String

optional

RADIAN or DEGREE

max_pipe_diameter

number

required

Largest diameter pipe that machine can bend

height_above_floor

number

required

Height of the pipe feed axis above the shop floor

max_pipe_length

number

required

Longest length of pipe that can be loaded on this machine

max_number_bends

number

optional

Default is 1000

max_bend_angle

radians

optional

Default is 3.15 radians (about 184 degrees)

min_bend_angle

radians

optional

Default is 0.05 radians (about 3 degrees)

Pipe Bend Dies

The capabilities of the pipe bender are defined by listing the pipe diameters and bend radii that the bender can bend. These are listed as PipeBendDie entities in the XML file.

Attribute

Value

Required?

Description

Nominal_diameter

number

Required

Pipe nominal diameter in current units

bend_radius_multiplier

number

Required

Actual bend radius divided by nominal diameter

Units

string

Optional

METER, MM, INCH, or FOOT (default is whatever units were declared or defaulted for the Pipe Bender)

min_start_clamp

number

Optional

Defaults to 4 × nominal_diameter if not given

min_between_bends

number

Optional

Defaults to 6 × nominal_diameter if not given

min_end_clamp

number

Optional

Defaults to 4 × nominal_diameter if not given

Block Geometry

Pipe bending machines define a default solid model for each bending machine based on the maximum pipe diameter, height above floor, and maximum pipe length. This default solid model consists of three blocks named “base”, “body”, and “controller”. To override this default geometry, declare blocks with these names and provide the desired parameters.

The geometry of each block is defined in <Origin …> and <Size …> entities. The sketch below shows the block geometry for the delivery bending machine:

Treatment Tank

Rectangular tanks for applying surface treatments to pipes or pipe spools are also declared in the PipeBenders.xml file. Like PipeBenders, the TreatmentTank entity has an id attribute, an optional units attribute, and an optional Position entity. The only additional attribute that TreatmentTanks will have is treatment, which is mandatory. The simulator goes to the PipeSpec to see if a treatment is required for a pipe. If the treatment_tank attribute is given in the PipeSpec, the simulator looks for a TreatmentTank objects that can apply that treatment. Suppose that the PipeSpec called out treatment_tank="GALVANIZE". The example below would declare a treatment tank that could apply that treatment:

<TreatmentTank id="Galvanizer" units="METER" treatment="GALVANIZE">
<Size x="1" y="4" z="1"/>
<Position x="5" y="7"/>
</TreatmentTank>

The Size entity gives the dimensions of the treatment tank. Pipe spools that require the named treatment (as defined in the PipeSpec) be checked for size against the dimensions of the treatment tank.

Pipe Internal Sprayer

Internal coatings may be sprayed into pipes using spray nozzles on long tubes. To specify the geometric limits that can be accommodated, define one or more Pipe Internal Sprayer objects in the xml file. Sprayers have four attributes:

id - a unique name
max_depth – the maximum length of pipe that the sprayer can handle
min_pipe_diameter – the smallest pipe size that the sprayer can fit it
max_pipe_diameter - the largest pipe size that the sprayer can handle.

In addition, a list of coating materials that the sprayer can apply is given. These should match the internal_coating attribute names given in pipe specs. An example of a Pipe Internal Sprayer is given below:

<PipeInternalSprayer id="Sprayer 1" units="METER" max_depth="5" min_pipe_diameter="0.050" max_pipe_diameter="0.200">
<Material id="EPOXY"/>
<Material id="EPOXY_20"/>
</PipeInternalSprayer>

Pipe Flange Welder

Internal coatings may be sprayed into pipes using spray nozzles on long tubes. To specify the geometric limits that can be accommodated, define one or more Pipe Flange Welder objects in the xml file. Pipe Flange Welders have six attributes:

id - a unique name
max_flange_diameter – the largest flange size allowed.
min_pipe_diameter – the smallest pipe size that the flange welder can handle.
max_pipe_diameter - the largest pipe size that the flange welder can handle.
min_pipe_length – the shortest pipe size that the flange welder can handle.
max_pipe_length - the longest pipe size that the flange welder can handle.

Pipe Spec

Each pipe line in the software specifies the piping specification (material class) that is to be applied to it. The piping specification contains a wide variety of data on piping and fittings to be used in the pipe line. Additional attributes needed to check manufacturability, which are not currently in the piping specification, are defined in pipe spec entries in the XML file.

Currently there are five attributes, treatment_tank, internal_coating, max_branch_distance, max_branches, and units. The example below specifies that all piping that references pipe spec "N0" will require a GALVANIZE treatment in a treatment tank. Note that one or more Treatment Tank objects should be defined that can apply the treatment.

<PipeSpec id="N0" treatment_tank="GALVANIZE"/>

The example below specifies that all piping that references pipe spec "N1" require an EPOXY coating applied by a Pipe Internal Sprayer, that a main pipe may have no more than 10 branches, and that branches can be no further than 3 meters from the nearest end of the main pipe. Note that one or more Pipe Internal Sprayer objects should be defined that can apply the coating.

<PipeSpec id="N1" internal_coating="EPOXY" max_branches="10" max_branch_distance ="3" units="METER"/>

Pipe Bending Elongation Table

Pipe normally stretches to some extent during bending. Pipe Length Checks takes this into account if a pipe bending elongation table is given. The data may be given in three ways. The first is to specify the amount of elongation per unit of bend angle, for each pipe size, as shown in the example below:

<PipeBendElongationTable id="default" units="MM" angle_units="DEGREE">
<!-- Assume 9 mm elongation for a 90 degree bend, or 0.10 mm per degree -->
<PipeSize nominal_diameter="50" bend_radius="100" elongation_per_angle="0.10"/>
<PipeSize nominal_diameter="100" bend_radius="200" elongation_per_angle="0.17"/> </PipeBendElongationTable>

Note that elongation_per_angle has units of <length>/<angle>, and is dependent on both the units and angle_units attributes set for the table or for the individual PipeSize entity.

The elongation values for a given pipe size may also be given as a list of angle, elongation value pairs, as shown below:

<PipeBendElongationTable id="default" units="MM" angle_units="DEGREE">
<PipeSize nominal_diameter="50" bend_radius="100">
<Value bend_angle="15" elongation="3"/>
<Value bend_angle="90" elongation="13"/>
</PipeSize>
</PipeBendElongationTable>

The two methods may be intermixed in the table. That is, some pipe sizes may be given an elongation_per_angle, and other sizes may have lists of values. If both are given for a pipe size, the elongation_per_angle is ignored and the values list is used. The software will interpolate between given values or extrapolate above or below the given values when looking up the elongation for very small or very large bend angles.

Elongation is commonly measured by taking a straight piece of pipe of known length, bending it to a known angle, and then measuring the distances from the bend intersection point to the two ends, as shown below:

The centerline length of the pipe after bending is:

calculated_centerline = L1 + L2 – 2×R×tan(angle/2) + R×angle

The elongation is the difference between this and the actual original pipe length:

elongation = calculated_centerline – original_length

Note that this can be a negative number if strong hydraulic booster bending is used to avoid thinning of the outer pipe wall during bending. The program handles both positive and negative elongation compensation.

The program will accept input of the measured data and will perform the above calculations before storing the elongation. In this case, the data is entered using the pt_pt_elongation attribute, which is defined as:

pt_pt_elongation = L1 + L2 – original_length

An example of defining a bending elongation table in this manner is:

<PipeBendElongationTable id="default" units="MM" angle_units="DEGREE">
<PipeSize nominal_diameter="50" bend_radius="100">
<Value bend_angle="15" pt_pt_elongation="30"/>
<Value bend_angle="90" pt_pt_elongation="170"/>
</PipeSize>
</PipeBendElongationTable>