Thursday, August 18, 2011

SAC-Superelevation

If you want to recreate the LinkToSlope subassembly using the Subassembly Composer, then you may need this Expression:

IF((SuperSource=LeftInsideLane)AND(SE.HasLeftLI),SE.RightLI,
IF((SuperSource=LeftOutsideLane)AND(SE.HasLeftLO),SE.RightLO,
IF((SuperSource=LeftInsideShoulder)AND(SE.HasLeftSI),SE.RightSI,
IF((SuperSource=LeftOutsideShoulder)AND(SE.HasLeftSO),SE.RightSO,
IF((SuperSource=RightInsideLane)AND(SE.HasRightLI),SE.RightLI,
IF((SuperSource=RightOutsideLane)AND(SE.HasRightLO),SE.RightLO,
IF((SuperSource=RightInsideShoulder)AND(SE.HasRightSI),SE.RightSI,
IF((SuperSource=RightOutsideShoulder)AND(SE.HasRightSO),SE.RightSO,
0))))))))

The expression uses SuperSource which is the name of an Input Parameter using the Superelevation Enumeration. Use the expression either in the creation of a point or create a variable that is the grade to be used. There may be a better way, but as far as I can tell you can’t specify the input parameter of Superelevation to override the slope.

3 comments:

  1. I ended up creating the exact same formula in order to accomplish that. I have one more IF statement that allows the user to specify a variable "slope" that can be used if no superelevation is applied.

    ReplyDelete
  2. Hola Eric C, podrĂ­as poner tu codigo porfavor.

    ReplyDelete
  3. There is an error in the first 4 lines, they should be pointing to the left, instead of the right:

    IF((SuperSource=LeftInsideLane)AND(SE.HasLeftLI),SE.LeftLI,
    IF((SuperSource=LeftOutsideLane)AND(SE.HasLeftLO),SE.LeftLO,
    IF((SuperSource=LeftInsideShoulder)AND(SE.HasLeftSI),SE.LeftSI,
    IF((SuperSource=LeftOutsideShoulder)AND(SE.HasLeftSO),SE.LeftSO,
    IF((SuperSource=RightInsideLane)AND(SE.HasRightLI),SE.RightLI,
    IF((SuperSource=RightOutsideLane)AND(SE.HasRightLO),SE.RightLO,
    IF((SuperSource=RightInsideShoulder)AND(SE.HasRightSI),SE.RightSI,
    IF((SuperSource=RightOutsideShoulder)AND(SE.HasRightSO),SE.RightSO,
    0))))))))

    ReplyDelete