GDLnucleus Light – Free Version

A streamlined working environment for bidirectional conversion between ArchiCAD GSM files and HSF source files (Human Source Format).

🎯 What does GDLnucleus Light do?

GDLnucleus Light allows you to edit ArchiCAD GDL library elements in a text-based format (HSF):

Advantages of the HSF format:


πŸ“ Project Structure

your-project.project/ β”œβ”€β”€ 01_gsms/ # GSM library files β”‚ └── library-name/ # Name of your library β”‚ └── object-name.gsm # Your GDL objects β”‚ β”œβ”€β”€ 02_hsf/ # HSF source files β”‚ └── object-name/ β”‚ └── object-name/ β”‚ β”œβ”€β”€ scripts/ # GDL scripts (1d.gdl, 2d.gdl, etc.) β”‚ β”œβ”€β”€ images/ # Embedded images β”‚ β”œβ”€β”€ paramlist.xml # Parameter list β”‚ └── … β”‚ β”œβ”€β”€ 03_backups/ # Backups & working directory β”‚ β”œβ”€β”€ object-name/ # Temporary during GSM2HSF β”‚ └── timestamped/ # Timestamped backups β”‚ β”œβ”€β”€ 04_logs/ # Log files β”œβ”€β”€ .vscode/ # VS Code configuration β”‚ β”œβ”€β”€ tasks.json # Build tasks β”‚ β”œβ”€β”€ settings.json # Project settings β”‚ └── launch.json # Debug configuration β”‚ β”œβ”€β”€ bin/ β”‚ └── gdlconverter.py # Conversion script β”‚ β”œβ”€β”€ gdlconfig.json # Configuration file └── project.code-workspace # VS Code workspace


πŸš€ Quick Start

1. Requirements

macOS Python Setup

On macOS, the command is usually python3, while the tasks use python.
Create a symlink once:


sudo ln -s /usr/bin/python3 /usr/local/bin/python

Alternative: Change python to python3 in .vscode/tasks.json.

Recommended:
The script bin/gdlconverter.py contains a shebang (#!/usr/bin/env python3) and is executable.
VS Code tasks execute the script directly and set PYTHONUNBUFFERED=1, equivalent to the -u flag.

Check permissions:

ls -l bin/gdlconverter.py
chmod +x bin/gdlconverter.py


βΈ»

πŸ›  Project Setup

a) Create Folder Structure

mkdir -p 01_gsms/your-library
mkdir -p 02_hsf
mkdir -p 03_backups/timestamped
mkdir -p 04_logs

b) Place GSM Files

Copy your GSM files into:

01_gsms/your-library/object1.gsm
01_gsms/your-library/object2.gsm

Important:
The folder name under 01_gsms/ is automatically detected as the library name.

βΈ»

πŸͺŸ Windows-Specific Notes

Python Installation (Windows)
  1.    Download from https://www.python.org/downloads/
  2.    Enable β€œAdd Python to PATH”
  3.    Verify in PowerShell:

python --version

Should show: Python 3.x.x

LP_XMLConverter Path (Windows)

Typical paths:

C:\Program Files\Graphisoft\ArchiCAD 27\LP_XMLConverter.exe
C:\Program Files\Graphisoft\ArchiCAD 26\LP_XMLConverter.exe
C:\Program Files\Graphisoft\ArchiCAD 28\LP_XMLConverter.exe

Example configuration in gdlconfig.json:

"platforms": {
  "windows": {
    "lpxmlconverter": "C:\\Program Files\\Graphisoft\\ArchiCAD 27\\LP_XMLConverter.exe"
  }
}


βΈ»

πŸ”„ Workflow

GSM β†’ HSF
  1.    Open the .code-workspace file in VS Code / Cursor
  2.    Run task:
  β€’ Via GDL Task Runner: GSM2HSF (all files)
  β€’ Or: Tasks β†’ Run Task β†’ GSM2HSF (all files)

Result:
  β€’ HSF files created in 02_hsf/object-name/object-name/
  β€’ GDL scripts located in scripts/

βΈ»

HSF β†’ GSM
  1.    Edit .gdl files in 02_hsf/.../scripts/
  2.    Run task:
  β€’ HSF2GSM (all files)

Result:
  β€’ GSM file overwritten in 01_gsms/library-name/object-name.gsm
  β€’ Automatic backup created in 03_backups/timestamped/

βΈ»

Embedding Images in GDL Objects

GDLnucleus Light automatically handles image registration during HSF β†’ GSM conversion.

  1.    Place your image file(s) in 02_hsf/object-name/object-name/images/
      (any name, e.g. my-button.png – except Picture_0.png which is reserved for the object icon)
  2.    Run HSF2GSM – the converter automatically renames the file(s) to GDLPict_1.png,
      GDLPict_2.png, … and registers them in libpartdata.xml
  3.    Reference the image in your GDL script using UI_PICT 1 (or PICTURE 1, etc.)
  4.    The image is embedded in the resulting GSM file

Note: Picture_0.png is always the object icon and is never renamed or re-registered.

βΈ»

πŸ“‹ Available Tasks

Task    Description
GSM2HSF (all files) Convert all GSM β†’ HSF
HSF2GSM (all files) Convert all HSF β†’ GSM

Tasks execute bin/gdlconverter.py directly and use unbuffered output.

βΈ»

βš™οΈ Customization

Change Project Name

mv gdl-nucleus-light.project your-project.project
mv gdl-nucleus-light.code-workspace your-project.code-workspace

Update the workspace JSON accordingly.

Change Library Name

The first folder under 01_gsms/ defines the library name.

Important:
Avoid spaces in folder names.

Change ArchiCAD Version

Update the lpxmlconverter path in gdlconfig.json.

βΈ»

πŸ” Troubleshooting

python3: command not found (Windows)

Install Python and enable PATH.

lpxmlconverter path not found

Correct the path in gdlconfig.json.

HSF folder not found

Run GSM2HSF first.

No library folder found

Create a folder under 01_gsms/.

Script finds no GSM files

Ensure GSM files are inside:

01_gsms/library-name/


βΈ»

πŸ“ Backup Strategy

Every HSF β†’ GSM conversion creates a backup:

03_backups/timestamped/
object_YYYY_MM_DD_HH_MM.gsm


βΈ»

πŸ†š GDLnucleus Light vs Full Version

Feature Light   Full
GSM ↔ HSF   βœ…   βœ…
GSM ↔ XML   ❌   βœ…
LCF container   ❌   βœ…
Parameter CSV export    ❌   βœ…
Image management    βœ…   βœ…
SVG β†’ TIFF  ❌   βœ…


βΈ»

πŸ’‘ Best Practices
  1.    Add 02_hsf/ to Git
  2.    Ignore 03_backups/ and 04_logs/
  3.    Convert GSM β†’ HSF once at project start
  4.    Edit only HSF afterwards
  5.    Convert back after changes
  6.    Merge conflicts in GDL scripts are readable and solvable

βΈ»

πŸ“„ License

Free Light version for personal and commercial use.

Version: GDLnucleus Light 1.1
Last update: February 2026