multiplesections

This is an old revision of the document!


Sometimes it is nice to see a cross section through several passages at once, to see how they relate to each other. Therion draws cross sections one at a time, and does not appear to have a dedicated way to draw multiple cross sections at once, positioned in the correct place relative to each other. (If it could, then it could massively simplify this whole process!)

To see how to draw a single cross section, see the Therion tutorial chapter on Cross sections, and Footleg's tutorial “Lesson x: Adding X­Sections”.

If you are just looking for “give me the best solution”, follow method 5.

This is the most basic approach. Draw the cross section for all passages as if they were the cross section of a single passage. The cross section scrap has multiple passages drawn within it. Positions of each other passage are approximated.

Pro
  • Very easy
  • Works with the existing documentation
Con
  • Passage shapes are all approximated, except for the one where the cross section is defined, with its splays
  • Passages are only approximately positioned relative to each other, and can be very significantly wrong
  • When new loops are closed which alter passage positions, the passage positions do not update, and need to be manually repositioned
  • Passages cannot have the colours of their scraps, and will all share the colour of the scrap that they are attached to - it is best not to use colours for the cross section scrap

Draw the cross sections normally, and move them into positions relative to each other, and draw a border around them to show that they are grouped together. However, this can be difficult to achieve, as the positions relative to each other need to be manually calculated or approximated.

Pro
  • Easy
  • Mostly works with the existing documentation
  • Passage shapes are all correct
  • Passages can all have the correct colours of their relevant scraps
Con
  • Passages are only approximately positioned relative to each other, and can be very significantly wrong
  • When new loops are closed which alter passage positions, the passage positions update sideways but not vertically, and need to be manually repositioned
  • If a passage is made up from multiple cross sections (such as a pitch, or a ledge route above a floor route), the separate sections cannot be joined neatly to each other, and ugly gaps are likely

For a more complete and accurate approach, read on.

Essentially, you can think of a cross section as a projected elevation perpendicular to the passage, with only a single station being drawn. When multiple passages are being drawn together, it is even more like a projected elevation.

Select your stations and bearing carefully

Decide where you want to draw your cross section. Select a station on each passage that the cross section will intersect. It is quite possible that these will be in different survey data files. Not to worry, just select good representative stations. These do not have to be perfectly below each other, and they do not have to perfectly intersect the cross section line. Just select a station where you like the cross section, somewhere near where you want your cross section line to be drawn.

Work out what bearing your cross section will be facing. For example, a cross section through passages all running approximately north-to-south on a bearing of 355 degrees, would probably have its cross section facing 355 degrees, while its cross section line would be drawn east-to-west on a bearing of 85 degrees. 355 is the important number here.

Rendering an XVI with just those stations

This is the laborious bit. A significantly easier approach would be for it to be possible to name groups, so that they can be selected like surveys. This would massively simplify this section. However, without that, we can achieve the same results with much more messy subsurveys.

If your cave is extremely simple (then why are you doing this sort of cross section?!) you might just be able to render the entire survey on a projection, and be able to visually identify the stations and splays you are interested in. However, it is quite likely that there will be too many stations and splays to identify the right one, so this section assumes that you will need to render just the relevant stations and splays.

Most often, by the time you want to draw multiple cross sections at once, you are dealing with data in multiple separate survey files. That is OK, and it doesn't really change the approach. You could create an overall .th file that will represent all the subsections at once, but it is perhaps more useful to keep it all in the same file as where the centreline data is defined for each of the passage sections, just to make it more easy to find.

Create a new subsurvey within the existing survey file which will contain stations representing only those stations within the cross section you are working on. Give it a “survey somename” that you will use to reference it, which must not clash with the existing surveys, such as “survey sectiona”. Give that subsurvey a centreline, which must have a date (eg. matching its parent survey) if you want to avoid getting warnings.

The next step depends on which method you will use:

Method 3; using the projected elevation to position cross sections

This is basically method 2, but more accurate.

In the subsurvey's centreline section, use “data nosurvey from to”.

For the survey stations that will appear in the cross section, add a line with a leg going from that station to itself, such as “5 5”. This creates a station within that survey that can be exported, to avoid getting a warning that you are using “equate” to create a new station. Then for each station, add an “equate” command in the parent survey, equating the point in the subsurvey to its corresponding point in the parent survey, such as “equate 5@sectiona 5”.

