Using SexyTopo to survey caves

This article was written to accompany the BCRA Cave Surveying Group paperless surveying courses that are based on the use of SexyTopo and Therion. SexyTopo also has its own user guide built into the app. For general information on how caves are surveyed, see the cave surveying and B.C.R.A. survey grades article.

Why SexyTopo is recommended

TopoDroid
TopoDroid running on Android, showing the plan view.
SexyTopo plan view
SexyTopo running on Android, showing the plan view.

For Android, there are two popular applications for surveying caves. The first and most complete is TopoDroid, and the second is SexyTopo. Both have their strengths, and either is a great tool for cave surveying. The assumption here is that the desired output will be a set of files that can be used to produce a survey using Therion. However, both apps can produce a variety of output formats that can be used with other applications too.

The UI of TopoDroid is quite challenging to understand, as it tries to do everything at once. When sketching, the correct types of lines must be drawn while in the cave (a wall for a wall, a ceiling step for a ceiling step). This may be able to cut out some of the time taken to draw up in Therion later, as the correct types of line have already been selected, and will exist as a line. However, it takes a great deal more time in the cave instead. Time in the cave is precious, and should not be wasted. In general, the lines created in the cave will be very rapidly drawn and messy, and might not actually be touching all of the splays they were supposed to, since they are done very roughly with a small screen and stylus. They will almost never be the final lines used in Therion. Therion has features to help smooth out lines and reduce the number of data points while retaining their curved shapes, but even so, most lines will end up being redrawn completely in their correct locations, and most scraps will need to be reworked to hold the correct parts of the cave. Therefore the perceived benefits of TopoDroid get wasted.

TopoDroid's buttons
A selections of the button icons that TopoDroid uses, and which will appear in the various views as you navigate through the UI. There are no doubt a few that are missing here. There are also the different icons for the survey symbols, which are not included here, since they are things a surveyor should really learn anyway.

The entire UI of TopoDroid is based on the user learning and recognising a large number of button icons that bear very little resemblance to their purpose, without visible text to explain what they mean, so more time is taken reading through the help files. For example, the button to switch in and out of calibration mode inexplicably looks like a standard reload button, the calibration history and compute calibration both look like a settings button, and the editing mode and selection tool both look like a finger but they do very different things. It does have very good help files, which is lucky, because it really needs them. Everything you do in the app seems to open yet another view with yet another dizzying selection of buttons that need to be learned. TopoDroid has a lot more features, such as being able to edit lines and see a 3D cave view, and tries to produce a lot more outputs natively, such as DXF. If you are able to learn how to navigate through the app, how to activate the right mode to do what you wanted to do, what all 45 buttons mean (or perhaps there are more, that is just what I found with a quick scan through the different screens I could find), and what all 33 survey symbols (as of 2021) mean so that you do not have to search through the list every time, it opens up a world of possibilities.

SexyTopo is a much more easy app to use, and the time taken in the cave is greatly reduced. It was written specifically to be an Android replacement for the popular PocketTopo app for Windows Mobile/Pocket PC, to reduce the learning time for people who are new to surveying, or who would like to switch from PocketTopo. It is based on the idea of sketching drawings by hand, using basic coloured drawings (though in future, it might become possible to also select specific line and symbol types too). The interface feels a lot like a basic sketching application, like Microsoft Paint. Instead of drawing specific line types, the surveyor must hand draw symbols like pitch edges and ceiling steps in a way that can be understood when sitting in front of Therion on a computer later. A surveyor can use different colours for this, or may choose to draw a symbol that looks like the standard symbol for a pitch. In Therion, the lines will appear as a background image that must be traced over with newly created lines. SexyTopo is definitely not as complete (it has not been around for as long) but the UI is very intuitive, and takes very little time to learn. It is not intended to do everything that Therion can do, since its purpose is for gathering the data so that it can be used in more complete apps like Therion. For most surveyors, this is what they need, since the underground part of the survey is just the rapid data gathering which is done with the handheld device, and the more complex drawing up and exporting will be done with Therion.

TopoDroid is primarily made by Marco Corvi from Recco, Italy. SexyTopo is primarily made by Rich Smith based in Cardiff, Wales. The development pace of SexyTopo has been fairly rapid, and bug fixes seem to happen very quickly. Useful feature requests also get implemented. The first paperless surveying course coordinated by the BCRA Cave Surveying Group and based on SexyTopo was held at SWCC starting on the 13th of November, delivered by the author of this website. Previous courses coordinated by the same group were based on PocketTopo.

SexyTopo is an open source project hosted on GitHub, and contributions to the project are welcome!

Android compared with Pocket PC

Example Android surveying kit
Example Android surveying kit (minus the DistoX2). The device is a Samsung Galaxy S20+, in a Unicorn Beetle rugged case with screen protector. The case is not waterproof, and has been modified to add an attachment point for a safety cord. The stylus is a generic capacitance stylus. The string is used as a carry loop, to clip the device and stylus to, to avoid dropping them. The cord is an intentionally weak dive line, so that it will snap if snagged, to avoid strangulation. A belt loop would have been safer. SexyTopo is running on the device, showing a plan view.
Pocket PC running PocketTopo
Fujitsu Siemens Pocket LOOX C550 in an OtterBox 1900 rugged waterproof case, running PocketTopo. The stylus is a generic hard tipped stylus, not the original one supplied with the device. The case is attached to a neck strap. PocketTopo is running on the device, showing a plan view.
SexyTopo plan view
SexyTopo plan view. Again. Deal with it.
PocketTopo plan view
PocketTopo plan view.

Since the introduction of the DistoX in 2008, the most common surveying devices were Pocket PC PDAs, but these have now reached beyond the end of their production lifetime. They are available only as second hand devices, and batteries are no longer made, so only refurbished items can be bought, or an external battery pack must be carried. Android devices are still actively manufactured, and are significantly more capable. In spite of that, Android devices are surprisingly slow compared with a Pocket PC, because they try so hard to be clever, and have such fancy graphics, which really is not important for cave surveying. Pocket PC devices are able to hold vast amounts of survey data, but they do so by using incredibly low resolution graphics. Neither approach is better, but Android seems to be taking over as the platform of choice for cave surveying.

Pocket PC PDAs typically are not waterproof or shock proof, and need a hard case to cover them. They use resistive screens, which can work with any hard pointing device as a stylus, including a fingernail. Dedicated cases usually have a soft screen to cover the touchscreen, to allow the use of a stylus. Higher quality Android devices are normally waterproof and dust proof, but they usually have capacitance touchscreens, which do not function when wet. A stylus is almost essential, since a finger obscurs the view of the splays. Some devices may come with a dedicated sensor-based stylus, which can work with a wet screen, but the styluses themselves often suffer from being used in the wet for too long, and replacements are usually needed over time, which will typically work only with a specific make and model (especially those for Samsung Galaxy Note devices). Simple capacitance styluses, usually looking like a pen, can be purchased for capacitance touchscreens, and work with almost all Android devices, as long as the screen is dry enough; most come with spare tips which can be replaced when the old one wears out. Android devices normally have far more fragile screens, and a rugged case with screen protector is essential. Some rugged cases are waterproof, which prevents water seeping between the case's screen protector and real screen, allowing water to be dried off the outside, without needing to remove the case. Basic phone cases do not provide sufficient protection within a cave; use a rugged case!

Android devices often have exceptionally good cameras, which can be used to record photographs or videos during surveying, which can really help when drawing up a survey later.

In general, Android devices have more than enough capabilities for cave surveying, but some of their limitations can cause issues if you choose a poor device or case.

SexyTopo's basic UI

SexyTopo's basic UI
The four buttons and kebab menu of the basic UI.

When you start the SexyTopo app, it shows the connection screen. Ignore this for now. At the top is the toolbar with four buttons and the menu. The buttons are as follows:

"Save"
Saves the current survey sketches. Tap it regularly while sketching.
"Table"
Shows the raw data for the survey legs/shots and splays, and allows you to manipulate the data.
"Plan"
Where you draw and edit your plan sketches.
"Elevation"
Where you draw and edit your extended elevation sketches.
"Menu"
The three dot menu. Known as a "kebab" menu - don't blame me, that's what it's called.

There, that was pretty simple.

Managing surveys

Managing surveys in the menu
Parts of the menu relating to managing surveys.

Before you connect to a DistoX2 or other surveying tool (SexyTopo also supports the DistoX, Shetland Attack Pony 5 and Bric4), create a survey for the data to go into. If you don't do this first, then when you connect, any pending survey data in the DistoX2 will be downloaded immediately, and will get put into whatever cave survey you last had open, and that may not be the place you wanted to put it. If there are no surveys, SexyTopo will have created a placeholder survey, whose name is probably not what you would want to use in your final project.

