The OR that you are asking for is the Else If condition - I use this example in training
1) (IF) I ask Ronny if he wants to come for a drink in the bar after training - if he says yes - then I complete the condition (passed) and Ronny and I go for a drink at the bar.
2) (Else If) If Ronny says no then I ask the guy sitting next (George) to him if he wants to go for a drink and if he says yes - then I complete the condition (passed) and George and I go for a drink. You can have as many Else Ifs that you want - to ask each person on the row of trainees if they would go for a drink if the first person or previous person said No. You keep going until one says yes.
3) (Else) this is the catch all scenario at the end of the series of Else Ifs - i.e. I ask all the attendees in the room if they want to go for a drink and they all said No - then I have two choices - the first is the Else option - I could go for a drink on my own - the alternative is the End statement where I don't go for a drink and I go to my room instead.
This allows you to do an alternative if the first option fails - and I think is what you are looking for in your OR request. They are handled sequentially - so in your case you say you want to do a slope to intersect Surface 1 or Surface 2 - well there are four options here
Surface 1 is present and Surface 2 is missing - so the If would connect to Surface 1
Surface 2 is present and Surface 1 is missing - so the Else If would connect to Surface 2
Surface 1 and Surface 2 are both missing - either no solution exists at this station - so END and nothing is created
Surface 1 and Surface 2 are both present - so the If wins as Surface 1 is the first test and because it is there that is created and the condition has passed and then completes.
The trick here is to construct the test to see whether it passes or fails - the way I do that is to create a Test Shot or test shots outside the Condition statement
From Node XX do a Side Slope to Surface 1 at Slope 1:ZZ (create Point Test Shot 1)
From Node XX do a Side Slope to Surface 2 at Slope 1:ZZ (Create point Test Shot 2)
If you know for sure that Surface 1 and Surface 2 cannot both be present at any station then you dont actually need conditions at all - the above would work just fine. If you know that Surface 1 and 2 could be present at the same station and you want Surface 1 to win over Surface 2 where that happens then I would create the condition
Take the example where you have a Toe of batter point (TBP) and you want to see if it is under Rock or not then
If TBP is Below Rock then Create a sideslope vertically from TBP to Rock surface
Else TBC is not below Rock then create a sideslope to OG Surface at 1:3
In this case TBP has already been created and we are just testing to see which condition to use using the nodes position in relation to the Rock Surface interface. You can use the point is below surface function of the condition in this case.
Where you want to see if a Node Exists or not at this chainage - you can test that using if Nodes Horizontal Distance from Node is Greater than or equal to 0 and compare the Node that comes and goes with the centerline node which will always be there - enter a Greater than 0 and less than 10000000 for example on the Right SIde of the road and on the left side you can use greater than -1000000 and less than 0 for example - this tests to see if the node is there or not. While I agree it may not be 100% obvious as an approach it does work - you just have to tee up the condition in the right way.
For the slope does not exist / does exist - I just throw out a Test Shot from the source point to the target surface to create a node - that I do not add to a Material Layer - then you can test to see if it exists (as above) and if it exists then create it and if not do the alternative or nothing as described earlier.
The surface instruction is currently limited by an offset (distance) Left and right of the centerline - the Node to Node is used to compute the distance but if you have a 2D line or 3D line (set as a reference line in the corridor), then you can use the 2D line to limit it Left and right or you can use the reference lines to determine the offsets Left and Right using Node to Node distances. I would say that I have used the surface instruction limits in many ways over the years and it is not always left and right of the Centerline, there are many times when I just want a piece on the left or the right side and then the offset computations are helpful - I do however agree that simply limiting it between specified nodes would be helpful.
Alan