breakingextend

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
breakingextend [2019/12/02 09:08] – Fix images tarquinwjbreakingextend [2020/07/08 18:31] (current) – Breaking on last station images tarquinwj
Line 3: Line 3:
 Note; Therion 5.4.4 has a bug that causes "extend ignore somestation" to break at the wrong station. This is fixed in builds after 14 November 2019. If you are relying on this functionality, you should use versions after this date. Note; Therion 5.4.4 has a bug that causes "extend ignore somestation" to break at the wrong station. This is fixed in builds after 14 November 2019. If you are relying on this functionality, you should use versions after this date.
  
-When a cave has multiple passages that connect to each other, such as a main route and an oxbow, it is not possible for an extended elevation to perfectly line up the two passages with each other, unless by chance they happen to be exactly the same length. Instead, it has to pick one of them to be the right (extended) length, while the other one gets broken at some station, with that station shown twice, one connected to the station before it, and the other connected to the station after it.+When a cave has multiple passages that connect to each other, such as a main route and an oxbow, it is not possible for an [[extend|extended elevation]] to perfectly line up the two passages with each other, unless by chance they happen to be exactly the same length. Instead, it has to pick one of them to be the right (extended) length, while the other one gets broken at some station, with that station shown twice, one connected to the station before it, and the other connected to the station after it.
  
 Take, for example, a main passage running for 7 metres, with a high level oxbow that connects after 1 metre and 6 metres along the main passage. The main passage runs in a curve, but the oxbow is shorter, cutting off the corner. Take, for example, a main passage running for 7 metres, with a high level oxbow that connects after 1 metre and 6 metres along the main passage. The main passage runs in a curve, but the oxbow is shorter, cutting off the corner.
Line 32: Line 32:
 {{ ::defaultextend.png?nolink |}} {{ ::defaultextend.png?nolink |}}
  
-So the answer is to tell Therion to "extend ignore" one of the stations or the legs along the oxbow. despite its name, "ignore" does not mean to ignore the station; it means "break at this station" or "add a weakness at this station so that the extended elevation can break here". For this example, we will break it at station 9 (warning, this will not correctly in Therion 5.4.4 or below; you would need to upgrade, or use the "extend ignore fromstation tostation" syntax).+So the answer is to tell Therion to "extend ignore" one of the stations or the legs along the oxbow. despite its name, "ignore" does not mean to ignore the station; it means "break at this station" or "add a weakness at this station so that the extended elevation can break here". For this example, we will break it at station 9 (warning, this will not work correctly in Therion 5.4.4 or below; you would need to upgrade, or use the "extend ignore fromstation tostation" syntax).
  
   extend start 1   extend start 1
Line 71: Line 71:
 {{ ::ignoretwo.png?nolink |}} {{ ::ignoretwo.png?nolink |}}
  
-Definitely not the desired effect. To put it simply; you should never use "extend ignore somestation" syntax on a station that has more than two legs connecting to it. So instead you need to tell it to ignore the leg from 10 to 2:+Definitely not the desired effect. To put it simply; you should never use "extend ignore somestation" syntax on a station that has more than two legs connecting to it. (And to confuse matters, splays cause the same problem as legs, so if a station has splays, you also cannot use "extend ignore somestation" syntax on that station.) So instead you need to tell it to ignore the leg from 10 to 2:
  
   extend start 1   extend start 1
Line 80: Line 80:
 {{ ::extendmess.png?nolink |}} {{ ::extendmess.png?nolink |}}
  
-What is going on? The data may be going 7-8-9-10-2 through the oxbow, but Therion extends it starting from 1, and then follows the oxbow in the opposite direction (since that is the direction where it connects first to the "extend start"); 2-10-9-8-7. So your "extend ignore" must go in that same direction:+What is going on? The data may be going 7-8-9-10-2 through the oxbow, but Therion extends it starting from 1, and then follows the oxbow in the opposite direction (since that is the direction where it connects first to the "extend start"); 2-10-9-8-7. (If it helps, you can add "log extend" in your .thconfig file, and that will log the extended elevation traversing sequence to therion.log, and you can use that to work out which order you need to specify the stations.) So your "extend ignore" must go in that same direction:
  
   extend start 1   extend start 1
