Use IFC Rules to Assign Permission Groups - Intergraph Smart 3D - Administration

Intergraph Smart 3D Project Management

Intergraph Smart 3D
Administration & Configuration
10.1 (2014 R1)

  • The functionality described below is only supported by a Visual Basic rule delivered with software versions 2011 R1 and earlier. In the current version of the software, the functionality works with migrated databases.

  • In versions of the software prior to Version 2014, an example IFC rule is delivered under [Installation folder]\Programming\ExampleCode\Rules\InterferenceRules.

If you use an IFC rule to assign Interferences to permission groups, then that rule overrides the permission group selection on the Interference Server Settings dialog box. The following example, described inside the Visual Basic software for the Post Processing Rule, shows you how to set up such a rule.

  1. Open the PostProcessorRule.cls class, and navigate to the Class_Initialize subroutine.

  2. Initialize the permission groups with the proper permission group names in a class member variable.

    For example:

    private string[] m_strPermissionGroups = new string[] {
    "IFC Supports", // Name of Supports Related Permission Group created by user.
    "IFC Conduits", // Name of Conduits Related Permission Group created by user.
    "IFC Cableway", // Name of Cableway Related Permission Group created by user.
    "IFC HVAC", // Name of HVAC Related Permission Group created by user.
    "IFC Piping", // Name of Piping Related Permission Group created by user.
    "IFC Structure", // Name of Structure Related Permission Group created by user.
    "IFC Equipment", // Name of Equipment Related Permission Group created by user.
    "IFC Volumes" // Name of Volumes Related Permission Group created by user.

    These are the names of the permission groups to which the interferences will be assigned. You will need to create these permission groups using the Project Management task. See Making Permission Group Topic for details.

  3. Go to the "IJDInterferenceRule_CreateInterference" method and uncomment the following lines:

    If IfcType = IfcServerInterference Then
    'assign a permission group to the IFC object based on rule
    AssignIFCPermissionGroup pInterferenceObj, strParentType1, strParentType2
    End If

    The "IJDInterferenceRule_CreateInterference." method gets triggered just after Interference Detection detects an interference and just before persisting the same to database. The main purpose of this rule is to decide whether you really need this interference to be persisted in the database.

  4. Recompile the software using File > Make IFCCustomRule.dll.

    This list of permission groups are listed by rank. When an interference occurs with two different objects, the interference is recorded in the lowest rank of interfering objects.

    The raking on the basis of which permission groups will be assigned is defined in the GetPermissionIndex subroutine.

    The following snippet shows how to define the raking:

    Select Case (strParentType)
    Case "Pipe Supports", "Cable Tray Supports", "Duct Supports"
    GetPermissionGroupIndex = 0
    Case "Conduit Components", "Conduits"
    GetPermissionGroupIndex = 1
    Case "Cable Tray Components", "Cableway Along Leg", "Cableway Straight", _
    "Cable Trays", "Cableway Turn"
    GetPermissionGroupIndex = 2
    Case "HVAC Components", "Ducts"
    GetPermissionGroupIndex = 3
    Case "Pipes", "Piping Welds", "Piping Components", "Piping Instruments", _
    "Piping Specialty Items"
    GetPermissionGroupIndex = 4
    Case "Member Part Linear", "Member Part Curve", "Slab", _
    "Equipment Foundation", "Footing", "Stairs", "Ladders", "Handrails"
    GetPermissionGroupIndex = 5
    Case "Legacy Equipment", "Legacy Designed Equipment", "Equipment"
    GetPermissionGroupIndex = 6
    Case "Interference Volumes"
    GetPermissionGroupIndex = 7
    Case Default
    GetPermissionGroupIndex = -1
    End Select

This is the hierarchy of object types. If an object that is lower in the hierarchy (lower permissiongroupindex) interferes with an object higher in the hierarchy (higher permissiongroupindex), the interference is assigned to the permission group of the object lower in the hierarchy.

Making Permission Groups

Start the Project Management task and make permission groups named "IFC Cableway," "IFC Piping," "IFC Structure," and so on, as shown here. Then follow the steps below:

Testing the IFC Rule

  1. Start the interference check service.

  2. Select the model, and select permission group IFC as the group to which to assign interferences.

  3. Click Start to start the interference detection process.

    The process starts and begins running.

  4. After 5 minutes, refresh or define a workspace that includes the objects placed.

    You should see interferences created between the objects.

  5. Check the permission group of the interference object.

    You will see the following:

    Interfering Objects

    Permission Group

    Piping against structure

    : IFC Piping

    Equipment against structure

    : IFC Structure

    Piping against cabletray

    : IFC Cableway

    Structure against cabletray

    : IFC Cableway

  6. Stop the interference detection process.

See Also

New Permission Group Dialog Box
Interference Server Settings Dialog Box
IFC Permissions at Satellite Locations