Repeat this for any other surveys that contain stations that will be in the cross section. For simplicity, use the same “sectiona” name for all of them.

Create a new “thconfig” file, which will project the new survey data on the correct bearing - 355 for the demonstration. Use the “select” command to select all of the relevant sections from all surveys that will be in the cross section. These can be in multiple surveys; just use a select statement for each of them in turn.

source "master.th"
select sectiona@westwing.mycave.master
select sectiona@underwest.mycave.master
export map -projection [elevation 355] -fmt xvi -output "sectiona.xvi"

Run it to export the XVI file.

In any of the th2 files which will be in the cross section, import this new XVI. Use it to create a new cross section scrap. Place this in a useful position in the usual way using one of the stations within it. On each of the stations within it, place a useful symbol for alignment (such as a crystal point). Think of this scrap as your alignment scrap.

With each of the passages in the cross section, create a normal cross section. On the station points within those cross sections, add the same alignment symbol (crystal) as before.

Render the cave as PDF. Use the crystal positions to carefully move the cross section scraps into position, so that their alignment symbols (crystals) line up with the ones on the alignment scrap. Remove all the alignment symbols and the alignment scrap. Done.

Pro
  • Uses existing cross section scraps
  • Passage shapes are all correct
  • Passages can all have the correct colours of their relevant scraps
  • Passages are correctly positioned relative to each other
Con
  • A muddled mix of projected elevation and cross section
  • A lot of work for very little gain
  • When new loops are closed which alter passage positions, the passage positions update sideways but not vertically, and need to be repositioned by recreating the alignment scrap and manually adjusting positions again.
  • If a passage is made up from multiple cross sections (such as a pitch, or a ledge route above a floor route), the separate sections cannot be joined neatly to each other, and ugly gaps are likely

Methods 4-5; Rendering the cross sections as scraps within the exported XVI

For this, you need to render the splays as well as the stations. This is not easy (unless it is possible to name groups by the time you read this, in which case do that instead).

It is possible to copy the survey data for the relevant stations and their splays into a new survey, with equates to link them to the existing stations. However, this requires duplication of data and configurations that affect data, which is usually unwanted (even though they will typically be only splay legs which do not affect the surveyed length). Instead, the solution presented here will use “data nosurvey” to add stations, with a few more equates to make them link to the existing stations and splays.

Pick a station that will be included in your cross section. Give each of its splays an actual name, rather than using “-” to create anonymous splays. For example, if they are on station “5”, you could call the splays “5a”, “5b”, etc. Surround the splay legs with “flags splay” and “flags not splay” so that they do not add length to your cave.

In the subsurvey's centreline section, use “data nosurvey from to”. This allows you to avoid repeating the survey data and calibrations. Then one line at a time, list the splay legs around each of the stations that will be in the cross section, such as “5 5a”. Ideally, you should surround those legs with “flags splay” and “flags not splay” to avoid any confusion, but Therion does seem to know that nosurvey legs should not add to the cave length. If the cross section is going to have stations without any splays attached to them, repeat the station name like “5 5” to avoid getting a warning that you are using “equate” to create a new station.

Then for each station and splay end, add an “equate” command in the parent survey, equating the point in the subsurvey to its corresponding point in the parent survey, such as “equate 5@sectiona 5”.

As an example, imagine that you are working on westwing.th, in a survey called “westwing”, and stations 5, 12 and 23 will all be in the final cross section:

survey westwing
  ... configurations ...

  #cross sections
  equate 5@sectiona 5
  equate 5a@sectiona 5a
  equate 5b@sectiona 5b
  equate 5c@sectiona 5c
  equate 5d@sectiona 5d
  equate 23@sectiona 23
  equate 23a@sectiona 23a
  equate 23b@sectiona 23b
  equate 23c@sectiona 23c
  equate 23d@sectiona 23d
  survey sectiona
    centreline
      date 2019.10.20
      data nosurvey from to
      flags splay
      5 5a
      5 5b
      5 5c
      5 5d
      flags not splay
      12 12 #no splays for this station
      flags splay
      23 23a
      23 23b
      23 23c
      23 23d
      flags not splay
    endcentreline
  endsurvey

  centreline
    ... configurations ...
    data normal from to length compass clino
    ... the real survey data ...
    4 5 ... etc ...
    flags splay
    5 5a ... etc ...
    5 5b ... etc ...
    5 5c ... etc ...
    5 5d ... etc ...
    flags not splay
    5 6 ... etc ...
    ... more real data ...
    11 12 ... etc ... #no splays
    12 13 ... etc ...
    ... more real data ...
    22 23 ... etc ...
    flags splay
    23 23a ... etc ...
    23 23b ... etc ...
    23 23c ... etc ...
    23 23d ... etc ...
    flags not splay
    23 24 ... etc ...
    ... more real data ...
  endcentreline