Line 89: Line 89:
 {{ ::brokentwo.png?nolink |}} {{ ::brokentwo.png?nolink |}}
  
-In this example, the equivalent to "extend ignore 9" would be "extend ignore 9 8". Note that this syntax even works correctly in Therion 5.4.4.+In this example, the equivalent to "extend ignore 9" would be "extend ignore 9 8". Note that this syntax even works correctly in Therion 5.4.4. You can even supply "extend ignore 9 10" and "extend ignore 9 8" at the same time. Therion will only use one of them, but it means that you do not need to know whether Therion has chosen to extend forwards or backwards through that section. Therion will just respect whichever one of those is in the direction it is using. This is essentially the same as saying "extend ignore 9", but it can work even in cases where you have more than two legs or splays attached to that single station, as long as the station is not the junction at the end of the loop. Whether it is more understandable is up to your own discretion.
  
 +Something important to note about this; it is perfectly legitimate and acceptable for you to use "extend ignore 8 7" followed immediately by "extend left 7 8", which makes it look like you want it to simultaneously ignore and not ignore the same leg. You need to remember that "extend ignore 8 7" means "allow a break at the start of this leg" - it does not mean to ignore the leg. The subsequent "extend left" says which direction to extend the leg.
 +
 +===Breaking at the last station of a loop===
 +
 +Breaking at the last station of the loop - the point where the two branches of the loop rejoin - is much harder. With a single statement, it is not currently possible (Therion 5.4.4) to make the extended elevation break at the end station of a loop's shorter branch (station 7 on the 2-10-9-8-7 branch). "Extend ignore" can only be used to add breaks when legs lead away from a station (in whichever order Therion is progressing around a loop). Therefore while "extend ignore 2 10" can cause a break at station 2, and "extend ignore 8 7" or "extend ignore 8" can cause a break at station 8, there is no equivalent way to make a break at station 7. "Extend ignore 7 6" and "extend ignore 7" will cause Therion to put a break at station 7 on the 1-2-3-4-5-6-7 branch instead:
 +
 +{{::extendignore7.png|}}
 +
 +"Extend ignore 7 11" will cause Therion to ignore the statement since a break is not needed for that leg, and then revert to its default break point within the loop.
 +
 +However, a quirk of the way that Therion processes "ignore" commands can be used to make it happen. By default, Therion progresses through the shorter side of the loop; 1-2-10-9-8-7-11, treating 7-6-5-4-3-2 as a separate branch.
 +
 +First, you tell it to "extend ignore 8" or "extend ignore 8 7". This causes it to break at station 8. It now proceeds through the longer branch of the loop instead; 1-2-3-4-5-6-7-11, treating 2-10-9-8 as one branch, and 7-8 as another branch:
 +
 +{{::extendignore8.png|}}
 +
 +Then you tell it to "extend ignore 7 8". This causes it to break at station 7 on the 7-8 branch, which is the place where you want the break to be. The 7-8 branch is now floating, not attached to anything. Therion helpfully connects it back onto the 2-10-9-8 branch at station 8. The end result is the desired rendering.
 +
 +  extend start 1
 +  extend ignore 8 # or extend ignore 8 7
 +  extend ignore 7 8
 +
 +{{::extendignorelast.png|}}
 +
 +Note that this is not tested in multiple different configurations, and it is possible that unexpected behaviours could appear. However, it does seem to work in this demonstration at least.
 ====Therion 5.4.4 and earlier==== ====Therion 5.4.4 and earlier====
  
  • breakingextend.txt
  • Last modified: 4 years ago
  • by tarquinwj