You should create a new survey for every surveying trip. The reason for this is that SexyTopo can only keep records of the date and team members for a survey (Therion can do it per centreline). The date is used by Therion for automatic magnetic declination of the compass readings, and the team members are used for credits on the survey (for copyright reasons).

You should create a new survey for every cave that you survey, even if they are surveyed on the same day by the same team. The reason for this is that Therion can only split data up in to "caves" (for generating separate length statistics) if they are in separate surveys. You can choose to use a different survey for surface surveying, if it helps you to manage your data better. In general, a short bit of survey data to get from a nearby station into the entrance of a cave can be in the same survey as the cave, but it is best to keep lengthy surface surveys in their own survey (this also allows the surface survey to be easily rendered underneath the cave in Therion). SexyTopo does not know the difference between surface and undeground legs or splays. Those need to be manually configured in Therion or Survex.

Don't worry, SexyTopo can link surveys together so that you can see them all at once if you would like.

Naming surveys
Lowercase names without spaces are the best option for compatibility with different computers.

To create a new survey, use kebab menu - File - New Survey. Give it a good name, such as the name of the passage you are starting your survey in, or the area you are hoping to survey (but bear in mind that you might not actually complete the area you were hoping). This name will be used in the file names when exporting the data, and will be used as the Therion survey name too. The recommendation is to use lowercase names without any spaces, and without special characters. This makes it easiest to use on computer systems that are case sensitive (such as Linux) as well as on computer systems that are case insensitive (such as Windows) without errors.

All of your SexyTopo surveys are saved into the same folder, so it is not possible to group them by cave or project. As a result, it is not possible to have a survey named "mainpassage" in two separate caves. If you think you might need this, then you will need to include the cave or project name in the name of the survey, such as "swildonswetway".

If you have chosen a bad name, and need to rename it later, you can use kebab menu - File - Save As.

If you want to reopen an old survey, you can use kebab menu - File - Open Survey.

You can also delete the survey using kebab menu - File - Delete Current Survey, then confirm deletion. But do not ever delete surveys. It is better to keep obsolete survey data than to accidentally delete one that you needed, and old data might sometimes be useful for historical analysis.

When learning how to use SexyTopo, it can be nice to have some sample data to work with. SexyTopo can be told to generate some fake cave data for this purpose, using kebab menu - Tools - Generate Test Survey. Always do this with a new, blank survey, as it will overwrite any existing data. The generated data uses the LRUD concept rather than proper splays, so it is not really realistic, but it can be useful just for practicing. A DistoX2 is not needed when testing SexyTopo in this way, so several of the following sections can be skipped.

Connecting a DistoX2 to the Android device

Pairing a DistoX2 in Android
Pairing a DistoX2 in the Android 11 Bluetooth settings.

If you have not previously paired the DistoX2 with the Android device, you will need to do that first. If the DistoX2 is already in use by another device, either disconnect it from that device, or unpair it from that device, or disable Bluetooth on that device. This will put the DistoX2 back into pairing mode, ready to connect to your device.

Use Android settings - Connections - Bluetooth. With Bluetooth enabled, switch on the Disto (which must not be paired to another device at that moment). When it appears in the list of available devices, tap on the DistoX2 (which will appear as something like DistoX-1234), and agree to pair it if the Android system asks. If it asks for a passcode, use 0000.

If any other apps (such as TopoDroid) are using the DistoX2, close those apps, or tell them to disconnect from the DistoX2.

Successful DistoX2 connection in SexyTopo
SexyTopo's connection screen, showing a successful DistoX2 connection.
SexyTopo trying to reconnect to a DistoX2
SexyTopo's connection screen, showing a failed reconnection attempt after the connection to a DistoX2 was lost.

In SexyTopo, use kebab menu - Instrument - Connect. This shows the connection screen that SexyTopo will also show when it is first started.

On the connection screen, you can enable and disable Bluetooth on the device. This is the same as enabling and disabling Bluetooth in the Android settings, and can be disabled when not in use, to save battery.

The connection screen has a "PAIR" button that allows you to pair with a DistoX2 or other devices, but this does not work on some versions of Android. The "UNPAIR" button allows you to unpair from a DistoX2, so that it can be used by another Android device without having to switch Bluetooth off on the current one. SexyTopo can only use one DistoX2 (or equivalent) device at a time, and you will need to unpair from any previous DistoX2 device before you can pair with a new one.

Once a DistoX2 has been paired, use the "Connect" switch to connect to the DistoX2. It will connect, showing a lot of debugging data below. If it worked, the debugging output should end with "Ready to receive data". If not, double check that the steps above have worked correctly.

When it connects, any pending survey data in the DistoX2 will be downloaded immediately (which will also be shown in the debugging output), and will get put into the current survey.

If the DistoX2 becomes disconnected, by being taken out of range or switched off, SexyTopo will retry the connection for a while, but will eventually give up. Once it gives up, you will need to return to the connection screen and tell it to connect again, once the DistoX2 is within range.

Calibrating a DistoX2

Calibration screen on SexyTopo
The calibration screen on SexyTopo. 8 readings have been taken so far, so the Calibration Assessment is not yet known. The Next (suggested) reading is to point the DistoX2 to the left, with the screen facing up.

There is the common suggestion that a DistoX2 should be re-calibrated if it has not been used for a couple of months, or if it has moved locations significantly since it was calibrated (such as from one country to another). In practice, however, it generally does not need to be re-calibrated unless the calibration is faulty. This can happen if the device sustains an impact, or if ice crystals are allowed to form inside it. With the older DistoX devices, a recalibration is needed whenever the battery is changed. Always test the device's calibration before deciding whether to recalibrate it.

Before calibration, ensure that you have no metalwork or electrics on you that might affect the readings: belts, carabiners, lamp, keys, wallet, wedding ring. Place a light nearby so that you can see what you are doing, but keep it a couple of metres away from the DistoX2. Keep the Android device a couple of metres away from the DistoX2. Avoid calibrating in caves that have strong magnetic influences. Avoid overhead power lines. Avoid fences. Do not calibrate in buildings with electricity, nails or iron reinforced walls. For best results, calibrate in a cave or forest.

In SexyTopo, select kebab menu - Instrument - Calibration (the DistoX2 must be paired already, and must be connected in order to start calibration). This shows the calibration screen. Use the DISTO CAL MODE ON button to switch the DistoX2 into calibration mode.

Visualisation of the calibration cube
Visualisation of the calibration cube. The main calibration readings are the ones taken towards the centre of the cube faces, shown in red. The secondary readings are taken towards the corners of the cube. For each direction, readings are taken 4 times, rotating the DistoX2 90° in between readings.

Start taking the calibration readings. There are videos online showing the general procedure. The basic idea is to imagine that you are standing in the middle of a cube. Ideally, the cube should have one face facing North, one facing South, one facing East, and one facing West, so that the DistoX2 experiences the maximum difference in the Earth's magnetic field from North-South to East-West, but if there is nowhere suitable with that orientation, then just use what you have. From the middle of the cube, imagine that you want to take a set of readings towards the middle of each 6 faces of the cube (North, South, East, West, Up, Down). For each direction, take 4 readings, one with the DistoX2 face up, one facing to the right, one facing down, and one facing to the left. So the DistoX2 rotates clockwise along its length by 90° between readings. When pointing up or down, rotate it the same way between readings. It usually helps to be consistent, always rotating clockwise, perhaps even saying the directions out loud to yourself, to avoid forgetting to take one of them.

You do not have to actually hold it on an imaginary point in the middle of the passage in order to do this. You just have to imagine which direction it needs to point, and find two points (such as from one wall of the passage to the other, or one boulder to another) that point in that same direction. To get the best results when aiming, each reading should be about 3 metres in length, though the exact length is not relevant, as the length measurement is not used during calibration. There will be limitations imposed by the available space in the cave, and the places where the device can be held. Each set of 4 readings should be as accurate as possible, pointing from one point to another, using the same two points as you rotate the device. The opposing directions (eg. North and South) do not have to be perfectly opposite, but should be roughly opposite. They also do not have to be perfectly level, but should be roughly level. A few degrees off is fine. The perpendicular directions (eg. East and West) do not have to be perfectly perpendicular to first direction, but should be roughly perpendicular. For up and down, an overhanging wall ledge is usually best; drop a pebble from there to see which point on the floor to point at.