endsurvey

If you also need to copy survey legs between stations (you don't normally need to), Therion seems to know that it should not add the lengths from a nosurvey leg. However, if it somehow causes problems for you, use “flags duplicate”-“flags not duplicate” around the legs to make sure they do not add to the overall cave length.

Repeat this for any other surveys that contain stations that will be in the cross section. For simplicity, use the same “sectiona” name for all of them.

Create a new “thconfig” file, which will project the new survey data on the correct bearing - 355 for the demonstration. Use the “select” command to select all of the relevant sections from all surveys that will be in the cross section. These can be in multiple surveys; just use a select statement for each of them in turn.

source "master.th"
select sectiona@westwing.mycave.master
select sectiona@underwest.mycave.master
export map -projection [elevation 355] -fmt xvi -output "sectiona.xvi"

Run it to export the XVI file.

Method 4; Using the XVI to draw the cross sections

This is basically an accurate version of method 1, with many of the same limitations.

The easiest way to use the XVI file, is to create a new .th2 file for each set of cross sections that you are creating. In XTherion, open the map editor (F2). Create a new file and save it somewhere appropriate. Edit menu - Insert image, and select the XVI file that you exported. Draw your cross sections the same way as you normally would draw a single cross section, using a cross section scraps. This does mean that you will be creating new cross sections, not using an existing sketch or cross section as a drawing aid. More details about that later. Tip; you can even set the scale of your cross sections to something different than the main survey, just by setting the scrap's scale to the wrong values - eg. a 10 metre x 10 metre scale bar could have its “real scale points” set to 20×20 instead.

Note that Therion may become confused if cross sections do not have walls on all sides of them (eg. if some are open to the surface). If this is the case, create a wall line to close the wall loop, and set it to “-visibility off”.

You may want to draw a border around the entire set of cross sections, to show that they are related spatially to each other. A regular “border” line with “-clip off” may be used for this purpose.

You do not need to mark the stations in the cross sections. If you decide to do so anyway, you can use “-name” to reference the real stations, but note that you will need to reference them by their complete name, taking into account whichever survey or subsurvey they are defined in.

If you do not plan on marking the “station” points in the cross section, it does not matter at which level you “input” the .th2 file that you create the cross sections in. This is the easiest way, so it can just be “input” in any of the existing .th files which are being used to draw the survey. In your cross section's .th2 file, create a new scrap in the file, with its scale set properly. Give it a single “station” point linked using “-name” to a real point in the survey which it is going to be “input” into. Give it a “section” point for it to draw the section relative to, and set the “-scrap” option to point to the cross section scrap. Use “input” to add it to the relevant survey, and add the new scrap (not the cross section scrap) into your “map” for that survey.

It should now be rendered into the final survey, positioned relative to the station you selected.

If you are marking multiple stations in the cross sections, you need to input the .th2 file into the master survey file instead, since that is the level where the stations can all be referenced.

Pro
  • Passage shapes are all correct
  • Passages are correctly positioned relative to each other
Con
  • Quite complex
  • Does not follow existing documentation, since it is a muddled mix of projected elevation and cross section, but does at least use standard cross section drawing for some parts
  • When new loops are closed which alter passage positions, the passage positions do not update, and need to be manually repositioned
  • Passages cannot have the colours of their scraps, and will all share the colour of the scrap that they are attached to - it is best not to use colours for the cross section scrap
  • Normally requires cross sections to be recreated, rather than using existing ones

Method 5; leaving it as a projected elevation

This is the most complete approach, which solves many of the problems of the others. It is the recommended approach, if you are able to follow it, since it allows cross sections to be correctly coloured for altitude, and with passages positioned relative to each other, with accurate shapes. It can even reposition them automatically when loops are closed and station positions are changed, something that none of the other approaches can do, making this approach the only one that offers hassle-free maintenance.

The easiest way to use the XVI file, is to create a new .th2 file for each set of cross sections that you are creating. In XTherion, open the map editor (F2). Create a new file and save it somewhere appropriate. Edit menu - Insert image, and select the XVI file that you exported.

For each cross section, create a scrap as you would do if this were a regular projected elevation (since it is). Set the projection to “[elevation 355]”, with the correct bearing for that cross section. Create a station point on each station in the passage, and reference the station by its full reference (relative to where you plan to import the .th2 file) such as “-name 5@westwing.mycave”. You can reference either the real station, or the cloned station in the cross section survey - either way the result will be the same.

Draw the passage cross section walls. This does mean that you will be creating new cross sections, not using an existing sketch or cross section as a drawing aid. More details about that later.

For cross sections of pitches and ledge routes with their own survey data, you can create multiple scraps at the different heights, so that they can have different colours at the different heights.

You may want to draw a border around the entire set of cross sections, to show that they are related spatially to each other. A regular “border” line with “-clip off” may be used for this purpose.

Normally, you would want to “input” the .th2 file at the highest level of your survey, since it probably relates to multiple subsurveys spread across your entire data set, but you could just input it at whatever level will contain all of the passages involved in the cross section.

That's it. You have basically created your cross section, disguised as a projected elevation. You now need to export it as a PDF.

Create a “map” in the survey level where you imported the .th2 file, with its projection matching the scraps (“[elevation 355]”). Add all the scraps to it. If you are using automatic altitude colouring (rather than a lookup), and you would like it to use the correct colours, create a new map at the top-most level with the projection set accordingly. Tell it to include the map of scraps. Then to make it use the colours for the main survey, tell it to include the surveys containing the data for the highest and lowest passages in the part of the cave that your regular plan survey will include (the survey where you want to render the cross section). Normally, this will be the complete data for the whole cave.

Create a new “thconfig” file, which will project the map on the correct bearing - 355 for the demonstration. Use the “select” command to select the map. Create a layout that will hide all the survey centreline, leaving only the cross section scraps. Tell it to colour by altitude. If you would like the cross sections to display at a different scale than the main survey, use the “scale” option to change it. Use the various options to completely hide the legend, title, scale bar and north arrow.

layout local
  scale 1 100
  map-header off
  symbol-hide group centreline
  color map-fg altitude
endlayout
source "master.th"
select sectiona
export map -projection [elevation 355] -layout local -output "sectiona.pdf"

Run it to export the PDF.

In your main survey's layout, use “map-image 100 50 e sectiona.pdf” to include the PDF. The cross section will now appear on the main survey.

Pro
  • Passage shapes are all correct
  • Passages are correctly positioned relative to each other
  • Passages can have the correct altitude colours for the passages they are taken from
  • When new loops are closed which alter passage positions, the passage positions automatically update next time you export the cross section map (yay!)
  • Mostly follows existing documentation, since it is just a projected elevation
Con
  • Quite complex to set up initially, but relatively easy once it is working
  • Normally requires cross sections to be recreated, rather than using existing ones

This is not so easy.

Existing cross section drawings are in their own scraps, and these cannot be simply positioned relative to each other (but if there were a way, it could massively simplify this whole process!). Normally, any existing cross section will have been drawn in its existing .th2 file.

Use a text editor to copy the lines and points from the existing cross section's scrap, into the relevant scrap within the new .th2 multiple cross sections file (which will normally be in different .th2 files). Move the lines and points into the correct positions in XTherion's map editor, using the existing section's “station” and the new “station” position as references for the move-from and move-to.

Note that this relies on all the existing cross sections to have been drawn facing the same direction. If not, they will need to be manually redrawn facing the correct direction.

The cross section line can be drawn in any of the scraps in the main plan survey, but for best results put it in one of the scraps that will be intersected by the cross section. Manually work out where to draw it, taking into account how long it will need to be to sit around all relevant passages, and how big of a gap it needs to leave in the middle to avoid overlapping the passages. Render it to see if it worked. Adjust it to fix any imperfections, try rendering it again. It will probably take a few tries to get it perfect.

  • multiplesections.1575760982.txt.gz
  • Last modified: 6 years ago
  • by tarquinwj