EKL - Automation of Flexible pipe creation

Introduction

Purpose : Create and modify 3D Flexible pipe 

Availability : 25xFD02

  • EKL for Flexible Pipe/Duct
    • Add 3D Point , Get Node Type, Remove Node, Get/Set Build Algorithm, wGet/Set Build Mode, Get/Set Global Slack, Get/Set Length, Get/Set Minimum Bend Radius, Get/Set Local Slice Mode, Get/Set Local Slice Value, Update existing flexible pipe properties from a raw material or reference flexible pipe
    • EKL for Rigid Pipe / duct / tray
      • Update existing Rigid pipe properties from a raw material.

 

Examples

Add 3d points in flexible route

  • input parameter : FlexiblePipeRef    ->    Piping_Flexible_Pipe
let pBody(BodyFeature)
let pPoint(Point)
let NewPoint(Point)
let pGSMPoint(GSMPoint)
let pGSMPointCoord(GSMPointCoord)
let ListPoints(list)
let pPointType(PointType)
let NodeIndex(Integer)
let retCode(Integer)
let Validation(Boolean)
Validation = false
if(NULL <> FlexiblePipeRef)
{
    //Add3DPoint
    // create point
    pBody = FlexiblePipeRef ->Find ("BodyFeature","",TRUE)
    if (NULL <> pBody)
    {
        Trace (1, " Body retrieves : ",pBody.Name)
        SetWorkingContext(pBody)
        
        // Point_Test1
        NewPoint = new("Point", "Point_Test1", pBody)
        pPointType = "Coordinates"
        set pGSMPoint = NewPoint
        if (NULL <> pGSMPoint)
        {
            pGSMPoint.PointType = pPointType
            set pGSMPointCoord = pGSMPoint
            pGSMPointCoord.X = 100mm
            pGSMPointCoord.Y = 200mm
            pGSMPointCoord.Z = 300mm
            pGSMPointCoord.Update()
        }            
        Trace (1, " Body retrieves : ",NewPoint.Name)
        ListPoints.Append(pGSMPoint)
        
        //Point_Test2
        NewPoint = new("Point", "Point_Test2", pBody)
        pPointType = "Coordinates"
        set pGSMPoint = NewPoint
        if (NULL <> pGSMPoint)
        {
            pGSMPoint.PointType = pPointType
            set pGSMPointCoord = pGSMPoint
            pGSMPointCoord.X = 100mm
            pGSMPointCoord.Y = 300mm
            pGSMPointCoord.Z = 300mm
            pGSMPointCoord.Update()
        }
        Trace(1, " Body retrieves : ",NewPoint.Name)
        ListPoints.Append(pGSMPoint)
        
        set NodeIndex = 0
        set retCode = FlexiblePipeRef.Add3DPoint (ListPoints, NodeIndex)
        if(0 == retCode)
        {
            Validation = true
            Trace (1, "======Add3DPoint done successfullyh=======")
        }
        else
        {
            Validation = false
            Trace (1, "======Add3DPoint FAILED=======")
        }
    }
}

Find node point type pipe and remove node point of flexible pipe

  • input parameter : FlexiblePipeRef    ->    Piping_Flexible_Pipe
let NodeType(PipingNodeType)
let NodeIndex(Integer)
let NodeIndexToRemove(Integer)
let ListNodeIndexToRemove(List)
let oReferenceBendRadius(Length)
NodeIndex = 2
if(NULL <> FlexiblePipeRef)
{
    // Get Node Type
    FlexiblePipeRef -> GetNodeType(NodeIndex, NodeType)
    Message ("Node 2 Type:", NodeType)
    
    // Remove Nodes
    NodeIndexToRemove = 2
    ListNodeIndexToRemove.Append(NodeIndexToRemove)
    
    NodeIndexToRemove = 3
    ListNodeIndexToRemove.Append(NodeIndexToRemove)
    
    FlexiblePipeRef -> RemoveNode(ListNodeIndexToRemove)
    Message ("Removed Nodes:", ListNodeIndexToRemove)
}

Find build algorithm and build mode for flexible pipe and also user should set/change build algorithm and build mode for flexible pipe.

  • input parameter : FlexiblePipeRef    ->    Piping_Flexible_Pipe
let iBuildAlgo(CATEbm_BranchTypeEnum)
let oBuildAlgo(CATEbm_BranchTypeEnum)
let iBuildMode(CATEbm_FlexBuildModeEnum)
let oBuildMode(CATEbm_FlexBuildModeEnum)
if(NULL <> FlexiblePipeRef)
{
               // Build Algorithm
               // Set Build Algorithm
               iBuildAlgo = "CATEbm_FlexCurveFLX"
               FlexiblePipeRef -> SetBuildAlgorithm(iBuildAlgo)
               Message ("Set Build Algorithm: ", iBuildAlgo)
               
               // Get Build Algorithm
               FlexiblePipeRef -> GetBuildAlgorithm(oBuildAlgo)
               Message ("Get Build Algorithm: ", oBuildAlgo)
               
               // Build Mode
               // Set Build Mode
               iBuildMode = "CATEbm_BMLength"
               FlexiblePipeRef->SetBuildMode(iBuildMode)
               Message ("Set Build Mode: ", iBuildMode)
               
               // Get Build Mode
               FlexiblePipeRef->GetBuildMode(oBuildMode)
               Message ("Get Build Mode: ", oBuildMode)
}               

Set and get of global slack for flexible pipe

  • input parameter : FlexiblePipeRef    ->    Piping_Flexible_Pipe