Now that you have done those most important calibration readings, you need to do the corners of the cube. Again, imagine that you are in the middle of the cube. Point the DistoX2 roughly towards each corner of the cube (4 diagonally upwards, 4 diagonally downwards). For each corner, take another set of 4 readings, again rolling the DistoX2 90° clockwise between readings (facing up, facing right, facing down, facing left). These are used for checking the calibration, and it is not so important to get them perfect, but it is still a good idea to do each set of 4 accurately anyway. Again, pick an appropriate location to work from, such as a point on the wall, and aim diagonally from there towards appropriate points on the ceiling and floor. It is often possible to do 4 diagonal directions from just one point on the wall.

It does not actually matter which order you do the faces or corners of the cube, as long as you do all of them, and as long as you take 4 readings in each direction, rotating the DistoX2 in between. SexyTopo will be able to group them into sets of 4, and work out the calibration. If it helps, you can use SexyTopo's "Next (suggested)" guide as to which direction you need to point, starting from a direction that you can choose to call "ahead".

The DistoX2 will send its results to SexyTopo immediately, and you should see the data coming in as it is recorded. SexyTopo will give a count of the total number of readings. Every time you complete a set of 4 readings, check that the Reading number shown in SexyTopo is divisible by 4. If at any point you mess up a reading, such as aiming at the wrong place, you can tap the DELETE READING button in SexyTopo to delete the last reading (the DistoX2 will not realise it has been deleted, so the number on the DistoX2 screen will no longer be divisible by 4). In total, you should end up with 56 readings.

Once you have taken all 56 readings, SexyTopo will show the Calibration Assessment. This must be below 0.5 for the calibration to be acceptable, and anything below 0.3 is considered excellent. Getting below 0.2 is almost impossible, but earns the DistoX2 user an extra pint! If the Calibration Assessment is 0.5 or above, you will have to tap CLEAR, and start taking a new set of readings. This is where TopoDroid is a lot better, as it can show which readings were the worst, so that you can delete just those readings, and try taking just those readings again. Oh well. Unlike with TopoDroid and PocketTopo, you do not need to switch SexyTopo into non-linear mode for older Disto devices, because it will automatically use that mode anyway, since it gives the best results. It does not matter which device or app is used to calibrate the DixtoX2; once it is calibrated, it can be used with any device or app.

If the calibration worked, save it first before going any further, which will allow you to reuse the calibration data, or analyse it if something went wrong (surveys done with a poor calibration can in theory be corrected later by re-analysing the calibration data, though this is not commonly done). Tap the SAVE button, and give it a name that will help you remember it, such as the date and location. After saving, tap UPLOAD CALIBRATION to send the calibration to the DistoX2, and wait a few seconds for it to complete. If it fails to upload, it is possible that the DistoX2 dislikes something in the calibration data, which can cause both the DistoX2 and SexyTopo to lock up. If it locks up, press and hold Angle and Clear simultaneously on the DistoX2 to exit calibration mode. Restart SexyTopo if needed, and try calibrating again.

Once the upload is successfully completed, tap on DISTO CAL MODE OFF to return the DistoX2 to its normal mode.

If you ever need to re-send the same calibration data to the device, such as if the device loses its calibration data (this can happen when swapping batteries on older devices, or due to faults on newer devices), this is also possible. On the calibration screen in SexyTopo, tap LOAD, and select the saved calibration data. Tap DISTO CAL MODE ON to switch the DistoX2 into calibration mode. Tap UPLOAD CALIBRATION to send the calibration to the DistoX2. Tap DISTO CAL MODE OFF to return the DistoX2 to its normal mode.

It is always best to test the device's calibration after uploading a calibration.

Testing a DistoX2's calibration

Testing a DistoX2's calibration
The result of a calibration test. This test has passed, as the legs were both created, and the splays overlaid the legs perfectly.

To test whether the DistoX2's calibration is faulty, create a new survey for holding the test data (give it a good name if you plan on keeping it, as proof that the calibration was good). From a selected station, take three readings towards another station, to create a leg. For the first reading, keep the DistoX2 screen facing up. For the second reading, rotate the DistoX2 so the screen faces to one side. For the third reading, it does not matter, use whatever orientation you want. If it did not create a leg, then the calibration is faulty (or there is a magnetism issue near the station). If it created a leg, move to the new station. Take a single splay pointing back to the first station. If it does not line up with the station, then the calibration is faulty (or there is a magnetism issue near one of the stations). This simple test can be performed every few legs while surveying too, to catch calibration issues before they affect too much data.

Now perform the same test to a new station at a right angle to the first leg. If that works, then great, the calibration is good, and you are ready to go!

Adding the trip and team information

SexyTopo's Current Trip screen
The Current Trip screen in SexyTopo, where team members and the date are recorded, and comments about the trip or equipment can be made.

As stated above, it is important to record the team members during a survey, since they are the ones who will hold copyright for the data, and they are the ones who should be credited for the surveying (which Therion will do automatically if you record it correctly).

Open the survey you plan to use. Use kebab menu - Current Trip. Tap ADD to add a team member. Supply their full name as they want it to appear on the survey. Tick the roles that they will perform during the survey (you can change it later if needed), and tap ADD. In general, Book (drawing) will be the person using the Android device, Instruments will be the person using the DistoX2, and Dog (assistant) will be the person marking out stations for the DistoX2 user to see them, and rushing around looking for additional passages to survey. Exploration team will be used if the surveyors are also discovering the passage as they survey, or if the project requires the explorers to be recorded. Therion supports several other roles (such as a specific one for station marking), which can be changed in the Therion files later. If no roles are selected, SexyTopo will tick the Exploration team role.

Team members can be edited by tapping on their name, or deleted by ticking the box next to their name and selecting DELETE. All trip data can be deleted at the same time using the CLEAR button.

Other comments can be added by typing below. For example, it is a good idea to record exactly which DistoX2 is used for the survey, so that this can be used to detect faulty surveys if a device is later found to be faulty. Comments will be added as a Therion comment when exporting in Therion format, and can be manually changed to a Therion instruments command later if needed.

The date cannot be changed, and is manually taken from the date that the team members or comments are added to the trip. So ensure that you fill this all in on the day that the survey is being done. (It can be manually edited in Therion later if needed.)

Warning: make sure you tap SAVE TRIP before leaving the current trip screen, as it will not save if you tap the normal Save button, and the data will be lost if you switch to a different screen.

Surveying with SexyTopo

SexyTopo showing a failed attempt to create a leg
The last three splays were an attempt to create a survey leg pointing out of the cave entrance. However, the second reading missed its target, so SexyTopo did not create a leg. The three readings are therefore left as splays.

With a calibrated Disto, and the trip information set up, it is time to start surveying. The person who uses the DistoX2 puts it against the first station, and starts taking readings. Single readings in any direction are a splay. If three readings in sequence are taken towards a station, then SexyTopo will recognise that they are all pointing to the same place, and will create a leg (also known as a shot in some other countries) and station instead, using the average of those three readings. By default, it will also vibrate to say that it has created a station. The three readings must be taken in sequence. Taking two readings towards a station, then one pointing elsewhere, then a final one towards the station, will not cause a station to be recognised. However, if the single station pointing elsewhere were to be deleted before taking the final reading towards the station, the leg and station will be created, since the last three readings that SexyTopo now knows about, all pointed to the same place.

If the three readings were not close enough to each other, then it will fail to create a station, which usually suggests that the DistoX2 user has not been accurate enough, or that the DistoX2 needs to be recalibrated. Requiring three readings helps avoid faulty readings, such as ones that miss their target by hitting clothing or obstructions, or by overshooting the target due to shaking. It also can be used to help detect magnetic problems. This forces legs to be made from 3 good readings, since they are the ones that are important for the overall survey accuracy. Faulty readings are relatively harmless for splays.

SexyTopo does not let you see the three readings that created the station, though it does remember them, and will export them as a comment in the Survex or Therion outputs. This is different from PocketTopo.

In the SexyTopo settings, it is possible to adjust the accuracy required for recognising three splays as a station.

SexyTopo also allows the DistoX2 to be remotely controlled. This can be used to take very long measurements without shaking; a perpetual problem with handheld readings. With remote control, the DistoX2 could be used on a (non-ferrous) tripod, and then remotely triggered. Kebab menu - Instrument allows the laser to be switched on or off, a reading to be taken with the "Take shot" option, and the DistoX2 to be switched off.

With very short survey legs, tiny misplacements can cause a big difference between readings. With very long survey legs, it gets harder to hit the target, and small amounts of shaking translate to a very big error. As a result, it is normally considered best to keep the survey legs between 5 and 10 metres, where possible. However, there will be times when the nature of the cave forces the survey legs to be shorter or longer, particularly in small passages, or near foggy waterfalls.

