A streamlined working environment for bidirectional conversion between ArchiCAD GSM files and HSF source files (Human Source Format).
GDLnucleus Light allows you to edit ArchiCAD GDL library elements in a text-based format (HSF):
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
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