Changing the Support Discipline - Intergraph Smart Reference Data Standard Database - Version 12.1 - Help - Hexagon PPM

Standard Database for Intergraph Smart Reference Data Hangers and Supports Help

Language
English
Product
Intergraph Smart Reference Data Standard Database
Search by Category
Help
Standard Database for Smart Reference Data Version
12.1

Majority of the Hangers and Supports are designed to support only pipes. However, you can use an existing Support to support any route object, such as a cable tray, conduit, duct or a combination of route objects by changing the support discipline type. This section explains how to use a support on different types of supported objects.

Part Class Type

Each support class has PartClassType property that defines the route discipline in which the support is used. The following is a list of valid part class types:

  • PipeSupportDefinitionClass - Pipes

  • DuctSupportDefinitionClass - Ducts

  • CableTraySupportDefinitionClass - Cable Trays

  • ConduitSupportDefinitionClass - Conduit

  • CombinedSupportDefinitionClass - A combination of two or more route types

A support works only on the type of route or routes that its PartClassType is designed for. For example, you cannot place a Combined support on a single pipe. However, you can place a Combined support on a combination of a pipe and a cable tray or any other route object as the supported object.

  • A support does not work, if you change the PartClassType of a support that has been loaded in the catalog.

  • Set the PartClassType when you bulkload the support into the catalog.

System Hierarchy

Every Hangers and Supports workbook has a R-Hierarchy worksheet that describes how the support displays in the catalog browser. Each part class type has different root nodes. The support must be in a predefined place in the hierarchy to display in the browser.

The root nodes are defined in the R-Hierarchy and ClassNodeType worksheets in the HS_System workbook.

Changing Support Disciplines - ClassNode & Names

For a support to be usable for a certain discipline type, select the appropriate top node from the heirarchy. For more information about the catalog hierarchy, see Smart 3D Reference Data Guide. The following HS_Assembly_V2 workbook has the Support Assembly Information for the discipline types, as shown in the following graphic:

Changing Support Disciplines - Relation Source & Destination

Part Selection Rule

The parts and symbols that are used to create assemblies rely on part selection rules. The part selection rules define the type of part to use at run time and is based on specific criteria. For example, a shoe assembly selects the shoe symbol based on the nominal diameter of a pipe. The part selection rules are written specifically for the part and are based on the way the part is designed. The rule fails if you select an incorrect supported object. To fix this issue, you must select a proper rule for the supported object, or select a part that does not require a selection rule.

If you have Programming Resources installed, all the part selection rules are available in the PartSelection and PartSelectionRule folder in one of the following locations:

  • SmartPlant\3D\Programming\ExampleCode\HangersAndSupports\Rules

  • Smart3D\Programming\ExampleCode\HangersAndSupports\Rules

Code Changes

Part of the code that is used to create Hangers and Supports assemblies might not succeed when used on a different supported object. For example, the application might display error when you:

  • try to use a cable tray as a pipe object

  • try to get a nominal diameter of a duct that does not exist

The code treats the supported object as a pipe and tries to get an object or information that does not exist. You can resolve the issues by modifying the code. There are multiples solutions and every scenario has a different solution. The following examples provide a basic idea of how to resolve an error that occurs during conversion.

Changing the Support Discipline Type

Changing the support discipline type involves the following steps:

  1. Set the PartClassType in the Hangers and Supports Assembly worksheet to the appropriate discipline type.

  2. Add the assembly class to the hierarchy in the hierarchy worksheet.

    The top node of the assembly must be an appropriate support discipline node.

  3. Use a part selection rule with the supported object type or a part that does not need a part selection rule.

  4. Bulkload the workbooks with changes or additions to the catalog.

  5. Fix the code issues that occur due to changes in the support discipline.

Example - Changing a Pipe Support to a Duct Support

The following example uses the Assy_FR_UC_WS support from the HS_Assembly workbook and creates a similar support that works on a Duct instead of a Pipe.

You must install Programming Resources, which is available on Intergraph SmartĀ® Support.

Step 1 - Part Class

  1. Create a copy of the Assy_FR_UC_WS worksheet and rename it as Assy_FR_UC_WS_DUCT.

  2. Change the UserClassName to Unbraced Cantilever for Duct - WS.

  3. Add a to Definition column as shown in the following graphic:

    Changing Support Discipline - Example - Step1 - PartClassType - 1

  4. Rename the part numbers as Assy_FR_UC_WS_DUCT<number>. For example, Assy_FR_UC_WS_DUCT1.

  5. Add a under Start for each part number.

    Changing Support Discipline - Example - Step1 - PartNumber

Step 2 - Create Hierarchy

  • Create nodes for the new support under the HVAC discipline.

    ClassNodeType Sheet

    Changing Support Discipline - Example - Step2 - ClassNodeType

    R-Hierarchy Sheet

    Changing Support Discipline - Example - Step2 - R-Hierarchy

    R-ClassNodeDescribes Sheet

    Changing Support Discipline - Example - Step2 - ClassNodeDescribes

    The hierarchy for the new class is as follows:

CLASSNODE_ASSEMBLY_DUCT

CLASSNODE_ASSEMBLY_DUCT_SPASSEMBLY

CLASSNODE_ASSEMBLY_DUCT_SPASSEMBLY_CANTILEVERS