Input mode

SexyTopo's input mode options
The various different input mode options in SexyTopo's kebab menu and settings.

There are several different ways that a reading can be taken between stations. The normal approach is to go forward between stations. Station 1 to 2, 2 to 3, 3 to 4, and so on. However, legs can be done backwards, such as 2 to 1, 3 to 2, 4 to 3. This might be done when the passage dimensions force the person with the DistoX2 to remain ahead of the person who is marking the stations, or just to avoid having to lie in a duck or squeeze while taking readings. This might also be done when trying to avoid putting the Disto against a station that has a strong magnetic influence. Legs can also be leap-frogged, alternating forwards then backwards such as 1 to 2, 3 to 2, 3 to 4, 5 to 4 (used to cancel out inclinometer bias). Before taking a reading, SexyTop can be told to expect the readings to be done either forwards or backwards using kebab menu - Input Mode - Forward, or kebab menu - Input Mode - Backsights. It is important to remember to switch back when needed, so for leapfrogging, it is perhaps better and less work to reverse each leg as needed, using the context menu of the stations in plan view (described later).

SexyTopo can also be told to create survey legs from a splay taken forwards between the stations, then the same splay taken in reverse between the same stations. Therefore the station gets created from 2 readings instead of 3, with the first being forwards and the second being backwards. This is used for some surveys, particularly in America. This mode can be activated using kebab menu - Input Mode - Fore-/Backsights. In this mode, it will still recognise three forward readings as a forward leg, just like in Forward mode.

SexyTopo can also be told not to create stations, even if there are three matching splay readings, using kebab menu - Input Mode - Splays Only.

Lastly, SexyTopo used to have a separate setting for Fore-/Backsights, in kebab menu - Settings - Automatic backsight promotion. This setting still exists in SexyTopo 1.6.1 but it does not actually do anything.

The survey data

SexyTopo's data table view
SexyTopo's data table view. Two legs and multiple splays are visible, with the active station highlighted. The additional buttons are at the bottom.

Start off with the table view. There are 5 columns: "From", "To", "Dist", "Azm", "Incl".

FromToDistAzmIncl
1-12.12423.446.32
127.532117.35-7.42
234.565176.3434.42
3-5.3569.4523.95
From
The station the measurements are being taken from.
To
The station the measurements are being taken to, or "-" for a splay.
Dist
The length or distance of the measurement.
Azm
The compass bearing or azimuth of the measurement.
Incl
The clino or inclination of the measurement.

There is no proper option for specifying proper Left, Right, Up or Down (LRUD) measurements. SexyTopo expects you to use splays. You can of course use splays to merely measure Left, Right, Up and Down if that is your choice.

Legs are shown in bold, and can be seen as the lines that have a "To" station. Splays can be seen as the lines with "-" as a "To" station. The currently active station is shown highlighted in yellow. The currently active station is the one that will receive all new splays and legs, and will be used when linking existing surveys (covered later). Whenever a new leg is created, the new station will be automatically set as the active station.

The context menu for a station
The dialog that is used to add a new leg or splay. In this case, the LRUD entries setting has been enabled, so when adding a new leg (shown as Add Station), there are the inputs to specify the Left Right Up and Down measurements from the active station.

New legs can be manually added using the + button on the toolbar, and specifying the measurements from the active station. If kebab menu - Settings - LRUD entries is enabled, then the LRUD data can also be supplied when manually adding legs; they will be the measurements taken at the active station, and will be converted into splays with Up and Down pointing directly up and down, and Left and Right pointing out to the sides, with their compass bearing half way between the previous leg and the current leg. New splays can be manually added using the Add splay button (looks like sun rays) on the same toolbar. The last reading (splay or leg) can be deleted either using the Delete (trash) button on the same toolbar, or using kebab menu - Tools - Undo last reading. Be careful with this one, because it does not ask for confirmation first, and cannot be undone.

There are two separate context menus that can be opened in the table view. Tap and hold (long press) on a station to see the context menu for a station. Tap and hold on a Dist, Azm or Incl column to see the context menu for the data. The station context menu has the following options:

The context menu for a station
The context menu for a station in the data table view. The same menu can be opened for a splay end, but some of the actions are meaningless there.
Set Active Station
Set which station the next measurements should be taken from. This means that if you accidentally forgot to take some splays at a previous station, you can set the previous station as active, take some more splays from it, then set the most recent station to active again. If you have reached the end of a passage and would like to return to a previous junction, set the station at that junction to be active. (It is possible to choose this for splays too, though it is completely meaningless there, since splays cannot receive more measurements.)
Jump
→ Plan or → Elevation; shows the plan or extended elevation views, with the selected station in the centre of the view.
Rename Station
Allows you to specify a custom name for a station. This must be a valid Survex/Therion name, such as a simple string of letters, numbers and dots. Note that SexyTopo will try to work out the numbering scheme for subsequent stations based on the name of the active station, so if you just use text without a number, it will simply use that same text with the number 1 after it for the next station. As a result, you should either use this for the very first station in cases where you want to use PocketTopo's 1.1 style naming, or you should only change it for older stations (not the active station) when you want to supply a permanent name for a special station, such as trigpoint. This option cannot be used on the end of a splay. This option cannot be used to give a station a name that is already in use by another station, such as when trying to create a loop.
Edit Row
Allows you to manually edit the length, compass and clino measurements. Internally, the numbers are stored in much higher precision than they are shown in the table, and you can see their true values here.
Delete
Deletes this row of data, and any other rows of splays and legs that depend on it (for leg rows only). This means that it can delete a lot of data with legs. If, for example, you delete the row that creates station 2, and station 3 onwards are connected to station 2, then it will delete all stations and splays from station 2 onwards, apart from those directly connected to station 1.

The data context menu has two versions. The first is shown for a survey leg, and the second is shown for a splay. Most of the items are the same, with one extra option for splays. There are the following options:

The context menu for the data
The context menu for the data in the data table view. This is shown for a splay, so it has the Force New Station item which is not available for legs.
Edit Row
Allows you to manually edit the length, compass and clino measurements. Internally, the numbers are stored in much higher precision than they are shown in the table, and you can see their true values here.
Force New Station
For splays only. Converts the splay into a leg, and creates a new name for the newly created station. This has the disadvantage that the splay was created with a single reading, and not the average of 3 readings, so if there was some error in it, then it will be preserved. As a result, this should only be used for throw-away legs such as those at the end of a blind passage, which will never be used again, but are created just to ensure that the cave has the right surveyed length.
Delete Leg or Delete Splay
Deletes this row of data, and any other rows of splays and legs that depend on it (for leg rows only). This means that it can delete a lot of data with legs. If, for example, you delete the row that creates station 2, and station 3 onwards are connected to station 2, then it will delete all stations and splays from station 2 onwards, apart from those directly connected to station 1.
Move to Different Station
One of the most useful options. If you have accidentally left the wrong station active, then rather than having to delete and recreate all the readings, you can move individual legs and splays to a different station (changing their "From" station to the selected station). You might still have to recreate your sketches in the new location though.

In cases where you delete the parent of the active station, SexyTopo normally chooses one of the remaining stations to become active. Sometimes, however, it will not know where to add any new data that you collect. Secretly, it will continue to add it to the now-deleted active station, and will even vibrate to tell you when it creates a station. The data, however, is going nowhere (and in previous releases used to cause an unrecoverable crash, with the total loss of all data - thankfully that bug has been fixed after I lost an entire day of survey data). Therefore it is very important indeed to ensure that you select a new active station after deleting the active station.

SexyTopo does not provide any way to batch operations such as deleting and moving data. Each operation is performed one reading at a time. This is different from PocketTopo.

All sorts of statistics about the current survey, and the entire linked set of surveys, can be seen using kebab menu - Tools - Stats. This also allows you to see the length and depth of an overall project. However, it does not know the difference between surface, underground and duplicate legs, so the statistics are for the survey data itself, not the cave.

Plan view

SexyTopo plan view
Plan view in SexyTopo, showing several cross sections as well.

This is the most important view, where the surveyor spends most of their time. SexyTopo is designed to provide almost all editing functionality from this view, with only a few little exceptions. There are also a great many settings that control the way that this view looks; these will be covered later.

The main area of the view is where the sketches will be drawn; the sketching area. By default, this shows as a grid, with a single station shown in the middle. When survey data is recorded, the survey leg and splay lines will start appearing in this view, so that the features of the cave can be drawn around them. The most recently measured reading is highlighted in pink, while all other legs and splays are shown in red. Legs are shown slightly thicker than splays.