let iGlobalSlack(Real)
let oGlobalSlack(Real)
if(NULL <> FlexiblePipeRef)
{
               // Global Slack
               // Get Global Slack
               FlexiblePipeRef -> GetGlobalSlack(oGlobalSlack)
               Message ("Get Global Slack: ", oGlobalSlack)
               
               // Set Global Slack
               set iGlobalSlack = 10
               FlexiblePipeRef -> SetGlobalSlack(iGlobalSlack)
               Message ("Set Global Slack: ", iGlobalSlack)
}

Set and get of length for flexible pipe

  • input parameter : FlexiblePipeRef    ->    Piping_Flexible_Pipe
let iLength(Length)
let oLength(Length)
if(NULL <> FlexiblePipeRef)
{
               // Length
               // Get Length
               FlexiblePipeRef -> GetLength(oLength)
               Message ("Get Length: ", oLength)
               
               // Set Length
               set iLength = 2000mm
               FlexiblePipeRef -> SetLength(iLength)
               Message ("Set Length: ", iLength)
}

set and get of minimum bend radius for flexible pipe

  • input parameter : FlexiblePipeRef    ->    Piping_Flexible_Pipe
let iMinBendRadius(Length)
let oMinBendRadius(Length)
if(NULL <> FlexiblePipeRef)
{
               // Minimun Bend Radius
               // Get Minimun Bend Radius
               FlexiblePipeRef -> GetMinimumBendRadius(oMinBendRadius)
               Message ("Get Length: ", oMinBendRadius)
               
               // Set Minimun Bend Radius
               set iMinBendRadius = 20mm
               FlexiblePipeRef -> SetMinimumBendRadius(iMinBendRadius)
               Message ("Set Length: ", iMinBendRadius)
}         

set and get of local slice mode for flexible pipe

  • input parameter : FlexiblePipeRef    ->    Piping_Flexible_Pipe
let iLocalSliceMode(CATEbm_SlackAndLengthModeEnum)
let oLocalSliceMode(CATEbm_SlackAndLengthModeEnum)
let Index(Integer)
set Index = 2
if(NULL <> FlexiblePipeRef)
{
               // Local Slice Mode
               // Get Local Slice Mode
               FlexiblePipeRef -> GetLocalSliceMode(Index, oLocalSliceMode)
               Message ("Get Length: ", oLocalSliceMode)
               
               // Set Local Slice Mode
               iLocalSliceMode = "IgnoreSlack"
               FlexiblePipeRef -> SetLocalSliceMode(Index, iLocalSliceMode)
               Message ("Set Length: ", iLocalSliceMode)
}

set and get of local slice value for flexible pipe

  • input parameter : FlexiblePipeRef    ->    Piping_Flexible_Pipe
let iLocalSliceValue(Length)
let oLocalSliceValue(Length)
let Index(Integer)
set Index = 2
if(NULL <> FlexiblePipeRef)
{
               // Local Slice Value
               // Get Local Slice Value
               FlexiblePipeRef -> GetLocalSliceValue(Index, oLocalSliceValue)
               Message ("Get Length: ", oLocalSliceValue)
               
               // Set Local Slice Value        
               iLocalSliceValue = 100mm
               FlexiblePipeRef -> SetLocalSliceValue(Index, iLocalSliceValue)
               Message ("Set Length: ", iLocalSliceValue)
}

 

Update existing flexible route properties from a raw material or flexible reference route.

  • A link is created between pipe and raw material and material name is copied from raw material to pipe.Explain the objectives of this test.
  • input parameter : FlexiblePipeRef    ->    Piping_Flexible_Pipe
  • Update existing flexible route properties from reference flexible route
// Update existing flexible route properties from reference flexible route
let retCode(Integer)
let ExistingPipeInst(Piping_Flexible_Pipe_Inst)
let ExistingPipeRef(Piping_Flexible_Pipe)
let ExistingPipeVPMRef(VPMReference)
let PipeInst(Piping_Flexible_Pipe_Inst)
// Step 1 : Retrieve the Flexible pipe Reference
set ExistingPipeInst = ReferenceRigidPipeInst
set PipeInst = TargetRigidPipeInst
if(NULL <> ExistingPipeInst)
{
               set ExistingPipeRef= ExistingPipeInst.Reference
}
if(NULL <> PipeInst AND NULL <> ExistingPipeRef)
{
               // Step 2 : SetNewRefrence
               // Existing Reference sent
               set ExistingPipeVPMRef = ExistingPipeRef
               if(NULL <> ExistingPipeVPMRef)
               {
                               set retCode = PipeInst.SetNewReference(ExistingPipeVPMRef)
                               if(0 == retCode)
                               {
                                               Message ("Set New Reference: ", PipeInst.Name)
                               }
               }
}

Update existing flexible route properties from raw material

//Update existing flexible route properties from raw material
let retCode(Integer)
let PipeInst(Piping_Flexible_Pipe_Inst)
let RawMaterial(Raw_Material_PipeTube)
let myQuery(PLMQuery)
let results(List)
let currentResult(PLMQueryResult)
let RawMaterialVPMReference(VPMReference)
// Step 1 : Retrive Raw Material from database
myQuery = CreatePLMQuery("Raw_Material_PipeTube")
myQuery->AddCriterion("V_Name","Rigid Raw Material PipeTube")
results = myQuery->RunQuery()
currentResult = results[1]
if(currentResult<>NULL)
{
               set RawMaterial = currentResult->LoadResult()             
               set RawMaterialVPMReference = RawMaterial
}
PipeInst = TargetFlexiblePipeInst
if(NULL <> PipeInst AND NULL <> RawMaterialVPMReference)
{
               // Step 2 : Set New Reference
               // Existing Reference sent
               
               set retCode = PipeInst.SetNewReference(RawMaterialVPMReference)
               if(0 == retCode)
               {
                               Message("Set New Reference :", PipeInst.Name)
               }
}