A good bit of code @SLW210 have a look at this use the survtut.xyz-2.csv. After running your code. Yes worked with your code.
It is very much code under development, I found that in the original software some 40 years ago it uses some other method of joining strings, the dwg I attached was edited as the result from the other software years ago. As it used a point library all line work was on correct layers.
Point with 00 means its a point only so place a matching block if applicable, eg 00TR6 or TR6, would be the block "Tree6", expanding more TR6*6 was a 6m spread with a 600 trunk this used a dynamic block with 2 objects spread and trunk, which are resized to match, but was done only in CIV3D as a manual update.
In the survtut.xyz.csv is extra point coding *C is close like pline, 01eb*02eb is string 02eb starts here at this point, *A is arc option 3 points if I remember correct.
The Excel may be useful also its a dump from CIV3D description keys. Remove the XXXX had a client name there. Just a comment you can export the descriptions keys from CIV3D to Excel built in, but no import keys, so I wrote one. It is where I would start with a look up table. That is next step.
spagetti.lsp Export of desc keys.xlsx