The scale, survey name, surveyed length and vertical range are shown in tiny writing in the bottom-left corner.

There is a main editing toolbar either below or to one side. The toolbar has several choices of colours on one row. On the second row are the Draw button, the Move button, the Erase button, the Text button, the Select button, the Settings button (not to be confused with the Settings menu), the Undo button and the Redo button. At the end of the two toolbar rows/columns are the Zoom in and Zoom out buttons.

Colours
Sets which colour will be used by the Draw tool. Tapping a colour automatically selects the Draw tool.
Draw
When selected, every tap or swipe on the sketching area will draw a dot or line in that area using the selected colour, just like the basic painting functionality of a painting application. It can only draw in thin lines (which remain the same thickness as you zoom). It cannot do fill areas or other brush shapes. In theory, pinch zooming works in Draw mode, but it is very hard to pinch zoom without accidentally drawing at least a few dots, so in general, pinch zooming should be avoided in this mode.
Move
When selected, dragging on the sketch area causes the map to be panned sideways in the selected direction. Pinch zooming works reliably in this mode. If you pan so far that you lose sight of the cave, either zoom out, or use the data view to select a station and jump to that station in the plan view, or use Settings button - Centre on Active.
Erase
When selected, tapping on a line/dot will either erase the entire line/dot or a part of it around where it was touched, depending on settings (covered later). This can be used to redraw all or part of a line that was not drawn to satisfaction, or remove a line or dot completely. It does not erase the survey legs or splays, it only removes the parts of a sketch. Warning: tapping on a sketch where there are no lines will cause SexyTopo to erase the nearest line/dot that it can find, even if that is not visible after being panned out of sight. This can easily cause content to be accidentally erased. Do not leave this mode enabled unless you really want to erase something!
Text
When selected, tapping on the sketch area will allow you to create a label point at that location.
Select
When selected, tapping on a station will cause it to immediately become the active station. Tapping again on it will cause its context menu to appear, without needing to tap-and-hold.
Settings
Settings for the sketch view, covered later.
Undo
Tap to undo the last action within the sketch. This could be the last bit of sketch that was drawn or erased, or it could be the last cross section that was created. It will not undo the last reading that was taken with the DistoX2 (for that, use kebab menu - Tools - Undo last reading, or the Settings button - Undo Last Reading). The undo stack is very large, and you can undo almost all parts of your drawing, all the way back to the first sketching that you did in the current survey since the last time SexyTopo was started. However, several actions can cause the undo stack to be cleared, so do not rely on it too heavily.
Redo
Redo the last action that was undone. Drawing something new will empty the redo stack, so if you undo a drawing, then draw something new, it will no longer be possible to redo the original drawing.
Zoom in and Zoom out
Zooms the sketch area, rather than needing to use pinch zooming.

Typically, a surveyor will decide their own colour scheme. For example, I like to use green for surface features (slopes) or ceiling features within the cave, black for cave walls, brown for cave floor features such as boulders or pitch lips, blue for water flows, and orange or purple for passage walls in passages stacked above or below the first passage. Typically a surveyor will also decide on how to draw their own symbols, but to aid understanding, it is usually best to try to make them look like the symbol that will be desired on the final survey, such as ceiling step symbol for a ceiling step, a pitch symbol for a pitch lip, small circles for cobblestone floors, etc.. Drawing up your own survey data in Therion and seeing the final output will usually teach you to create better drawings underground.

Sketch the walls and passage features, using splays from the Disto as a guide as to where to draw them. Since this is done using splays, there is very little point in just using basic Left, Right, Up and Down measurements (LRUD) at each station. Instead, splays can be aimed towards the walls showing every single point where the wall outline bulges significantly out or in, between this station and the next or previous stations. The walls can then normally be drawn just by joining the ends of the splays, except in places where the DistoX2 could not aim around a curve to see the wall. Most curves and wiggles can be accurately placed. Blind alcoves can be properly measured. Important features such as pitch edges, avens and prominent formations, can all be located correctly using splays to show their positions, rather than being approximated like they need to be with basic LRUD measurements. Splays allow a much more accurate rendering of the passage. You have the device, make use of it. It is important to have a lot of communication between team members, so that the person sketching, and the person taking readings, both know what the other one is pointing at or sketching. Time needs to be allowed for the person sketching to see each splay appear, so that they know where to draw which things. It is also important to remember that this is not a LIDAR scan; having a million splays is not useful, since it makes the lines very hard to see in Therion, and it is impossible to know which splays to aim for when tracing over lines. It can help to use Survex Aven to view a 3D rendering of the splays to work out which one points up or down, but it is better not to confuse matters in the first place. Try to find the right balance.

Occasionally, a splay might be needed towards a part of a wall or feature that cannot be seen from the station. Perhaps there is a boulder or other obstruction in the way. One option is to leave it, and aim for it from another station, but it might not be visible from the next station either. If it is something that needs to be measured and drawn accurately (such as a sump pool), then another leg can be taken to a more convenient location where it can be seen, so that more splays can be taken from there. The leg can be marked as a duplicate in Therion so that its length is not counted. It is common, however, to cheat a little. The DistoX2 can be lifted slightly above or below the station to allow a splay to be taken over the obstruction, without altering its horizontal length. This will cause the Therion 3D .lox output to be very slightly distorted (because the inclination of the splay will be wrong, and the obstruction will also be cut through), but as long as the cheating is only minimal, it is normally considered acceptable, since it allows the walls to be drawn in the correct locations. The centreline is used in all of the passage length and loop closure calculations, not the splays. The only people who will know or care, are the ones on the surveying team. Everyone else will just see a beautiful survey. Either way, this is a vast improvement over LRUD surveys, where the entire passage drawing is approximated from basic width measurements.

Creating text can optionally be done using the Text button to create a label point. When it is created, it appears visible on the screen in SexyTopo, scaled according to the zoom level when it was created. When exported to Therion, this becomes an almost invisible label point instead, so the text is not visible. The point is very easy to overlook there, and needs to be put into a scrap to allow Therion to compile the survey. This can be very confusing. As a result, it is common to just scribble handwritten text notes on the sketch instead, since these are then clearly visible in Therion, but do not affect the resulting PDF survey. Note, however, that sketched lines use up processing power, so the more text you scribble, the slower SexyTopo will eventualy become.

Context menu in plan view
Context menu for a station in SexyTopo's plan view. This also shows the density of splays that is generally useful when drawing up a survey. However, this will depend entirely on the size of the passage, and the number of features that need to be drawn.

In any mode, tapping and holding (long press) on a survey station will show the station's context menu. To avoid accidental drawing or erasing, it is best to only do this in Move mode. The station's context menu offers a few of the same items as the context menu in the data view, as well as several extra options.

SET ACTIVE STATION
Set which station the next measurements should be taken from. This means that if you accidentally forgot to take some splays at a previous station, you can set the previous station as active, take some more splays from it, then set the most recent station to active again. If you have reached the end of a passage and would like to return to a previous junction, set the station at that junction to be active.
→ DATA TABLE
Shows the data view, with the leg that created the selected station at the top of the view.
COMMENT
Allows a comment to be added to a station, which will show a very small comment icon next to the station. The comment will be exported as part of the Survex or Therion data export, at the end of the data line that creates the station (so station 2 will have its comment on the data line that goes from station 1 to station 2). As a result, it is not possible to create a comment for the first station in a survey, and it is not possible to create a comment for a splay (this is different from PocketTopo). When wording your comment, ensure that you state which station you are referring to, since this does not make it obvious which station it is referring to:
1 2 12.345 123.45 12.34 #flake on the right wall
but this does:
1 2 12.345 123.45 12.34 #station 2 is a flake on the right wall
REVERSE
Treats the leg that created the station as a back bearing, so that rather than being a set of readings from station 2 to station 3, it was a set of readings from station 3 to station 2. This allows very easy use of leap-frogging, as long as you remember to reverse the correct stations. It can also be used if you left the Input Mode on the wrong setting. Note that this only reverses the individual leg, it does not affect subsequent legs, and it does not affect any sketches, so make sure you reverse the leg immediately after it is created, to avoid having to redraw subsequent sketches later.
NEW CROSS-SECTION
Creates a new cross section view of the splays from the current station, which can be used to sketch a cross section. This will be covered later.
START NEW SURVEY HERE
Starts a new survey, linked to the current survey at the selected station. This option only works if the survey sketches have been saved first (you remembered to save regularly, right?). The newly created survey can be given a name, just like it would when creating a survey from the kebab menu. The newly created survey's station numbering will start from the same number as the selected station.
UNLINK LINKED SURVEY
If another survey is linked to the current survey at that station, it will unlink those surveys, so that the surveys act like they are entirely separate and unrelated. If multiple surveys are linked at the same station, a choice will be offered to decide which one to unlink. In general, this option should only ever be used when a survey has been accidentally linked, and needs to be unlinked again. This option does not request any confirmation, so be cautious with it, or you may need to manually remember which stations needed to be connected in order to link it back again (covered later). Note that if you unlink a survey then link it back again, SexyTopo will warn you that it cannot link it because it is not linked. It does in fact link it correctly, and the warning is mistaken.
DELETE
Deletes the station, as well as the row of data that created it, and any splays and legs that depend on it. This means that it can delete a lot of data. If, for example, you delete station 2, and station 3 onwards are connected to station 2, then it will delete all stations and splays from station 2 onwards, apart from those directly connected to station 1. If deletion causes the active station to be deleted, you will need to set a different station as active afterwards.
Settings for the plan and elevation views
The settings button menu for the plan and elevation views.
Results of Fade Non-Active
With vertical caves, the stations tend to end up above each other, and the splays are hard to distinguish. Fade Non-Active highlights the splays of the active station, to make them easier to identify.
Linked surveys showing data from several surveying trips
Linked Surveys shows all surveys that are linked together. This allows the whole project to be seen.
Results of Fade Non-Active
Disabling Show Splays and Show Sketch, and enabling Linked Surveys, gives a similar view to PocketTopo's overview.

