Ross McAtamney

FXL Creation from scratch - Process Tear-down

Blog Post created by Ross McAtamney on Mar 12, 2020

I have spent the last couple of days putting an existing code library into an FXL, and wanted to share some pain, thoughts and feelings on the process for anyone interested.


I also want to share some pain here as a user.



Create a FXL with ~410 codes, about 190 point features and 220 line styles

We were provided a DWG file with the codes, layer names, linework, colours and symbols, as well as some reference documents for some of the more finite details on attributes and layers. 



To start with I created a blank FXL in TBC and exported that to a CSV for editing and in Excel I then block edited the codes according to their feature type and the columns. Once complete and happy defining all the fields, the CSV file was saved and then imported into TBC to define the FXL, at this stage the file needed to be redefined according to what type of code the imported format was, along with the columns.

  •   ENHANCEMENT REQUEST: If the imported CSV is imported with the same headings as the exported CSV with just the code information filled out, why can't this simply be an import straight in?
    Can we get the CSV to FXL function to recognize the format of the file and import it rather than messing around selecting columns and redefining what they are.

The result here was that all the layers were created, however they were all white, and we needed to give the layers a correct colour.

Importing Layers into the Layer Manager:

So using the Layer Manager I exported the layers to the .Layer format which (fun fact) is an XML format and can be imported into Excel (It requires the development tab to be turned on and allow the export to a .XML function).

  • ENHANCEMENT REQUEST: Can we get this to export a CSV? This would be easy when defining layers like this, the .LAYER format as an export isn't particularly helpful.

The layers were edited in excel to give them colours and also give groupings to them which was a request in the FXL creation. When exported to .XML from Excel the file can either be renamed to .LAYER or imported into the Layer manager in TBC as a .XML if all files are shown in the import window.

  • ENHANCEMENT REQUEST: Can we get the Layer Manager importer to recognize .CSV files or at the very least .XML as a native format.

When importing however while there are Layer Groups defined in the window, the groups aren't created in TBC and are ignored.

  • BUG: Layer groups defined in imported layer definitions should be created.
  • BUG: Importing layer definitions with the same name, but different groups appears to import only one layer in the final group location, with the first layer definitions parameters, so:

    Name – Red – Solid – Group 1

    Name – Green– Dot – Group 2

    Name – Blue– Dashed – Group 3

    Seems to become:

    Name – Red – Dashed – Group 3

At this point it was a bit of a mess but I had all the information needed so I started a new project and Created the Layer groups, then imported my layer definitions.




Importing layer definitions and codes:

The problem came when I created my empty FXL and imported the CSV (needing to define all the import information again). This seemed to cause a bit of a mess as most of the layers I had imported previously reverted to white and default line style information, not all of them just most of them.

  • BUG: Importing a CSV to create an FXL seems to override some of the Layer information, at the very least at a graphical UI level.

That is ok, we can get back there right? No, re-importing the layer information into the Layer Manager doesn't fix this.

But the layer groupings work...right?

  • BUG: Imported Layers from a CSV in the create FXL process cause some layers to be pushed out of their original groupings and back into the default Layer group. Not all layers do this, and it seems to be a weird selection of layers, but it happened to me for about 20% of layers.

This can be fixed though by going back into the layer manager and changing the layers that have shifted out of their grouping from <<none>> to their correct group. Luckily this can be done to multiple layers at once. FINALLY we can create our base FXL.


OK, so I have a bit of a mess, but now we have "clean" files, lets start again to get a clean slate.



  1. Start a blank project
  2. Create Layer groups
  3. Import Layer definitions
  4. Import FXL
  • NOTE: Importing the FXL this time rather than the CSV retains the Layer definitions.


Now it is time to move onto defining symbols and linestyles. TBC lets you import a DWG file with Blocks in it and use those blocks as Symbols. This is straight forward for solid blocks brought into TBC as a DWG such as a standard tree.


  • BUG: with blocks created in TBC from a combination of a different items such as linework and a static text attribute, exporting and using the block as a block seems to work, however when the block is used as a symbol it is scaled differently to the original file. Grid and ground has no impact on this process.

Why not use a block instead of a symbol?

  • ENHANCEMENT REQUEST: Allow scaling of Blocks according to attributes in TBC for blocks using one point pickups.

This aside we still need to individually go through and assign each symbol independently to the feature code.

  • ENHANCEMENT REQUEST: Give the CSV to FXL importer the option to import a symbol / block name to be used. This way this could all be set up in TBC and when importing the FXL definition it just maps to the existing blocks / symbols.


So there are some issues with point and block imports, what about addressing the linear features definitions. They can be defined in the CSV to FXL import.

  • BUG: When importing a line style definition into TBC from an imported file for the layer manager, even if the linestyle exists we seem to want to show it as being a solid line in the UI of the layer manager with the correct name. There seems to be a disconnect between the imported definition and the line style manager. This could be a UI glitch.

Even with this in consideration, we hit one other problem in this process.

  • ENHANCEMENT REQUEST: Allow linestyles to have a text attribute placed in it. Currently for this to happen the text has to be drawn in the linestyle manager which is messy to say the least.
  • ENHANCEMENT REQUEST: Allow the importing of linestyles or assigning blocks to a linestyle. This would simplify this process and make it far more user friendly. Block the linesyle and define the two ends of the block of where the linestyle repeats.


So after all of this, where did we get?

Well the process works, sort of. There is a LOT of messing around and fiddling to get a desired outcome and along the way users are fighting with what should / could be a simple process.


From this the above workflow is still recommended:

  1. Start a blank project
  2. Create CSV of blank FXL and populate
  3. Import CSV and create FXL
  4. Start blank project
  5. Create Layer groups
  6. Create and then Import Layer definitions
  7. Import FXL
  8. In TBC assign linestyle and symbols to features
  9. Export Final FXL
  10. Create template with Layer groups, Layer definitions and final FXL