Assy_FR_UC_WS_DUCT

Step 3 - Bulkload

  • Bulkload the modified workbook to the catalog in Add, Modify, or Delete records in existing catalog mode using the Bulkload Reference Data tool.

    The new Duct support displays in the Catalog Browser.

    Changing Support Discipline - Example - Step3 - Bulkload

Step 4 - Code Changes

.NET Code Changes

When you place a Duct support, the software might display the following error message:

No Joints obtained from Assembly Information Rule

  • Turn-on Error Logging to see the following details in the error message.

    Paths and line-numbers might differ.

System.InvalidCastException: Unable to cast object of type 'Ingr.SP3D.Support.Middle.DuctObjectInfo' to type 'Ingr.SP3D.Support.Middle.PipeObjectInfo'

.. at Ingr.SP3D.Content.Support.Rules.Assy_FR_UC_WS.ConfigureSupport(Collection`1 oSupCompColl) in m:\SharedContent\Src\HangersAndSupports\Rules\CustomSupportDefinition\Pipe\PipeHgrAssemblies\PipeHgrAssemblies\Assy_FR_UC_WS.cs:line 149

  • Open the PipeHgrAssemblies project and navigate to the file and the line of code from the following error message to verify the issues:

PipeObjectInfo routeInfo = (PipeObjectInfo)SupportedHelper.SupportedObjectInfo(1);

double pipeDiameter = routeInfo.OutsideDiameter;

In the above example code, the supported object is casted to a PipeObectInfo object. The PipeObectInfo object returns an error because the supported object is a duct. The application uses routeInfo variable to get the outside diameter of the pipe, and the outside diameter is used to set various offsets and dimensions of the support.

The following is one of the many solutions to resolve this issue:

  • Verify if the supported object is a pipe or a duct before casting. If the supported object is a pipe, use the original code. If the supported object is a duct, cast the supported object to DuctObjectInfo.

  • Use the width to set the pipe diameter.

    This solution might cause problems if the pipe diameter is used for the height of the pipe and the if the duct is not square, but is an acceptable solution.

double pipeDiameter = 0;

if (SupportedHelper.SupportedObjectInfo(1).SupportedObjectType == SupportedObjectType.Pipe)

{

PipeObjectInfo routeInfo = (PipeObjectInfo)SupportedHelper.SupportedObjectInfo(1);

pipeDiameter = routeInfo.OutsideDiameter;

}

else if (SupportedHelper.SupportedObjectInfo(1).SupportedObjectType == SupportedObjectType.HVAC)

{

DuctObjectInfo routeInfo = (DuctObjectInfo)SupportedHelper.SupportedObjectInfo(1);

pipeDiameter = routeInfo.Width;

}

  • Rebuild the solution.

  • Register the output dll file based on the system and the project setting by copying the PipeHgrAssemblies.dll to the following location:

    [Product Reference Data Folder]\SharedContent\Custom Symbols

  • Start S3D Project Management and select an appropriate catalog.

  • Go to Tools and select Update Symbol Configuration.

    You should now be able to place the support.

VB 6 Code Changes

When you place a duct support, the software might display the following error message:

No Joints obtained from Assembly Information Rule - OID of Hanger is: {00022305-0000-0000-0100-E6ED09551F04}

  • Turn-on Error Logging to see the following details in the error message.

*** Info ***

Time : 03/18/15 15:28:55

Info : GetExternalPipeDiameter::

Help : AssemblyInformationRuleUtils;0

*** Info ***

Time : 03/18/15 15:28:55

Info : IJHgrAssmInfo_GetAssemblyJoints:

Help : Assy_FR_UC_WS;0

The error message points to the file and the function that causes the issue.

  • Go to HS_Assembly project and select the Assy_FR_UC_WS class module.

  • Search for GetExternalPipeDiameter.

    The search result points to the following line of code:

PIPE_DIA = GetExternalPipeDiameter(my_IJHgrInputConfigHlpr, 1)

This code is designed for pipes and the application treats the supported object as a pipe.

To solve this issue, check if the supported object is a pipe or a duct and then use different functions to get the dimension, either width or the depth, of the supported object. The following is one of the many solutions to resolve this issue:

  • Declare a few variables required for the functions:

Dim inputObjColl As Object

Dim inputObj As Object

Dim dblRadius As Double

Dim csType As CrossSectionShapeTypes

Dim dRouteWidth As Double

Dim dRouteDepth As Double

Dim strUnit As String

  • Use the route path feature to check if the supported object is a duct.

my_IJHgrInputConfigHlpr.GetSupportedCollection inputObjColl

Set inputObj = inputObjColl.Item(1)

Dim routePathFeat As IJRtePathFeat

Set routePathFeat = inputObj

If TypeOf routePathFeat Is IJRteDuctPathFeat Then

//A generic method od getting the pipe diameter

my_IJHgrInputConfigHlpr.GetRteCrossSectParams inputObj, csType, strUnit, dblRadius, dRouteWidth, dRouteDepth

PIPE_DIA = dRouteWidth * 2#

PIPE_DIA = GetPipeODwithoutInsulation(PIPE_DIA, oRoute)

Else

// Use the line of code that gets the pipe diameter

PIPE_DIA = GetExternalPipeDiameter(my_IJHgrInputConfigHlpr, 1)

End If

You should now be able to place the support.