The Settings button (cogwheel) has a lot of quick settings that you might want to change while editing. Some of them exist to hide clutter, some of them exist to show more information, and some of them help you make sense of the view.

Undo Last Reading
Deletes the last reading (splay or leg).
Centre on Active
Pans the sketch so that the currently active station is in the middle of the view.
Auto-Recentre
Whenever a new station is created or otherwise becomes active, this will pan the sketch to put that station in the middle of the view. Warning: if you are still sketching when the new data comes in, this will cause your drawing to suddenly jump to the new location under your stylus. This can lead to a lot of frustration, so unless the person using the instruments can be forced not to touch buttons until the Android user is ready, this setting should be disabled.
Snap to Lines
If you sketch a line that ends very close to the end of another line, this causes them to join up as one long line, with a little jiggle at the join. This can cause intentionally open gaps (eg. ongoing passages) to get accidentally closed, but can help to avoid unwanted gaps in walls. Use with caution.
Fade Non-Active
Fades out most legs and splays, and only shows them highlighted if they are directly connected to the active station. This is particularly useful when trying to survey passages stacked vertically above each other (or horizontally beside each other in extended elevation view), where the splays belonging to each station get in the way of each other. It was originally created to help when surveying pitches.
Show Splays
Can be used to show or hide splays, to give a simplified overview of the centreline and sketch. When disabled, this is similar to PocketTopo's overview.
Show Sketch
Can be used to show or hide the sketch, to give a simplified overview of the centreline and splays. When disabled, this is similar to PocketTopo's overview.
Linked Surveys
Can be used to show or hide all other surveys connected directly or indirectly to the current survey. This allows you to see the entire surveying project all at once. When enabled, this is similar to PocketTopo's overview.
Graph Paper
Show or hide the measurement grid that overlays the sketching area.
Station Labels
Show or hide the station names/numbers.

Extended elevation view

Extended elevation view
Extended elevation view defaults to showing all survey branches extending to the right.

SexyTopo refers to this only as Elevation view, but it is actually an extended elevation. All twists and turns are unfolded, and all legs are shown pointing in the same direction. All side passages and oxbows are also shown in that direction, starting at whichever station they were surveyed from. By default, the cave is shown with each leg heading from left to right (known as "extend right" in Therion). The ceiling and floor should be sketched in place accordingly. Most other features are not normally sketched in extended elevation view, though some might be, such as the positions of hangers for drawing a rigging topo. Important rock spikes or ledges might sometimes be drawn.

Extended elevation station context menu
The context menu for stations in extended elevation view, showing the option to toggle the direction.
Extended elevation with direction changes applied
Toggling the direction allows direction changes in the cave to be preserved, and also allows the clutter caused by overlaps to be reduced.

In extended elevation view, a station's context menu has the same items as in plan view, but now gains an extra option called TOGGLE LEFT/RIGHT. This turns the leg that created this station, and all subsequent legs, to the left. If the leg already points to the left, then it will switch it to the right instead. It is very important to note that switching this direction will affect all subsequent legs that extend beyond that station, which might have already been set to their own directions. The subsequent direction changes will be lost, and will need to be recreated if they were needed. When changing the direction of a station, any sketches that had already been drawn around it, will not move. Therefore direction changes should be done before drawing sketches. Direction changes cannot be undone, and need to be recreated manually if it was done by mistake. Note that SexyTopo does not show linked surveys in the correct place when the station they are linked to gets its direction changed. This is a harmless bug.

Direction changes like this might be used to keep passages out of the way of each other, or might intentionally be used to replicate the feeling of a hard corner within the cave, or might be used to try to make passages line up nicely with each other when one side of a loop is longer than another. In general, SexyTopo has very limited controls, while Therion has vastly better controls. The final rendered survey might also use a projected elevation instead of an extended elevation. As a result, it is uncommon, except in very simple caves, to actually use an extended elevation the way the data was originally recorded, and the entire set of drawings will probably need to be recreated manually after manipulating the extended elevation configuration in Therion. As a result, elevation drawings made within a cave should be considered only a guide, as they are likely to be manually recreated later. They should be recorded mainly as a reminder of the shape of the ceiling and floor. The direction controls are therefore not really of much use in most caves, apart from when avoiding clutter.

Again, splays can be aimed towards the ceiling and floor along the passage showing every point where the outline bulges significantly out or in, between this station and the next or previous stations. The floor and ceiling can then normally be drawn just by joining the ends of the splays. It is very common for the high and low points not to be perfectly visible from a station, and in such case it is normal to move the DistoX2 a short distance away from the station (keeping it at the same height as the station) in order to be able to aim into ceiling or floor clefts. While this is not perfect, and it does cause the Therion 3D .lox view to be slightly wrong (if that matters to you), it is generally considered to be acceptable, as it allows the extended elevation to be drawn correctly. Splays also get extended, and SexyTopo tries to extend them in the most appropriate direction when surveying around sharp corners. However, it is inevitable that some will point in the wrong direction sometimes, so an aven's splay can appear to be before a station rather than after it. Take care which splays you trust.

When exporting surveys to Therion, the extended elevation direction changes will be exported too, after the survey data. This can be used within Therion to begin configuring the desired extended elevation.

Cross sections

Cross section sketching
Cross section drawn next to its station. The dashed line joining the cross section and station can be seen. There is a faint brown line and direction arrow at the station, pointing eastwards. The splays appear to bleed outside the cross section, becuase those splays were taken after drawing the cross section, and are in fact pointing further down the passage.

Cross sections may be sketched as frequently or infrequently as desired. Some surveyors like to take cross sections at every station, even though it is very unlikely that cross sections will be used in that density on the final survey. Some like to take them every 2 or 3 stations, just in case one of those is wanted. And others only take them every time the passage has changed shape signifcantly. For scientific research, one cross section every 5 stations is usually enough to study the speleogenesis (cave formation).

At the station where you want to draw a cross section, take splays roughly perpendicular to the passage, towards the walls, ceiling and floor, as if you were cutting through the passage. Do not worry about whether the last leg was heading perfectly along the passage, as it actually makes very little difference unless the leg was aiming at a very sharp angle. Splays can be taken towards all the important corners and bulges of the passage, making sure to hit the highest, lowest and widest parts of the passage. It is very common for the station to be in an awkward position which is not able to see all of the passage shapes (particularly for stations in the bottom of a keyhole trench). The shape can either be drawn as an approximation, or the DistoX2 can be moved a little distance away from the station to be able to see an important point in the passage. This will end up with the laser lines appearing to cut through the walls of the passage, so take care when drawing the cross section and plan if this approach has been used.

Cross sections can be drawn in either the plan or elevation views; SexyTopo doesn't care which, and neither does Therion. Zoom out enough so that you can see where you want to sketch the cross-section. Be warned that on some devices, placing cross sections can cause a crash if you are zoomed out a long way, so make sure you save first! Tap and hold (long press) on the station to open the station's context menu - this can be done on any station, even if it is not active. Select NEW CROSS-SECTION. The next time you tap on the sketching area, it will put the cross section in the place that you tapped (and may then scroll it out of sight, due to a bug). Cross sections cannot be moved later, so make it a good place where you think it will not overlap with the cave (if it does overlap, it will not break anything, it will just start to look cluttered). It can be placed as far away from the cave as you would like. If you accidentally placed a cross section, tap the Undo button to remove it again. Cross sections can be deleted later using the Erase tool, and that erasing can be undone with the Undo button. The cross section can be placed before taking the splays if needed.

