Cable Fill Calculations - Intergraph Smart 3D - Reference Data - Hexagon PPM

Intergraph Smart 3D Electrical Reference Data

English (United States)
Intergraph Smart 3D
Search by Category
Reference Data
Smart 3D Version

We recommend that you modify the methods in the CableFillRule.cs file to customize the fill calculation rules.

Modifying the Existing Project

  • To customize the fill calculations for cableway features, modify GetCwayFillParams()in CableFillRule.cs.

  • To customize the fill calculations for conduit features, modify GetConduitFillParams()in CableFillRules.cs.

Data for Calculating Fill Percentage

The fill percentage is calculated by dividing the area occupied by all the cables by the cable tray or conduit area. That is, the fill percentage is the percentage of the area occupied by all the cables in a feature in comparison to that of the area of the feature. To calculate the fill percentage, you need the following data:

  • Properties of the cableway feature such as width, depth, area, and fill efficiency.

  • Number of cables passing through the feature.

  • Properties such as diameter, area, signal type, number of conductors (single or multi-conductors), and conductor size of each cable passing through the feature.

Getting Properties of the Cableway Feature (Width, Depth, Area)

The following methods get the cableway feature properties:

  • GetWidthAndDepthFromFeature()gets the width and depth properties for the feature.

  • GetLoadWidthAndDepth()gets width and depth properties for cable tray parts.

  • GetAllowedArea()gets the maximum allowed area from the NECStandardTables.xml file.

Getting the Collection of Cables and their Properties

The following sample code gets the properties of a collection of cables in relation to the cableway feature.

m_intCableCount = oTargetObjects.Count;

lNoCables = m_intCableCount;

m_intCableCountMultiCon = 0;

if (oTargetObjects.Count > 0)


for (int iIndex = 0; iIndex < oTargetObjects.Count; iIndex++)


m_intSignalType = 0;

oCablePart = null;

oCableRun = oTargetObjects[iIndex];

m_intSignalType = oCableRun.SignalType;

oCablePart = oCableRun.Cable;

if (oCablePart != null)






ProcessCableProperties() calculates the total wire area (sum of areas of all the cables passing through a cable part), and the sum of the diameters of all the cables based on cable voltage rating, signal type, number of conductors, and size of the conductors.

You can modify ProcessCableProperties()to include other necessary cable properties, such as signal type, cable tray type, and cable size.

Calculating the Maximum Fill Percentage

CalculateMaximumFill()calculates the maximum allowable fill area based on cable voltage rating, maximum allowable area, number of conductors, and cable tray type using the following methods:

  • GetPercentFill1()

  • GetPercentFill2()

  • GetPercentFill3()

  • FillCalcUsingDiameters()

Creating the New Project

Apart from modifying the existing project, you can create a new .NET project and implement the rules using the following guidelines:

  • The project ProgID must match the ProgID defined in the CalculationProgIDs.xml file.

  • The CableFillRule class must implement the methods listed below:

    • GetCableFillValueForFeature()

    • CableRealTimeFill()

  • Any new cable fill rule class must inherit the CableFillCalculationRule()class.

  • Do not modify or remove any of the variable declarations in the project. You can add additional data types if necessary.

  • Always set the calculated fill value to the dPercentFill variable.

  • When generating a report for the fill calculations, return the values for dTotalTsraverseArea, dAllowableTraverseArea, dAvailableTraverseArea, and bStatus. For more details on how to calculate fill, go through the existing sample code.

  • For more information on cable fill calculation logic, refer to the Tray Fill Calcs Flowchart_2008.pdf. This document is delivered to the [Product Folder]\Programming\ExampleCode\Cable\Rules\CableRules\Doc folder.