I achieve my version of what you describe all the time, but I think my standards are lower than yours. :-)
Your standards are excellent, you have provided the answer! Do it in MetaPost: layout externalcentreline code metapost def l_survey_cave_MY(expr P) = if known ATTR__scrap: if ATTR__scrap = "": l_survey_cave_SKBB(P); fi; else: l_survey_cave_SKBB(P); fi; enddef; endcode symbol-assign line survey:cave MY symbol-hide point station endlayout Wherever this sees centreline, it checks "Is this inside a scrap?". If so, it does nothing. If not, it draws the centreline. Similar tricks work for surface (l_survey_surface), or stations (if you actually want to render stations for some reason). Many thanks for pointing me in the right direction :) Tarquin