When SexyTopo is asked to create a cross section, it will take all of the splays attached to the selected station, and draw them as they would appear when seen horizontally, in the direction of travel. Note that perfectly vertical splays will be dashed, and can be harder to see. A cross section line will appear on the station, with an arrow at one end showing the direction that the cross section is facing. The station and its cross section will be joined by a dotted line, so that you can remember which station it belongs to (it is also marked with the station number). Sketch around the splays on the cross section in the same way as any other piece of cave survey. If you take any further splay readings from that station, they will appear on the cross section, so ensure that you are finished drawing the cross section before taking any other splay readings that might confuse your cross section.

If this is the very first station, it will have no direction of travel, so it will assume you want the cross section to face northwards. Once the first station has a leg going away from it, that direction will be used instead. If a station has one leg coming into it and another leg going away from it, then SexyTopo will try to use the direction half way between those two legs for the cross section. This sounds good, but it gets the direction wrong when the difference between the compass bearings is over 180°, since it will use the numeric direction half way beween them (this is a bug). If a station has one leg coming into it, and two or more legs going away from it, then SexyTopo will use the direction of the leg coming into it only, just like it would have done if there were no legs going away from it. Once a cross section has a direction, it will remain in that direction even if more legs are added afterwards. For all these reasons, cross sections should be created as the first step, before creating additional legs (except when you need a cross section at the very first station).

A station can have multiple cross sections, and they can face in different directions. This means that if you create a cross section, then add a leg going away from the station, then add a second cross section from the same station, the first cross section will use only the incoming leg for its direction, and the second cross section will use both the incoming and outgoing legs for its direction. SexyTopo will only draw one direction arrow, however, which will be the direction for the first cross section that was created.

At the time of writing, SexyTopo does not export cross sections to Therion properly (the station and splays are missing, and they may appear out of the grid area of the XVI file). This is a bug that is being worked on.

Vertical cross-sections (such as the cross section of a shaft) are a concept that is not understood by SexyTopo. Fortunately, these are incredibly easy to replicate. In the plan view, simply take the relevant splays while in the shaft, and draw the cross section on the plan itself. This can be used in Therion to create a cross section scrap.

Drawing sequence

The following sequence is not a hard rule. Each team can decide on the process that works best for them, but this sequence generally helps avoid having too much clutter at the time when each part is being sketched. This sequence is based on the idea of using splays to achieve accurate passage drawings, rather than LRUD and approximate sketches.

Sequence steps
Step 1; the cross section. Step 2; the passage walls. Step 3; the passage features. Step 4; the ceiling and floor.
  1. When you arrive at a new station, decide if you need a cross section there. If so, take the splays that will be used to draw the cross section. (If it is the very first station of your survey, and if this is a standard horizontal cross section, take the readings to create the leg to the second station, then make the first station active again, before creating the cross section.) Now create the cross section, and place it somewhere useful. Sketch the cross section.
  2. Now splay the passage walls, far enough back towards the last station to be able to draw the walls completely in between, and far enough forwards towards the next station to be able to draw the walls in that direction too. Sketch the walls in plan view.
  3. Now splay the important features within the passage: pitch edges, aven edges, slopes, prominent formations and boulders, hangers, pools. Anything that will be drawn in its correct position, rather than just symbolically represented. This part needs to be done with the sketches being drawn as the data comes in, so that the person using SexyTopo can see which splay just appeared in plan view.
  4. Switch to extended elevation view. Splay the highest and lowest points along the ceiling, back towards the last station, and forwards towards the next station. Sketch the ceiling and floor in elevation view.

Saving and autosave

SexyTopo in the Android optimised apps settings
In the Android optimised apps settings, SexyTopo can be set to not-optimised. This tells Android not to close it when other apps are focused.

SexyTopo automatically saves all DistoX2 data as it comes in. However, sketches are not saved until you tap the Save icon or use kebab menu - File - Save.

When switching apps, Android may randomly decide to close background apps, including SexyTopo, so make sure you save before switching apps (you can tell Android not to close SexyTopo in the Android app settings). If not, you might find that when you switch back to SexyTopo, it has your data, but not your sketches. Er ... thanks Android.

SexyTopo is software. It can have bugs. It may crash. If it does, you will lose all your unsaved sketches.

I cannot stress this enough; save regularly!

If SexyTopo crashes or gets forceably closed by Android, there is a chance that its regular autosaving feature might have saved your sketches, which it does in a separate file to avoid overwriting your survey. After retstarting it, use kebab menu - File - Restore Autosave.

When you are done surveying, use kebab menu - File - Exit SexyTopo. Not only will this ensure that it is not wasting your battery with Bluetooth, but it will also perform a final check to ensure you have actually saved first, and it will warn you if not. Say thank you to SexyTopo. Then remove SexyTopo from your application switcher, so it doesn't get accidentally opened. This will also make it less likely that you accidentally scribble something on your survey while the device is in storage.

If you are paranoid, you may also choose to export it in Therion format, so that even if you somehow manage to corrupt the SexyTopo data, at least you still have it in a useful format.

Performance, clutter and linked surveys

Linked surveys showing data from several surveying trips
When there are too many passages overlapping each other, it becomes impossible to see the part that you are editing. Linked surveys allows you to break your surveying trip up into separate sections, and work on one section at a time.

Surveys should be split up into at least separate-surveys-per-cave and one-survey-per-trip at least, as mentioned earlier. However, there are other considerations too. Perhaps a survey has progressed into passages stacked underneath each other, making it awkward to see which splays belong to which stations. The Fade Non-Active setting can of course help. However, in some caves, it can become a nightmare of passages stacked above each other, with splays everywhere. It is important to remember that Therion does not have any equivalent to Fade Non-Active, so in Therion, the splays can still be indistinguishable. Before the clutter gets too much, end the current survey, and start a new linked survey from the current station. These can be joined up in Therion later, but while editing, you can hide linked surveys, and sketch in a clutter-free environment.

Before version 1.6, SexyTopo had a serious limitation regarding how much data it could render at once. After about 200 metres, it was a good idea to start a new survey, to prevent it from slowing down and getting choked up on the amount of data. If this ever happens, it starts to take longer and longer to receive data from the DistoX2, and SexyTopo hangs up while that data is downloading, either becoming non-responsive or showing a blank screen for several minutes at a time. This issue was caused by the amount of sketches, not the underlying data, so the more you drew, the sooner the issue would appear (and scribbled text or scribbled shading of areas like sumps or canals means there is a lot more to render). This was largely fixed in SexyTopo 1.6, and it now copes with several km of cave being rendered at once.

However, this issue still appears quickly on older devices, such as those running Android 4. It is best to use a modern device, and it is also best to limit your sketching to the important details with simple symbols, and not a beautifully shaded artwork festooned in decorations. Breaking up your survey into several surveys can alleviate this issue if it becomes a problem for you, since you can just work on the active survey, and hide the previous ones.

Linked surveys and loops

An unclosed loop
Stations 9 and 12 are in fact the same station, but there is a loop closure error. SexyTopo cannot equate the stations, and it also does not know how to distribute the errors in the sketches. That job is left up to Therion.

If you have created a new survey related to an older survey, and you forgot to use START NEW SURVEY HERE, you can still link the surveys. In one of the surveys, set the active station to be the one where the surveys should be linked. Select kebab menu - Tools - Link to an Existing Survey. Select the survey that you want to link to, and then select the station in that survey that should be linked to the currently active station.

SexyTopo works with simplistic vector drawings, and cannot manipulate the vectors or sketches to distribute the errors in a loop, so it would not know how to cope with the two versions of a station not lining up. As a result, it is not possible to create a loop in SexyTopo. Stations cannot be renamed to create loops (this is different from PocketTopo, which can accept loops in the data, but also does not know how to distribute the errors in the sketches). Surveys cannot be linked in a way that would create a loop.

Surveys can only be linked via one path. That means that survey1 and survey2 cannot be linked in two separate places, but they can be linked in one place. Also, while survey1 can be linked to survey2, and survey2 can be linked to survey3, it is now not possible to link survey3 to survey1, as that would also create a loop.

If there is an actual loop, then the two versions of a station can be equated in Survex or Therion using the equate command.

When exporting surveys to Therion or Survex (or anything else) SexyTopo only exports one survey at a time. It does not have any way to export a parent survey that equates the stations in the surveys below it to link the data. This needs to be created manually, and the links need to be manually created as equates.

Exporting and importing

The export formats
The export dialog, showing the available formats.

Exporting is extremely simple in SexyTopo. Save the survey. Use kebab menu - File - Export. Select the format that is required, such as Therion. That's it. Done.

(For PocketTopo users, this cuts out the step where TopParser was needed in order to generate Therion files from PocketTopo files. However, unlike TopParser, SexyTopo does not currently create any placeholder scraps in the .th2 files, so these need to be created in XTherion instead.)

SexyTopo will have created the files in Internal Storage/Documents/SexyTopo/Exported/Therion/[surveyname] (or the folder name matching whichever format name you selected). The folder will contain all the files that are needed, which can be transferred via USB or online file sharing (the files can also be compressed first using the Android file manager, so that they can be transferred as a single file).

You can also back up the SexyTopo data (backups are always a good idea), by copying the data folder for the survey, which can be found in Internal Storage/Documents/SexyTopo/Surveys/[surveyname]. Note, however, that Android 11 does not allow SexyTopo to load data files that were created by SexyTopo on another device, or which were copied into that location by another app. This is a (stupid) Android restriction relating to file access permissions. It is not possible for SexyTopo to ask for access to them, because that privilege is only given to apps that have special authorisation from Google, and that is only given for file management apps. As a result, although you can (and should) back up your data directory, it is not currently possible to restore the files from backup. This is a limitation that the author of SexyTopo is currently investigating workarounds for. Yay, Android.

Importing of survey data also works to do the reverse of exporting. SexyTopo can import data in Therion format, Survex format, or PocketTopo .txt format. It is limited to basic Therion and Survex data formats, and cannot cope with the fancier data formats (such as diving data). It cannot cope with equates in the import data. Basically, the data must be in the same basic format that SexyTopo itself would export. This should be enough to allow SexyTopo to load data gathered by PocketTopo.

To import files, put them in an appropriately named folder in Internal Storage/Documents/SexyTopo/To Import. So for example, to import survey data in Therion format from a file called gbmainchamber.th, create a folder on the device called Internal Storage/Documents/SexyTopo/To Import/gbmainchamber/ and put that file in it. Then in SexyTopo use kebab menu - File - Import - gbmainchamber. If it worked, it will immediately open that survey to show you the survey it imported. If there is already a survey with that name, it will check first that you want to overwrite it with the new data.

If import fails, there are several possible reasons. If it shows a message like "Error: Syntax error in regexp pattern near index 8 \{(.*?)}", this is because you have .xvi images in the folder, and it cannot import those in the version of SexyTopo that you are using. If it shows a message like "Error: Cannot import a file of that type", you probably tried to put the .th file directly in the To Import folder, instead of a folder with the same name inside it. Alternatively, you might be using a version of Android (such as Android 11) which does not allow SexyTopo to access the files - this is the same problem that prevents it from restoring from backups.

More settings

Larger lines and symbols
Some of the settings can be used to make the lines and text more visible.
Android's colour inversion
SexyTopo does not have a dark theme, which might be preferred when working in a low light environment. However, Android does. Android Settings - Accessibility - Visibility enhancements - Colour inversion. This makes photographs look very strange, but it works well with SexyTopo. In spite of its name, it does not actually invert colours, it just inverts brightness, and tweaks certain colours (blue is brightened). (Fun fact; it is not actually possible to screenshot this since the screenshot shows the original image, so this screenshot is simulated by inverting colours, and rotating colour hue by 180°. The brightness tweaks are not simulated.)

There are several display options in kebab menu - Settings, mostly affecting the Plan and extended elevation views.

General - Orientation
Optional. This can be used to override the Android system orientation settings, so that SexyTopo can forceably use auto-rotate, portrait or landscape for the data table, plan and extended elevation views.
General - Vibrate on new station
Recommended; enabled. Causes the Android device to vibrate whenever three splays get converted into a station. This is an incredibly useful setting, but sadly it stops working after a while. Restart SexyTopo to get it working again.
General - Hot corners
Optional. Shows small grey squares overlaid on the corners of the plan and extended elevation views. These can be used to pan the view even when the Draw, Erase, Text or Select modes are enabled, by dragging within the corners of the view. If this fails for you, try disabling it and enabling it again. With some devices, only the outer quarter of the squares responds correctly.
Disto-X Communication - Automatic backsight promotion
Obsolete. This setting has been replaced with kebab menu - Input Mode - Fore-/Backsights, and does not do anything any more.
Disto-X Communication - Max distance delta and max angle delta
Optional. These set the difference between the three splays which will be allowed when recognising them as a leg. Lower numbers force the survey to be more accurate, and therefore can be used to increase the grade of the survey if desired.
Calibration - Algorithm
Recommended; Auto. Can be used to override the calibration algorithm used for DistoX and DistoX2 devices. In general, the default value of Auto will produce the correct result with almost all devices, no matter which batch they are from. However, some batches of devices may require a specific setting.
Sketching - Delete line fragments
Recommended; enabled. Deletes the parts of the line that are closest to the point that was touched, rather than deleting the entire line. If disabled (so it behaves like PocketTopo), ensure that you draw lines in short lengths, then release and start a new line. Otherwise, deleting will force you to redraw the entire line instead of just the faulty part of it.
Sketching - Highlight latest leg
Recommended; enabled. Colours the most recent leg or splay in the plan and extended elevation views, so that it can be seen. This can be very helpful when trying to work out where the last reading ended up, and is almost essential for surveys making heavy use of splays.
Sketching - Text tool label size
Optional. Set how big the visible text label should be when labels are created, relative to the current zoom level.
Sketching - Survey symbol size
Part of a future plan to add drawing of specific symbols, like TopoDroid can. Does not currently do anything.
Sketching - Leg line thickness, Splay line thickness, Station diameter, Station label size
Optional. Set how big the various parts of the survey data should be drawn in the plan and extended elevation views. Very useful for surveyors with poor eyesight or high resolution devices, as it can replace the need for wearing reading glasses. Can also be used to make things more visible on a dusty or scratched screen. None of the settings can make the sketches more visible, however.
Sketching - Anti-alias sketch lines
Recommended; disabled. makes the sketch lines look a little bit smoother. This uses extra graphics processing power, and has very little effect, so it is not really worth the performance impact.
Manual Data Entry - LRUD entries
Optional. Show LRUD fields when manually adding legs. This is useful only for surveys conducted using traditional instruments with SexyTopo only as a digital notebook. This is not relevant when using a DistoX2.
Manual Data Entry - Azimuth as degrees/minutes/seconds
Recommended; disabled. Show separate degrees/minutes/seconds fields for the compass bearing when adding or editing legs and splays. The numbers will then be converted into standard decimal degrees. Note, however, that it does not pre-fill the inputs correctly when editing the data. This should only be used if the instruments do not provide any other option (such as a theodolite).
Developer - developer mode
Enables the Dev submenu within the kebab menu.

Problem solving

Kebab menu - Help - Guide may be used for further information on how to use the app. It includes a section on troubleshooting DistoX2 communication failures.

Android preparing crash logs
After a crash, Android may offer to send a crash log as feedback. The exact wording varies depending on the Android version.

If SexyTopo crashes, Android may ask to upload crash logs to Google, which can then be shared with the developer. The prompt allows you to supply additional comments and an error report with more system data. The crash log is uploaded next time the device is connected to WiFi.

When something has gone badly wrong, report bugs to the SexyTopo project on GitHub. The author of the app may ask for debugging data. This can be viewed using kebab menu - Tools - System Log.

The author of the app may ask for developer mode to be enabled. Once enabled, kebab menu - Dev - Debug mode may be used for further debugging, and other options within that menu may deliberately cause the application to malfunction and crash.

A quick note on Android permissions, and what they are used for. When you first start the SexyTopo app (or when you install it, depending on what version of Android you are using), it will ask for the Android Files and Media permission, and the Location permission. The Files and Media permission is used to allow SexyTopo to store the survey files and exported survey files in a place where they can be backed up and copied. If you deny this permission, SexyTopo will be unable to save or open any surveys, and it will always start with a blank survey, so it is an essential permission.

The Location permission is needed to enable Bluetooth pairing, which is required if you want SexyTopo to be able to manage pairing with a DistoX2 or other device. Bluetooth pairing and Location are treated as one permission by Android, because Bluetooth pairing allows an app to see Bluetooth hardware identifiers, which can establish your location using Bluetooth location beacons, which are installed in some buildings. This is not what SexyTopo uses Bluetooth for; it uses it to pair with a DistoX2.